Zastosuj czujnik haptyczny

Producenci urządzeń są zwykle uznawani za właścicieli zasobów prywatnych utworzonych dla poszczególnych urządzeń. Dlatego ich wysiłki często koncentrują się na konkretnym urządzeniu, a nie na spójności innych urządzeń w ekosystemie.

Wręcz przeciwnie, deweloperzy starają się tworzyć aplikacje, które działają na wszystkich telefonach z Androidem w ekosystemie, niezależnie od specyfikacji technicznej poszczególnych urządzeń. Ta różnica w podejściu może powodować problemy z fragmentacją, na przykład gdy możliwości sprzętowe niektórych telefonów nie odpowiadają oczekiwaniom deweloperów aplikacji. Jeśli interfejsy API haptycznych funkcji działają na niektórych telefonach z Androidem, ale nie na innych, tworzy to niespójny ekosystem. Dlatego konfiguracja sprzętowa odgrywa kluczową rolę w zapewnianiu producentom możliwości implementacji interfejsów API haptycznych Androida na każdym urządzeniu.

Na tej stronie znajdziesz listę kontrolną z instrukcjami krok po kroku, które pomogą Ci skonfigurować zgodność sprzętu z interfejsami API haptycznych Androida, aby w pełni korzystać z ich możliwości.

Poniższy rysunek przedstawia budowanie wspólnej wiedzy wśród producentów urządzeń i deweloperów, co jest kluczowym krokiem w tworzeniu spójnego ekosystemu:

Diagram przedstawiający przypadki użycia haptyki przez deweloperów aplikacji i producentów urządzeń

Rysunek 1. Udostępnianie informacji producentom urządzeń i deweloperom

Lista kontrolna implementacji reakcji na dotyk

  1. Implementowanie stałych

    • Lista stałych wartości do implementacji haptyki.
  2. Wdrażanie elementów podstawowych

    • Wskazówki dotyczące implementacji prymitywów do tworzenia kompozycji HAL.
  3. Mapowanie stałych między HAL a interfejsem API

    • zalecenia dotyczące mapowania między publicznymi stałymi interfejsu API (nazwanymi placeholderami w ramach) a stałymi HAL, które implementują te placeholdery;
    • Aby dowiedzieć się więcej o tym procesie, zapoznaj się z zasadami projektowania rekomendowanych map.
  4. Sprawdzanie sprzętu

    • Instrukcje dotyczące kierowania efektów haptycznych Wykonaj te instrukcje, aby szybko sprawdzić sprzęt.

Poniżej omówimy każdy z tych kroków.

Krok 1. Wdróż stałą

Wykonaj te kontrole, aby sprawdzić, czy Twoje urządzenie spełnia minimalne wymagania dotyczące implementacji haptyki:

Schemat blokowy procesu implementacji haptycznych

Rysunek 2. Implementowanie efektów

Schemat blokowy czynności implementacji prymitywów

Rysunek 3. Implementowanie elementów podstawowych

Sprawdź stan implementacji tych stałych wibracji.

Stałe dotyczące haptyki Lokalizacje i streszczenia
EFFECT_TICK, EFFECT_CLICK, EFFECT_HEAVY_CLICK, EFFECT_DOUBLE_CLICK VibrationEffect class
Konstante haptyczne w VibrationEffect nie zawierają żadnych informacji o zdarzeniach wejściowych i nie mają elementów interfejsu użytkownika. Stała zawiera zamiast tego poziomy energii, takie jak EFFECT_CLICKEFFECT_HEAVY_CLICK, które są wywoływane przez createPredefined().

Opisane poniżej alternatywne wibracje są wykonywane na urządzeniach, które nie implementują stałych wartości VibrationEffect. Zalecamy zaktualizowanie tych konfiguracji, aby zapewnić optymalną wydajność na takich urządzeniach.

  • EFFECT_CLICK

    Wibracje w postaci fali utworzone za pomocą VibrationEffect.createWaveform i czasów skonfigurowanych w frameworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern.

  • EFFECT_HEAVY_CLICK

    Wibracje w postaci fali utworzone za pomocą VibrationEffect.createWaveform i czasów ustawionych w frameworks/base/core/res/res/values/config.xml##config_longPressVibePattern.

    • EFFECT_DOUBLE_CLICK

    Wibracje w postaci fali utworzone za pomocą VibrationEffect.createWaveform i czasów trwania (0, 30, 100, 30).

  • EFFECT_TICK

    Wibracje w postaci fali utworzone za pomocą VibrationEffect.createWaveform i czasów skonfigurowanych w frameworks/base/core/res/res/values/config.xml##config_clockTickVibePattern.

