觸覺回饋常數和基本元素是由震動器 HAL 定義,並由 Android 架構對應至公開 API。請執行以下檢查,判斷裝置是否符合實作觸覺回饋的最低需求:
圖 2. 實作效果
圖 3. 實作基本元素
實作常數
開發人員可以透過 VibrationEffect.createPredefined() 使用 VibrationEffect 中的觸覺常數。請檢查下列觸覺常數的導入狀態。
觸覺回饋常數 | 位置和摘要 |
---|---|
EFFECT_TICK 、EFFECT_CLICK 、EFFECT_HEAVY_CLICK 、EFFECT_DOUBLE_CLICK |
VibrationEffect 類別VibrationEffect 中的觸覺常數不含任何輸入事件概念,也沒有 UI 元素。常數則包含能量層級的概念,例如 EFFECT_CLICK 和 EFFECT_HEAVY_CLICK ,這些項目會由
createPredefined() 呼叫。 |
下文將說明在未實作 VibrationEffect
常數的裝置上,如何執行其他震動效果。建議您更新這些設定,以便在這些裝置上發揮最佳效能。
EFFECT_CLICK
使用
VibrationEffect.createWaveform
建立的振動波形,以及在frameworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern
中設定的時間。EFFECT_HEAVY_CLICK
使用
VibrationEffect.createWaveform
和frameworks/base/core/res/res/values/config.xml##config_longPressVibePattern
所設定的時間,建立的振動波形。EFFECT_DOUBLE_CLICK
使用
VibrationEffect.createWaveform
和時間 (0、30、100、30) 建立的振動波形。EFFECT_TICK
使用
VibrationEffect.createWaveform
建立的振動波形,以及在frameworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
中設定的時間。
圖 4. 實作意見回饋常數
開發人員可以透過 View.performHapticFeedback() 使用 HapticFeedbackConstants 中的觸覺回饋常數。請檢查下列公開回饋常數的狀態。
觸覺回饋常數 | 位置和摘要 |
---|---|
CLOCK_TICK 、CONTEXT_CLICK 、KEYBOARD_PRESS 、
KEYBOARD_RELEASE 、KEYBOARD_TAP 、LONG_PRESS 、
TEXT_HANDLE_MOVE 、VIRTUAL_KEY 、
VIRTUAL_KEY_RELEASE 、CONFIRM 、REJECT 、
GESTURE_START 、GESTURE_END |
HapticFeedbackConstants 類別 HapticFeedbackConstants 中的觸覺常數可協助輸入事件使用特定 UI 元素,例如 KEYBOARD_PRESS 和 KEYBOARD_RELEASE ,這些元素會由 performHapticFeedback() 呼叫。 |
實作原始物件
VibrationEffect.Composition
中的觸覺原始元素具有可調整強度,開發人員可以透過 addPrimitive(int primitiveId, float scale, int delay)
使用。原始類型可分為兩類:
短暫原語法:短暫原語法,通常少於 20 毫秒。這些是
CLICK
、TICK
和LOW_TICK
。顫音原始物件:具有不同振幅和頻率的原始物件,通常比短原始物件持續時間更長。分別是
SLOW_RISE
、QUICK_RISE
、QUCK_FALL
、THUD
和SPIN
。
簡短的原始物件
短原語法可由震動馬達輸出加速度設定檔描述。每個原始元素使用的絕對頻率會因致動器的共振頻率而異。如要進一步瞭解硬體設定和用於測量輸出的工具,請參閱「設定測試設備」。
脈衝與振鈴比率 (PRR) 是短暫震動的有用品質指標,如圖 5 所示。PRR 的定義為「主脈衝」與「環狀脈衝」之間的比率。主脈衝的定義是指在持續時間視窗內的信號,其中振幅會降低至峰值振幅的 10%;環狀脈衝的定義是指在信號中,振幅會從峰值振幅的 10% 降低至峰值振幅的 1% 以下。PRR 的公式如下:
如要進一步瞭解 PRR,請參閱「分析波形」一文;如要進一步瞭解如何分析及比較結果,請參閱「使用效能地圖比較結果」。
圖 5. 脈衝與鈴聲比率定義
將短原型做為使用者輸入的意見回饋,或在較長的組合中播放,以建立柔和的紋理。也就是說,這類音效通常會經常觸發並快速連續播放。單一短型原件的感知強度會疊加成更強大的效果強度。因此,請使用較大的組合 (例如 100 個連續刻度) 校正單一刻度或低刻度原始元素。
點擊原始碼
點擊原始碼是一種強烈、清晰的效果,通常會在接近裝置共振頻率的情況下運作,以便在短時間內達到最大輸出。它比其他原始類型更強大、更深入,可發揮最大效能。
如果可行,請在開始時使用馬達超載,並在結束時使用主動煞車,以縮短馬達的升降時間。對於某些馬達,使用方波而非正弦波可加快加速度。圖 6 顯示點擊基本元素的輸出加速度設定檔範例:
圖 6. 點擊基本元素的輸出加速設定檔範例
參數 | 指南 |
---|---|
時間長度 |
目標:12 毫秒 限制:少於 30 毫秒 |
輸出加速度的峰值 |
目標:2 G 限制:> 1 G |
頻率 | 大致處於共振頻率 |
Tick 原始物件 (輕型 Tick)
時脈原始元素是一種短暫且銳利的效果,通常會在較高的頻率範圍內運作。這個原始元素也可以視為高頻率的中強度點擊,且尾端較短。同樣的指引也適用於使用馬達超載或方波達到短暫升降時間,以及在偏移處啟動煞車。圖 7 顯示了時間戳記基本元素的輸出加速度設定檔範例:
圖 7. 時標原始元素的輸出加速度設定檔範例
參數 | 指南 |
---|---|
時間長度 |
目標:5 毫秒 限制:< 20 毫秒 |
輸出加速度的峰值 |
目標: 限制:介於 0.5 G 和 1 G 之間 |
頻率 |
目標:2 倍共振頻率 限制:< 500 Hz |
低速計時原始碼
低音符原始元素是輕音符的較柔和、較弱的版本,在較低的頻率範圍內運作,可為效果提供更多身體。這個原始元素也可以視為低頻率的中強度點擊,可用於動態回饋的反覆使用。如要使用馬達過載或方波達到短升壓時間,同樣適用相同的指導方針。圖 8 顯示低時脈原始物件的輸出加速度設定檔範例:
圖 8. 低時脈原始物件的輸出加速度設定檔範例
參數 | 指南 |
---|---|
時間長度 |
目標:12 毫秒 限制:少於 30 毫秒 |
輸出加速度的峰值 |
目標:1/4 限制:介於 0.2 G 和 0.5 G |
頻率 |
目標:2/3 共振頻率 限制:< 100 Hz |
Chirp 原始物件
可以使用電壓層級和振動頻率的輸入訊號,描述唧唧鳥原語。馬達在不同頻率範圍內可輸出的加速度,取決於致動器的頻率回應曲線。頻率範圍和電壓等級必須依裝置調整。
緩慢上升原始碼
緩慢上升是指振幅和頻率緩慢向上掃描,並在掃描過程中持續增加振動強度。這可以透過一致的振幅和頻率掃描實現,使用較低的頻率範圍,以便在非共振狀態下運作。圖 9 顯示此實作項目的輸入參數和輸出加速度設定檔範例。(紅線與左側振幅標籤相符,代表振幅隨著時間的變化情形。藍線與右側的頻率標籤相符,代表振動頻率隨時間變化的情形)。
圖 9.輸入參數和輸出加速度設定檔範例 (適用於緩慢上升原始物件)
如果馬達的頻率回應受限 (離諧振頻率不夠強),則可改用從 1/2x 到 1x 諧振頻率的正弦掃描。馬達共振有助於在結尾處達到訊號峰值。
參數 | 指南 |
---|---|
時間長度 |
目標:500 毫秒 容差:20 毫秒 |
輸出加速度的峰值 |
目標:0.5 G 限制:介於 0.5 G 和 1 G 之間 |
頻率 |
目標:共振頻率的 1/2 到 2/3 替代方案:1/2 到諧振頻率 |
快速上升原始物件
快速上升是指振幅和頻率以較快的速度向上掃描,並在掃描過程中持續增加振動強度,且開始時會以較輕柔的方式進行。輸出加速度和振動頻率目標應與緩慢上升原始碼相同,但在較短的時間內達成。圖 10 顯示振動輸入參數,以及緩慢上升原始碼的輸出加速度設定檔範例。(紅線與左側振幅標籤相符,代表振幅隨著時間的變化情形。藍線與右側的頻率標籤相符,代表振動頻率隨時間變化的情形)。
圖 10. 快速上升原始圖形的輸入參數和輸出加速度設定檔範例
參數 | 指南 |
---|---|
時間長度 |
目標:150 毫秒 容差:20 毫秒 |
輸出加速度的峰值 |
目標:與 上限:與 |
頻率 |
目標:與 替代做法:與 |
快速墜落原始物件
快速下降是指幅度和頻率快速下降,且開始時較為平緩。當馬達加速至達到最高輸出加速度時,您可以使用較高的頻率做為起始點。頻率應在掃描期間持續下降,即使是在上升時間也是如此。圖 11 顯示此實作項目的輸入參數和輸出加速度設定檔範例。(紅線與左側振幅標籤相符,代表振幅隨著時間的變化情形。藍線與右側的頻率標籤相符,代表振動頻率隨時間變化的情形)。
圖 11. 輸入參數和快速墜落圖元的輸出加速度剖面範例
參數 | 指南 |
---|---|
時間長度 |
目標:100 毫秒 容差:20 毫秒 |
輸出加速度的峰值 |
目標:1 G 限制:介於 0.5 G 和 2 G 之間 |
頻率 |
目標:2 倍至 1 倍共振頻率 |
Thud 原始物件
thud 是一種低沉的敲擊音效,模擬敲擊空心木頭的物理感覺。這個基本元素會在低頻率範圍內運作,類似於低 tick 基本元素,可為效果提供更多內容。您可以將 thud 原始元素實作為振幅和頻率的向下掃描,並設定較低的頻率範圍 (最好低於 100 Hz)。圖 12 顯示此實作項目的輸入參數和輸出加速度設定檔範例。(紅線與左側振幅標籤相符,代表振幅隨著時間的變化情形。藍線與右側的頻率標籤相符,代表振動頻率隨時間變化的情形)。
圖 12. thud 原始圖形的輸入參數和輸出加速度設定檔範例
如果馬達的頻率回應受到限制,則可改為從共振頻率的完整強度驅動信號開始,然後降至可感知的最低頻率。這種做法可能需要在較低頻率下增加驅動信號強度,才能感受到震動。
參數 | 指南 |
---|---|
時間長度 |
目標:300 毫秒 容差:20 毫秒 |
輸出加速度的峰值 |
目標:0.25 G 限制:介於 0.2 G 和 0.5 G |
頻率 |
目標:共振頻率的 1/2 到 1/3 替代做法:1 到 1/2 倍的諧振頻率 |
旋轉原始碼
旋轉效果會模擬快速上下旋轉的旋轉動力,並在中心略微強調。您可以透過在相反方向獨立掃描振幅和頻率,然後再執行反向動作,實現旋轉效果。請務必使用較低的頻率範圍 (最好低於 100 Hz)。圖 13 顯示此實作項目的輸入參數和輸出加速度設定檔範例。(紅線與左側振幅標籤相符,代表振幅隨著時間的變化情形。藍線與右側的頻率標籤相符,代表振動頻率隨時間變化的情形)。
建議連續兩次呼叫旋轉基本元素,或在組合中呼叫三次,以便產生旋轉和不穩定的效果。
如果馬達的頻率響應受限,則可改為執行快速正弦掃描,從共振頻率的 1/2x 到 1x 掃描,再反向掃描。馬達共振會自動在訊號中加入重音。
圖 13. 旋轉圖元的輸入參數和輸出加速度設定檔範例
參數 | 指南 |
---|---|
時間長度 |
目標:150 毫秒 容差:20 毫秒 |
輸出加速度的峰值 |
目標:0.5 G 限制:介於 0.25 G 和 0.75 G 之間 |
頻率 |
目標:2/3 到 1/3,然後回到共振頻率的 1/2 替代做法:從 2/3 到 1x,然後回到共振頻率的 1/2 |