为 Android 应用添加多感官反馈

本页介绍了如何按照多感官设计体系 (MSDS) 的准则,通过音频触感反馈丰富应用。 keywords_public: > 触感反馈、振动、音频反馈、反馈、Android、界面、用户体验、设计、多感官、 msds

在搭载 Android 的设备上运行的应用可以提供符合多感官设计体系 (MSDS) 的多感官音频触感反馈,MSDS 是一个用于实现一致音频和触感反馈的令牌化组件库。

为什么要使用 MSDS?

MSDS 是一个集中式设计体系,旨在改进音频和触感反馈。借助 MSDS,您无需为常见的用户互动设计、选择或制作自己的触觉或听觉反馈。

此外,MSDS 在各种设备上都能保持一致,并根据设备功能以最佳方式同步音频和触感反馈。

何时应使用 MSDS?

MSDS 可针对常见的活跃用户互动提供反馈。这种反馈会在用户执行的操作在系统或应用中产生效果时触发,分为两类:

  • 手势反馈:确认用户通过直接用户手势对界面元素进行的实时物理操作。

  • 语义反馈:确认实时状态变化、选择或用户进度。

如何使用 MSDS?

MultisensoryManager API 是提供 MSDS 反馈的入口点。您可以使用 playToken() 方法播放标记化反馈。

如需查看可用令牌,请参阅 MultisensoryManager 的公共整数常量。如需在应用中使用该管理器,请将其作为系统服务进行查询并播放令牌:

@RequiresApi(Build.VERSION_CODES_FULL.CINNAMON_BUN_2)
@Composable
fun MultisensorySwitch() {
    val context = LocalContext.current
    val multisensoryManager =
        remember(context) { context.getSystemService(MultisensoryManager::class.java) }
    var checked by remember { mutableStateOf(false) }
    Switch(
        checked = checked,
        onCheckedChange = { isChecked ->
            checked = isChecked
            if (isChecked) {
                multisensoryManager?.playToken(MultisensoryManager.TOKEN_SWITCH_ON)
            } else {
                multisensoryManager?.playToken(MultisensoryManager.TOKEN_SWITCH_OFF)
            }
        }
    )
}

您还可以在 ViewModel 中保留对 MultisensoryManager 的引用,以触发 MSDS 播放来响应方法调用或界面状态更改。

建议

MSDS 反馈通常会与动画或用户手势一起播放,因为它是由活跃的用户互动触发的。在适当的时间播放反馈,以便视觉、音频和触感反馈尽可能同时触发。

根据您的应用结构,此建议可能会导致在界面可组合项回调(如前面的 Switch 示例)、界面 State 或 StateFlow 的更改、动画帧或界面对直接用户输入的响应中发生播放调用。

在所有情况下,一般建议在用户能够感知其操作在系统中的结果后立即提供反馈。