觸覺常數和基本體是由 Vibrator 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
。
Short 原始型別
震動馬達輸出加速度設定檔可描述短基元。使用的絕對頻率會因每個基元而異,取決於致動器的共振頻率。如要進一步瞭解硬體設定和輸出測量工具,請參閱「設定測試設備」。
脈衝與鈴聲比率 (PRR) 是短震動的重要品質指標,如圖 5 所示。PRR 定義為主脈衝 (由振幅降至峰值振幅 10% 的時間範圍內訊號定義) 與鈴聲脈衝 (由振幅從峰值振幅 10% 降至峰值振幅 1% 以下的訊號定義) 之間的比例。PRR 的公式如下:
如要進一步瞭解 PRR,請參閱「分析波形」一文;如要進一步瞭解如何分析及比較結果,請參閱「使用效能地圖比較結果」一文。
圖 5. 脈衝與鈴聲比率定義
將短基元套用為使用者輸入回饋,或在較長的合成音樂中播放,以建立柔和的紋理。也就是說,這些音效通常會頻繁觸發,並快速連續播放。單一短基元的感知強度可能會加劇整體效果強度。因此,請使用較大的組合 (例如連續 100 個刻度),校正單一刻度或低刻度原始值。
按一下基本體
點擊基本元素通常會在接近裝置共振頻率的頻率運作,以在短時間內達到最大輸出,產生強勁清脆的震動效果。比其他基本動作更強大、更深入,可發揮最大強度。
如果可以,請在開始時使用馬達超速,結束時使用主動煞車, 以縮短馬達上升和下降時間。對於某些馬達,使用方波而非正弦波可加快加速速度。圖 6 顯示點擊基本體的輸出加速設定檔範例:
圖 6. 點擊基本體的輸出加速設定檔範例
參數 | 指南 |
---|---|
時間長度 |
目標:12 毫秒 限制:< 30 毫秒 |
輸出內容加速 |
目標:2G 限制:大於 1 GB |
頻率 | 大約在共振頻率 |
勾號原始物件 (淺色勾號)
勾號基本型是尖銳的短效,通常運作於較高的頻率範圍。這種原始手勢也可以描述為中等強度點擊,頻率較高,且尾端較短。如要使用馬達過驅動或方波來達到短暫的上升時間,並在偏移時主動煞車,也適用相同的指引。圖 7 顯示勾號基本體的輸出加速設定檔範例:
圖 7. 勾號基本體的輸出加速設定檔範例
參數 | 指南 |
---|---|
時間長度 |
目標:5 毫秒 限制:< 20 毫秒 |
輸出內容加速 |
目標: 限制:介於 0.5 GB 和 1 GB 之間 |
頻率 |
目標:2 倍共振頻率 限制:< 500 Hz |
低勾號基元
低音勾是柔和、較弱的光音勾版本,運作頻率範圍較低,可為效果提供更多主體。這種原始觸覺回饋也可以描述為低頻率的中等強度點擊,目的是重複用於動態回饋。使用馬達過驅動或方波來達到初始發作的短上升時間時,也適用相同的指引。圖 8 顯示低速勾選基本體的輸出加速設定檔範例:
圖 8. 低勾號基本體的輸出加速設定檔範例
參數 | 指南 |
---|---|
時間長度 |
目標:12 毫秒 限制:< 30 毫秒 |
輸出內容加速 |
目標:1/4 個 限制:介於 0.2 G 和 0.5 G 之間 |
頻率 |
目標:2/3 共振頻率 限制:< 100 Hz |
Chirp 基元
電壓位準和震動頻率的輸入訊號可描述 Chirp 基本體。馬達在不同頻率範圍內輸出的加速度,取決於致動器的頻率響應曲線。您必須根據個別裝置調整頻率範圍和電壓位準。
緩慢上升原始版本
緩慢上升:振幅和頻率緩慢向上掃動,開始時較輕柔,掃動期間震動強度會持續增加。可透過持續掃描振幅和頻率來實作,並使用共振頻率範圍以外的較低頻率範圍運作。圖 9 顯示此實作的輸入參數和輸出加速設定檔範例。(紅線與左側的振幅標籤相符,代表振動振幅隨時間變化的情形。藍線對應右側的頻率標籤,代表震動頻率隨時間變化的情形。
圖 9.輸入參數和輸出加速設定檔範例,適用於緩慢上升的原始項目
如果馬達的頻率響應受到限制 (共振頻率以外的頻率不夠強),替代做法是從共振頻率的 1/2 倍掃描至 1 倍的正弦波。馬達共振有助於在結尾達到訊號峰值。
參數 | 指南 |
---|---|
時間長度 |
目標:500 毫秒 容許範圍:20 毫秒 |
輸出內容加速 |
目標:0.5 G 限制:介於 0.5 GB 和 1 GB 之間 |
頻率 |
目標:共振頻率的 1/2 至 2/3 替代方案:1/2 至共振頻率 |
快速上升原始物件
快速上升:振幅和頻率會快速向上掃動,且掃動期間的震動強度會持續增加,但開始時會較為緩和。輸出加速和震動頻率目標應與緩慢上升的原始目標相同,但時間較短。圖 10 顯示震動輸入參數,以及慢速上升基本體的輸出加速度設定檔範例。(紅線與左側的振幅標籤相符,代表振動振幅隨時間變化的情形。藍線對應右側的頻率標籤,代表震動頻率隨時間變化的情形。
圖 10. 輸入參數和輸出加速設定檔範例,適用於快速上升基本項目
參數 | 指南 |
---|---|
時間長度 |
目標:150 毫秒 容許範圍:20 毫秒 |
輸出內容加速 |
目標:與「 限制:與 |
頻率 |
目標:與「 替代方式:與「 |
快速掉落原始物件
快速下降是指振幅和頻率快速向下掃動,且起音柔和。馬達加速達到最高輸出加速度時,您可以使用較高的頻率做為起點。頻率應在掃描期間持續下降,即使在上升時間也是如此。圖 11 顯示輸入參數,以及這項實作的輸出加速設定檔範例。(紅線與左側的振幅標籤相符,代表振動振幅隨時間變化的情形。藍線對應右側的頻率標籤,代表震動頻率隨時間變化的情形。
圖 11. 輸入參數和輸出加速設定檔範例,適用於快速跌倒原始型別
參數 | 指南 |
---|---|
時間長度 |
目標:100 毫秒 容許範圍:20 毫秒 |
輸出內容加速 |
目標:1 G 限制:介於 0.5 GB 和 2 GB 之間 |
頻率 |
目標:共振頻率的 2 倍至 1 倍 |
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 至 1 倍,然後回到共振頻率的 1/2 |