OKO:为隐形用户而设计
“最好的无障碍设计是无形的——它就是能用。” —— AYES 团队理念
OKO 是一款为盲人和低视力用户设计的人行横道辅助应用,荣获 2023 年 Apple Design Award 社会影响力奖。该应用利用 iPhone 摄像头和设备端机器学习来检测行人信号灯状态(行走、禁止通行、倒计时),并通过触觉反馈和空间音频将结果传达给用户。用户只需将手机对准人行横道信号灯,OKO 就会告诉他们何时可以安全过马路,完全不需要看屏幕。
这是最本质的设计。OKO 几乎没有传统意义上的视觉界面。没有网格,没有卡片,没有色彩方案,没有字体层级。相反,设计挑战完全在于非视觉沟通:如何在嘈杂、不可预测的城市环境中,通过振动模式和声音来传达关乎安全的关键信息。OKO 迫使设计师重新思考当屏幕不再是媒介时,”界面”究竟意味着什么。
为什么 OKO 很重要
核心成就: - 荣获 2023 年 Apple Design Award 社会影响力奖,这是 Apple 平台对有影响力设计的最高认可 - 证明了最具影响力的设计工作可能完全没有视觉成分 - 创造了一套触觉语言,能够传达二元状态(安全/不安全)的同时兼顾细微差异(置信度、倒计时感知) - 展示了设备端机器学习可以在无需网络依赖的情况下实时服务于无障碍需求 - 填补了一个真实的市政无障碍缺口:全球大多数路口缺乏无障碍行人信号(APS)
要点提炼
- 最好的界面可能是没有界面 —— OKO 的主要交互方式是触觉和听觉;屏幕仅为设置和有视力的同伴而存在,而非为核心用户服务
- 触觉反馈是一种设计语言 —— 不同的振动模式不仅传达二元状态,还能表达置信度、状态转换和紧迫感
- 音频优先的用户体验需要空间思维 —— 声音必须传达方向和距离,而不仅仅是”存在”,因为盲人用户在三维环境中导航
- 市政基础设施存在设计缺口 —— 大多数路口缺乏无障碍信号灯;OKO 揭示了多少公共设计以”能看见”为前提
- 为极端场景设计能提升一切 —— 为盲人用户设计所产生的约束条件催生了交互模式(触觉确认、音频反馈),这些模式对所有人的应用体验都有提升
核心设计原则
1. 非视觉交互设计
OKO 的核心交互没有视觉成分。用户将手机对准人行横道信号灯,OKO 通过振动和声音进行沟通。
交互模型:
用户操作: 系统响应:
将手机对准 稳定脉冲:"我看到了信号灯"
人行横道信号灯 ┌──────────────────────────┐
│ ∙ ∙ ∙ ∙ ∙ ∙ ∙ ∙ ∙ ∙ │ 轻柔的重复轻触
└──────────────────────────┘
检测到信号: 行走信号:
行走 ┌──────────────────────────┐
│ ━━━━━━━━━━━━━━━━━━━━━━ │ 强烈的持续振动
│ + 上升音调 │ + 上升音调
└──────────────────────────┘
检测到信号: 禁止通行信号:
禁止通行 ┌──────────────────────────┐
│ ∙ ∙ ∙ ∙ ∙ ∙ │ 缓慢、间隔的轻触
│ + 低音调 │ + 下降音调
└──────────────────────────┘
检测到信号: 倒计时(时间即将耗尽):
倒计时 ┌──────────────────────────┐
│ ∙∙ ∙∙ ∙∙ ∙∙ ∙∙ ∙∙ ∙∙ │ 加速的双击
│ + 紧迫音调 │ 节奏递增
└──────────────────────────┘
关键设计决策: - 行走 = 持续强烈振动。 正向状态必须是最明确无误的。盲人用户的安全取决于对”可以安全通行”的正确理解。这里没有歧义的余地。 - 禁止通行 = 间隔轻柔轻触。 负向状态是平静的,而非令人警觉的。令人警觉的振动会造成压力;用户只需要知道”还不行”。 - 倒计时 = 加速节奏。 借鉴了无障碍行人信号的可听蜂鸣声,加速的节奏传达了”时间即将耗尽”的信息,而无需用户计数。 - 未检测到信号 = 静默。 如果 OKO 无法确信地识别信号状态,它宁可什么都不传达,也不猜测。在安全关键设计中,静默(无信息)比错误信息更安全。
2. 触觉反馈作为设计语言
OKO 的触觉模式不是随意的振动。它们构成一种具有语法和词汇的连贯语言。
// 触觉模式词汇(概念性)
// 行走:强烈、持续、自信
// 使用 CHHapticEvent 的持续强度
let walkPattern: [CHHapticEvent] = [
CHHapticEvent(
eventType: .hapticContinuous,
parameters: [
CHHapticEventParameter(
parameterID: .hapticIntensity,
value: 0.9 // 高强度 = 确信
),
CHHapticEventParameter(
parameterID: .hapticSharpness,
value: 0.5 // 中等锐度 = 有力但不刺耳
)
],
relativeTime: 0,
duration: 2.0
)
]
// 禁止通行:轻柔、间隔、耐心
let dontWalkPattern: [CHHapticEvent] = stride(
from: 0, to: 3.0, by: 0.5
).map { time in
CHHapticEvent(
eventType: .hapticTransient,
parameters: [
CHHapticEventParameter(
parameterID: .hapticIntensity,
value: 0.3 // 低强度 = 不紧迫
),
CHHapticEventParameter(
parameterID: .hapticSharpness,
value: 0.2 // 柔和锐度 = 轻柔
)
],
relativeTime: time
)
}
// 倒计时:加速节奏
func countdownPattern(secondsRemaining: Int) -> [CHHapticEvent] {
// 间隔随时间减少而缩短
// 10 秒:每 500ms 一次轻触
// 5 秒:每 250ms 一次轻触
// 2 秒:每 125ms 一次轻触
let interval = max(0.125, Double(secondsRemaining) / 20.0)
// ... 生成间隔递减的模式
}
触觉设计原则: - 强度 = 置信度。 强烈的振动意味着 OKO 非常确定。较弱的振动意味着较低的置信度。这映射了现实世界的直觉:有力的握手传达确定性。 - 节奏 = 紧迫感。 更快的模式意味着”现在行动”。更慢的模式意味着”等待”。这是跨文化通用的,不需要学习。 - 静默 = 不确定。 当 OKO 无法确定信号状态时,它不会振动。这是最重要的设计决策:在安全关键场景中,没有反馈比错误反馈更安全。 - 锐度 = 注意力需求。 尖锐的轻触要求注意力。柔和的嗡鸣提供环境感知。行走信号使用中等锐度——足以被注意到,又足够柔和以维持而不造成疲劳。
3. 音频优先的用户体验与空间感知
OKO 的音频提示是为在嘈杂交通环境中戴着耳机(或使用手机扬声器)导航三维城市空间的用户设计的。
音频设计要求: - 必须在交通噪音中可听到,但不能响到掩盖用户需要听到的环境声音(驶来的车辆、其他行人) - 必须立即传达状态变化——信号变化和音频提示之间半秒的延迟都可能造成危险 - 必须同时支持扬声器和耳机(许多盲人用户会单耳佩戴耳塞用于导航应用) - 不能与其他常见的应用声音混淆(通知铃声、VoiceOver 提示音)
音频词汇:
行走:
┌─ 上升双音调 ──────────────────────────┐
│ ♪ 低 → 高(大调音程) │
│ 持续时间:400ms │
│ 特征:明亮、清晰、肯定 │
└───────────────────────────────────────┘
禁止通行:
┌─ 单一低音调 ──────────────────────────┐
│ ♪ 持续低音(小调音调) │
│ 持续时间:300ms │
│ 特征:平静、不令人警觉 │
└───────────────────────────────────────┘
倒计时:
┌─ 有节奏的点击声 ──────────────────────┐
│ ♪ 嗒...嗒..嗒.嗒.嗒嗒嗒嗒嗒 │
│ 持续时间:与剩余时间匹配 │
│ 特征:加速、紧迫 │
└───────────────────────────────────────┘
信号丢失:
┌─ 下降音调 ────────────────────────────┐
│ ♪ 高 → 低(轻柔渐弱) │
│ 持续时间:500ms │
│ 特征:"我跟丢了,请重新对准" │
└───────────────────────────────────────┘
关键设计选择: 行走信号是一个上升音程(乐观、肯定),而禁止通行信号是一个低沉的持续音调(平静、等待)。这些并非随意设定。上升音程跨文化地与积极结果相关联。低沉的持续音调与等待相关联。OKO 利用这些普遍性联想,使首次使用的用户无需培训就能直觉地理解其含义。
值得借鉴的设计模式
为零视觉交互而设计
OKO 的非视觉设计方法产生了远超无障碍领域的适用模式:
通过触觉进行确认:
// 任何应用都可以使用触觉确认
// 不只是显示一个绿色对勾:
// 成功:单次强烈轻触
let successFeedback = UIImpactFeedbackGenerator(style: .heavy)
successFeedback.impactOccurred()
// 错误:三次快速轻触
let errorFeedback = UIImpactFeedbackGenerator(style: .light)
for delay in [0, 0.1, 0.2] {
DispatchQueue.main.asyncAfter(deadline: .now() + delay) {
errorFeedback.impactOccurred()
}
}
// 警告:两次中等轻触
let warningFeedback = UIImpactFeedbackGenerator(style: .medium)
for delay in [0, 0.15] {
DispatchQueue.main.asyncAfter(deadline: .now() + delay) {
warningFeedback.impactOccurred()
}
}
更广泛的启示: 大多数应用将触觉反馈视为事后补充——任何通知都只是一次嗡嗡声。OKO 证明了触觉可以承载语义含义:不同的模式代表不同的状态。这让所有人(不仅仅是视障用户)的应用更加好用。”付款确认”的强烈轻触与”收到消息”的轻柔轻触感觉不同,用户会无意识地学习这些模式。
安全关键设计原则
OKO 运行在设计失误可能导致身体伤害的环境中。它的原则适用于任何与安全相关的界面(医疗、汽车、工业):
-
静默失败,而非大声失败。 在不确定时,OKO 不提供反馈,而非提供错误反馈。在安全场景中,虚假的确信比承认不确定更危险。
-
先二元,后细节。 主要沟通是二元的:安全还是不安全。细节(倒计时、置信度)是叠加在上面的。用户的第一个问题(”我能过马路吗?”)在获得任何附加细节之前先得到一个明确的是/否回答。
-
冗余通道。 OKO 同时通过触觉和音频进行沟通。如果用户错过了某个通道(嘈杂环境淹没了音频,厚手套削弱了触觉),另一个通道仍然能传达信息。
-
无需学习。 触觉和音频模式利用了普遍性联想(上升 = 积极,快速 = 紧迫),使首次使用的用户无需教程就能理解。安全关键界面不能假设用户经过了培训。
安全关键设计层级:
1. 安全吗? → 二元回答(是/否)
2. 有多确定? → 反馈的强度
3. 还有多少时间? → 反馈的节奏
4. 我该怎么做? → 方向(通行/等待)
5. 什么变了? → 过渡提示
每一层建立在前一层之上。
绝不跳过第 1 层直接到第 3 层。
总结评价
OKO 是大多数设计师永远不会想到去研究的最重要的设计案例——因为它挑战了这个学科的根本假设:设计是视觉的。OKO 的核心用户永远不会看到它的应用图标,永远不会欣赏它的配色方案,永远不会阅读它的字体排版。整个设计挑战是触觉的、听觉的和时间性的。然而,所需的设计严谨性至少与任何视觉界面一样高,因为赌注是一个人在十字路口的人身安全。
OKO 教给我们的是:为最受约束的用户设计会产生最具普遍性的洞见。触觉确认模式、音频状态沟通、先二元后细节的信息层级、冗余反馈通道和静默失败的错误处理,这些原则能提升每一个应用,而不仅仅是无障碍应用。当你为无法看到屏幕的人设计时,你会发现你的界面实际传达了什么,而不仅仅是展示了什么。
最佳学习价值: 如何以与视觉设计同等的严谨性设计非视觉交互,以及安全关键约束如何产生提升所有软件的设计原则(静默失败、冗余通道、二元优先)。
常见问题
OKO 如何在没有互联网连接的情况下检测人行横道信号灯?
OKO 通过 Apple 的 Core ML 框架使用设备端机器学习来实时分析 iPhone 摄像头画面。该模型经过训练,能够识别标准行人信号状态(停止手势、行走人像、倒计时器),并完全在设备的 Neural Engine 上运行。无需网络连接,这对于一个必须在蜂窝信号覆盖差的区域也能工作的安全工具来说至关重要。
为什么 OKO 在无法检测到信号时选择静默?
在安全关键设计中,虚假的确信比承认不确定更危险。如果 OKO 在实际不确定时振动”行走”,用户可能会走入车流。通过对不确定状态选择静默,OKO 清楚地传达了”我不知道”,促使用户重新调整手机位置或使用其他线索(询问附近的行人、倾听交通模式),而不是信任错误的信息。
OKO 的触觉模式如何服务于触觉敏感度降低的用户?
OKO 将触觉反馈与音频提示冗余配对,因此如果用户无法感受到振动(由于神经病变、厚手套或手机壳),音频通道仍然能传达完整信息。该应用还允许用户独立调节触觉强度和音频音量。双通道方法确保了失去一种反馈方式不会危及安全。
非无障碍应用能从 OKO 的设计中学到什么?
OKO 证明了触觉反馈可以承载超越”发生了某事”的语义含义。针对不同状态(成功、错误、警告、进度)使用不同的振动模式,会创建一种无意识的词汇表,使任何应用都更加好用。此外,OKO 的静默失败原则(没有反馈好过错误反馈)、二元优先的信息层级和冗余反馈通道适用于任何用户信任至关重要的界面。
为什么 OKO 赢得了 Apple Design Award 包容性奖?
OKO 填补了一个真实的市政基础设施缺口:全球大多数路口缺乏无障碍行人信号。OKO 没有倡导基础设施变革(这是一个长达数十年的过程),而是利用 iPhone 现有的摄像头和触觉硬件创造了一个即时解决方案。该奖项认可了技术成就和设计理念——构建服务于那些通常被设计行业忽视的用户的技术。
资源
- App Store: OKO - Crosswalk
- 开发者: AYES(专注无障碍的开发工作室)
- Apple Design Awards 2024: 包容性类别获奖者
- Core ML: Apple 的设备端机器学习框架,实现实时信号检测