在 HAL 和 API 之間對應常數

本頁面會列出公開 HAL 常數和 API 常數之間的建議對應項目。如果評估的硬體未實作 HAL 常數,請更新「實作常數和原始元素」頁面中所述的備用模式,以產生類似的輸出內容。這項對應作業可透過兩種不同的預設模型協助完成:

  • 離散模型 (簡單)

    • 振幅是這個模型的重要變數。HAL 中的每個實體都代表不同的觸覺振幅。
    • 這個模型是實作基本觸覺 UX 所需的最低要求。
    • 更進階的觸覺回饋使用者體驗需要進階硬體和進階模型 (持續性模型)。
  • 持續式模型 (進階)

    • 紋理和振幅是這個模型的重要變數。HAL 中的每個實體都代表不同的觸覺回饋紋理。每個 HAL 實體的振幅都由縮放因子 (S) 控制。
    • 這個模型需要進階硬體。如果原始設備製造商 (OEM) 想使用進階觸覺回饋使用者體驗,並搭配 VibrationEffect.Composition (以便充分運用最新的觸覺回饋 API),建議使用此模型導入硬體。

離散模型

建議您將 API 中提供的所有公開常數與適當的 HAL 常數對應。如要開始這項程序,請找出裝置可在 HAL 中定義多少個具有離散振幅的觸覺波形。以該概念為架構的具體問題如下:在手機中,可以定義多少種單脈衝觸覺效果,且這些效果的振幅差異可供人類察覺?這項問題的答案會決定對應方式。

定義 HAL 常數是硬體相關的程序。舉例來說,入門級手機可能只有產生單一觸覺回饋波形的硬體功能。配備更先進硬體元件的裝置可產生更廣泛的離散振幅等級,並可在 HAL 中定義多種觸覺回饋波形。HAL-API 常數對應會採用 HAL 常數 (使用中等振幅做為基準),然後安排更強或更弱的效果。

HAL 常數範圍和回饋振幅的示意圖

圖 14. 依振幅計算 HAL 常數範圍

定義具有離散振幅的 HAL 常數數量後,就可以根據 HAL 常數數量對應 HAL 和 API 常數。這項對應程序可將單一衝量 API 常數區分為最多三個幅度層級群組。API 常數的區隔方式,是根據伴隨輸入事件的使用者體驗原則。詳情請參閱「觸覺回饋使用者體驗設計」。

HAL-API 常數對應的離散模型

圖 15. HAL-API 常數對應:離散模型

如果裝置僅支援兩個具有離散振幅的 HAL 常數,請考慮合併中等和高振幅 HAL 常數。在實際應用中,這個概念的例子是將 EFFECT_CLICKEFFECT_HEAVY_CLICK 對應至相同的 HAL 常數,也就是中等振幅等級 HAL 常數。如果裝置只支援一個 HAL 常數,且振幅為離散值,請考慮將所有三個等級合併為一個。

連續模型

可將具有振幅可擴展性的連續模型套用至定義 HAL 常數。您可以將比例因數 (S) 套用至 HAL 常數 (例如 HAL_H0HAL_H1),產生經過縮放的 HAL (HAL_H0 x S)。在本例中,經過縮放的 HAL 會對應至定義 API 常數 (HAL_H0 x S1 = H0S1 = EFFECT_TICK),如圖 16 所示。透過連續模型的振幅可擴展性,裝置可以儲存少量具有獨特觸覺回饋紋理的 HAL 常數,並透過調整比例因數 (S) 新增振幅變化。裝置製造商可以根據要提供的觸覺回饋紋理數量,定義 HAL 常數的數量。

依紋理和振幅計算 HAL 常數範圍

圖 16. 根據紋理 (HAL_H0) 和振幅縮放比例 (S) 設定 HAL 常數範圍

HAL-API 常數對應的連續模型

圖 17. HAL-API 常數對應:連續模式

在連續模型中,不同的 HAL 常數代表不同的觸覺紋理,而非不同的振幅;縮放比例 (S) 可設定振幅。不過,由於紋理感知 (例如清晰度) 與時間和振幅感知相關,因此建議在 HAL API 對應的設計過程中,結合紋理和縮放比例。

圖 18 說明常數對應,從一個 HAL 到多個 API 常數,並增加振幅可擴展性。

增加變化版本 1

增加變化版本 2

圖 18. 利用振幅可擴展性增加變化

對於所有可調整的 API 常數 (例如 VibrationEffect.Composition 中的 PRIMITIVE_TICKPRIMITIVE_CLICK),如果 API 常數是透過 addPrimitive(int primitiveID, float scale, int delay) 宣告,則 API 常數的能量等級會取決於 float scale 參數。PRIMITIVE_TICKPRIMITIVE_CLICK 可使用不同的 HAL 常數進行設計,以便清楚區分。如果您想為紋理新增變化,建議採用這種做法。