Schemat blokowy czynności związanych z testowaniem reakcji haptycznej

Rysunek 4. Implementacja stałych wartości opinii

Sprawdź stan tych publicznych stałych informacji zwrotnych.

Stałe dotyczące haptyki Lokalizacje i streszczenia
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 class
Konstante haptyczne w  HapticFeedbackConstants wspomagają zdarzenia wejścia z pewnymi elementami UI, takimi jak KEYBOARD_PRESSKEYBOARD_RELEASE, które są wywoływane przez performHapticFeedback().

Krok 2. Wdróż prymitywy

VibrationEffect.Compositionmożna skalować intensywność wibracji, z której deweloperzy mogą korzystać za pomocą addPrimitive(int primitiveId, float scale, int delay). Pierwiastki można podzielić na 2 kategorie:

  • Krótkie prymitywy: prymitywy o krótkim czasie trwania, zwykle krótszym niż 20 ms. Są to CLICK, TICKLOW_TICK.

  • Sygnalizowanie: sygnały o zmiennej amplitudzie i częstotliwości, zazwyczaj trwające dłużej niż sygnały krótkie. Są to SLOW_RISE, QUICK_RISE, QUCK_FALL, THUD i SPIN.

Krótkie elementy

Krótkie prymitywy można opisać przy użyciu profilu przyspieszenia wyjściowego silnika wibracyjnego. Częstotliwość bezwzględna zależy od danego prymitywu i zmienia się w zależności od częstotliwości rezonansowej danego aktuatora. Więcej informacji o konfigurowaniu sprzętu i narzędziach do pomiaru wyjścia znajdziesz w artykule Konfigurowanie sprzętu do testowania.

Cenna miara jakości krótkich wibracji to współczynnik pulsu do dzwonienia (PRR), pokazany na rysunku 5. PRR to stosunek głównego impulsu, zdefiniowanego przez sygnał w oknie czasu, w którym amplituda maleje do 10% amplitudy szczytowej, do impulsu pierścieniowego, zdefiniowanego przez sygnał, w którym amplituda maleje z 10% amplitudy szczytowej do mniej niż 1% amplitudy szczytowej. Więcej informacji o PRR znajdziesz w artykule Analiza przebiegu fali, a o analizowaniu i porównywaniu wyników – w artykule Porównywanie wyników za pomocą mapy wydajności.

Stosunek impulsów do dzwonienia

Rysunek 5. Definicja współczynnika tętna do dzwonka

Stosuj krótkie prymitywy jako informacje zwrotne od użytkownika lub odtwarzaj je w dłuższych kompozycjach, aby tworzyć miękkie tekstury. Oznacza to, że są one zwykle często wywoływane i odtwarzane szybko po sobie. Odbierana intensywność pojedynczego krótkiego prymitywu może zwiększać intensywność efektu. Z tego powodu należy skalibrować pojedynczy znak wyboru lub prosty znak wyboru z większej kompozycji, na przykład 100 kolejnych znaków wyboru.

Kliknij obiekt

Kliknięcie to silny, wyraźny efekt, który zwykle działa w pobliżu częstotliwości rezonansowej urządzenia, aby osiągnąć maksymalną moc w krótkim czasie. Jest ona silniejsza i głębsza niż inne prymitywy, a jej działanie jest maksymalnie intensywne.

Jeśli jest to możliwe, użyj przesterowania silnika na początku i aktywnego hamowania na końcu, aby uzyskać krótki czas wzrostu i obniżenia prędkości silnika. W przypadku niektórych silników szybsze przyspieszenie może zapewnić użycie sygnału prostokątnego zamiast sygnału sinusoidalnego. Na rysunku 6. widać przykładowy profil przyspieszania wyjścia dla komponentu kliknięcia:

