触觉交互设计规范
面向设计师与工程师:让触觉被感觉得到、认得出、来得及、降得下去、关得掉,并且不把用户的身体当作可以随意占用的输出通道。
7 条原则 · 35 条规则 · 必须 26 · 应当 8 · 禁止 1
目录
面向设计师与工程师:让触觉被感觉得到、认得出、来得及、降得下去、关得掉,并且不把用户的身体当作可以随意占用的输出通道。
本规范聚焦手机、手表、触控板、手写笔与游戏控制器上的振动触觉输出。一次触觉既可能确认操作,也可能传达边界、结果或质感;它的设计需要同时考虑语义、身体感受、设备能力与播放条件。
本规范由七条原则和35 条规则组成:原则说明设计方向,规则规定适用情境、行为要求与验证方式。每条规则归属且仅归属一条原则,规则编号即原则编号(H4-2 就是第四条原则下的第二条规则)。
规范从两项体验承诺出发:用户能理解反馈,且能控制是否接受反馈。设备与身体接触时,振动可能造成打扰或不适;而成功、失败等业务含义需要通过稳定映射学习。这里不把“触觉唯一不可回避”“触觉完全没有天然含义”或“习惯化不可逆”当作科学前提:物理碰撞可以有直觉关联,语义也受情境影响。每条硬约束须说明缺失后哪项承诺会失效,平台建议与单项实验不自动构成通用强制要求。
本规范约束的是产品通过触觉对用户作出的承诺及其兑现机制的性质,不预设作动器类型、不指定具体 API 形态,也不规定波形的美学取向。它不是触觉效果库,不是硬件选型指南,也不替代人体工效学标准(ISO 9241-910/920)、无障碍专项评估、以及领域法规(车载 HMI、医疗设备、儿童产品)的独立审查。
第 1–3 章用于理解和核对要求,第 4 章统一术语,第 5 章帮助完成设计决策,第 6 章说明验证与交付。附录 A 提供检查清单,附录 B 说明证据边界。可配置决定见 Design Token,外部依据见 来源说明。
从具体问题开始:新增触觉点先读第 5 章;设备表现不一致查 H1、H4;反馈迟到或重复查 H3、H7;关闭、取消与中断查 H5、H6、H4-5。规则编号用于追溯要求,不要求设计者按 35 条依次填表。
1. 七条原则
七条原则按规范对象切分设计责任:每条原则管辖一类对象上的义务,每条规则按其义务的直接规范对象归属唯一原则。对象不同,原则就不会互相替代——这是切分的依据,也是检验切分的方式。
| 原则 | 规范对象 | 设计方向 | 管辖规则 |
|---|---|---|---|
| H1 可感知 | 触觉信号的物理属性与人的感知阈 | 不要以"我在安静的桌面上能感觉到"作为验收。信号要在声明的真实使用情境里、对真实的目标用户群可觉察、可分辨 | H1-1 ~ H1-6 |
| H2 可辨义 | 信号与意义之间的映射 | 不要设计波形,设计词汇。同一含义在产品内始终是同一个信号;触觉的意义靠一致性建立,靠不一致销毁 | H2-1 ~ H2-5 |
| H3 有时序 | 触觉与用户动作、视觉、听觉之间的时间关系 | 不要把触觉当成一条可以延后送达的消息。触觉是因果关系的一部分,迟到的触觉比没有触觉更糟,早于事实的触觉撤不回来 | H3-1 ~ H3-4 |
| H4 随能力降级 | 作动器能力在设备间的差异 | 不要假定所有设备做得到同一件事。每个信号声明它需要什么能力,能力不足时按定义好的路径降级,且降级不改变它的意思 | H4-1 ~ H4-6 |
| H5 不是唯一通道 | 触觉与其他通道之间的信息分工 | 不要把信息藏在震动里。触觉可以是最快的通道,不能是唯一的通道;触觉全关时产品必须完整可用 | H5-1 ~ H5-4 |
| H6 身体可控 | 触觉对用户身体的影响与用户对它的控制权 | 不要把用户的身体当作免费的输出设备。可关、可调、可分类关;系统设置优先,商业目的不构成打扰身体的理由 | H6-1 ~ H6-5 |
| H7 节制 | 触觉的总量与用户的注意力预算 | 不要逐个界面地决定要不要加触觉。总量有预算,最强信号需要限定用途,频繁强振可能降低显著性并增加不适 | H7-1 ~ H7-5 |
同一个场景可以触及多条原则——一次"支付成功"的触觉同时涉及信号可觉察(H1-1)、语义映射(H2-2)、不得先于服务端确认(H3-4)、无作动器设备上的替代通道(H4-2 与 H5-1)——这不是分类错误:这些规则约束的是不同规范对象上的义务。
互斥与穷尽是这套切分接受检验的主张,不是宣布即成立的事实:规则增删或归属存疑时,按附录 A 的分类检验验证(不同评审者能否对具体要求独立得出相近归属);检验不过,修改的是原则的切分。
几组容易被误认为重复、实际规范对象不同的划分:
- H1 与 H4:H1 管人的一侧(这个强度对这个人在这个情境下够不够),H4 管设备的一侧(这台设备做不做得出这个波形)。同一次失败可以来自任一侧,处理方式完全不同。
- H5 与 H6:H5 管信息分工(不能只用触觉传达),H6 管身体自主权(用户有权拒绝触觉本身)。H6 允许用户关掉触觉,正是由 H5 保证关掉之后仍然可用。
- H1-2 与 H7-1:H1-2 管单次信号之间能不能被分辨(含最弱档与降级形态),H7-1 管同一效果族内一段时间的强度分布是否与重要性匹配。前者是感知问题,后者是预算问题。
原则用于理解规则与裁决归属,本身不作为单独的判定条目。当原则与具体条款的解读出现冲突时,以适用条款为准,并记录需要澄清的歧义。
2. 规则的读法
2.1 每条规则的结构
| 部分 | 作用 |
|---|---|
| 一句话 | 规则的记忆版,不替代正文 |
| 适用 | 这条规则在什么情境下生效。不落在适用范围内的产品记录"不适用"即可,不必勉强套用 |
| 规则 | 规范正文,规定这条规则的要求 |
| 边界条件 | 与适用共同限定要求的适用范围:说明这条规则不要求什么、例外在什么条件下成立(仅部分规则有) |
| 设计应用 / 验证示例 / 反例 | 帮助落地的说明,不另行增加义务,也不指定唯一实现 |
| 依据与参考 | 实证来源、失败记录与实现参考(仅部分规则有;论证类型与出处见附录 B 与 reference.md) |
一句话概括各部分的效力:规则正文规定要求;适用与边界条件共同限定要求的适用范围;设计应用、验证示例、反例与依据参考不另行增加义务。
规则写行为性质、不写实现方式:能力不足时按定义好的路径降级是产品行为,用哪一颗作动器、调哪个驱动 IC 是工程方案——两者必须对得上,但不是同一份交付物。
正文中出现的数值是参考值,不是判定阈值。它们来自公开研究与平台文档(出处见附录 B),用于说明量级和方向。规则要求产品确定并验证自己的阈值,参考值用于在没有自测数据时提供起点,以及在评审时判断某个取值是否明显偏离已知量级。
2.2 约束词
规则正文使用三级约束词:
- 必须:不满足即不符合本规范。缺了它,触觉要么感觉不到、认不出、来不及,要么变成用户无法摆脱的打扰——这是标「必须」的唯一依据(见附录 B)。
- 禁止:与「必须」同等强度的反向表述,指明不得出现的行为;正文中的「不得」与「禁止」等价。
- 应当:默认遵循;确有理由偏离时,记录理由与替代做法,并接受同样的验证。偏离不需要审批,但需要留痕。「不应当」是「应当」的反向表述。
合规判定以正文中的独立义务子句为单位:无约束词的陈述句承接所在规则标题的强度;显式标注约束词的子句按其自身强度判定——【应当】规则内的「禁止/不得」子句仍是硬约束(H1-3、H1-4、H1-6、H2-3、H3-3、H4-4、H5-3、H7-4 含此类子句),规则标题与速查表的强度标注不替代子句约束力。正文中的「不能」仅用于能力或事实陈述(如"设备不支持指定基元"),不表达义务。
强度表示约束力,不表示重要性:「必须」决定产品能不能上,「应当」往往决定触觉做得好不好。
2.3 反例的两侧
反例分两侧:"做不到"是漏掉这条要求,"做过头"是为了满足它而堆震动、堆开关、堆提示。两侧都算没做对——两类失败都应纳入评审:每个按钮都震一下,重要的那次就再也叫不醒人了。反复刺激可能降低响应,过密反馈也可能互相遮蔽;这些情况需要通过长任务测试发现,不能仅靠接口调用成功判断。
2.4 规则速查:35 条
下表是全部规则的一句话记忆版。速查不替代各条的适用条件与完整要求;个别【应当】规则内含禁止级子句,判定以正文为准(见 2.2)。
H1 可感知
| 规则 | 强度 | 一句话 |
|---|---|---|
| H1-1 信号可觉察 | 必须 | 在真实使用情境里对真实用户可觉察,不以开发桌面为准。 |
| H1-2 需要区分的信号可分辨 | 必须 | 承担不同含义的信号,在最弱档与降级形态下也要能分得出,不只是波形不同。 |
| H1-3 按声明情境校准 | 应当 | 握在手里、放在桌上、揣在兜里、戴在腕上不是同一件事。 |
| H1-4 不假定个体一致 | 应当 | 感知阈因人而异,单一强度不对所有人有效。 |
| H1-5 播放不等于送达 | 必须 | 系统调用了作动器,不等于用户感觉到了。 |
| H1-6 避免干扰采集与周围环境 | 应当 | 避免干扰采集与周围环境。 |
H2 可辨义
| 规则 | 强度 | 一句话 |
|---|---|---|
| H2-1 同义同信号、异义可分辨 | 必须 | 同一含义在产品内始终是同一个信号。 |
| H2-2 沿用系统语义,不挪作他用 | 必须 | 平台已建立的触觉词汇是用户已经学会的,不要覆写。 |
| H2-3 语义可学习且稳定 | 应当 | 让用户在真实操作中学会含义,不依赖猜测或背诵。 |
| H2-4 不用触觉传需要精确解码的信息 | 必须 | 触觉带宽极低,不要用它编码数量、身份或文字;专用编码路径不在本规范覆盖范围内。 |
| H2-5 语义登记在册 | 必须 | 每个信号能在一份清单里找到唯一条目,新增先入册。 |
H3 有时序
| 规则 | 强度 | 一句话 |
|---|---|---|
| H3-1 因果绑定与延迟上限 | 必须 | 迟到的触觉比没有触觉更糟,超时就放弃不补播。 |
| H3-2 跨模态同步按场景验证 | 必须 | 同一事件的视听触输出在实测同步窗内,不套用通用偏移值。 |
| H3-3 连续交互中触觉跟随动作 | 应当 | 拖动和滑动的触觉随过程走,不是结束时补一下。 |
| H3-4 触觉不得先于事实 | 必须 | 结果没定就不要震,触觉在身体上,撤不回来。 |
H4 随能力降级
| 规则 | 强度 | 一句话 |
|---|---|---|
| H4-1 声明所需能力与支持状态 | 必须 | 按效果、基元、振幅与包络能力判定支持,不只看器件型号。 |
| H4-2 降级链有定义,不静默失效 | 必须 | 做不到时按定义好的路径降,不是悄悄不播或退化成嗡嗡响。 |
| H4-3 降级不改变语义 | 必须 | 成功降级之后还得是成功,不能变成错误。 |
| H4-4 优先用平台预定义效果 | 应当 | 自定义波形是例外不是默认,长振不是交互反馈。 |
| H4-5 播放中断与恢复有定义 | 必须 | 中断后只在仍有效的同一次交互内按预定次数恢复,不补播旧事件。 |
| H4-6 输出位置与接收对象明确 | 必须 | 输出位置与接收对象明确。 |
H5 不是唯一通道
| 规则 | 强度 | 一句话 |
|---|---|---|
| H5-1 触觉不得是唯一通道 | 必须 | 震动里携带的信息,必须还有一个非触觉的等价表达。 |
| H5-2 安全关键信息需并存可查通道 | 必须 | 触觉是瞬时的,错过就没了;重要的事要留得住。 |
| H5-3 触觉是强化而非替代 | 应当 | 触觉降低确认成本,不替代必要的确认本身。 |
| H5-4 全关条件进入常规验收 | 必须 | 触觉全部关闭时能在任务所需时间内跑完主要任务,这要被真的测。 |
H6 身体可控
| 规则 | 强度 | 一句话 |
|---|---|---|
| H6-1 可关、可调、可分类关 | 必须 | 产品内能关闭;支持调强时提供真实调节,多用途时可分类关。 |
| H6-2 系统设置优先 | 必须 | 系统级的静音、专注、触觉设置不得被绕过。 |
| H6-3 不为商业目的发起触觉 | 禁止 | 不用震动做营销、留存、催促和注意力争夺。 |
| H6-4 强度与时长受安全上限约束 | 必须 | 上限来自身体和设备,不由体验目标决定。 |
| H6-5 关闭不得成为惩罚 | 必须 | 关掉触觉之后不掉功能、不加惩罚步骤、不反复劝返。 |
H7 节制
| 规则 | 强度 | 一句话 |
|---|---|---|
| H7-1 强度匹配重要性与频率 | 必须 | 同一效果族内越频繁越轻、越重要越强,不因为"想被注意到"提级。 |
| H7-2 总量有上限,超限合并或丢弃 | 必须 | 密集触发时合并或丢掉,不排队补播。 |
| H7-3 最强级是稀缺资源 | 必须 | 保留输出限定用途和频次,并保留其他有效信息通道。 |
| H7-4 默认不加,加了要说清换来什么 | 应当 | 新增触觉的默认答案是"不加";要加就声明属于功能收益还是质感收益。 |
| H7-5 并发信号按语义取舍 | 必须 | 并发信号按语义取舍。 |
3. 规则详解
本章按七条原则展开全部 35 条规则。每条的结构与各部分的约束力见 2.1;其中的设计应用、验证示例与反例只是帮助落地的说明,不指定唯一实现,也不要求新增独立交付文档。正文中的数值为参考值,效力见 2.1 末段。
3.1 H1 可感知
触觉信号首先要被身体接收到。这个原则管辖的是信号的物理属性与人的感知能力之间的关系:够不够强、分不分得开、在真实使用姿势和环境里还成不成立、对不同的人是否同样成立。这一原则最常见的失效不是设计错误,而是验收错误——在安静的办公桌上、握在手里、由熟悉这个信号的设计者本人确认"能感觉到",然后交付给在地铁里揣着手机、戴着手套、或者末梢感觉减退的用户。
H1-1信号可觉察必须
一句话:在真实使用情境里对真实用户可觉察,不以开发桌面为准。
适用所有承担信息传达职责的触觉信号。纯粹的质感修饰(不传达任何用户需要知道的信息)不适用本条,但仍受 H7 的总量约束。
规则每个承担信息传达职责的触觉信号,必须在产品声明的主要使用情境(见 Token haptic.context.usage)下对目标用户群可觉察,并有验证记录。可觉察性必须按情境验证,不得以单一情境(尤其是开发或演示环境)的结果推及全部情境。信号的强度、频率与持续时间必须在目标条件下共同验证。约 200–250 Hz 的敏感区间只可作为特定振动实验的方向性参考,不是所有身体部位、接触方式或作动器的默认频率。
边界条件本条不要求把每个信号都做强。它要求的是"在声明情境下可觉察"与"验证过"两件事;可以比较节奏、时长、包络与设备支持的参数调整,选择经验证且舒适的表现;不存在对所有硬件都更优的调整顺序。
依据与参考指部实验支持检测阈值随频率变化;Android 给出按键反馈时长的设计参考。这些都不证明统一的可感知下限。测量条件与来源见 reference.md 第 3 节。
设计应用为每个信号记录它被验证过的情境组合;在设计阶段就把"戴手套""放桌上""口袋里""环境有振动"作为待验证条件,而不是发布后的缺陷。根据能力与用户测试比较参数组合,避免只靠增大振幅补偿。
验证示例
- 用户侧:在声明的每一种情境下,先做探索性走查,再按预先设定的重复试次随机呈现有信号和无信号条件,记录命中、漏感、误报与不适;纳入目标群体的感知差异。单次触发只能发现明显问题,不能作为正式通过证据。
- 实现侧:检查每个信号是否有对应的情境验证记录;未验证的情境要么从声明中移除,要么在该情境下走 H5 的替代通道。
反例做不到——手机放在桌上时"消息已发送"的触觉完全感觉不到,用户反复重发;做过头——为了保证口袋里也能感觉到,把所有信号统一调到最强,握在手里时每次点击都像被弹了一下。
H1-2需要区分的信号可分辨必须
一句话:承担不同含义的信号,在最弱档与降级形态下也要能分得出,不只是波形不同。
适用产品中存在两个及以上承担不同含义、且用户可能需要区分的触觉信号时。
规则承担不同含义的触觉信号之间,必须在目标设备、用户所选的强度档(含最弱档)、声明情境与已定义的降级形态下仍可被用户区分。应当避免仅靠振幅的细微差别承担区分——节奏(脉冲数与间隔)、时长、包络或质感通常更稳定。采用单一维度(含仅振幅)编码的,须提供覆盖上述全部条件的可区分性证据;证据不足时增加其他维度或改用等价通道。可区分性必须经验证,并把“感觉是否不同”与“能否识别含义”分开:前者可用不提示语义的配对辨别;后者按产品实际提供的学习方式测试,记录教学内容与训练次数,不把未教学时猜错含义等同于感觉不可区分。
边界条件本条不要求产品内所有信号两两可分辨,只要求"用户可能需要区分"的信号对可分辨。同一语义类别内部为了表现力做的变体(如三档不同重量的碰撞感)不属于需要区分的信号对。
设计应用优先用节奏而非强度承担区分——两短一长和一次单击的差别,比"中等强度"和"略强于中等"的差别稳定得多。为每一对需要区分的信号记录它们的区分维度。
验证示例
- 用户侧:先随机做同异配对辨别,再按产品实际引导教授含义并随机识别;分别记录觉察率、混淆矩阵与误判后果,按事先定义的验收标准评估。
- 实现侧:对每一对需要区分的信号,在目标设备、用户最弱档与已定义降级形态下建立混淆矩阵;不以"波形不同"判通过,也不以"只用了一个维度"直接判不通过——判据是上述条件下的可区分性证据是否成立。
反例做不到——"发送成功"和"发送失败"用的是同一个单击,只是失败的略强,用户全靠看屏幕;做过头——为了保证每个语义都能被区分,造出十几种节奏各异的信号,用户一个也记不住(同时违反 H2-4 与 H7-4)。
H1-3按声明情境校准应当
一句话:握在手里、放在桌上、揣在兜里、戴在腕上不是同一件事。
适用产品可能在多种握持方式、佩戴位置或环境条件下使用时。
规则产品应当声明其主要使用情境,并按情境校准信号参数;具备情境探测能力时,应当据此调整强度或改走其他通道。情境调整不得越过 H6-4 的安全上限,也不得在用户已降低强度或关闭触觉后以"情境需要"为由恢复(见 H6-2)。无法探测情境时,应当按声明的主情境处理,而不是按最有利于感知的情境假定。
设计应用把情境作为 Token 的一等公民(haptic.context)而不是实现细节;运动、佩戴类场景优先在设计阶段确定基准情境,而不是发布后补丁式加强。
验证示例
- 用户侧:同一信号在声明的手持、桌面、口袋条件下分别重复测试可觉察性与舒适度,不把一次试播当作通过。
- 实现侧:检查情境调整是否只做减弱与改道,不做无上限增强;检查用户设置是否始终优先于情境调整。
反例做不到——腕上设备沿用手机的信号参数,戴着完全感觉不到;做过头——检测到"可能在口袋里"就把所有通知提到最强,用户拿在手上时被吓一跳。
H1-4不假定个体一致应当
一句话:感知阈因人而异,单一强度不对所有人有效。
适用面向不特定用户群的产品。
规则产品不应当假定所有用户对同一信号有相同的感知;设备接触方式与个人感觉差异会影响体验,有人难以觉察,也有人感到不适。实际能力支持时,产品应当提供强度缩放或经验证的离散档位(要求见 H6-1),并且不得把"多数用户能感觉到"作为免除替代通道(H5-1)的理由。
设计应用把强度缩放当作基础设施而不是无障碍附加项;在用户研究的招募条件中显式纳入触觉感知差异,而不是默认参与者都"正常"。
验证示例
- 用户侧:在包含不同年龄段与已知感觉差异的参与者中测试同一组信号,记录觉察率与不适率两个方向的分布。
- 实现侧:提供调强能力时,确认它对声明覆盖的全部信号生效;仅能开关的设备不呈现虚假滑块。
反例做不到——按 25 岁工程师的手指标定全部参数,年长用户完全收不到提醒;做过头——为每个用户搞一套需要逐项校准的触觉配置向导,多数人在第三步就放弃了。
H1-5播放不等于送达必须
一句话:系统调用了作动器,不等于用户感觉到了。
适用任何把触觉作为通知、确认或提醒手段的场景。
规则系统禁止把"已调用触觉接口"或"作动器已执行"视为"用户已获知"。接口本身不能确认感知与理解,因此任何依赖用户获知的流程,其状态推进必须依据用户的实际操作或其他可确认的信号,不得依据触觉是否播放。一般信息按 H5-1 保留等价表达;涉及 H5-2 的重要信息同时保留可回查通道。
依据与参考这是触觉与视觉的关键差异之一——界面元素可以停留在屏幕上等待被看到,但界面已展示同样不等于用户已理解,触觉发生即消失,且是否被感知取决于设备当时是否与身体接触。多数误设计源自把触觉当成一次"投递"而不是一次"尝试"。
设计应用区分播放状态和业务知悉状态;允许记录“已尝试触觉提醒”,需要确认的业务状态依赖用户动作。
验证示例
- 用户侧:把设备放在桌面上触发一次需要用户响应的提醒,确认该提醒仍可在后续被发现和处理。
- 实现侧:检查是否以播放回执推进“用户已知悉/已同意”之类状态;播放引擎自身调度、结束或资源释放不属于此类状态。
反例做不到——"已通过震动提醒用户"后就把待办标记为已通知并停止后续提示,而设备当时在包里;做过头——每次触觉之后都追加一次弹窗确认"你感觉到了吗"。
H1-6避免干扰采集与周围环境应当
一句话:避免干扰采集与周围环境。
适用拍摄、录音、语音识别、惯性传感或安静共享环境中使用触觉。
规则触觉可能带来机械噪声和传感器扰动。产品应当在这些功能运行时验证影响,按结果选择抑制、减弱或改变时机;已经造成关键任务不可用的反馈不得继续发放。不得把振动产生的传感器信号误认作用户动作并形成重复触发。
设计应用分别在手持与硬桌面、录音与拍摄开启时比较结果;静音音频后仍检查机械振动声。
依据与参考Apple HIG 提醒触觉可能干扰相机、陀螺仪和麦克风。见 Playing haptics。
验证示例
- 用户侧:比较有无触觉的录音、拍摄和正常任务表现。
- 实现侧:注入振动扰动,确认不会反复触发动作;记录处理规则与适用设备。
反例做不到——录音开始反馈被录入音轨,语音检测又触发下一次反馈。做过头——为消除录音噪声,即使录音已经结束也永久关闭所有操作反馈。
3.2 H2 可辨义
触觉的业务含义需要学习;机械碰撞等物理类比可以帮助理解,但不能据此假定用户天然知道哪种信号表示提交成功。因此这个原则管辖的是信号与含义之间的映射关系本身:映射是否唯一、是否稳定、是否与用户已经在系统里学会的词汇一致、以及产品是否知道自己一共有多少个词。触觉词汇表和界面文案一样需要被管理,区别只是它没有拼写检查。
H2-1同义同信号、异义可分辨必须
一句话:同一含义在产品内始终是同一个信号。
适用所有使用触觉的产品。
规则同一含义在产品内必须映射到同一个触觉信号,不得因界面位置、模块归属或团队差异而改变;不同含义不得共用同一个信号,除非它们对用户而言确实无需区分(判定与验证见 H1-2)。为单个界面的表现力引入与全局映射冲突的一次性信号,属于违反本条。
边界条件同一含义在具备不同能力的设备上的降级表现允许不同,但必须落在同一语义映射内(见 H4-3)。这不构成对本条的例外。
设计应用把触觉映射的所有权收到设计系统层,而不是交给各业务模块自行决定;组件库内置触觉,而不是让每个调用点自己选。
验证示例
- 用户侧:在产品的三个不同模块触发同一含义的事件,确认用户不会认为发生了不同的事。
- 实现侧:按语义清单(H2-5)交叉检查各调用点的实际信号;出现同义异号或需要区分的异义同号即不符合。
反例做不到——首页的"添加成功"是双击,购物车的"添加成功"是单击,用户始终建立不起对应关系;做过头——为了绝对一致禁止任何模块使用触觉,只保留三个全局信号,连拖动吸附这类明显有价值的反馈也一并砍掉。
H2-2沿用系统语义,不挪作他用必须
一句话:平台已建立的触觉词汇是用户已经学会的,不要覆写。
适用运行在已建立系统级触觉语义的平台上(iOS 的 notification / impact / selection,Android 的 HapticFeedbackConstants 与预定义效果等)。
规则平台已建立语义的场景,产品必须优先沿用系统提供的对应信号;禁止把系统语义挪作他用——不得用表示错误的信号表示成功,不得用选择变化的信号表示不可逆操作完成。产品自有的信号必须与系统语义在含义上不冲突,且不得在同一场景类别下与系统信号构成竞争性映射。
依据与参考系统语义是用户在设备上跨应用反复习得的,其学习成本已经被平台支付;覆写它等于让用户在你的产品里重学一遍,并且会污染他们在其他产品里的理解。Apple HIG 与 Android 的触觉设计原则都把"与系统保持一致"列为首要建议。出处见 reference.md。
设计应用先把产品的语义清单与平台语义做一次对照,能对上的直接沿用;对不上的再考虑自定义,并按 H4 声明能力与降级。
验证示例
- 用户侧:让熟悉该平台的用户在不看屏幕的条件下判断刚才发生的是成功还是失败。
- 实现侧:逐条检查语义清单中沿用系统效果的条目,确认使用的常量与其语义相符。
反例做不到——用系统的 error 触觉表示"已加入收藏",因为"那个手感更爽";做过头——因为担心冲突,连按钮点击这类平台已有明确常量的场景也一律不用触觉。
H2-3语义可学习且稳定应当
一句话:让用户在真实操作中学会含义,不依赖猜测或背诵。
适用需要用户识别含义的信号,尤其是产品自定义的触觉词汇。
规则产品应当让用户在真实操作中通过稳定的事件、界面状态与触觉配对理解含义;验收采用的教学方式和训练量应当与产品实际提供的一致。不得把已经建立含义的信号悄悄改派给冲突的含义,也不得仅凭测试人员熟悉信号就宣称用户能够理解。必要的教学应当简短、可跳过,并提供不依赖触觉记忆的任务路径。
设计应用第一次吸附到目标时,触觉与可读的目标状态共同出现;需要额外解释时提供自愿体验入口。成功与失败通过结果状态学习,不让用户先背节奏词典。
验证示例
- 用户侧:区分首次使用、实际引导后与间隔一段时间后的识别结果;检查重要含义的误判,不用总体平均掩盖成功与失败的混淆。
- 实现侧:核对测试教学是否真实存在于产品;检查同一信号在不同场景的含义是否稳定。
反例做不到——内部人员熟记六种振动后测试全对,真实用户却从未得到任何学习线索;做过头——首次使用必须逐项背诵触觉词汇才能继续。
H2-4不用触觉传需要精确解码的信息必须
一句话:触觉带宽极低,不要用它编码数量、身份或文字。
适用考虑用触觉传达信息内容(而非仅传达事件发生)的场景。
规则禁止用触觉编码需要用户准确识别的数量、身份、序号或文本内容。例外只有一条:该编码方案已被明确声明为专用编码路径、用户已接受相应训练、且方案的可解码性已在目标人群上验证。此类专用路径按附录 B.2 属于本规范覆盖范围之外,其通道设计、训练与验收需要单独评估,本条的例外只是承认它存在,不代表本规范已为它给出充分要求。语义清单规模必须依据目标用户在实际情境下的识别表现确定,不设缺乏适用证据的统一数量上限;尤其检查高后果信号之间的混淆。
边界条件本条不禁止用触觉表达程度(强弱、快慢、远近)或过程(进行中、接近边界、完成)——这些是触觉擅长的连续量表达,不需要精确解码。它禁止的是把离散符号系统搬到触觉通道上。
设计应用需要传达"哪一个""几个""是谁"时走视觉或听觉;触觉只承担"发生了""到了""越界了"这类判定。
验证示例
- 用户侧:对所有需要区分的语义按实际学习条件随机识别,记录混淆与反应时间;长任务结束后复测。
- 实现侧:检查新增语义是否有对应的识别验证;精确编码是否声明适用人群、训练与验证结果。
反例做不到——用震动次数表示未读消息数量,用户数到第四下就乱了;做过头——因为担心超载,连"到达边界"这种单一判定也不敢用触觉表达。
H2-5语义登记在册必须
一句话:每个信号能在一份清单里找到唯一条目,新增先入册。
适用所有使用触觉的产品。
规则产品必须维护一份触觉语义清单,记录每个信号的含义、触发场景、所需能力(H4-1)与降级链(H4-2);产品主动触觉调用必须能解析到清单中的唯一条目;标准组件自带反馈可按组件与运行平台登记,不要求逐次拦截系统内部实现。新增信号必须先入册再使用;清单必须可定位到实际使用的效果和配置,并作为设计与工程的共同依据,不得只存在于其中一方。
依据与参考这是把 H2-1 从主张变成可执行的机制。没有清单,"同义同信号"只能靠人记住,而触觉的不一致不会在任何自动化检查里报错——它只会在用户那里慢慢失效。
设计应用Token haptic.semantic.registry 引用语义清单;清单的信号条目、业务事实和实测记录本身不是新增 Token;组件库消费清单,业务代码不直接指定波形。
验证示例
- 实现侧:扫描代码中的触觉调用点,确认主动调用经统一映射引用清单;平台常量与波形可以存在于适配层,标准组件自身反馈应在映射中说明并避免重复追加。
- 实现侧:检查清单条目是否都填写了能力需求与降级链;缺失即不符合 H4-1、H4-2。
反例做不到——触觉散落在各业务代码里硬编码,没人说得清产品一共有几种震动;做过头——为清单建立一套需要三级审批才能新增条目的流程,团队干脆绕开它直接调平台 API。
3.3 H3 有时序
触觉是因果关系的一部分,不是一条可以延后送达的消息。用户按下按钮、手指越过刻度、支付完成——触觉之所以有意义,是因为它紧贴着那个事件发生。这个原则管辖的是触觉与用户动作、与视觉、与听觉之间的时间关系。它有两种需要区分的失效:延迟过大可能导致错误归因;早于事实的结果触觉则传达了尚未成立的结论。这与模态之间可能存在的微小输出偏移是不同问题。
H3-1因果绑定与延迟上限必须
一句话:迟到的触觉比没有触觉更糟,超时就放弃不补播。
适用作为对用户动作或系统事件的直接反馈的触觉信号。
规则每个反馈类触觉信号必须绑定到一个确定已发生的事件;产品必须为每类信号定义并验证起振延迟上限,使反馈仍可被正确归因。调度时已超上限且尚未提交的请求必须丢弃,不得延后补播——用户会把迟到的震动归因到它之后发生的任意动作上,从而建立错误的因果关系。延迟从所绑定事件成立计到设备实际起振;平台调用时刻只反映软件调度。提交前必须留出实测的起振耗时,不能把“截止前调用”当成“截止前起振”;无法证明仍在有效期时省略该直接反馈。Android 的 10–20 ms 指按键反馈的持续时间,不是起振延迟,也不应从点击时刻计算数秒后才成立的异步结果反馈。
边界条件本条不适用于主动通知类触觉(提醒、消息到达),那类信号本身不与用户当下的动作构成因果关系,其时机约束见 H6-2 与 H7-2。
依据与参考视触时序研究支持实际输出时刻需要测量,但阈值依赖任务与刺激。起振和拖尾同时受作动器、驱动与安装影响,不能由 ERM/LRA 名称推出固定延迟。见 reference.md 第 3 节。
设计应用按真实事件建立调度,并与配对视听共同核对实际时刻;设备不满足时选更合适效果或停播,不以修改数字代替验证。
验证示例
- 用户侧:在目标设备的低端档位上连续点击,确认触觉不会落到下一次点击上。
- 实现侧:记录软件调度延迟,并用加速度计、接触式拾振等实机测量校准事件到实际起振的分布与拖尾;无法观测硬件时标注估计范围。检查调度时已过期的请求被丢弃,不能取消的已提交短脉冲不宣称可撤回。
反例做不到——网络回包慢时把点击反馈排队,用户滑到下一屏时才震一下,以为自己误触了什么;做过头——为了压低延迟在事件确认前就触发(违反 H3-4)。
H3-2跨模态同步按场景验证必须
一句话:同一事件的视听触输出在实测同步窗内,不套用通用偏移值。
适用同一事件同时通过触觉与视觉或听觉表达时。
规则配对表达同一事件的触觉与视听信号必须落在产品为该模态组合、设备与任务验证的同步窗口内。窗口必须声明参考事件、计时方向和测量方法;目标是实际感知同步,不得仅以同一回调证明。时间戳必须来自可比较的时钟;跨设备时记录时钟对齐误差,不能直接相减两台设备的本地时间。窗口可以不对称,但不得把某项视触实验中的方向与数值直接用于音触、其他身体部位或设备。超过有效窗口且尚未提交的直接反馈按 H3-1 丢弃;已发出的信号无法撤回,须修正后续调度。
依据与参考Di Luca 与 Mahnan(2019)的 19 人 VR 指尖触碰实验报告触觉滞后视觉不足约 50 ms 时难以可靠检出,触觉先行容忍约 15 ms;论文同时讨论任务间差异。这些结果不能直接作为其他设备、身体部位或音触组合的验收阈值。见 原论文。
设计应用动画与触觉共用同一个触发时刻,而不是各自从各自的生命周期回调里触发;跨模态配对写进 Token(haptic.timing.sync.window)。
验证示例
- 用户侧:在真实速度下判断同步体验;慢放只用于分析,不作为感知验证。录屏不能证明实际起振。
- 实现侧:测量配对信号的实际输出时差与抖动,检查是否落入经验证的同步窗;共同事件源是实现参考而非充分证据。
反例做不到——触觉在按钮动画开始前 40 ms 就震了,用户感觉设备在自己动;做过头——为保证严格同步而把视觉动画也延后到触觉起振之后,整个界面变得迟钝。
H3-3连续交互中触觉跟随动作应当
一句话:拖动和滑动的触觉随过程走,不是结束时补一下。
适用拖动、滚动、滑动、刻度选择、吸附、缩放等连续交互。
规则连续交互中的触觉应当随交互状态实时变化,用于表达刻度、边界、吸附与阻力,而不是在交互结束时补发一次总结性反馈。分段类反馈的密度应当随交互速度自适应;不得在高速滑动时继续发放会叠成明显拖尾嗡鸣的离散脉冲——这种输出既失去分段意义,又落入 H4-4 禁止的 buzzy 表现。总量仍受 H7-2 约束。
设计应用把连续交互的触觉当作对物理阻尼的模拟而不是事件计数:接近吸附点时渐强,越过边界时突起,回到自由区时消失。
验证示例
- 用户侧:以极慢和极快两种速度完成同一次滑动,确认两种速度下的触觉都可用且不刺耳。
- 实现侧:在产品声明的速度范围内测量脉冲重叠、可辨别性与总量;检查是否有速度自适应或等效的密度控制。固定间隔仅在导致本条所禁止的失败(连成持续嗡鸣、失去分段意义)时记为不符合,不因"间隔固定"本身判失败。
反例做不到——长列表快速滚动时每经过一项震一下,滚到底手都麻了;做过头——为避免连成嗡鸣而完全取消滑动反馈,刻度选择器失去了它最有价值的部分。
H3-4触觉不得先于事实必须
一句话:结果没定就不要震,触觉在身体上,撤不回来。
适用表示结果、状态或后果的触觉信号。
规则表示结果的触觉必须在结果被实际确认之后播放,禁止基于乐观预测提前触发。外部操作的结果区分成功、失败与未知三态时,触觉只能表达已确认的成功或失败;未知状态不得播放表示成功的触觉,也不应当播放表示失败的触觉,而应当走可回查的通道说明当前状态未确定。未知也不得伪装为已确认失败。
边界条件本条不禁止表示"已受理""正在处理"的过程性触觉,只要它表达的确实是"请求已发出"这一已发生的事实,且与表示结果的信号在语义上可区分(见 H1-2、H2-1)。
依据与参考结果触觉发出后无法回收,错误提示可能导致用户停止核对或离开流程,因此结果语义必须有事实依据;这一要求同样不允许视觉把未知结果说成已成功。
设计应用把"乐观 UI"和"乐观触觉"分开决策;等待时可以显示已受理或处理中;业务成功必须以实际结果为依据,视听触保持语义一致。
验证示例
- 用户侧:在弱网或服务端失败的条件下完成一次支付或提交,确认没有先感到成功触觉再看到失败提示。
- 实现侧:注入成功、失败、回执丢失及重复回调,核对触发依据是否证明业务结果;进入响应回调或收到传输成功码本身不证明业务成功。
反例做不到——点击支付立刻播放成功触觉,随后弹出失败提示,用户已经把手机收起来了;做过头——把所有触觉都推迟到全部后续流程完成,连按钮按下的即时反馈也没有了(违反 H3-1)。
3.4 H4 随能力降级
同一段代码在不同设备上产生的触觉可以完全不是一回事:表现受作动器、驱动、安装、平台调校与接口支持共同影响。宽频不是连续变化的唯一实现条件,清脆与丰富表现也不能仅靠器件名称判断。这个原则管辖的是设备能力差异这一客观事实:设计必须承认自己不知道用户的设备能做什么,因此每个信号要声明它需要什么,做不到时按预先想好的路走,而不是听凭平台自由发挥。降级最危险的失败不是效果变差,是语义漂移——为了"还能感觉到"而把一个成功信号降成了一段长振,而长振在这个产品里恰好表示错误。
H4-1声明所需能力与支持状态必须
一句话:按效果、基元、振幅与包络能力判定支持,不只看器件型号。
适用面向多种设备形态或多种硬件档位发布的产品。
规则每个信号必须声明效果所需能力,并按目标输出设备与运行平台核验。能力档案至少区分无触觉、不支持、支持与未知;按需检查具体系统效果、组合基元、振幅控制、包络及输出位置。自定义包络还必须验证参数组合:频率范围、控制点数量与间隔、总时长及平台要求的结束条件,不能只检查接口是否存在。未知不得当作支持自定义效果;但平台预定义效果的“未优化/未知”不等于“无法播放”,可使用文档承诺且经产品验证的系统降级。运行平台或外设改变后必须重新判定受影响能力。
设计应用把目标设备能力作为设计阶段的输入而不是适配阶段的补救:在决定"这里要一个有质感的滚动反馈"之前,先确认目标设备矩阵里有多少比例能做到。
验证示例
- 实现侧:分别模拟无作动器、缺少一个必要基元、无振幅控制、包络不支持和未知支持状态;核对每条降级路径。
- 用户侧:在实际设备上验证降级质量,不以 API 返回支持代替感觉与语义验证。
反例做不到——按旗舰机的宽频作动器设计整套触觉,中低端机上全部退化成一样的嗡嗡声;做过头——为每一档硬件维护一套完全独立的触觉设计,四套语义清单互相漂移(违反 H2-1)。
H4-2降级链有定义,不静默失效必须
一句话:做不到时按定义好的路径降,不是悄悄不播或退化成嗡嗡响。
适用所有可能遇到能力不足、未知或无输出设备的信号。
规则每个信号必须有可解析、无循环的降级链,终点明确;能力条件不成立时禁止无定义地失效。末项可以为“不播放”,传达的信息由 H5-1 的等价通道保留,纯质感反馈可以直接省略。用于按键、选择等直接操作反馈时,禁止把清脆反馈降成明显拖尾的嗡鸣;主动来电、闹钟等注意提醒可以采用经验证的通断模式,仍受用户设置、时长和总量限制。不得把平台对预定义效果的降级承诺套用于自定义组合。
依据与参考Android 分别说明预定义效果的系统降级、自定义组合的能力检查与自行降级,并区分触摸反馈和注意提醒对 buzzy 的适用性。本规范把它们整理为可检查的降级合同,未声称平台没有降级机制。见 Android API 说明。
设计应用降级链写进 Token(haptic.capability.fallback.chain),由组件库统一执行,不交给业务代码逐处判断。
验证示例
- 用户侧:在最低能力设备上完成主要任务,确认没有出现"按了没反应"或"一直在嗡嗡响"的体验。
- 实现侧:对每个信号强制降级到每一档,逐档记录实际表现;核对不播放是否有明确原因和等价信息,直接操作反馈是否出现不合适的拖尾。
反例做不到——宽频纹理效果在 ERM 设备上直接不播,用户以为滑动没生效;做过头——为了"至少让用户感觉到点什么",在低端设备上把所有信号都替换成 300 ms 长振。
H4-3降级不改变语义必须
一句话:成功降级之后还得是成功,不能变成错误。
适用所有存在降级链的信号。
规则降级后的信号必须仍落在原语义的映射范围内,禁止跨语义降级;降级链上的任一档都不得与语义清单中另一个需要用户区分的含义相同或近似到不可分辨(判定见 H1-2)。当某一档确实无法在不越界的前提下表达原语义时,正确的降级结果是"不播放并走替代通道",而不是借用一个近似的其他信号。频率与强度的关系只在已声明的可比较效果族内判定,不跨族换算。
依据与参考这是 H2-1 在能力维度上的推论,但规范对象不同:H2-1 管的是设计时的映射,本条管的是运行时降级导致的映射漂移。后者不会出现在任何设计稿里,只会出现在低端设备的用户手上。
设计应用在语义清单上做一次跨档位的碰撞检查——把每个信号的每一档降级表现摊平,检查是否有两个不同含义落到了同一处。
验证示例
- 用户侧:在最低能力设备上,让用户区分成功与失败两类结果反馈。
- 实现侧:以用户能理解的语义为单位判定,不以 API 是否调用成功为判据;对用户需要区分的信号对逐档检查;降级后不可区分且仍承担区分职责的,记为不符合。
反例做不到——成功信号在窄带设备上降成一次较长的振动,恰好和错误信号一样,用户在低端机上完全分不清;做过头——为了绝对不碰撞,把降级链一律砍到只剩"不播放",可用设备上的触觉也一并失去。
H4-4优先用平台预定义效果应当
一句话:自定义波形是例外不是默认,长振不是交互反馈。
适用平台提供了预定义触觉效果或基元的场景。
规则平台已提供对应预定义效果或基元时,产品应当优先使用,而不是自行合成波形——预定义效果由平台按各设备的作动器特性调校,跨设备表现更一致。自定义波形应当仅在预定义效果确实无法表达目标语义时使用,且必须同时给出能力声明(H4-1)与降级链(H4-2)。禁止用明显拖尾的长振替代短促的直接操作反馈;主动注意提醒的适用边界见 H4-2。
依据与参考Android 的触觉设计原则把"优先使用预定义常量与效果"列为第一条,并明确要求避免 legacy one-shot 振动(在低性能作动器上会产生 buzzy 表现)。出处见 reference.md。
设计应用在设计评审时把"这个能不能用系统已有的效果表达"作为默认问题;自定义提案需要说明它换来了什么。
验证示例
- 实现侧:清点自定义波形的数量与理由记录;检查代码中是否存在 legacy 长振接口调用。
反例做不到——为了"有自己的品牌手感",把所有系统效果换成自研波形,结果在半数设备上不如系统效果;做过头——因为只用预定义效果,连产品真正需要的连续吸附反馈也放弃了。
H4-5播放中断与恢复有定义必须
一句话:中断后只在仍有效的同一次交互内按预定次数恢复,不补播旧事件。
适用使用自定义播放引擎、连续反馈,或可能遇到后台挂起与外设断连时。
规则产品必须区分未播放、已提交、已结束、被抑制、中断与失败等自身可观测状态;未知不得记为已完成。中断后不得自动补播已过时的离散事件。允许恢复持续效果时,必须先核验交互仍有效、用户仍允许、设备仍可用,再按当前交互状态创建输出。恢复尝试只在仍然有效的同一次持续交互内进行,且次数与终止条件必须预先定义;达到上限或该交互已失效时停止自动恢复,并保留无触觉的任务路径。同一次交互内的帧更新不重置计数;只有新的、独立的交互才可开始新的恢复周期。离散的旧事件不因恢复而重放。
设计应用把播放生命周期归属于具体交互;离开交互使旧请求失效。引擎重建只是准备能力,不是再次播放的理由。
依据与参考Apple Core Haptics 文档描述中断及重建播放器的机制。恢复语义与有限重试是本规范的设计要求,见 准备播放 与 resetHandler。
验证示例
- 用户侧:拖动中切后台,再返回时不出现旧震动;新的操作仍可反馈。
- 实现侧:注入挂起、引擎复位、断连与恢复失败,检查旧事件失效和有界重试。
反例做不到——来电打断后把刚才所有点击重新震一遍。做过头——每次恢复前要求用户重新开启触觉,普通中断也增加操作负担。
H4-6输出位置与接收对象明确必须
一句话:输出位置与接收对象明确。
适用同一产品可以向多个设备、多个控制器或多个振动位置输出时。
规则每个信号必须绑定当前交互的接收对象、设备及需要的位置。改变输入设备、控制器归属或连接状态后必须核对路由,禁止误发到其他用户设备或向所有设备广播。带方向含义的输出须验证左右与位置映射;目标不可用时使用明确的替代路由或不播放,禁止擅自换到不等价的位置。
设计应用直接操作反馈优先对应正在操作的设备;多设备提醒按事件标识去重。位置影响语义时,把位置能力与降级一同登记。
依据与参考Apple Game Controller 使用 locality 指定振动位置,证明多位置输出可实现;对象绑定与防误发是本规范的推导。见 WWDC20 控制器能力。
验证示例
- 用户侧:切换手柄、左右手或手机与外设,确认反馈位置符合预期。
- 实现侧:交换两位玩家的设备归属并断连目标设备,检查路由与去重。
反例做不到——玩家 A 操作后,玩家 B 的手柄震动。做过头——每次点击前弹出设备选择器,尽管当前交互对象已经明确。
3.5 H5 不是唯一通道
触觉是一个瞬时的、无法回看的、可能根本没被接收到的通道(见 H1-5)。它在无需注视界面的场景下有优势——不需要用户看向哪里,也不需要占用听觉——但速度优势不等于可以承担独占的传达责任。这个原则管辖的是触觉与其他通道之间的信息分工:触觉可以第一个到达,但不能是唯一到达的那个。这也是 H6 得以成立的前提——用户有权关掉触觉,正是因为关掉之后什么也不会丢。
H5-1触觉不得是唯一通道必须
一句话:震动里携带的信息,必须还有一个非触觉的等价表达。
适用所有通过触觉传达信息的场景。
规则在本规范覆盖范围内的通用产品中(见附录 B.2),任何通过触觉传达的信息必须有等价的非触觉表达;禁止出现因用户关闭触觉、设备无作动器、能力降级到"不播放"(H4-2)或信号未被感知(H1-5)而导致信息丢失或功能不可用的情况。以触觉为主通道的专用设备不适用本条,其等价性要求按 B.2 单独评估。等价表达必须承载同样的信息,而不只是提示"发生了某事"。
边界条件本条不要求每次触觉都伴随一次视觉或听觉提示。等价表达可以存在于用户可主动查看的界面状态中,不必与触觉同时发生——要求的是信息不丢失,不是通道数量翻倍。纯质感修饰(不传达任何信息)不适用本条。
依据与参考XAG 110 明确建议游戏的重要线索具有其他输出方式;本规范将等价信息保留作为通用产品的体验承诺。WCAG 1.3.3 约束依赖感官特征的操作说明,不能直接称为“一切仅触觉设计均违反 WCAG AA”。见 XAG 110 与 W3C 解释。
设计应用设计触觉时同步回答"关掉它之后,用户从哪里知道这件事";答不上来说明这个信息还没有归宿。
验证示例
- 用户侧:关闭全部触觉后完成同一组任务,确认所有信息仍可获得。
- 实现侧:逐条检查语义清单,标注每个信号对应的非触觉等价表达;空缺即不符合。
反例做不到——静音模式下靠震动区分来电与闹钟,关掉触觉后两者完全无法区分;做过头——每次触觉都配一个 toast,界面被确认提示淹没。
H5-2安全关键信息需并存可查通道必须
一句话:触觉是瞬时的,错过就没了;重要的事要留得住。
适用涉及安全、不可逆后果、时限或费用的提示。
规则此类提示使用触觉时,必须同时存在一个可回查的通道——用户在错过触觉之后仍能主动找到该信息的状态、记录或入口。触觉在这类场景中可以承担"最快到达"的角色,但不得承担"唯一到达"或"一次性到达"的角色。可回查通道的存在必须独立于触觉是否播放成功。需要当下响应的信息还必须在响应期限内可达,事后可查不代替及时表达。
边界条件本条不要求可回查通道与触觉同时呈现,也不要求它常驻在主界面上;要求的是用户在事后能主动找到它。
设计应用把这类提示的状态落到持久的界面对象上(列表项、状态区、通知中心),触觉只作为它的前置提醒。
验证示例
- 用户侧:在触觉发生时把设备放在另一个房间,事后确认用户仍能发现并处理该事项。
- 实现侧:对安全关键类信号逐条检查其可回查通道;仅有瞬时呈现的记为不符合。事后可回查不替代"当前可被及时响应"的表达,两者分别检查。
反例做不到——手表计时结束只振动一次,用户当时未感知,之后界面上没有任何表明它已结束的状态;做过头——把每一条提示都变成不可消除的常驻横幅。
H5-3触觉是强化而非替代应当
一句话:触觉降低确认成本,不替代确认本身。
适用需要用户作出判断或确认的流程。
规则触觉应当用于降低确认成本与提高定位效率——让用户不必低头看屏幕、不必二次核对、不必等待视觉反馈——而不应当用于替代必要的说明或确认步骤。涉及不可逆后果的操作,不得以触觉反馈代替用户可读的确认信息。
设计应用为每个触觉点写清它属于哪一类收益、替代了什么具体成本(一次低头、一次视觉搜索、一次二次核对);这同时也是 H7-4 要求的说明。
验证示例
- 用户侧:按该触觉点所声明的收益,在有无触觉两种条件下比较相应指标(视觉注视次数、完成时间、错误率或主观负担);单一指标无差异不能证明它没有任何收益——须对照其声明的是哪一项成本。
反例做不到——删除操作只给一次触觉,没有任何可读确认;做过头——认为触觉不能替代任何东西,于是在已有清晰触觉反馈的滑动刻度上仍强制弹出数值确认框。
H5-4全关条件进入常规验收必须
一句话:触觉全部关闭时能跑完主要任务,这要被真的测。
适用所有使用触觉的产品。
规则产品必须把"触觉全部关闭"作为常规验收条件之一,覆盖全部主要任务路径;该条件下不得出现信息缺失、流程阻塞,也不得人为增加劝返、确认一类的惩罚步骤。判据是"目标用户能否在任务所要求的时间内取得必要信息",不是"动作数与开启时完全一致"——通道转换本身带来的合理查看或操作差异(例如改为主动查看一次状态,见 H5-1)不计为违反,但须验证其可达性与负担;把信息藏在二级历史页、来不及响应的,不能以"可回查"通过。此项验收不得仅在无障碍专项中执行,也不得以"默认开启所以不影响多数用户"为由跳过。
依据与参考这条把 H5-1 从一项声明变成一项可执行的验收。经验上,等价表达最容易在后期新增功能中被遗漏,而这类遗漏只有在全关条件下才会暴露。
设计应用把触觉全关加入回归测试的设备/设置矩阵,与深色模式、大字号同等对待。
验证示例
- 实现侧:在触觉全关的配置下跑一遍主要任务的回归;缺陷按常规缺陷处理,不降级为体验建议。
反例做不到——只在有触觉的设备上验收,新功能上线后关闭触觉的用户完全收不到某类提示;做过头——为覆盖全关条件,在关闭触觉的用户界面上到处补加冗余提示,反而比开启触觉时更嘈杂。
3.6 H6 身体可控
设备与身体接触时,振动可能引起不适;无障碍指南尤其提醒关注有慢性疼痛或感觉处理差异的用户。这个原则管辖的是触觉对身体的影响与用户对它的控制权。用户对自己身体被如何使用的决定权,优先于产品的任何体验目标或商业目标。
H6-1可关、可调、可分类关必须
一句话:产品内能关闭;支持调强时提供真实调节,多用途时可分类关。
适用所有使用触觉的产品。
规则产品必须提供应用内完全关闭触觉的入口。具备可用强度控制或经过校准的强弱效果时,必须提供相应调节;有两种及以上用途时,必须允许分别关闭这些类别,至少把直接操作反馈与主动提醒分开。调节界面必须与实际能力一致:不支持连续调强时可以提供已验证的离散档位,只有通断能力时明确仅支持开关,不提供无效滑块。关闭必须在播放入口生效并停止可取消的进行中输出;不得仅把平台参数设成 0 就假定无输出。
依据与参考XAG 110 建议关闭、强度调节与替代通道;Game Accessibility Guidelines 明确游戏内关闭的必要性,并建议细调与分用途控制。它们是游戏领域设计参考,不是所有平台必须有连续滑块的统一标准。Android 组合基元的 scale=0 仍可能输出,见 自定义效果文档。
设计应用优先提供简单开关;有多用途与调强能力时逐步增加相应控制。预览只由用户主动触发,使用实际路由与限幅,不因每次打开设置自动震动。
验证示例
- 用户侧:让用户只关闭通知类触觉、保留操作反馈,确认设置生效且不影响其他类别。
- 实现侧:分别验证关闭、弱档及新增信号;在没有振幅控制的设备上检查非零参数是否被映射为满强度,不能满足弱档承诺时停播或选已验证替代效果。
反例做不到——只有一个"震动 开/关",想保留按键反馈就必须忍受全部推送震动;做过头——把触觉设置拆成十几个独立开关铺满一整屏,没人找得到自己要的那个。
H6-2系统设置优先必须
一句话:系统级的静音、专注、触觉设置不得被绕过。
适用运行在提供系统级触觉、静音或专注模式设置的平台上。
规则产品必须按平台对当前用途规定的设置与调用策略执行;静音不等于关闭所有触觉,专注也不必然屏蔽主动操作反馈。系统级设置必须优先于产品自身设置:产品可以在系统允许的范围内进一步收紧,禁止提供"覆盖系统设置"的选项或以任何方式绕过。用户关闭触觉后,产品不得以"重要提醒""安全相关""仅此一次"为由恢复播放;此类信息按 H5-1、H5-2 走其他通道。情境探测(H1-3)导致的调整同样不得越过用户设置。
边界条件本条不排除平台自身定义的例外通道(如系统级紧急警报),那类通道的行为由平台而非产品决定,产品不得自行仿制。
设计应用优先采用遵守系统策略的语义接口与通知通道;平台不开放设置查询时遵守其调用合同,不声称能读取所有系统状态。
验证示例
- 用户侧:开启系统专注模式后触发各类事件,确认产品行为符合系统设置。
- 实现侧:检查是否存在忽略系统状态的直接调用路径;存在即不符合。
反例做不到——用户在系统里关闭了触觉,应用仍以"关键通知"名义震动;做过头——系统开启专注模式后连用户主动点击的操作反馈也一并停掉,界面变得没有响应感。
H6-3不为商业目的发起触觉禁止
一句话:不用震动做营销、留存、催促和注意力争夺。
适用所有未由用户当前操作触发的主动触觉。
规则禁止为营销、促活、留存、限时催促或注意力争夺而发起用户未请求的触觉。主动触觉必须对应用户已订阅的事件或用户委托的任务进展;产品不得通过触觉制造紧迫感,也不得把触觉作为提升打开率的手段。这一禁止不因用户"未明确拒绝"而放松——未拒绝不是同意。
依据与参考这是本规范对非请求式身体打扰的设计立场,依据是主动提醒的可预期性与用户控制承诺;不声称触觉是唯一不可回避通道,也不将其写成已有行业禁令。
设计应用在触觉方案评审中把"这个事件是用户订阅的吗"作为主动触觉的准入问题;未经请求的促销、召回、内容推荐不配触觉;明确订阅的事件仍须核对用途与系统通知设置。
验证示例
- 实现侧:清点全部主动触觉的触发来源,逐条确认对应用户已订阅的事件或已委托的任务;找不到对应的即不符合。
反例做不到——用户未订阅时,购物车商品降价就震动,倒计时结束前再震一次;做过头——把用户明确订阅的、有时限的重要提醒也一并去掉触觉,导致真正需要的提醒错过。
H6-4强度与时长受安全上限约束必须
一句话:上限来自身体和设备,不由体验目标决定。
适用所有触觉输出,包括自定义波形与连续触觉。
规则触觉的强度与持续时间必须受上限约束,上限依据设备或平台允许的输出边界、接触条件与目标人群的适用评估确定,不得由产品的体验目标或强调需要放宽。禁止使用长时连续触觉制造压力、催促或阻碍用户完成操作。连续或重复触觉必须有包含重复与间隔的总历时上限,并有自动停止条件;用户关闭、取消或结束所属交互时必须立即发出停止请求,并在设备实测停止时限内结束可取消的输出。不得承诺撤回已经发出的短脉冲;普通滑动更新不是取消动作,不应被一律当作停止。
边界条件本条不针对以持续触觉为核心功能的专用设备(按摩、康复、专业触觉显示),那类产品的上限由其领域规范确定;专用设备的停止机制亦须按其领域标准验证。
设计应用把经设备规格与产品评估确定的上限写进可解析策略,并在输出层强制(haptic.intensity.limits.ref、haptic.texture.duration.max、haptic.playback.stop.max_latency);平台不开放物理幅值时,记录接口控制边界与可测输出,不编造数值;频次配额或舒适性测试不是人体安全认证。
验证示例
- 实现侧:构造越界配置和运行中达到上限两种情况,确认前者被拒绝,后者按已验证策略停止或抑制;不以任意裁剪未知波形宣称语义仍正确。
- 实现侧:在连续触觉中关闭开关、取消或离开交互,测量停止时限;正常拖动更新仍按 H3-3 反馈。
反例做不到——错误提示用 2 秒持续强振"引起重视",用手不便的用户无法快速消除;做过头——把上限压到几乎无法感知,H1-1 不再成立。
H6-5关闭不得成为惩罚必须
一句话:关掉触觉之后不掉功能、不加惩罚步骤、不反复劝返。
适用产品提供触觉开关或强度调节时。
规则用户关闭或调低触觉后,产品禁止移除功能、人为增加惩罚性步骤、降低响应质量,或反复提示重新开启。通道转换带来的合理查看差异按 H5-4 的口径验证其可达性与负担,不以动作数完全相同为统一判据;减少多余步骤仍是默认方向。关于触觉的引导至多提供一次性说明,不得在每次启动、每次相关操作或每次重新进入设置后重复劝返。关闭状态必须在应用自身可持久化范围内保留,重启或配置重载不得重置;提供备份恢复或跨设备同步时,必须定义偏好恢复与冲突规则,防止旧的开启值覆盖较新的关闭决定。全新安装且无备份时无法恢复旧偏好,不宣称能恢复;设备特有强度档需重新适配。
依据与参考这是 H6-1 的兑现条件。一个可以关闭但关闭后被持续骚扰、或被悄悄改回来的开关,等于没有开关;而对因疼痛而关闭触觉的用户来说,重复劝返本身就是持续的负担。
设计应用把触觉设置纳入与隐私设置同级的"用户已作决定不再询问"处理;恢复设置时显式保留该项。
验证示例
- 用户侧:关闭触觉后完成代表性长任务,确认没有重复劝返、功能缺失或人为障碍,并记录通道转换的合理负担。
- 实现侧:重启并重载配置,确认关闭状态保持;产品提供备份恢复或跨设备同步时,再检查相应路径。
反例做不到——关闭触觉后每次启动都弹"开启触觉获得更好体验",重载配置后自动恢复默认;做过头——因为不能提示,连首次进入时"本应用使用触觉反馈,可在设置中调整"这一句说明也不给。
3.7 H7 节制
多个功能各自适度的反馈,叠加后仍可能造成过度打扰或互相遮蔽。H7 管理产品共享输出的频次、总时长与优先级,并通过长任务测试检查其实际收益。预算用于约束打扰,不能保证所有关键提醒都会被感觉到。
H7-1强度匹配重要性与频率必须
一句话:越频繁越轻,越重要越强,不因为"想被注意到"提级。
适用产品存在多档强度可选时。
规则在同一设备、可比较的效果族与同一类任务内,信号强度应当与事件的重要性正相关、与发生频率负相关:高频事件(滚动、选择、按键)应当优先使用该族中经验证仍可觉察、可辨别且舒适的较弱信号,只有重要且低频的事件才使用较强信号。跨不同效果族之间不作强度排序。禁止仅因为某个功能"希望被注意到"而提升其强度档位——提级必须依据事件对用户的实际后果,并记录理由。渐进式交互(拖动、吸附、接近边界)可以在过程中逐步增强,但峰值仍受本条与 H7-3 约束。
依据与参考Android 的触觉设计原则明确要求把事件的重要性与频率同强度关联,并对渐进式交互给出逐步增强的建议。出处见 reference.md。
设计应用在语义清单上把"频率"作为一列,与强度档位一起评审;两列的相关性一眼可见,异常项自然浮出。
验证示例
- 实现侧:统计各信号的实际触发频率,与其强度档位做对照;高频高强度的条目逐条要求理由。
反例做不到——列表滚动的每一格都用中等强度,滚三屏手就麻了;做过头——把所有信号压到同一最弱档,重要提醒和滚动刻度感觉完全一样(同时违反 H1-2)。
H7-2总量有上限,超限合并或丢弃必须
一句话:密集触发时合并或丢掉,不排队补播。
适用可能在短时间内密集触发触觉的场景。
规则产品必须定义同类信号的最小间隔、单位时间上限及共享计量范围;重叠范围必须同时满足,不得通过拆分信号组或重建播放器重置预算。一次语义效果内的多个脉冲不得拆成多次业务事件来混淆计数,输出总时长仍单独受限。超出上限时必须合并或丢弃,禁止排队补播(过期直接反馈见 H3-1;主动提醒也不逐条补偿堆积的历史事件)。合并规则必须明确(取已定义优先级的信号、取最新、抑制后续),并保证合并后的结果不会造成语义误导。批量事件(批量导入完成、多条消息同时到达)必须按事件组而非按条目发放触觉。
设计应用把节流放在输出层统一处理,而不是让每个功能自己判断"我震得多不多"——单个功能永远觉得自己不多。
验证示例
- 用户侧:一次性触发大量事件(如同时收到二十条消息),确认触觉是一次而不是二十次。
- 实现侧:从多个调用入口并发触发同一作用范围的信号,确认共享上限不能被绕过;实现位置不单独作为判据。
反例做不到——群消息刷屏时逐条震动,手机在桌上跳;做过头——节流窗口设得过长,用户连续的两次不同操作只得到一次反馈,误以为第二次没生效。
H7-3最强级是稀缺资源必须
一句话:被指定为保留输出的那一组信号限定用途和频次,并保留其他有效信息通道。
适用产品指定为高显著性保留输出的档位或效果集合——即 Token 中 level.max.reserved_for 所约束的那一组输出,无论其在枚举中被称作"强"还是被实现为某个自定义效果。判据是"是否被指定为保留输出",不是枚举项的字面名称;产品未指定保留输出时,本条不适用,但也不得存在事实上长期承担该角色却不受配额约束的输出。仅有一种轻点击或某效果恰好是普通效果中最强,不自动构成保留输出。
规则保留输出必须有明确限定的用途清单(如不可逆后果、安全提示、需要立即中断当前动作的事件),并必须有单位时间的配额上限;超出配额时必须降级或改走其他通道,不得继续发放。用途清单为空时,产品不得指定保留输出,也不得让任何输出事实上承担该角色。这一档的稀缺性必须被主动维护——频繁使用可能降低显著性,但不得把习惯化描述为永久不可恢复,也不得用提高振幅替代信息通道设计。
依据与参考这是"确认疲劳"在触觉通道上的同构问题:真正重要的那一次之所以有效,靠的是此前的克制。本规范以配额约束打扰,但配额数值及净收益仍需长任务测试,不是已有生理学安全阈值。
设计应用把保留输出的用途清单作为评审对象;新增申请要说明它比清单上已有的项目更重要还是同等重要。
验证示例
- 实现侧:清点保留输出(按
level.max.reserved_for的登记,而非按枚举名称)的调用点与实际触发频率;用途在清单外的、或频率超配额的,逐条处理。另需检查是否有未登记但实际承担保留职责的输出。
反例做不到——所有错误提示都用保留输出,用户每天遇到十几次,真正的安全提示被当成又一个表单校验失败;做不到(另一种)——把最显著的效果实现为一个名为"中"的自定义效果,以此绕开配额;做过头——设立保留输出却因为"怕滥用"从不使用,安全提示与普通提示手感相同。
H7-4默认不加,加了要说清换来什么应当
一句话:新增触觉的默认答案是"不加"。
适用新增触觉点的设计决策。
规则新增触觉的默认答案应当是"不加";提出新增时应当声明它属于哪一类收益,并按该类的口径说明:
| 收益类别 | 需要说明的内容 | 验证口径 |
|---|---|---|
| 功能成本改善 | 替代了哪一次具体成本——一次低头、一次视觉搜索、一次二次核对、一次等待 | 有无对照下该项成本指标的差异 |
| 质感与愉悦 | 目标手感、适用场合、预计触发量 | 主观评价与触发量预算,不要求功能指标改善 |
说明不得只援引一般性理由("触觉提升体验""竞品也有"),也不得把质感类提案写成功能成本改善。无法按所属类别给出说明的触觉点,应当不加或先做对照验证。
边界条件本条不禁止以质感与愉悦为目的的触觉。它要求的是这类提案同样接受总量预算(H7-2、H7-3)的审视,并且明确自己属于哪一类——把质感提案说成功能必需,是本条真正要拦的东西。
设计应用把这条做成设计评审的一个固定字段,而不是一次讨论;并在持续使用中比较触发量与任务收益,避免预设改善幅度。
验证示例
- 用户侧:功能成本改善类做有无对照,观察其所声明的那项指标(视觉注视次数、操作时长或错误率)是否确有差异;质感类按主观评价与触发量预算核对,不以功能指标判定成败。
- 实现侧:检查语义清单中每个条目是否填写了收益类别及对应说明;空白项或类别与说明不匹配的,在下一轮评审中重新审视。
反例做不到——每个新组件上线都顺手带一个触觉,一年后产品有四十种震动;做过头——把所有质感类触觉一律否决,产品的触觉只剩下三个功能性提示,交互显得生硬。
H7-5并发信号按语义取舍必须
一句话:并发信号按语义取舍。
适用多个信号可能重叠、同一事件可能被多层组件重复触发,或连续效果与提示共用输出端时。
规则产品必须定义重复事件去重、不同事件的优先级以及重叠时的合并、抢占或抑制规则。优先级依据用户任务与后果,不由振幅自动决定。禁止未经验证地叠加需要区分的信号而改变其含义;被抢占的离散事件不补播,持续过程仅在仍有效时按 H4-5 恢复。仲裁不得越过用户设置、时长及总量上限。
设计应用先去除同一业务事件重复调用,再处理不同事件的竞争。系统控件自带反馈时,避免业务层再追加一遍;需要混合的游戏效果单独验证。
依据与参考平台支持混合不代表混合后仍可辨义。Apple 控制器文档描述播放器叠加;本条的语义仲裁来自 H1-2 与 H2-1 的必要性推导。
验证示例
- 用户侧:持续质感中触发错误或边界,验证关键含义仍可识别且无突发强振。
- 实现侧:同时触发成功与失败、组件与业务层重复事件,检查去重、优先级和配额。
反例做不到——一次提交成功被控件、业务和通知层各震一次,像三次结果。做过头——把不同业务事件都当作重复,连续两次真实操作只反馈一次。
4. 术语和定义
| 术语 | 定义 |
|---|---|
| 触觉信号(信号) | 有唯一标识、承担单一含义或质感目标的设计条目;一次播放是该信号的运行实例。语义清单登记信号,Token 引用并配置它。 |
| 语义清单 | 记录产品全部触觉信号及其含义、触发场景、能力需求与降级链的清单(H2-5)。设计与工程共用同一份。 |
| 能力档案 | 目标设备在指定运行平台上的效果、基元、振幅、包络与位置支持状态;可引用产品能力预设,但不把作动器型号作为严格的高低排序(H4-1)。 |
| 降级链 | 当设备不满足信号声明的能力时,依次尝试的替代表现序列,末项为明确结果(更低等级的信号或不播放)(H4-2)。 |
| 清脆 / 连续 / 纹理 | 三类触觉表现:清脆用于离散事件(点击、确认),连续用于持续过程(进度、阻尼),纹理用于表达材质与起伏。 |
| buzzy | 嗡嗡的、拖尾的、带残响的振动表现,通常来自长时通断驱动或低性能作动器。直接操作反馈应避免该表现,主动注意提醒的边界见 H4-2、H4-4。 |
| 同时性窗口 | 两个不同通道的信号被感知为"同时发生"的时间范围。窗口及其方向依赖任务、模态组合与刺激,应按实际情境测量(H3-2)。 |
| 习惯化(habituation) | 反复刺激后行为响应下降的现象;不等同于外周感觉适应,不表示永久不可恢复。本规范用长任务验证校准节制策略(2.3、H7-3)。 |
| 主动触觉 | 未由用户当前操作触发的触觉,如通知、提醒、任务进展。其准入条件见 H6-3。 |
| 可回查通道 | 用户在错过瞬时提示之后,仍能主动找到该信息的状态、记录或入口(H5-2)。 |
| 声明情境 | 产品声明其触觉设计所针对的使用条件(手持、桌面、口袋、佩戴、运动等),是可觉察性验证的基准(H1-1、H1-3)。 |
5. 从任务到触觉方案
本章提供设计方法,不新增强制条款。先确定用户需要知道什么,再决定是否输出、输出什么,以及无法输出时怎么办。
5.1 场景选型
| 用户当前的问题 | 触觉可以承担什么 | 推荐起点 | 省略或改变方案的条件 |
|---|---|---|---|
| “这个操作被接受了吗?” | 已成立的选择或操作反馈 | 标准组件或平台语义效果;检查组件是否已自带 | 没有状态变化、触摸已取消、没有额外收益时省略 |
| “到目标位置了吗?” | 刻度、吸附与边界 | 越过有效状态边界时给短反馈;高速时稀疏采样 | 抖动反复穿越同一边界时先稳定状态;反馈不得连成嗡鸣 |
| “操作成功了吗?” | 已确认的成功或失败 | 绑定真实结果,并留下可访问的结果状态 | 等待、未知或部分成功时,不借用全部成功的信号 |
| “有我订阅的事需要处理吗?” | 提醒用户回到可查看的信息 | 使用系统通知机制与适用用途 | 未订阅、已处理、过期或系统抑制时不绕过策略 |
| “这个对象有什么质感?” | 与动作对应的物理感或愉悦 | 短促、少量效果;有必要才用自定义 | 无可验证的质感收益、干扰输入或造成不适时省略 |
| “过程中是否在接近目标?” | 连续变化或关键节点 | 优先关键节点;确有持续感需求才用有界连续效果 | 不知道真实进度、页面已离开或动作已停止时不继续 |
平台含义必须先核对。“通知反馈”这一 API 名称不表示拥有后台推送权限,“impact”也不表示业务成功。具体机制的适用条件见 来源说明。
5.2 六步完成一个信号的设计
- 定义收益:说明用户在哪个任务时刻遇到确认、定位或质感问题;写出没有触觉时的基线。没有触觉仍能完成任务,是比较方案的起点。
- 定义事实与含义:写清触发依据、取消条件和有效期。把按下、受理、处理中、成功、失败、未知分开;不要让一种结果触觉承担整个流程。
- 选择最小表现:先检查系统组件与平台语义效果。只为需要区分的含义增加词汇;强弱与节奏是候选表现,不是已经成立的感知结论。
- 确定设备与接触条件:列出实际输出设备、手持或佩戴方式及能力条件。每个候选效果写出降级终点,包含不播放;无需为不可控制的频率强行配置数值。
- 组合控制与预算:明确关闭、分类关闭、时效、总量、并发取舍及停止。多项限制同时生效,优先级高不能免除这些限制。
- 提出证据与失败处置:分开验证配置、输出机制与用户体验。先写通过标准再测试;不通过时选较简单效果、缩小适用范围或不播放,不以加大强度作为唯一修复。
5.3 最小设计记录
以下内容可以放进现有设计稿、工单或效果清单,不必建立独立流程。规则编号、Token 名称服务于追溯,运行事件标识与测试结果不做成配置项。
| 记录项 | 需要回答 | 示例:保存结果 |
|---|---|---|
| 用户与收益 | 谁在什么情境下受益;属于功能还是质感 | 手持编辑时减少重复查看保存状态,功能收益 |
| 事实与语义 | 什么事实成立;用户应理解什么 | 当前文稿内容已被存储服务确认持久化;仅表示此次保存成功 |
| 触发与失效 | 从何时计时;什么情况下不再播放 | 从成功事实被确认计时;离开该交互、后续编辑使回执不再对应当前内容、超时则不播 |
| 表现与学习 | 选用什么语义效果;用户怎样理解 | 平台对应结果效果,和“已保存”状态配对;不要求先学习节奏 |
| 能力与降级 | 需要什么;做不到时如何处理 | 系统效果及其验证过的降级;无合适表现则不播放 |
| 等价信息 | 不振动时从哪里知道 | 可访问的保存状态及失败详情,结果未知时显示“尚未确认” |
| 控制与总量 | 哪些设置、预算和停止条件适用 | 操作反馈分类;每个成功事实只输出一次;自动保存高频发生时合并或省略 |
| 证据与决定 | 哪些条件测过;哪些尚未通过 | 回执丢失、重复回调、关闭、冷启动、低能力设备及用户对照测试;未取得证据前不写“已通过” |
5.4 交付责任
设计负责语义、收益、可理解性、等价信息与控制入口;工程负责能力适配、时钟、去重、预算与停止机制;测试和研究负责在目标设备与人群上取得相应证据。同一人可以承担多个角色,但不能用“配置已写好”代替执行证据。
交付时带上可解析的效果引用、适用条件、尚未通过的情况和失败处置。无需向用户展示波形参数、接口名或预算字段;用户看到的是“操作反馈”“提醒”“关闭”和真实有效的强度选择。
6. 验证、验收与持续使用
6.1 三类证据
| 证据 | 验证什么 | 不能代替什么 |
|---|---|---|
| 配置与机制 | 引用完整、数值合法、条件依赖、关闭门控、去重、共享预算、恢复上限 | 不能证明马达实际输出,也不能证明用户理解 |
| 实机测量 | 实际起振、停止、拖尾、同步误差、设备和传感器干扰 | 不能把加速度或调用成功直接解释为舒适或可辨义 |
| 用户与任务 | 觉察、辨别、语义识别、舒适、长期负担及所声明收益 | 不能证明所有并发、取消或低能力路径都受机制约束 |
实机测量覆盖冷启动、预备状态、负载、后台切换与目标外设。统计方法记录样本数、分布、尾部延迟和测量误差;只报平均耗时会掩盖迟到的反馈。预备引擎可减少延迟,但不保证起振,也不允许提前表达结果。Apple prepare() 说明预备状态会结束,紧接播放前才调用也未必改善延迟。
6.2 最小场景矩阵
| 条件 | 观察与操作 | 判定依据 |
|---|---|---|
| 正常与未知结果 | 成功、失败、等待、部分成功、回执丢失 | 只表达成立的事实,等价信息可获得(H3-4、H5-1) |
| 关闭与弱档 | 产品关闭、分类关闭、用户最弱档、系统抑制 | 关闭无产品输出;弱档真实生效;任务可完成(H6-1、H6-2、H5-4) |
| 能力与参数边界 | 无设备、未知支持、缺基元、无幅度控制、包络越界 | 按合法路径降级或省略,不偷偷全强度输出(H4-1~H4-3) |
| 时效与负载 | 快速连续操作、主线程繁忙、冷启动、跨设备时钟误差 | 测实际起振,过期不补播;不足以证明同步时不宣称同步(H3-1、H3-2) |
| 重复与竞争 | 多组件重复请求、两次独立操作、不同优先级并发 | 同一事件不重复,真实不同事件不误去重,所有共享预算同时生效(H7-2、H7-5) |
| 停止与恢复 | 播放中关闭、交互取消、应用挂起、外设断连、引擎复位 | 在承诺时限内停下;离散旧事件不重播;恢复有限(H4-5、H6-4) |
| 路由与接触 | 切设备、换手或交换控制器归属、桌面与佩戴 | 对象位置正确;感知范围与声明一致(H4-6、H1-1) |
| 长任务与干扰 | 代表性任务持续使用、拍摄、录音与惯性采集 | 不适、误判、累积打扰及机械干扰均被记录和处理(H1-6、H7-4) |
6.3 用户研究的最小纪律
- 觉察与猜测分开:随机混入无触觉试次,记录漏感和误报;避免让参与者看见测试人员按按钮后猜测。
- 感觉不同与知道含义分开:先做必要信号对的辨别,再采用产品真实引导测语义识别;记录成功误判为失败和失败误判为成功各自的后果。
- 阈值预先确定:按任务后果定义样本、试次、通过标准和不确定性处理,不提供跨产品统一百分比。少量试播可筛选候选,不能证明全部目标人群有效。
- 收益按声明验证:对比无触觉、最小必要反馈和候选方案;比较对应的错误、时间、查看负担或质感评价。改变试验顺序以减少练习效应。
- 长任务与退出权:观察短期新鲜感之后的累积负担;参与者随时可以暂停或关闭。记录设备接触、学习条件、个体差异和失败样本,不要求忍受不适完成试验。
6.4 验收决定
不把全部指标平均成一个总分。关闭后仍输出、虚报结果、误发到其他用户设备、预算可绕过等违反适用硬要求的失败,不能由满意度高分抵消。感知、时序与收益按预设的产品标准判断;证据缺失记为待验证。
| 决定 | 适用条件 | 交付方式 |
|---|---|---|
| 通过 | 适用要求及声明的产品标准均有证据 | 明确设备、效果、用途、接触条件与目标人群范围 |
| 限定使用 | 部分效果或设备未通过,已验证的替代路径可用 | 关闭相应自定义效果、使用已验证系统效果或限定设备;无触觉任务路径仍通过 |
| 不通过 | 控制、事实、信息或输出边界未兑现 | 停用受影响输出或阻止该方案交付,修复后重测 |
使用中观察抑制、超时、中断、配置错误、用户关闭与不适反馈。抑制率高可能是设置被正确遵守,也可能是设计过密;不以“提高播放率”为优化目标。调试记录尽量只保留事件类型、效果标识、输出目标类别和原因,不复制业务正文。设备能力、接触条件、效果或目标用户改变时复核受影响证据;详见附录 A。
附录 A:验证清单
本清单用于自查与评审,不新增义务。每项对应正文中的具体规则,判定以正文为准。
分类检验(用于检验原则切分,见第 1 章):取任意一条规则的具体要求,交给三名未参与撰写的评审者独立归属到七条原则之一;出现分歧的条目,检查的是原则的切分而不是评审者的理解。
信号级检查(对语义清单中的每个条目):
- 含义与信号对应清楚,需要区分的含义不混淆,产品内一致(H2-1)
- 与平台系统语义不冲突(H2-2)
- 声明了所需能力(H4-1)
- 有降级链,末项明确;直接操作反馈不降成拖尾嗡鸣(H4-2)
- 降级链各档不与其他语义碰撞(H4-3)
- 传达信息时有对应的非触觉等价表达;纯质感标为不适用(H5-1)
- 在声明的每种情境下按下表的层级验证过(H1-1、H1-3、H1-2)
- 记录了收益类别(功能成本改善/质感与愉悦)及对应说明(H7-4)
- 强度档位与触发频率的关系合理(H7-1)
感知与体验验证(各项证据分别记录;语义识别依赖必要的觉察与辨别,舒适性和任务收益另行判断。纯质感不要求语义识别,不能因为没有功能收益就否定其质感目标):
| 层级 | 问的是 | 通过的含义 | 典型方法 |
|---|---|---|---|
| 觉察 | 用户是否感知到有信号 | 在声明情境与用户所选强度档下可被察觉 | 实机测量 + 有无判断 |
| 辨别 | 两个信号是否可被区分 | 混淆矩阵在可接受范围内(H1-2) | 成对比较 |
| 语义识别 | 用户是否知道它表示什么 | 能说出或正确响应其含义(H2-1) | 情境任务 |
| 舒适性 | 长期使用是否可接受 | 满足预设舒适性标准;不适和关闭意愿分别记录,不把自愿关闭判成用户失败 | 长任务与主观评价 |
| 任务收益 | 它是否带来所声明的那一类收益 | 按 H7-4 所声明的类别对应口径 | 有无对照 |
重新验证触发(命中任一项时,相关层级的既有结论作废,须重新验证并在证据中记录触发原因):
- 信号参数、效果族或降级链发生变更
- 目标设备、作动器或系统行为改变,导致能力核验结果改变
- 新增或调整声明情境
- 语义清单新增条目,或已有条目的含义改变
- 强度档位映射或平台缩放行为改变
- 目标人群扩展到原验证未覆盖的群体
未触发时沿用既有结论;结论作废期间不得以"曾经验证过"充当证据,也不得因缺少新证据就把该信号当作已通过。
系统级检查:
- 触觉全关条件在常规验收矩阵中,覆盖主要任务路径(H5-4)
- 存在应用内关闭入口;强度与分类控制匹配实际能力和用途(H6-1)
- 遵守当前用途对应的系统设置与调用策略,无绕过路径(H6-2)
- 强度与时长上限在实际输出前强制(H6-4)
- 共享预算在所有入口生效,超限为合并或丢弃(H7-2)
- 保留输出(
level.max.reserved_for)有用途清单与配额,且无未登记却事实上承担保留职责的输出(H7-3) - 全部主动触觉可追溯到用户订阅的事件或委托的任务(H6-3)
- 无以触觉播放回执认定用户已知悉或同意的状态迁移(H1-5)
- 结果类触觉的触发点在结果确认之后(H3-4)
故障注入:
- 强制把能力探测结果置为"未知",确认自定义能力不被当作已支持,允许的系统降级仍可用(H4-1)
- 强制每个信号降级到每一档,逐档记录实际表现(H4-2、H4-3)
- 注入延迟使触觉超出上限,确认丢弃而非补播(H3-1)
- 一次性触发大量同类事件,确认按定义合并或丢弃(H7-2)
- 重启、重载配置后保持关闭;提供备份恢复或跨设备同步时检查其冲突处理(H6-5)
补充的故障与长任务验证:
- 自定义基元 scale=0、无振幅控制两种设备路径均验证“关闭确实不输出”(H6-1)
- 中断、复位、切后台、取消后不补播旧事件,新的有效操作能继续(H4-5)
- 更换控制器与交换用户归属,反馈不发错设备或位置(H4-6)
- 多类事件竞争和同一事件重复投递,语义与总量仍正确(H7-5)
- 录音、拍摄、硬桌面和传感器使用期间验证机械干扰(H1-6)
- 完整任务中比较有无触觉的错误、时间、混淆、不适与用户负担;反馈过少导致的操作困难同样记录(H1-1、H1-2、H5-3、H7-4)
评审证据应记录设备与运行环境、接触条件、目标人群、学习方式、实际效果与配置、通过标准及失败样本。可使用现有测试记录,不要求另建文档。软件自动检查用于验证门控与状态,实机测量用于验证物理起停与输出特性,用户测试用于验证觉察、辨别、语义识别、舒适性与任务收益;三者不能互相替代,感知层级之间也不能互相替代(见上文层级表)。
附录 B:论证边界与来源
B.1 约束词的判据
标「必须」的依据是缺失后可预见地破坏可理解、可用或可控制的体验承诺。每条按具体适用条件判断;本规范的强制性不等于法律或国际标准的强制性。
| 论证类型 | 能说明什么 | 不能推出什么 |
|---|---|---|
| 实验研究 | 指定人群、设备、刺激与任务中的测量结果 | 所有用户、模态与设备的通用阈值 |
| 平台与无障碍指南 | 支持状态、平台行为与已有设计建议 | 所有平台都具备同一能力,或建议自动成为通用强制条款 |
| 必要性推导与设计判断 | 缺少某种处理时的可预见体验失败 | 已有行业共识、量化净收益或临床安全保证 |
B.2 适用范围
本文涵盖通用产品中的振动触觉输出。专用触觉阅读与编码设备可参照语义和控制原则,但其通道设计与训练需要单独评估,不能机械套用 H5 的通用产品前提。力反馈、阻抗、外骨骼、热刺激、电刺激、超声与静电触觉的特有要求不在覆盖范围内。车载、医疗与儿童产品需要领域评估,本文不证明其安全或合规。
ISO 9241-920 的公开摘要明确包含要求与建议,并覆盖更广的触觉输入输出与编码。此处仅采用公开摘要,未读取受限全文,因此不判断它是否已经覆盖本文每一项机制,也不宣称本文是唯一成体系的规范。平台文档的代码示例只是实现参考,不以其中的错误处理直接决定产品行为。
B.3 来源与条款对照
| 条款 | 类型 | 来源与支持范围 |
|---|---|---|
| H1-1、H1-2 | 研究 + 设计判断 | 指部阈值研究支持情境敏感性;不支持固定语义数量上限或“节奏永远优于强度” |
| H1-6、H2-2、H4-4 | 平台指南 | Apple HIG、Android 原则支持一致性、能力适配与干扰检查 |
| H3-1、H3-2 | 研究 + 必要性推导 | WHC 2019 支持特定 VR 条件下的视触时差;实际起振测量与过期处理是本文整理的要求 |
| H4-1、H4-2、H6-1 | 平台文档 | Android API、自定义效果文档支持逐能力检查、区分系统与应用降级、0 参数不等于关闭 |
| H4-5 | 平台文档 + 必要性推导 | Core Haptics 的中断与复位;恢复时核验当前交互是本文要求 |
| H4-6、H7-5 | 平台文档 + 必要性推导 | Apple 控制器位置与叠加能力;路由防误发和语义仲裁是本文要求 |
| H5-1、H6-1 | 无障碍设计指南 | XAG 110 与 Game Accessibility Guidelines 支持可关闭、调强与替代信息;应用到通用产品需核对能力 |
| H6-3、H7-2、H7-3、H7-4 | 设计判断 | 主动提醒范围、预算与新增理由是本项目治理选择;没有声称通用生理配额 |
可点击来源、获取状态、数值条件与未解决事项见 reference.md。
实施验收场景
以下场景把已有条款转成可复核的验收输入,不另设通用性能阈值。按产品适用能力选取,补充真实设备、用户、输入序列和证据;不适用记录原因,未执行不得记为通过。
| 条款 | 测试输入与异常 | 预期行为与失败判据 |
|---|---|---|
| H4-3 | 设备仅支持一种振动而任务要求区分成功与失败。 | 不把相同波形当作两个已可辨语义,保留非触觉信息。 |
| H3-1 | 触觉请求排队到其有效时限之后。 | 放弃旧事件,不补播造成错误因果关联。 |
| H6-1 | 用户缩放设为 0,然后触发最高优先级普通反馈。 | 产品门控不输出;不通过保留输出档绕过用户选择。 |
每个场景分别核对配置的有效值、执行记录与用户可理解的结果。保留版本、目标、事件时点、失败范围和恢复结果;外部结果未知不填作成功或失败。
使用说明
本字典记录振动触觉中的可复用设计决定,适用于手机、手表、触控板、手写笔和游戏控制器。先确定用户收益、事件含义与失败处置,再选择参数。字段不是设置页控件,也不是波形文件。行为要求见 设计规范。
触觉参数不保证跨设备同感。公共 Token 记录语义、相对等级、能力需求与行为策略;平台常量、基元序列、波形和设备校准值留在可追溯的效果库。时间与频率可以使用有单位数值,但不得把单设备测量作为所有设备默认值。
十类速览
| 类别 | 前缀 | 必选 | 可选 | 合计 | 负责什么 |
|---|---|---|---|---|---|
| 语义 | haptic.semantic | 3 | 2 | 5 | 表达含义与共享清单 |
| 强度 | haptic.intensity | 3 | 1 | 4 | 相对强度与输出限制 |
| 质感 | haptic.texture | 2 | 3 | 5 | 表现类别与持续时间 |
| 时序 | haptic.timing | 2 | 3 | 5 | 事件到起振、跨模态同步 |
| 能力 | haptic.capability | 3 | 1 | 4 | 实际特性与降级路径 |
| 节制 | haptic.budget | 2 | 5 | 7 | 频次、配额与并发取舍 |
| 情境 | haptic.context | 1 | 3 | 4 | 使用条件与机械干扰 |
| 用户控制 | haptic.user | 2 | 4 | 6 | 关闭、调节与偏好保持 |
| 播放生命周期 | haptic.playback | 1 | 3 | 4 | 停止、中断与恢复 |
| 输出路由 | haptic.routing | 0 | 3 | 3 | 接收对象与输出位置 |
必选与可选
| 级别 | 含义 | 配置方式 |
|---|---|---|
| 必选 | 适用产品或信号必须明确的基础决定。 | 可继承有明确来源且可解析的产品预设;不要求用户逐项填写。允许通过关闭、不使用或空集合表达真实限制。 |
| 可选 | 仅在相应能力或使用场景存在时配置。 | 启用该能力后,依赖必须完整;无能力时不提供虚假的设置。 |
语义、信号、效果与播放请求
| 对象 | 负责什么 | 关键边界 |
|---|---|---|
| 语义 | 用户应理解的含义。 | 成功、失败、已受理分开;同一语义可以有平台差异。 |
| 信号 | 有唯一标识的设计条目。 | 关联语义、效果映射、能力与播放规则,是设计与工程的共同引用单位。 |
| 效果 | 特定平台或设备上的表现。 | 由平台预定义效果或效果库提供;接口存在不等于设备支持,支持不等于实测质量合格。 |
| 播放请求 | 某次事件对某个输出目标的实际调用。 | 带事件标识、所属交互、时间和目标;不把事件时间或播放器句柄做成静态 Token。 |
| 能力档案 | 当前设备、运行平台与输出位置的支持事实。 | 与信号所需能力匹配;不能只用 ERM/LRA 名称作高低排序。 |
产品级字段如清单、预算、用户设置可由所有信号继承;强度、事件绑定、效果需求等按信号解析。临时播放状态、设备连接状态与遥测是运行数据,不计入 Token 数量。
字段读取约定
前缀与表中字段拼接为完整名称,例如 haptic.playback + stop.max_latency = haptic.playback.stop.max_latency。每行定义一个字段,速览按字段行统计,共 47 项(19 必选、28 可选)。时长带 ms 或 s,频率带 Hz,所有数值必须有限,计数为整数;引用须有可解析对象及其内容。
系统策略、设备限制与用户决定共同限制可用输出。先处理关闭,再解析效果、缩放和预算。用户缩放为 0 表示禁止输出,由产品门控实现;不直接透传为平台效果的 0 参数。表内同类别字段可省略共同前缀;跨类别依赖使用明确类别前缀。null 不自动等于继承、不适用或关闭,需按第十三节判定。
本字典中的“必选”是采用本规范后的配置约定,不表示每个平台都支持该参数。
一、语义:这次触觉表达什么意思
前缀:haptic.semantic
| 级别 | 设计决定 | Token 字段 | 类型与合法取值 | 适用条件与作用 |
|---|---|---|---|---|
| 必选 | 语义类别 | category | 枚举:操作反馈/结果通知/状态与边界/过程与进度/质感修饰。 | 信号级。按含义唯一归属;类别不代替前后台用途和触发事实(H2-1)。 |
| 必选 | 输出用途 | usage | 枚举:当前操作反馈/主动注意提醒/内容与质感表现。 | 信号级;与语义类别分开,同为结果通知可在当前操作或后台提醒中出现,分别服从系统策略与用户控制(H6-1、H6-2)。 |
| 必选 | 语义清单 | registry | 引用:包含信号标识、含义、触发场景、能力和降级的清单。 | 产品级。所有产品主动调用可追溯到清单;标准组件自带反馈在组件映射中登记,避免重复追加(H2-5、H7-5)。 |
| 可选 | 平台效果映射 | platform_map | 映射:信号 → 各平台语义效果或效果库条目引用。 | 使用平台效果时明确;沿用文档语义,不能把错误效果用作成功(H2-2)。 |
| 可选 | 自定义效果准入 | custom.allowed | 布尔;启用须有需求理由、效果引用、能力需求与降级。 | 预定义效果不能满足需求时启用;不要求先造自定义波形(H4-4)。 |
边界:语义映射的稳定不要求所有硬件输出同一波形。需要用户区分的信号在降级后仍须可分辨,否则停播并保留等价信息。
二、强度:相对等级与上限
前缀:haptic.intensity
| 级别 | 设计决定 | Token 字段 | 类型与合法取值 | 适用条件与作用 |
|---|---|---|---|---|
| 必选 | 相对强度 | level | 联合类型,二者取一:(a) 枚举 极弱|弱|中|强;(b) 结构 {ref: 已验证档位表引用, index: 档位序号},index 为表内有效的正整数。同一效果族内必须只用其中一种表示,混用视为非法。 | 信号级;相对同一设备与效果族解释,不保证跨设备等强(H1-1、H7-1)。 |
| 必选 | 输出限制依据 | limits.ref | 引用,包含设备与运行环境、适用效果及接触条件、工程与产品限制、单位、测量依据、责任人与失效条件。自定义输出明确幅值、总历时与占空比;平台封装且不开放物理参数时注明由平台控制,并记录接口边界、可测的时长与产品约束,不捏造物理幅值。不得以参数未知开放任意自定义输出。 | 产品或设备族级;区分工程上限与人体安全评估,不以平台归一化范围声称安全(H6-4)。 |
| 必选 | 保留输出用途 | level.max.reserved_for | 结构:outputs(被指定为保留输出的档位或效果标识集合,按标识登记而非按枚举名称)、purposes(用途集合:不可逆后果提示/安全相关提示/需立即中断当前动作的事件)。两集合同时为空,或同时非空;非空时须逐输出明确允许用途。 | 判据是"是否登记为保留输出",不是名称是否叫"强"。使用前核对用途与配额;不能覆盖关闭设置。产品中事实上承担高显著性保留职责却未登记的输出,属于配置缺失(H7-3)。 |
| 可选 | 情境衰减 | attenuate_by_context | 映射:已声明情境 → 有限实数系数 c,约束 0 ≤ c ≤ 1。负数、大于 1、非有限值均为非法配置,须拒绝而非截断。 | 未命中映射时不额外衰减,未知情境按 context.detect 或主情境策略;只减弱或抑制。交互自身的渐强包络另由效果表达,不混作情境提级(H1-3)。 |
边界:不存在统一的强度百分比到体感映射。不能满足用户弱档要求时,选经验证的较弱效果或停播,不把非零参数透传后产生满强度输出。上述取值约束不成立时拒绝该配置;只有另有完整且独立验证过的替代配置才允许降级,否则不播放。不得静默截断、取绝对值或交换上下界。
三、质感:表现与持续时间
前缀:haptic.texture
| 级别 | 设计决定 | Token 字段 | 类型与合法取值 | 适用条件与作用 |
|---|---|---|---|---|
| 必选 | 表现类别 | class | 枚举:清脆离散/持续变化/纹理/注意提醒节奏。 | 信号级;“持续”不等于“拖尾嗡鸣”。操作反馈和注意提醒分别验证(H4-2)。 |
| 可选 | 计划持续时间 | duration | 正时长,或可解析到时长的效果引用;不得超过 duration.max。 | 自定义或需要时长控制时配置。按键反馈的 10–20 ms 是参考时长,非延迟要求(H3-1)。 |
| 必选 | 最长持续时间 | duration.max | 正时长,受 intensity.limits.ref 限制。 | 从首次起振到最后结束的总历时,包含重复段及间隔;预定义短效果可继承效果库上界(H6-4)。 |
| 可选 | 频率范围 | frequency | 有限正数或有序闭区间,单位 Hz,须落入目标设备验证范围。 | 仅在实际 API 与设备允许控制时配置;无通用 250 Hz 默认值(H1-1、H4-1)。 |
| 可选 | 变化包络 | envelope | 引用:已验证的起振、渐变和结束包络及控制点约束,含所用平台的结束条件。 | 连续变化或自定义效果需要时配置;包络能力和频率可调是分别核验的特性(H3-3)。 |
边界:清脆、丰富与连续不是固定硬件等级。效果库负责设备参数和校准,公共 Token 不嵌入整段波形。
四、时序:事件、起振与同步
前缀:haptic.timing
| 级别 | 设计决定 | Token 字段 | 类型与合法取值 | 适用条件与作用 |
|---|---|---|---|---|
| 必选 | 触发事实 | trigger | 引用:已发生的操作、状态变化、确定结果或已授权提醒事件定义。 | 请求发出可表达“已发出”,不可表达业务成功;运行请求携带实际事件时间(H3-4)。 |
| 必选 | 起振有效期 | latency.max | 正时长,从绑定事件成立计到实际起振;主动提醒可从其应提醒时刻计。 | 信号级。提交前计入实测起振余量;过期反馈丢弃,异步完成不从点击时刻计时(H3-1)。 |
| 可选 | 跨模态同步窗 | sync.window | 结构:参考模态与事件、允许偏移下界 lower_ms/上界 upper_ms(可负)、测量方案引用。约束 lower_ms ≤ upper_ms,二者均为有限值且已声明时钟对齐与测量误差;不满足即非法配置。 | 配对表达时必须配置;负值为触觉先行,正值为滞后,范围由任务实测,不统一规定偏向哪侧(H3-2)。 |
| 可选 | 连续交互密度 | density.max | 引用:速度到允许触发频次或空间抽样间隔的策略,须有上限。 | 滑动与刻度等场景;不可因频繁越界而无界叠加(H3-3)。 |
| 可选 | 重复节奏 | pattern.repeat | 结构:非负整数追加次数 count、非负时长间隔 gap(上次完整效果结束到下次开始)。0 次表示不追加,gap 为 0 表示首尾相接;两者都须有值。 | 需要追加完整效果时配置;内部多脉冲由效果自身定义,总时长仍受上限,取消后不得继续(H6-4)。 |
边界:持续时间、事件延迟和模态时差分别记录。提前准备引擎可以降低调度成本,但不构成提前播放结果的理由。
五、能力:实际支持与降级
前缀:haptic.capability
| 级别 | 设计决定 | Token 字段 | 类型与合法取值 | 适用条件与作用 |
|---|---|---|---|---|
| 必选 | 所需特性 | required_features | 集合或预设引用:具体系统效果/基元列表/振幅控制/包络/频率范围/位置能力;空集合表示不使用附加自定义能力。 | 信号级。运行平台和输出设备共同判定支持;不能只看器件型号(H4-1)。 |
| 必选 | 降级链 | fallback.chain | 有序、有穷、无循环的效果引用及各项能力条件,最后为可保证解析的效果或不播放。 | 系统降级只用于文档承诺的接口;组合缺基元不能默认仍会播放(H4-2)。 |
| 必选 | 能力判定方式 | detect.mode | 枚举:平台查询/经验证设备档案/平台合同结合查询/保守不使用自定义效果。 | 记录判定依据;未知不当作自定义支持,系统效果“未优化”不直接等于不可播放(H4-1)。 |
| 可选 | 等价信息通道 | fallback.alternate_channel | 引用:承载同样信息的可访问界面状态、通知或其他输出。 | 传信息的信号必须有值,即使正常情况下总能播放;纯质感可省略(H5-1)。 |
边界:“降级保持语义”是固定约束,不是固定为真的伪可配置布尔值。支持状态与失败原因属于运行事实,不作为设计输入随意设置。
六、节制:总量、优先级与合并
前缀:haptic.budget
| 级别 | 设计决定 | Token 字段 | 类型与合法取值 | 适用条件与作用 |
|---|---|---|---|---|
| 必选 | 同类最小间隔 | min_interval | 结构:正时长 duration、非空信号组或目标 scope;从上一次提交计时,同范围共享。 | 同一组不可通过多个组件绕过(H7-2)。 |
| 必选 | 单位时间上限 | rate.max | 结构:非负整数 count、正时长滚动窗口 window、非空作用组或输出目标 scope。 | 0 为该范围禁用;超限合并或丢弃,不逐条排队补播(H7-2)。 |
| 可选 | 保留输出配额 | max_level.quota | 结构:非负整数次数、正时长窗口、明确作用范围。 | 使用保留输出时必须配置;不等于安全紧急提示可以被产品任意屏蔽,领域要求另行评估(H7-3)。 |
| 可选 | 事件合并方式 | coalesce.rule | 枚举:取已定义最高优先级/取最新仍有效/抑制后续/引用已验证聚合信号。 | 密集场景必须明确;批量部分失败不能合并成全部成功(H7-2)。 |
| 可选 | 长交互总量 | session.max | 结构:非负整数次数、明确的交互起止定义、达到后抑制的类别集合。 | 长任务按需配置;重建播放器不重置同一交互预算,余留类别仍受其他上限。 |
| 可选 | 事件优先级 | priority | 有序等级或共享优先级表引用;同级决胜方式由 overlap.rule 指定。 | 存在并发时必须明确;优先级依据任务后果,不从强度等级推导(H7-5)。 |
| 可选 | 重叠处理 | overlap.rule | 结构:mode(枚举 抢占低优先级|保留当前并抑制新信号|混合)、tie_break(枚举 保留当前|取最新仍有效 或可解析策略引用,必填)、mix_ref(mode=混合 时条件必选,指向已验证混合策略)。缺 tie_break 或 mode=混合 而无 mix_ref 的,为不完整配置。 | 并发场景必须配置;先去重再仲裁,被抢占的离散反馈不补播(H7-5)。 |
边界:预算与仲裁在共享输出策略中强制。事件标识用于去重,不把全部同一语义的不同有效事件当作重复。
七、情境:验证范围与干扰处理
前缀:haptic.context
| 级别 | 设计决定 | Token 字段 | 类型与合法取值 | 适用条件与作用 |
|---|---|---|---|---|
| 必选 | 主要使用条件 | usage | 结构:非空条件集合 conditions(手持/桌面/口袋/佩戴/运动/戴手套等)与默认主情境 primary;默认项须属于集合。 | 与验证记录对应;难以觉察的条件保留替代通道,不伪称可靠触达(H1-1)。 |
| 可选 | 可探测情境 | detect | 引用:已实现的情境信号、置信条件及未知处理。 | 不要求新加传感器;未知时按声明主情境或更保守输出处理(H1-3)。 |
| 可选 | 系统模式处理 | system_policy | 引用:按操作反馈、主动提醒等用途遵守系统触觉、静音、专注及通知通道策略的规则。 | 平台提供相关机制时明确;无读取接口时采用遵守系统策略的调用方式(H6-2)。 |
| 可选 | 采集与环境干扰 | interference.policy | 映射:录音/拍摄/惯性采集/硬桌面等条件 → 抑制/经验证的减弱或时机方案。 | 相关功能存在时按实测决定;不可延迟补播已过期操作反馈(H1-6)。 |
边界:情境识别不构成提升强度越过用户设置的理由。注意提醒与操作反馈可能服从不同系统策略,静音不能简单映射成全部停播。
八、用户控制:真实关闭与偏好保持
前缀:haptic.user
| 级别 | 设计决定 | Token 字段 | 类型与合法取值 | 适用条件与作用 |
|---|---|---|---|---|
| 必选 | 产品开关 | enabled | 布尔,用户可改。 | 关闭门控所有产品触觉并停止可取消输出;系统标准组件按平台支持的控制方式处理并验证(H6-1)。 |
| 可选 | 用户强度缩放 | scale | 有限实数,0≤值≤1;0 禁止输出,1 为产品经校准的默认上界。 | 有实际调强能力时配置;离散效果按已验证映射解析,不承诺线性体感(H6-1)。 |
| 可选 | 强度控制方式 | scale.control | 枚举:连续滑块/已验证离散档位/仅开关。 | 提供控制时与真实能力一致;仅开关不呈现可调强度(H6-1)。 |
| 可选 | 分类关闭 | disable_by_category | 选择器集合:按 semantic.usage 或 semantic.category 关闭;空集合表示未额外关闭。 | 多用途时至少按 usage 分开;可进一步细分语义类别,全局开关优先(H6-1)。 |
| 必选 | 偏好保存与恢复 | persistence.policy | 引用:本地保存、配置重载;可选备份恢复与同步冲突规则。 | 只能声明已实现的范围,旧开启值不得覆盖较新的关闭决定(H6-5)。 |
| 可选 | 设置预览方式 | preview.mode | 枚举:不提供/用户主动单次预览。 | 预览同样受当前限制,关闭后如需体验须由用户明确临时启用,不静默改永久偏好。 |
边界:关闭不移除功能、不人为增加惩罚步骤、不反复劝返。通道转换带来的合理查看差异按 H5-4 的口径验证其可达性与负担,不以动作数完全一致为判据。全新安装无备份时不保证恢复历史偏好;跨设备同步语义偏好,强度映射按设备重新验证。
九、播放生命周期:停止、中断与恢复
前缀:haptic.playback
| 级别 | 设计决定 | Token 字段 | 类型与合法取值 | 适用条件与作用 |
|---|---|---|---|---|
| 必选 | 停止条件 | stop.conditions | 非空集合或规则引用:用户关闭/取消所属交互/交互结束/持续时长达限;按需追加失焦、后台或外设断连。 | 基础停止条件不得遗漏;普通拖动更新不是取消(H6-4)。 |
| 可选 | 实际停止时限 | stop.max_latency | 正时长,自停止请求到物理输出停止,带测量依据。 | 连续、重复或承诺可取消的效果必须有值;已发出的不可撤回短脉冲另记录其时长上界(H6-4)。 |
| 可选 | 中断后行为 | on_interrupt | 枚举:丢弃并等新事件/核验后按当前连续状态重建。 | 有中断恢复能力时必须配置;不重放历史离散反馈(H4-5)。 |
| 可选 | 恢复尝试上限 | recovery.max_attempts | 非负整数,含首次恢复在内计数;0 表示不自动尝试。计数范围是同一次仍然有效的持续交互:该交互内的帧更新、参数变化与引擎重建都不重置计数;交互结束或失效则计数作废,不转入下一次。 | 启用自动恢复时配置;到上限即停止自动恢复并保持无触觉功能路径。只有新的、独立的有效交互才开始新周期,离散旧事件不因此重放(H4-5)。 |
边界:引擎可用、播放已提交、物理输出与用户已获知分别处理。失败记录供调试,不要求每次触觉被抑制都弹出提示。
十、输出路由:发给谁、在哪里振动
前缀:haptic.routing
| 级别 | 设计决定 | Token 字段 | 类型与合法取值 | 适用条件与作用 |
|---|---|---|---|---|
| 可选 | 输出目标选择 | target.policy | 枚举:当前交互设备/指定用户绑定设备/用户选择的提醒设备;实际实例由运行时解析。 | 多输出设备时必须明确;不得默认广播(H4-6)。 |
| 可选 | 输出位置 | locality | 引用:当前设备支持的位置或默认位置,如左柄/右柄/扳机。 | 位置携带语义或设备有多个输出区域时配置;单马达不得伪称左右定位(H4-6)。 |
| 可选 | 目标失效处理 | on_unavailable | 枚举:不播放并保留等价信息/使用已声明等价备用目标。 | 路由存在时必须明确;改发手机或其他位置需已有设计与用户偏好依据(H4-6)。 |
边界:单设备可省略路由字段并继承当前设备。多个用户、设备或位置存在时,不得以默认值掩盖接收对象不明。
十一、条件依赖
以下省略共同前缀 haptic.;继承必须能解析到明确值与来源。表格不新增 Token。
| 能力或承诺 | 必须明确的依赖 | 未满足时 |
|---|---|---|
| 自定义效果 | semantic.custom.allowed、效果引用、capability.required_features、capability.fallback.chain | 使用已验证系统效果或停播。 |
| 信息传达 | capability.fallback.alternate_channel | 先补齐等价信息;不因有触觉而发布信息缺失的任务路径。 |
| 配对视听 | timing.sync.window、实际输出验证 | 不承诺同步;修改配对方案,禁止用共同回调冒充实测。 |
| 连续或重复输出 | texture.duration.max、playback.stop.conditions、playback.stop.max_latency;按需 timing.pattern.repeat | 不启用连续或重复效果。 |
| 连续交互离散刻度 | timing.density.max、共享预算 | 采用经验证的稀疏反馈或省略;不强制要求连续包络。 |
| 调强 | user.scale、user.scale.control、设备能力与效果映射 | 仅开关;不能满足弱档承诺时停播或选经验证弱效果。 |
| 多用途反馈 | user.disable_by_category 与 semantic.usage 对齐,按需细分 semantic.category | 完成分类控制后再启用多用途组合。 |
| 保留输出(含事实上承担该职责的输出) | intensity.level.max.reserved_for 的 outputs 与 purposes 均非空、budget.max_level.quota | 不指定保留输出,且不得让任何输出事实上承担该角色。 |
| 密集、并发或多层组件调用 | budget.coalesce.rule、budget.priority、budget.overlap.rule;运行请求具有去重标识 | 采用明确抑制策略,不任意叠加或积压。 |
| 播放中断恢复 | playback.on_interrupt;自动恢复时 playback.recovery.max_attempts | 丢弃旧请求、等新的有效事件。 |
| 多设备或位置 | routing.target.policy、routing.on_unavailable;按需 routing.locality 与位置能力 | 不向不明目标输出。 |
| 拍摄、录音或传感器共存 | context.interference.policy 与验证记录 | 在受影响阶段抑制造成干扰的输出。 |
十二、固定底线
- 事实与语义:结果确认后才表达该结果;播放成功不表示用户理解。需要区分的语义不因降级、混合或改路由而混淆。
- 信息与任务:信息具有等价非触觉表达;重要信息可回查,关闭或失败后主要任务仍可完成。纯质感效果可直接省略。
- 控制:关闭在输出入口生效;可取消输出响应停止;设置不可被情境、恢复或优先级越过。平台不同效果中的 0 数值不得被统一理解为停止。
- 能力:按真实特性检查;未知不冒充已支持,预定义效果的系统降级与自定义降级分别处理。
- 时序与总量:过期直接反馈不补播,历史事件不堆积;预算统一执行,同一事件重复调用不产生多份反馈。
- 恢复与路由:重建不构成重播授权;只恢复仍有效交互,目标与位置必须正确,失败不拖垮主任务。
十三、配置解析与运行生效
13.1 选择值与约束值分别解析
| 层 | 负责什么 | 合并方式 |
|---|---|---|
| 产品预设 | 共用语义清单、使用策略与默认预算 | 提供基础值;未配置不能假定有能力 |
| 语义组 / 效果族 | 同用途的表现和规则 | 普通选择可细化;不能放宽已声明硬限制 |
| 信号 | 单个事件的触发事实、效果、有效期 | 普通字段按更具体定义取值;同等具体的冲突报错 |
| 设备档案 | 能力、可实现效果和工程边界 | 过滤候选效果并收紧范围;不被信号配置覆盖 |
| 情境 | 当前接触方式、干扰条件与衰减 | 只减弱或抑制,未知采用已声明策略 |
| 用户与系统 | 开关、分类关闭、强度偏好及系统调用策略 | 独立门控,任一禁止即不输出;系统允许不等于可以越过用户关闭 |
普通结构字段采用整项替换,不把两个不完整结构拼成一个碰巧可用的对象。映射条目按明确键解析;同一键同等具体的冲突为配置错误。引用必须定位到具体对象及内容;不得把未解析的名字当作默认值。
所有有效硬限制取交集,但不能只对数值做 min:先统一单位,核对被限制量、窗口和作用范围。2 次/1 s 与 6 次/10 s 同时成立,不能只挑其中次数较小的一条。不同组的信号共用一个输出目标时,每次发放同时占用命中的组、目标和交互预算。设备幅值上界与产品强度档位也不能直接比较数字,须通过已验证映射判断。
配置责任:产品决定语义、用途与预算;设备适配决定真实支持与效果映射;用户决定是否接受及已提供的强度选择。每项预设记录选值理由、适用范围、责任人与验证依据;这些是配置附带说明,不新增 Token。
13.2 缺值与非法值
| 状态 | 含义 | 处置 |
|---|---|---|
| 已解析 | 取值合法、引用完整、适用范围匹配 | 仍须通过当前设置、能力、时效与预算检查 |
| 未配置 | 当前层未定义 | 继承已声明的上层;必选或已触发的条件必选仍无值则为缺失 |
| 不适用 | 对当前信号没有该能力或承诺 | 记录原因,仅跳过对应字段;不自动关闭整个信号 |
| 不可解析 | 引用悬空、内容缺失、值非法、互相冲突或证据不适用 | 拒绝受影响配置,不悄悄取默认、截断、交换上下界或扩大能力 |
缺失和不可解析都不得启用依赖它们的输出。只有另有完整且独立验证过的替代配置时才走该降级路径;不能跳过一条未知的上限、沿用其他较宽上限继续播放。连产品关闭、有效期或共享预算都无法确定时,直接不播放,保留等价信息与主任务。设置加载失败不视为用户同意开启;保留可确认的关闭决定。
13.3 一次请求的处理顺序
- 解析信号、事件、用途和接收目标,确认事实成立且该交互仍有效;同一事实的重复请求去重。事件标识、交互标识、时间戳和播放器句柄均为运行数据。
- 核对产品关闭、用户分类与强度、适用系统策略及情境抑制。
user.scale=0或衰减系数为 0 时在产品入口停止,绝不拿平台的 0 参数替代门控。 - 从有穷降级链中选择首个满足能力、语义、上限及当前用户强度要求的效果;失败则到不播放。系统接口允许按其合同抑制输出,不能改用底层振动绕过。
- 检查有效期与同步窗。比较时间须使用同一单调时钟,跨设备先换算并计入误差;按实测起振耗时预留余量。超过截止或无法满足已承诺窗口的直接反馈丢弃。
- 对不同有效事件做合并和优先级仲裁,再在同一一致性边界内检查并预留全部命中预算,避免并发请求各自看到“尚有余额”。被合并者不另计为多次输出;最终效果仍受时长和占空比限制。
- 提交前再次检查关闭、目标归属与交互有效性。提交后按可观测事实记账;结果未知保守保留预算,不退款重试。明确未提交的预留可以释放。连续输出到时停止,取消与关闭立即请求停止。
计数以提交的一次语义效果为单位,不以内部脉冲数、回调数或业务模块数计。min_interval 从上一次提交起算,候选效果自身不得造成不允许的物理重叠;rate.max 使用单调时钟滚动窗口 (t−window, t]。效果可能已输出但回执丢失时仍计入预算。系统组件自动反馈纳入其已知输出行为的设计验证,产品业务层不得叠加一份;无法观测的系统内部事件不伪造精确计数。
13.4 生效时机与停止
关闭、撤销当前交互、缩小上限及目标失效立即拦截尚未提交的请求,并停止可取消的在途输出。正在持续输出时收紧强度,仅在已验证的动态调整机制可用时调整,否则停止该效果。放宽偏好只对之后的新有效事件生效,不补播关闭期间的事件;效果切换在下一个有效事件或连续交互的已定义安全节点生效。
预览走同一解析和预算路径,不因“调试”“设置体验”而绕过限制。配置重载、播放器重建、切换界面不重置仍有效的交互与滚动预算,也不得用重命名信号组来取得新配额。
十四、三种预设与解析示例
14.1 按场景选择需要的配置
下表引用既有字段,不新增预设专用 Token。产品级必选字段由公共预设提供,各场景只覆盖不同的设计决定;所有时长与强度来自目标设备验证,不内置通用人体阈值。
| 预设 | 明确的选择 | 需要补齐的条件项 | 不启用的能力 |
|---|---|---|---|
| 手机离散选择 | semantic.category=操作反馈、semantic.usage=当前操作反馈、texture.class=清脆离散;触发为选项实际改变 | 平台效果映射、等价选中状态;配对动画时同步窗;多层组件时去重与仲裁 | 不重复、不自动恢复旧选择;无自定义需求时 semantic.custom.allowed=false |
| 控制器持续质感 | semantic.category=质感修饰、semantic.usage=内容与质感表现、texture.class=持续变化 | 包络与设备能力、总时长、停止时限、路由、并发、干扰;恢复需 playback.on_interrupt 与恢复上限 | 纯质感的等价信息字段不适用;若传达伤害等信息,须另配等价信息 |
| 手表计时提醒 | semantic.category=结果通知、semantic.usage=主动注意提醒、texture.class=注意提醒节奏 | 订阅事实、应提醒时刻、通知策略、提醒分类控制;重复时次数与总历时;多设备时路由 | 不用前台反馈接口冒充后台能力;默认不自行重复,服从实际提醒方案 |
14.2 一次手机选择的完整解析记录
这是供设计与工程推演的教学样例,未代表实机验收。下列引用对象假设已建立;正式采用时必须替换为真实清单、能力档案和测量记录。数值只用于演示约束计算。
| 必选字段 | 示例解析值与来源 |
|---|---|
haptic.semantic.category | 操作反馈,信号配置 |
haptic.semantic.usage | 当前操作反馈,信号配置 |
haptic.semantic.registry | 选择信号清单:登记 option.changed、含义、触发、效果、能力、降级;产品引用 |
haptic.intensity.level | 弱,已验证效果族档位;信号配置 |
haptic.intensity.limits.ref | 设备A选择效果限制:包括运行环境、平台控制边界、实际效果测量、时长与占空比约束及验证责任;设备引用,内容不可缺失 |
haptic.intensity.level.max.reserved_for | {outputs: [], purposes: []},不使用保留输出 |
haptic.texture.class | 清脆离散,信号配置 |
haptic.texture.duration.max | 30 ms,此样例效果总历时上界;与限制引用共同约束 |
haptic.timing.trigger | 选项实际改变,含义为“当前选择已改变”,不表示保存成功 |
haptic.timing.latency.max | 80 ms,从选项改变到实际起振;样例目标 |
haptic.capability.required_features | [],无附加自定义能力;仍须满足所选系统接口合同 |
haptic.capability.fallback.chain | 对应系统选择效果 → 不播放;系统候选携带其平台条件与实测范围 |
haptic.capability.detect.mode | 平台合同结合查询,设备预设 |
haptic.budget.min_interval | {duration: 100 ms, scope: 选择反馈组} |
haptic.budget.rate.max | {count: 3, window: 1 s, scope: 当前输出目标};另有组约束则同时检查 |
haptic.context.usage | {conditions: [手持], primary: 手持};不宣称口袋中可觉察 |
haptic.user.enabled | true,当前读取到的持久化偏好 |
haptic.user.persistence.policy | 本地保存并重载,备份与同步不提供,产品设置策略引用 |
haptic.playback.stop.conditions | 用户关闭/取消所属交互/交互结束/总历时达限;已提交短脉冲不可撤回,尾部上界由效果记录证明 |
本例还明确以下条件项:semantic.platform_map 指向系统选择效果;semantic.custom.allowed=false;capability.fallback.alternate_channel 指向可访问的选中状态;context.system_policy 指向该用途的平台策略。例中的选择状态与触觉配对,因此 timing.sync.window 设为视觉状态实际呈现后 0~80 ms,测量引用为 设备A选择同步测量,并要求不早于选择事实成立。
多层组件可能重复调用,故本例配置 budget.coalesce.rule=抑制后续、budget.priority=1、budget.overlap.rule={mode: 保留当前并抑制新信号, tie_break: 保留当前}。目标为唯一当前设备,无多位置承诺,路由字段不适用;设备仅提供开关,user.scale 不适用;无重复、连续、自定义频率、包络或自动恢复,其对应字段不适用。单用途无需分类关闭。未填写的可选字段不暗含启用能力。
假设事件在 1000 ms 成立、选中状态在 1010 ms 实际呈现,准备提交时为 1040 ms,已验证的起振耗时上界为 15 ms 且已含测量余量:预计最晚起振 1055 ms,同时满足事件有效期 1080 ms 和视觉同步上界 1090 ms。若上次提交在 800 ms、该滚动窗口内已提交 2 次且无并发占用,则间隔与次数均允许,预留后提交。物理测量仍需证实这一耗时假设。
| 改变一个条件 | 必须得到的解析结果 |
|---|---|
准备提交时已为 1070 ms | 加上起振余量会超过 1080 ms,丢弃,保留选中状态 |
产品关闭,或用户明确设置 scale=0 | 产品门控为不播放;无论平台的 0 参数如何解释 |
| 两层组件发送同一事件标识 | 仅一个请求进入提交与计数 |
| 窗口内已有 3 次提交 | 抑制新请求;不排队等待配额恢复 |
| 不支持合适系统效果 | 按终点不播放,选中状态仍可访问 |
| 限制引用缺失或所指设备不匹配 | 配置不可解析,不播放;不能借另一个设备的上限继续 |
texture.frequency 不适用 | 只跳过频率字段,不影响合法系统选择效果 |
14.3 时间、缩放与重复的计算边界
- 缩放:若设备支持并已验证乘法映射,样例基础归一化强度
0.6、用户缩放0.5、情境衰减0.8可映射为0.24;这只是该适配器输入,不表示 24% 的体感。平台或效果不支持此映射时选经验证的离散档位或停播,不把乘法当作跨设备定律。 - 重复:若单次完整效果历时
d、追加次数n、两次间结束到开始的间隔g,总历时为(n+1)×d+n×g。它须不大于texture.duration.max;内部多个脉冲本就是一个效果时,不再重复计入追加次数。重复组算一次语义效果,但总输出与占空比仍受限制。 - 同步:偏移为
实际触觉起振−参考模态实际输出;负值表示先行。满足同步窗仍需满足触发事实和起振有效期,不能为同步把结果触觉移到事实成立之前。
文档解析正确只说明决定可复演;实机和用户证据仍按 设计规范第 6 章 分别取得。
配置交付与校验
情境衰减系数只在 0~1 范围内;越界值拒绝,不截断或取绝对值。输出关闭由门控实现,不将平台含义未知的零参数直接透传。归一化系数不证明跨设备等体感,实际波形、接触条件和同族可辨识性由设备映射验证。
随附的可执行样例只覆盖 haptic.intensity.attenuate_by_context,其余字段按本字典逐项校验;未覆盖不等于不适用或已通过。样例是所选字段的格式正反例,不是可直接启用全部能力的产品预设。完整产品交付另外包含适用性、依赖、证据、执行映射及进行中操作的生效边界。
字段名、类型或含义变更时更新引用方与验收样例;仅修改说明且不改变合法行为的,保留已有字段名。调用方读取解析后的有效配置,不由 UI 控件、动画或模型文字反推权限、测量或完成事实。参见对应场景。
参考来源
本文为 设计规范 与 Design Token 提供外部依据。平台文档说明机制与建议;研究只支持其测量条件中的结论;共享预算、事实确认、有限恢复与配置解析是本规范的产品设计要求,不冒充平台统一标准。
1. 证据怎样使用
| 类型 | 阅读范围 | 可支持的结论 |
|---|---|---|
| 官方正文 | 已读取所引用的相关段落 | 支持该机制或建议,不代表已经实机验证 |
| 官方索引正文 | 直接页可能是脚本壳,搜索返回官方相关段落 | 只使用取得的段落,不宣称完整页面审查 |
| 论文正文 | 摘要、相关方法与结果 | 保留任务、样本、身体部位和刺激条件,不外推通用阈值 |
| 标准公开摘要 | 只读取官方公开范围说明 | 不声明逐项合规,也不判断未读全文包含或缺少某条要求 |
2. 来源与支持范围
S1. Android:选择反馈及控制使用频次
Haptics design principles(官方正文)。
优先使用动作语义常量;频繁反馈应轻,表现与事件重要性和频次匹配。直接触摸反馈不宜降成明显拖尾嗡鸣;来电等注意提醒的降级条件不同。丰富效果既可依赖更宽频带,也可由基元组合产生。
用于 H2-2、H4-2、H4-4、H7-1。它不提供所有设备通用的强度档位、配额或人体安全上限。
S2. Android:能力与系统降级
Android haptics API reference(官方正文)。
系统效果的优化支持、自定义基元、振幅控制等需分别判断;系统预定义效果“未优化/未知”不等于无输出。无振幅控制时,非零幅值可能产生满强度输出。用途影响系统应用哪些设置。
用于 H4-1、H4-2、H6-1、H6-2,以及 capability.*、context.system_policy。不能由接口存在、器件型号或一次调用成功推导输出质量。
S3. Android:组合与自定义包络
Create custom haptic effects(官方正文,组合与包络相关段落)。
组合需检查所需基元;基元缩放的 0 表示最低强度而非关闭。包络除了能力支持,还有控制点与时长约束;基础包络要求最终强度回到 0,波形包络包含不支持的频率时可能整体不播放。
用于 H4-1、H6-1、H6-4,以及 texture.envelope、texture.frequency、intensity.limits.ref。这些条件落实在平台适配与效果引用中,不在公共字典增加每个 API 参数。
S4. Android:事件反馈与用户设置
Add haptic feedback to events(官方正文)。
采用事件反馈接口与对应语义,默认尊重触摸反馈设置。反馈选择应结合发生了什么,而非只挑“手感强”的效果。
用于 H2-2、H6-2。产品应用内开关与共享预算仍由产品兑现;不能因系统允许就绕过用户在应用里的关闭决定。
S5. Apple:一致性、可选与机械干扰
Playing haptics(官方索引正文,Best practices 与设备说明)。
系统模式按其含义使用,保持因果一致,避免过密反馈,允许关闭;振动还可能干扰相机、陀螺仪与麦克风。标准组件可能自带反馈,外设也可能是实际输出端。
用于 H1-6、H2-2、H4-4、H6-1、H7-5。不能据此要求所有硬件支持连续强度滑块,也不能用产品层追加反馈重复强化标准组件。
S6. Apple:语义接口与引擎预备
- Playing haptic feedback in your app(官方索引正文)。反馈调用向系统报告事件,系统仍根据硬件、应用状态与设置等决定是否播放;接口不是触达保证。
- UIFeedbackGenerator(官方索引正文)。选择变化、物理碰撞、结果反馈属于不同语义。
- prepare()(官方索引正文)。提前预备可以降低延迟,预备状态有时限;紧接着播放才预备不能保证改善延迟,不应无目的地一直预备。
用于 H1-5、H2-2、H3-1 及验证方法。预备不代表事件成立,更不能触发预测的成功结果。后台提醒应使用适用平台机制,不能把前台结果反馈接口当成通知调度器。
S7. Apple:中断与输出位置
官方索引正文,支持引擎中断与重建、控制器位置输出等实现讨论。它们不规定本产品的恢复次数、业务优先级或预算。H4-5 的“只恢复仍有效交互”和 H4-6、H7-5 的对象核验与并发取舍,是本规范根据体验失败提出的要求。
S8. Microsoft:游戏中的触觉控制
Xbox Accessibility Guideline 110: Haptic feedback(官方正文)。
建议提供关闭、强度调节及其他信息输出,考虑感知差异、设备不支持与可能的不适。用于 H1-4、H5-1、H6-1。其应用对象是游戏;扩展到普通应用时需核对真实调强能力,不宣称所有平台可提供同一设置。
Game Accessibility Guidelines: Include toggle/slider for any haptics(发布方正文)也支持游戏内关闭与按需调强;即使平台有全局开关,产品内控制仍有价值。文中用户自述不作为临床因果证据。
S9. W3C 与 ISO:适用范围
- Understanding SC 1.3.3: Sensory Characteristics(官方正文):约束依赖感官特征的理解与操作说明;解释页明确不意在禁止物理硬件说明使用触觉线索。不能直接由此判定“一切仅触觉方案都不合规”。
- ISO 9241-920: Tactile and haptic interactions(公开摘要):包含触觉输入、输出、编码及多类设备的要求与建议。未读取受限全文,不做条款符合性声明。
用于附录 B 的范围限定。本文的等价信息要求适用于声明的通用振动产品,不用于否定需要独立研究的专用触觉编码设备。
S10. 视触同步研究
Di Luca & Mahnan — Perceptual Limits of Visual-Haptic Simultaneity in Virtual Reality Interactions(论文正文)。
研究涉及 19 名参与者在 VR 中以指尖接触对象,采用特定压电刺激。结果支持该情境中的不对称视触容忍范围,且实验对实际输出时差做校准;它不提供手机、腕部或音触同步的通用窗口。
用于 H3-1、H3-2。只保留按场景验证与实测时差的要求;产品不能只让两个软件回调同时触发就宣称同步。
S11. 指部振动检测研究
研究在指定食指部位、接触条件和刺激时长下比较多个频率的检测阈值,最低平均阈值出现在 225 Hz。检测阈值随频率变化,不代表所有部位和整机都有统一最优频率;也不能由检测阈值推出舒适上限或语义识别能力。
用于 H1-1、H1-2 及感知测试的条件限定。
3. 数值的适用条件
| 数值或量 | 来源与边界 | 产品如何使用 |
|---|---|---|
| 按键效果约 10–20 ms | S1 的效果持续时间参考,不是事件到起振延迟 | 仅用于初始候选,仍测实际起停和拖尾 |
| 视触先行约 15 ms、滞后不足约 50 ms | S10 的特定 VR 指尖实验,不是所有模态同步门槛 | 定义参考事件、方向、时钟误差和目标设备实测窗口 |
| 225 Hz 检测阈值较低 | S11 的特定指部实验 | 核对部位、接触、刺激及设备响应,不设统一默认频率 |
| 归一化强度 0~1 | 平台参数或产品映射范围 | 不是体感百分比;0 的平台含义需核对,产品关闭独立门控 |
| 预算、间隔、恢复次数、最长时长 | 产品设计选择,未有跨产品通用值 | 标注作用范围、计数口径、通过标准与证据 |
| Token 示例中的 30、80、100 ms 等 | 演示解析的假设输入,无实测背书 | 不复制为默认值或验收阈值 |
4. 文档研究不能代替的工作
- 目标设备上的起振、停止、参数组合和物理干扰测量。
- 包含目标用户感知差异的觉察、辨别、语义识别、舒适与任务收益研究。
- 真实关闭、失效、并发、共享预算、重复回调与设备切换的机制验证。
- 面向专用触觉、车载、医疗或其他特定领域的独立范围与要求评估。
已有证据只适用于其设备、效果、接触条件、用途与人群。未实测的候选保持“待验证”;不以来源数量、规则数量或一次成功试播证明方案完整有效。