Mapowanie stałych między HAL a interfejsem API

Na tej stronie znajdziesz zalecane mapowania publicznych stałych wartości HAL i stałych wartości interfejsu API. Jeśli oceniane urządzenie nie implementuje stałych HAL, zaktualizuj wzorce zastępcze opisane na stronie Wdrażanie stałych i pierwotnych funkcji, aby wygenerować podobne dane wyjściowe. Mapowanie jest wspomagane przez 2 modele domyślne:

  • Model dyskretny (prosty)

    • Amplituda jest kluczową zmienną tego modelu. Każdy element w HAL reprezentuje inną amplitudę haptyczną.
    • Ten model jest minimalnym wymaganiem potrzebnym do wdrożenia podstawowego interfejsu użytkownika haptycznego.
    • Bardziej zaawansowane wrażenia haptyczne wymagają zaawansowanego sprzętu i zaawansowanego modelu (model ciągły).
  • Model ciągły (zaawansowany)

    • Tekstura i amplituda to kluczowe zmienne tego modelu. Każdy element w HAL reprezentuje różne tekstury haptyczne. Amplituda każdego elementu HAL jest kontrolowana przez współczynnik skali (S).
    • Ten model wymaga zaawansowanego sprzętu. Jeśli OEM chce korzystać z zaawansowanych funkcji haptycznych w VibrationEffect.Composition (aby w pełni korzystać z najnowszych interfejsów API haptycznych), zalecamy wdrożenie sprzętu za pomocą tego modelu.

Model dyskretny

Zalecamy mapowanie wszystkich publicznych stałych wartości udostępnionych w interfejsie API na odpowiednie stałe wartości HAL. Aby rozpocząć ten proces, sprawdź, ile fal haptycznych z dyskretyczną amplitudą urządzenie może zdefiniować w HAL. Konkretne pytanie sformułowane na podstawie tego zagadnienia może wyglądać tak: Ile efektów haptycznych jednoimpulsowych z różnicami amplitudy, które są wyczuwalne dla człowieka, można zdefiniować na moim telefonie? Odpowiedź na to pytanie określa mapowanie.

Definiowanie stałych HAL jest procesem zależnym od sprzętu. Na przykład telefon podstawowy może mieć tylko możliwości sprzętowe umożliwiające wygenerowanie pojedynczej fali haptycznej. Urządzenia z bardziej zaawansowanymi komponentami sprzętowymi zapewniają szerszy zakres poziomów amplitudy i mogą definiować wiele przebiegów haptycznych w HAL. Mapowanie stałych wartości HAL na interfejs API polega na tym, że najpierw ustala się stałą wartość HAL (korzystając z średniej amplitudy jako wartości odniesienia), a potem na tej podstawie ustala się silniejsze lub słabsze efekty.

Schemat zakresu stałego i amplitud sprzężenia zwrotnego HAL

Rysunek 14. Stała wartość HAL według amplitudy

Gdy zdefiniujesz liczbę stałych HAL z dyskretną amplitudą, możesz mapować stałe HAL i interfejsu API według liczby stałych HAL. Ten proces mapowania może podzielić jedną stałą interfejsu API impulsu na maksymalnie 3 oddzielne grupy poziomów amplitudy. Sposób podziału stałych parametrów interfejsu API jest oparty na zasadach UX dotyczących towarzyszących zdarzeń wejściowych. Więcej informacji znajdziesz w artykule Haptics UX Design.

Model dyskretny do mapowania stałych wartości interfejsu HAL-API

Rysunek 15. Mapowanie stałych HAL-API: model dyskretny

Jeśli Twoje urządzenie obsługuje tylko 2 stałe wartości HAL z dyskretnymi amplitudami, rozważ połączenie stałych wartości HAL z poziomem amplitudy Medium i High. Przykładem zastosowania tego zagadnienia w praktyce jest mapowanie wartości EFFECT_CLICKEFFECT_HEAVY_CLICK na tę samą stałą HAL, która jest stałą HAL dla poziomu średniej amplitudy. Jeśli Twoje urządzenie obsługuje tylko jedną stałą HAL z dyskretną amplitudą, rozważ połączenie wszystkich 3 poziomów w jeden.

Model ciągły

Ciągły model z możliwością skalowania amplitudy można stosować do definiowania stałych wartości HAL. Do stałych wartości HAL (np. HAL_H0, HAL_H1) można zastosować współczynnik skalowania (S), aby uzyskać skalowany HAL (HAL_H0 x S). W tym przypadku skalowany HAL jest mapowany w celu zdefiniowania stałych wartości interfejsu API (HAL_H0 x S1 = H0S1 = EFFECT_TICK), jak pokazano na rysunku 16. Dzięki skalowalności amplitudy w modelu ciągłym urządzenie może przechowywać niewielką liczbę stałych wartości HAL z charakterystycznymi teksturami i dodawać zmiany amplitudy przez dostosowywanie współczynnika skalowania (S). Producenci urządzeń mogą definiować liczbę stałych wartości HAL na podstawie liczby różnych tekstur haptycznych, które chcą udostępnić.

Zakres stałych HAL według tekstury i amplitudy

Rysunek 16. Zasięg HAL w stałej wartości dla tekstury (HAL_H0) i skala amplitudy (S)

Ciągły model mapowania stałych wartości HAL-API

Rysunek 17. Mapowanie stałych HAL-API: model ciągły

W modelu ciągłym różne stałe HAL reprezentują różne tekstury haptyczne, a nie różne amplitudy. Współczynnik skali (S) może konfigurować amplitudę. Jednak ze względu na to, że postrzeganie tekstury (np. ostrość) jest powiązane z postrzeganiem czasu trwania i amplitudy, zaleca się połączenie tekstury i współczynnika skali (w procesie projektowania mapowania HAL-API).

Rysunek 18 przedstawia mapowanie stałych wartości przez zwiększanie zmienności z jednego HAL do wielu stałych wartości API ze skalowalnością amplitudy.

Zwiększanie wariantu:1

Zwiększanie wariantu 2

Rysunek 18. Zwiększanie zmienności dzięki skalowalności amplitudy

W przypadku wszystkich skalowanych stałych interfejsu API, takich jak PRIMITIVE_TICKPRIMITIVE_CLICKVibrationEffect.Composition, poziom energii stałej interfejsu API zależy od parametru float scale, gdy stała interfejsu API jest zadeklarowana za pomocą addPrimitive(int primitiveID, float scale, int delay). Funkcje PRIMITIVE_TICKPRIMITIVE_CLICK można zaprojektować tak, aby wyraźnie się od siebie różniły, używając różnych stałych wartości HAL. Zalecamy to podejście, jeśli chcesz dodać wariację tekstury.