Kliknij profil przyspieszania danych wyjściowych

Rysunek 6. Przykład profilu przyspieszania wyjścia dla prymitywu kliknięcia

Parametr Wytyczna
Czas działania

Docelowo: 12 ms

Limit: < 30 ms

Przyspieszenie wyjścia szczytowego

Docelowo: 2 G

Limit: > 1 G

Częstotliwość w przybliżeniu w częstotliwości rezonansowej.

Element podstawowy „ptaszek” (jasny)

Tick primitive to ostry, krótki efekt, który zwykle działa w wyższym zakresie częstotliwości. Ten typ można też opisać jako kliknięcie o średniej intensywności o wyższej częstotliwości z krótkim ogonem. Te same wskazówki dotyczą osiągania krótkiego czasu narastania za pomocą przesterowania silnika lub sygnału prostokątnego na potrzeby początkowego narastania oraz aktywnego hamowania w przypadku przesunięcia. Rysunek 7 przedstawia przykładowy profil przyspieszenia wyjściowego dla prymitywu tick:

Profil przyspieszenia wyjścia komponentu prostego

Rysunek 7. Przykład profilu przyspieszenia wyjścia dla prymitywu tick

Parametr Wytyczna
Czas działania

Docelowo: 5 ms

Limit: < 20 ms

Przyspieszenie wyjścia szczytowego

Docelowo: połowa CLICK, 1 G

Limit: od 0,5 G do 1 G

Częstotliwość

Docelowo: 2-krotne rezonansowe częstotliwości

Limit: < 500 Hz

Podstawowy element znaku

Pierwotny dźwięk tyknięcia w niskim zakresie to łagodniejsza, słabsza wersja dźwięku tyknięcia w niskim zakresie, który działa w niższym zakresie częstotliwości, aby nadać efektowi większą gęstość. Ten prymityw można też opisać jako kliknięcie o średniej intensywności o niższej częstotliwości, które ma być używane wielokrotnie w celu dynamicznego wyświetlania informacji zwrotnych. Te same wskazówki dotyczą osiągania krótkiego czasu narastania za pomocą przesterowania silnika lub sygnału prostokątnego na potrzeby początkowego narastania. Rysunek 8 przedstawia przykładowy profil przyspieszenia wyjściowego dla prymitywu niskoczęstotliwościowego:

Profil przyspieszenia wyjścia prymitywu o niskiej częstotliwości

Rysunek 8. Przykład profilu przyspieszenia wyjścia dla prymitywu o niskiej częstotliwości

Parametr Wytyczna
Czas działania

Docelowo: 12 ms

Limit: < 30 ms

Przyspieszenie wyjścia szczytowego

Cel: 1/4 TICK, 0,25 g

Limit: od 0,2 G do 0,5 G

Częstotliwość

Docelowo: 2/3 częstotliwości rezonansowej

Limit: < 100 Hz

Elementy podstawowe Chirp

Pierwiastki ćwierkania można opisać za pomocą sygnałów wejściowych dotyczących poziomu napięcia i częstotliwości wibracji. Przyspieszenie, które silnik jest w stanie wygenerować w różnych zakresach częstotliwości, zależy od krzywej odpowiedzi częstotliwościowej aktuatora. Zakresy częstotliwości i poziomy napięcia należy dostosować do poszczególnych urządzeń.

Powolne zwiększanie

