在 Android 應用程式中加入多感官回饋

本頁面說明如何按照多感官設計系統 (MSDS) 的指南,在應用程式中加入音訊觸覺回饋。 keywords_public: > haptics, vibration, audio, feedback, Android, UI, UX, design, multisensory, msds

在 Android 裝置上執行的應用程式,可提供符合多感官設計系統 (MSDS) 的多感官音訊觸覺回饋,這是一個權杖化元件庫,可提供一致的音訊和觸覺回饋。

為什麼要使用 MSDS?

MSDS 是集中式設計系統,可改善音訊和觸覺回饋。有了 MSDS,您就不必針對常見的使用者互動,設計、選取或製作自己的觸覺或聽覺回饋。

此外,MSDS 在各種裝置上都能穩定運作,並根據裝置功能,以最佳方式同步音訊和觸覺回饋。

何時該使用 MSDS?

MSDS 會針對常見的使用者互動提供回饋。這類回饋會在使用者操作導致系統或應用程式產生效果時觸發,分為以下兩類:

  • 手勢回饋:確認使用者直接手勢對 UI 元素進行的即時實體操作。

  • 語意回饋:確認即時狀態變更、選取項目或使用者進度。

如何使用 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 的參照,以便在方法呼叫或 UI 狀態變更時觸發 MSDS 播放。

建議

MSDS 回饋通常會與動畫或使用者手勢一起播放,因為這類回饋是由使用者主動互動觸發。在適當的時間播放回饋,讓視覺、音訊和觸覺回饋盡可能同時觸發。

視應用程式結構而定,這項建議可能會導致 UI 可組合回呼 (例如先前的 Switch 範例) 內部的播放呼叫、UI State 或 StateFlow 的變更、動畫影格,或 UI 對使用者直接輸入內容的回應。

一般來說,建議在使用者能察覺系統中動作的結果時,提供意見回饋。