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:
Rysunek 1. Udostępnianie informacji producentom urządzeń i deweloperom
Lista kontrolna implementacji reakcji na dotyk
-
- Lista stałych wartości do implementacji haptyki.
Wdrażanie elementów podstawowych
- Wskazówki dotyczące implementacji prymitywów do tworzenia kompozycji HAL.
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.
-
- 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:
Rysunek 2. Implementowanie efektó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
classKonstante 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_CLICK i EFFECT_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 wframeworks/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 wframeworks/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 wframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
.
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 classKonstante haptyczne w HapticFeedbackConstants wspomagają zdarzenia wejścia z pewnymi elementami UI, takimi jak KEYBOARD_PRESS i KEYBOARD_RELEASE , które są wywoływane przez performHapticFeedback() . |
Krok 2. Wdróż prymitywy
W VibrationEffect.Composition
moż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
,TICK
iLOW_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
iSPIN
.
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.
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:
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:
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 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:
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 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.
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.
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 Limit: taki sam jak w |
Częstotliwość |
Cel: taki sam jak w Opcja: taka sama jak w hotelu |
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.
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.
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.
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.
- 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 (
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.
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.
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_CLICK
i EFFECT_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ć.
Rysunek 16. Zasięg HAL według tekstury (HAL_H0) i skali amplitudy (S)
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.
Rysunek 18. Zwiększanie zmienności dzięki skalowalności amplitudy
W przypadku wszystkich skalowanych stałych interfejsu API, takich jak PRIMITIVE_TICK
i PRIMITIVE_CLICK
w VibrationEffect.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_TICK
i PRIMITIVE_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.
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 []
i amplitudes []
to odpowiednio {500, 500}
i {128, 255}
, co wskazuje na rosnącą tendencję amplitudy od 50% do 100% przy częstotliwości próbkowania wynoszącej 500 ms.
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.createWaveform
z zmienną amplitudą zgodnie z oczekiwaniami.
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.