Powolny wzrost to stopniowy wzrost amplitudy i częstliwości z łagodnym początkiem oraz stale wzrastającą intensywnością wibracji. Można go zastosować przez stały przesuw zarówno amplitudy, jak i częstotliwości, używając niższego zakresu częstotliwości, który działa poza rezonansem. Rysunek 9 przedstawia parametry wejściowe i przykładowy profil przyspieszania danych wyjściowych w przypadku tej implementacji. (czerwona linia odpowiada etykietom amplitudy po lewej stronie i przedstawia, jak amplituda wibracji zmienia się w czasie. Niebieska linia odpowiada etykietom częstotliwości po prawej stronie i przedstawia, jak częstotliwość wibracji zmienia się w czasie.

Parametry wejściowe i profil przyspieszenia wyjściowego dla powolnego wzrostu

Rysunek 9. Parametry wejściowe i przykład profilu przyspieszenia wyjściowego dla powolnego wzrostu

Jeśli odpowiedź częstotliwościowa silnika jest ograniczona (niewystarczająco odbiega od częstotliwości rezonansowej), alternatywną implementacją jest skanowanie sinusoidalne od 1/2 do 1 raza częstotliwości rezonansowej. Rezonans silnika przyczynia się do osiągnięcia szczytu sygnału na końcu.

Parametr Wytyczna
Czas działania

Cel: 500 ms

Tolerancja: 20 ms

Przyspieszenie wyjścia szczytowego

Docelowo: 0,5 g

Limit: od 0,5 G do 1 G

Częstotliwość

Docelowa wartość: 1/2 do 2/3 częstotliwości rezonansowej

Alternatywnie: 1/2 do częstotliwości rezonansowej

Szybki wzrost

Szybkie wzmocnienie to szybsze zwiększanie amplitudy i częstotliwości z łagodnym początkiem oraz stale rosnącą intensywnością wibracji. Docelowe wartości przyspieszenia i częstotliwości wibracji powinny być takie same jak w przypadku powolnego wzrostu w prostej funkcji, ale osiągane w krótszym czasie. Rysunek 10 przedstawia parametry wejściowe wibracji oraz przykładowy profil przyspieszenia wyjściowego dla prymitywu powolnego wzrostu. (czerwona linia odpowiada etykietom amplitudy po lewej stronie i przedstawia, jak amplituda wibracji zmienia się w czasie. Niebieska linia odpowiada etykietom częstotliwości po prawej stronie i przedstawia, jak częstotliwość wibracji zmienia się w czasie.

Parametry wejściowe i profil przyspieszenia wyjściowego dla szybkiego wzrostu

Rysunek 10. Parametry wejściowe i przykład profilu przyspieszenia wyjściowego dla szybkiego wzrostu

Parametr Wytyczna
Czas działania

Docelowo: 150 ms

Tolerancja: 20 ms

Przyspieszenie wyjścia szczytowego

Cel: taki sam jak w SLOW_RISE

Limit: taki sam jak w SLOW_RISE

Częstotliwość

Cel: taki sam jak w SLOW_RISE

Opcja: taka sama jak w hotelu SLOW_RISE

Szybki element podstawowy

Szybkie opadanie to szybkie obniżanie amplitudy i częstotliwości z łagodnym początkiem. Jako punktu wyjścia możesz użyć wyższej częstotliwości, gdy silnik przyspiesza, aby osiągnąć maksymalne przyspieszenie wyjściowe. Częstotliwość powinna stale spadać w całym zakresie skanowania, nawet podczas czasu narastania. Rysunek 11 przedstawia parametry wejściowe i przykładowy profil przyspieszenia danych wyjściowych w przypadku tej implementacji. (czerwona linia odpowiada etykietom amplitudy po lewej stronie i przedstawia, jak amplituda wibracji zmienia się w czasie. Niebieska linia odpowiada etykietom częstotliwości po prawej stronie i przedstawia, jak częstotliwość wibracji zmienia się w czasie.

Parametry wejściowe i profil przyspieszenia wyjściowego dla szybkiego spadku

Rysunek 11. Parametry wejściowe i przykład profilu przyspieszenia wyjściowego dla szybkiego spadku

Parametr Wytyczna
Czas działania

Docelowo: 100 ms

Tolerancja: 20 ms

Przyspieszenie wyjścia szczytowego

Docelowo: 1 G.

Limit: od 0,5 G do 2 G

Częstotliwość

Docelowa wartość: 2 do 1 raza częstotliwość rezonansowa

Podstawowy element dźwiękowy Thud

To głośny, niski, perkusyjny dźwięk, który symuluje fizyczne uderzenie w puste drewno. Ten prymityw działa w zakresie niskiej częstotliwości, podobnie jak prymityw low tick, aby zapewnić większą płynność efektu. Możesz zaimplementować dźwięk uderzenia jako spadek amplitudy i częstotliwości w niższym zakresie częstotliwości (najlepiej poniżej 100 Hz). Rysunek 12 przedstawia parametry wejściowe i przykładowy profil przyspieszenia wyjściowego dla tej implementacji. (czerwona linia odpowiada etykietom amplitudy po lewej stronie i przedstawia, jak amplituda wibracji zmienia się w czasie. Niebieska linia odpowiada etykietom częstotliwości po prawej stronie i przedstawia, jak częstotliwość wibracji zmienia się w czasie.

Parametry wejściowe i profil przyspieszenia wyjściowego dla komponentu uderzenia

Rysunek 12. Parametry wejściowe i przykład profilu przyspieszenia wyjściowego dla prymitywu THUD

Jeśli odpowiedź częstotliwościowa silnika jest ograniczona, można zastosować alternatywne rozwiązanie, zaczynając od sygnału napędowego o pełnej intensywności przy częstotliwości rezonansowej i spadając do najniższej możliwej częstotliwości, którą można jeszcze wyczuć. Aby wibracje były odczuwalne, może być konieczne zwiększenie intensywności sygnału napędu przy niższej częstotliwości.

Parametr Wytyczna
Czas działania

Docelowo: 300 ms

Tolerancja: 20 ms

Przyspieszenie wyjścia szczytowego

Docelowo: 0,25 g

Limit: od 0,2 G do 0,5 G

Częstotliwość

Docelowa wartość: 1/2 do 1/3 częstotliwości rezonansowej

Alternatywa: 1 x do 1/2 częstotliwości rezonansowej

Podstawowy obiekt wirowania

Obrót symuluje szybkie obracanie się wokół własnej osi z lekko zaznaczonym środkiem. Obrócenie można zaimplementować, przesuwając amplitudę i częstotliwość niezależnie, w przeciwnych kierunkach, a następnie odwrotnie. Ważne jest używanie niższego zakresu częstotliwości (najlepiej poniżej 100 Hz). Na rysunku 13 przedstawiono parametry wejściowe i przykładowy profil przyspieszenia wyjściowego dla tej implementacji. (czerwona linia odpowiada etykietom amplitudy po lewej stronie i przedstawia, jak amplituda wibracji zmienia się w czasie. Niebieska linia odpowiada etykietom częstotliwości po prawej stronie i przedstawia, jak częstotliwość wibracji zmienia się w czasie.

Aby uzyskać efekt wirowania i niestabilności, zalecamy wywołanie prymitywu wirowania 2 razy z rzędu lub 3 razy w kompozycjach.

Jeśli odpowiedź częstotliwościowa silnika jest ograniczona, alternatywną implementacją jest szybkie przeskanowanie sinusa od 1/2x do 1x częstotliwości rezonansowej i z powrotem. Rezonans silnika automatycznie nadaje sygnałowi akcent w środku.

Parametry wejściowe i profil przyspieszenia wyjściowego dla komponentu obrotu

Rysunek 13. Parametry wejściowe i przykład profilu przyspieszenia wyjściowego dla prymitywu obrotu

Parametr Wytyczna
Czas działania

Docelowo: 150 ms

Tolerancja: 20 ms

Przyspieszenie wyjścia szczytowego

Docelowo: 0,5 g

Limit: od 0,25 g do 0,75 g

Częstotliwość

Docelowo: od 2/3 do 1/3, a potem z powrotem do 1/2 częstotliwości rezonansowej

Alternatywa: 2/3 do 1 x, a następnie z powrotem do 1/2 częstotliwości rezonansowej

Krok 3. Zmapuj stałe między HAL a interfejsem API

Krok 3 przedstawia zalecane mapowania publicznych stałych HAL i stałych interfejsu API. Jeśli sprzęt oceniony w kroku 1 nie implementuje stałych wartości HAL, w kroku 3 zaktualizuj wzorce substytucyjne opisane w kroku 1, aby wygenerować podobne dane wyjściowe. Do mapowania służą 2 różne domyślne modele:

  • 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 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 interfejsie 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 fal 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 – projektowanie UX.

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 dla poziomu średniego i wysokiego poziomu amplitudy. 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ż zlanie 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 na stałe 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ć.

Zasięg stałych wartości HAL według tekstury i amplitudy

Rysunek 16. Zasięg HAL według tekstury (HAL_H0) i skali 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ć teksturę.

Krok 4. Sprawdź sprzęt

Ocena sprzętu obejmuje zdefiniowanie 3 efektów haptycznych oznaczonych jako Efekt 1, Efekt 2 i Efekt 3.

Efekt 1. Wstępnie zdefiniowane krótkie stałe haptyczne

Stała VibrationEffect.EFFECT_CLICK to efekt bazowy lub wspólny mianownik w mapowaniu HAL-API podane w kroku 2. Jest on zmapowany z najczęściej używanym efektem, HapticFeedbackConstants.KEYBOARD_PRESS. Ocena tego efektu pomaga określić, czy urządzenie docelowe jest gotowe do korzystania z jasnych wibracji.

Efekt 2. Krótki niestandardowy efekt haptyczny

Stała VibrationEffect.createOneShot(20,255) służy do niestandardowych efektów haptycznych. W przypadku krótkich, pojedynczych niestandardowych impulsów zalecany maksymalny próg określający czas trwania to 20 ms. Nie zalecamy stosowania pojedynczego impulsu dłuższego niż 20 ms, ponieważ jest on odbierany jako wibracja.

Fala dźwiękowa krótkiego niestandardowego efektu haptycznego

Rysunek 19. Krótki niestandardowy efekt haptyczny

Efekt 3. Długi niestandardowy efekt haptyczny z wahaniem amplitudy

Stała VibrationEffect.createWaveform(timings[], amplitudes[], int repeat) służy do długich efektów niestandardowych z wahaniami amplitudy. Możliwość generowania różnych amplitud dla niestandardowych efektów haptycznych jest jednym z wskaźników oceny możliwości urządzenia w zakresie bogatych haptyk. Zalecane wartości timings []amplitudes [] to odpowiednio {500, 500}{128, 255}, co wskazuje na rosnącą tendencję amplitudy od 50% do 100% przy częstotliwości próbkowania wynoszącej 500 ms.

Fala efektu haptycznego z wahaniem amplitudy

Rysunek 20. Długi niestandardowy efekt haptyczny z wahaniem amplitudy

Aby sprawdzić możliwości sprzętowe kontroli amplitudy dla efektu 3, użyj metody Vibrator.hasAmplitudeControl(). Wynik musi być true, aby można było go wykonać VibrationEffect.createWaveformz zmienną amplitudą zgodnie z oczekiwaniami.

Schemat blokowy subiektywnej oceny efektu haptycznego

Rysunek 21. Ocena przez badanego efektu haptycznego 1, 2 i 3

Przeprowadź ocenę subiektywną

Aby szybko sprawdzić spójność, najpierw przeprowadź ocenę subiektywną. Celem subiektywnej oceny jest obserwacja amplitudy efektów haptycznych w celu określenia, czy urządzenie może generować haptykę o amplitudoniach wyczuwalnych przez człowieka.

Konkretne pytanie oparte na tym pojęciu może wyglądać tak: Czy urządzenie może generować wyczuwalne efekty haptyczne zgodnie z oczekiwaniami użytkowników? Odpowiedź na to pytanie pomoże Ci uniknąć problemów z wibracją, w tym niewyczuwalnych wibracji, których użytkownicy nie mogą poczuć, lub niezamierzonych wibracji, gdy fale nie tworzą oczekiwanych wzorów.

Przeprowadzanie oceny zaawansowanej

Zdecydowanie zalecamy przeprowadzanie zaawansowanych ocen jakości. Zaawansowane oceny jakości charakteryzują ilościowe atrybuty efektów haptycznych, aby zaimplementować wysokiej jakości haptykę. Po zakończeniu procesu producenci urządzeń powinni mieć możliwość diagnozowania bieżącego stanu haptycznego, co oznacza, że mogą wyznaczać cele, aby poprawić ogólną jakość. Zobacz ocena sprzętu.