所有針對觸覺技術所建立的 Android 架構改善項目,皆取決於 一組持續進化的使用者體驗原則。目前 原則上,以清晰的觸覺技術取代震動震動。 探索豐富觸覺回饋。
圖 1. 目前原則
下表列出所有可用的觸覺技術 API。
API | 方法 | 已新增年份 |
---|---|---|
android.view.HapticFeedbackConstants |
|
2016 年之前 |
|
2017 (Android 8) | |
|
2020 (Android 11) | |
android.View |
|
2016 年之前 |
android.os.Vibrator |
|
2016 年之前 |
|
2017 (Android 8) | |
|
2020 (Android 11) | |
android.os.VibrationEffect |
|
2017 (Android 8) |
|
2019 (Android 10) | |
android.os.VibrationEffect.Composition |
|
2020 (Android 11) |
android.media.AudioAttributes.Builder |
|
2019 (Android 10) |
震動
約會交友服務,以及功能型手機、劣質但省電的 ERM 以往震動的震動是取代聽聲辨曲功能 靜音模式。舊版硬體元件,產生很大聲且令人不悅 音訊雜訊可能會產生低品質的曝光,進而損害觸覺使用者體驗 (例如: 例如便宜的壞手機)。
清晰觸覺回饋
清晰觸覺回饋支援「離散」狀態變更 (例如 二進位檔開啟/關閉期間的二進位檔變更)。由於 離散預設用途和明確的觸覺回饋會做為單一實體產生 (針對 例如每個輸入事件只能有一個觸覺回饋
Android 的目標是提供清晰流暢的觸覺回饋 而不是害羞或害羞
為支援清楚觸覺技術而建立的預先定義觸覺常數包括 以下內容。
CLOCK_TICK
CONFIRM
CONTEXT_CLICK
GESTURE_END
GESTURE_START
KEYBOARD_PRESS
KEYBOARD_RELEASE
KEYBOARD_TAP
LONG_PRESS
REJECT
TEXT_HANDLE_MOVE
VIRTUAL_KEY
VIRTUAL_KEY_RELEASE
EFFECT_CLICK
EFFECT_DOUBLE_CLICK
EFFECT_HEAVY_CLICK
EFFECT_TICK
掌握裝置製造商與開發人員之間的常見知識,是成功的關鍵 提升 Android 生態系統中的觸覺技術整體品質。使用 基本檢查清單、 硬體評估 和 CDD。 。
圖 3. 放開與放開。
豐富的觸覺回饋
豐富的觸覺回饋是不斷增長的觸覺技術類別,不再侷限於單曲 衝動式效果Android 的目標是透過高規格的觸覺回饋支援豐富的觸覺技術 精細程度高的可組合性和可調整性。下列 Android 11 以下版本支援各種用途
圖 4. 滑動紋理的豐富觸覺回饋
圖 5. 拖曳與滑動
用途 1:滑動紋理
如果手指在觸控表面滑過觸控表面時又重複觸覺回饋 (例如 包括拖曳、滑動、探索呈現自然觸覺紋理的表面) 重複觸動回饋的效果最好
如果個別效果令人振奮,而不是脆弱 重複情形就可能會被清除。最終成果是一串很長的話題 而非多個獨立信號
如果振幅不夠細,表示感知的觸覺能量會增加 反覆進行,導致最後的觸覺回饋 重複字詞
實作用於滑動和拖曳手勢的簡易表面觸覺紋理
在以下位置使用CLOCK_TICK
和TEXT_HANDLE_MOVE
:
HapticFeedbackConstants
。
這些常數會預先定義重複和振幅的特徵。
製作自己的特效
如要製作自己的效果,請將序列串聯起來進行設計
的 PRIMITIVE_CLICK
和 PRIMITIVE_TICK
英吋
VibrationEffect.Composition
。
您可以調整重複和振幅的特性
使用 addPrimitive(int primitiveID, float scale, int delay)
。支援服務仰賴
這個
CAP_COMPOSE_EFFECTS
震動器 HAL 介面。
用途 2:長震動、緩解效果
長震動是柔和的振動效果,從 0 轉換為 目標振幅長時間震動有助於引起注意 觸覺回饋但是,突然的長時間震動可能導致使用者在安靜 周遭環境,並經常發出嗡嗡聲如要產生 舒緩的長震動,在一長串開頭套用舒緩效果 震動。這可產生流暢的振動轉場效果, 目標振幅
套用減速效果
使用以下輔助工具檢查振幅控制的硬體功能:
android.os.Vibrator.hasAmplitudeControl()
。- 結果必須是
true
,才能產生含 振幅可能不同
- 結果必須是
使用
VibrationEffect
。createWaveform(timings[], amplitudes[], int repeat)
。調整
timings[]
和amplitudes[]
的序列以產生 簡化曲線,如圖 6 所示。
圖 6. 長震動減緩曲線
用途 3:音訊耦合觸覺回饋
音訊耦合觸覺回饋是觸覺回饋模式,以及音訊節奏 吸引觀眾的注意
音訊耦合觸覺回饋:優點
如要實作音訊耦合觸覺回饋,請結合清晰的觸覺回饋和長時間震動。 觸感清晰的觸覺回饋技術極具巧思,能夠帶來離散感 心律不整結合高強度的刺激時 震動功能,因此能有效吸引使用者的注意。
請務必考量感官節奏模式。如果沒有意義 使用者察覺觸覺回饋會隨機發出震動提示 即可忽略這些警告
圖 7. 音訊情侶觸覺回饋範例
音訊耦合觸覺回饋:實作訣竅
要導入音訊耦合觸覺回饋,必須對內容有基本的瞭解 同時播放音訊和觸覺回饋頻道。請留意下列事項。
使用
MediaPlayer
或SoundPool
類別- 採用 OGG 格式的資產 (含有特殊中繼資料鍵)
(
ANDROID_HAPTIC
後面接著多個觸覺通道) 代表 呈現觸覺資料,並使用MediaPlayer
和SoundPool
播放。
- 採用 OGG 格式的資產 (含有特殊中繼資料鍵)
(
指出支援觸覺和播放音訊
audio_policy_configuration.xml
。- 搭配觸覺技術使用輸出設定檔
AUDIO_CHANNEL_OUT_HAPTIC_A|B
。 - 為搭配觸覺器使用的輸出串流,別忘了觸覺回饋 在資料中,所有管道都會以額外頻道的形式呈現。
示例
如果輸出串流的頻道遮罩如下所示:
AUDIO_CHANNEL_OUT_STEREO_HAPTIC_A
所有範例看起來應如下所示:
AUDIO_LEFT_CHANNEL,AUDIO_RIGHT_CHANNEL,HAPTIC_CHANNEL_A
- 搭配觸覺技術使用輸出設定檔
變更
AudioAttributes.Builder( ).setHapticChannelsMuted(boolean muted)
給false
播放觸覺頻道。- 觸覺回饋頻道預設為靜音 (
true
)。 - 用途包括鈴聲和同步 UI 音效 以及觸覺回饋和回饋機制
- 觸覺回饋頻道預設為靜音 (
震動器 HAL 必須導入外部控制項支援功能。
- 如果是 HIDL 實作,請使用
setExternalControl(bool enabled) generates (Status status)
。 - 如果是 AIDL 實作項目,請使用
void setExternalControl(in boolean enabled)
。
- 如果是 HIDL 實作,請使用
圖 8. 實作音訊耦合觸覺回饋
音訊組合觸覺回饋:觸覺技術產生器
HapticGenerator
是音效
它可從音訊聲道產生觸覺資料
以音訊耦合觸覺回饋即時播放。
效果已套用至AudioTrack
如圖 9 中所述。
圖 9.觸覺發電機架構
為了確保觸覺產生器演算法可產生高品質的觸覺回饋, 調整發射型演算法的 參數,用於設定要套用至音訊波形的篩選器鏈。 本節將詳細說明這些參數,並說明調整方法 您的硬體規格。
頻道過濾器的相對頻率
振動器共振頻率是指觸覺回饋器的頻率 的輸出量最大值這個參數會將反共振器調整為部分 壓平合併回應轉移函式,以取得較大的頻寬。 Android 架構會自動將這個值連結至 震動提醒
IVibrator.getResonantFrequency
。這個參數的預設值為 150Hz。您可在 請參閱這裡的程式碼。
緩慢信封的正規化能力
此參數可決定部分正規化中的指數 (自動增益控制)。其預設值為 -0.8,表示 這個增益控制步驟將 80% 的動態範圍變化移除。 您可以在這裡修改程式碼。
制帶停止濾波器的 Q 因數
震動因素 (Q 係數) 取決於兩個參數:
零 Q,即頻帶濾波器中零元的品質係數 只有部分能消除共振
極點 Q,是頻帶防堵濾波的質量係數。
這兩個值的比率會限制共振現象依序避免出現 降低頻率並擴大演算法的回應方式例如: 零 Q 為 8,而 Pole Q 會產生 4 預設值 比例為 2,將共振率抑制限制為 2 (6 dB)。 Android 架構會將這兩個值連結至 Vibrator HAL 的輸出內容
IVibrator.getQFactor
方法。預設值不含馬達力量的阻尼 我們建議您同時修改這兩種值,並且 您可以同時提高或降低零 Q 與 Pole Q 的比率 應大於 1。您可以在這裡修改程式碼。
變形頻率變形
角落頻率由抑制的濾鏡套用 低階震動並使用立方變形,提高音量。 預設值為「300Hz」。您可以在這裡修改程式碼。
輸入增益和立方門檻
凡是套用至 波形的輸入波形會減少頻率信號的振幅 才能提高播放頻率
- 輸入增益因數的預設值為 0.3。
- 立方門檻的預設值為 0.1。
建議您同時修改這兩個值。您可以在程式碼中找到 請按這裡。
如要進一步瞭解此篩選器套用的函式,請參閱 請參閱這裡的說明。 如要進一步瞭解這兩個參數對輸出內容的影響, 建議您繪製篩選器頻率回應圖表 頻率回應會隨著不同的參數值而變化
變形的輸出內容增益
此參數可控制最終的振動振幅。這是最後的提升 是在限制振動效果後套用的輕微限縮器後套用 大於 1。其預設值為 1.5,可在程式碼中修改 請參閱這篇文章。 如果振動幅度太小,請調高數值。你聽得到 ,降低此值。