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. Niewiele wysiłku wkłada się w ujednolicenie 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, ekosystem nie będzie spójny. Dlatego konfiguracja sprzętowa odgrywa kluczową rolę w zapewnieniu, że producenci mogą wdrażać interfejsy API haptycznych funkcji 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 tych interfejsów.
Rysunek poniżej pokazuje tworzenie wspólnej wiedzy między producentami urządzeń a deweloperami, 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.
Mapowanie stałych między HAL i API
- Zalecenia dotyczące mapowania między publicznymi stałymi interfejsu API (nazwanymi w ramach miejscami zastępczymi) a stałymi HAL, które implementują te miejsca zastępcze.
- 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 testy, by określić, czy Twoje urządzenie spełnia minimalne wymagania dotyczące czujnika haptycznego.
Rysunek 2. Zastosowanie efektów
Rysunek 3. Implementowanie elementów podstawowych
Sprawdź stan implementacji tych stałych haptycznych.
Stałe haptyczne | 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łe wartości zawierają informacje o poziomach energii, takie jak EFFECT_CLICK i EFFECT_HEAVY_CLICK , które są wywoływane przez
createPredefined() . |
PRIMITIVE_TICK , PRIMITIVE_CLICK , PRIMITIVE_LOW_TICK> , PRIMITIVE_SLOW_RISE , PRIMITIVE_QUICK_RISE , PRIMITIVE_QUICK_FALL , PRIMITIVE_SPIN , PRIMITIVE_THUD |
VibrationEffect.Composition
classKonstante haptyczne w VibrationEffect.Composition mogą mieć skalowalny poziom natężenia, który jest wywoływany przez
addPrimitive(int primitiveId, float scale, int delay) . |
Alternatywne wibracje opisane poniżej są wykonywane na urządzeniach, które nie mają wdrożonych stałych VibrationEffect
. Zalecamy zaktualizowanie tych konfiguracji, aby działały jak najlepiej na takich urządzeniach.
EFFECT_CLICK
Wibracje w formie fali utworzone za pomocą
VibrationEffect.createWaveform
i czasów ustawionych wframeworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern
.EFFECT_HEAVY_CLICK
Wibracje w formie 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 formie fali utworzone za pomocą
VibrationEffect.createWaveform
i czasów ustawionych 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 Stałe haptyczne HapticFeedbackConstants wspomagania zdarzeń wejściowych przez określone elementy interfejsu, np. KEYBOARD_PRESS i KEYBOARD_RELEASE , które są wywoływane przez performHapticFeedback() . |
Krok 2. Zmapuj stałe między HAL a interfejsem API
Krok 2 przedstawia zalecane mapowania publicznych stałych HAL na stałe interfejsu API. Jeśli sprzęt oceniony w kroku 1 nie implementuje stałych wartości HAL, należy wykonać krok 2, aby zaktualizować wzorce zastępcze opisane w kroku 1 i w ten sposób wygenerować podobne dane wyjściowe. Mapowanie jest wspomagane przez 2 różne modele domyślne.
Model dyskretny (prosty)
- Amplituda jest kluczową zmienną tego modelu. Każdy element w HAL reprezentuje inną amplitudę reakcji haptycznych.
- Ten model jest minimalnym wymaganiem potrzebnym do wdrożenia podstawowej haptycznej interakcji.
- Bardziej zaawansowane wrażenia haptyczne wymagają zaawansowanego sprzętu i zaawansowanego modelu (modelu ciągłego).
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 haptycznych wrażeń użytkownika w
VibrationEffect.Composition
(aby optymalnie korzystać z najnowszych interfejsów API haptycznych), zalecamy implementację 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 stałych publicznych podanych w interfejsie API z odpowiednimi stałymi 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 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.
Rysunek 5. Stały zakres HAL według amplitudy
Po zdefiniowaniu liczby stałych HAL z dyskretyczną amplitudą nadszedł czas na mapowanie stałych HAL i 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 interfejsu API jest oparty na zasadach UX dotyczących towarzyszących zdarzeń wejściowych. Więcej informacji znajdziesz w artykule Haptics UX design (w języku angielskim).
Rysunek 6. Mapowanie stałe 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. W praktyce może to być na przykład mapowanie wartości EFFECT_CLICK
i EFFECT_HEAVY_CLICK
na tę samą stałą HAL, która jest stałą wartością HAL średniej amplitudy.
Jeśli Twoje urządzenie obsługuje tylko jedną stałą HAL z dyskretną amplitudą, rozważ złą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 HAL można zastosować współczynnik skali (S
), np. HAL_H0
, HAL_H1
, aby utworzyć skalowaną wartość HAL (HAL_H0
x S
). W tym przypadku skalowana wartość HAL jest mapowana w celu zdefiniowania stałych interfejsu API (HAL_H0
x S1
= H0S1
= EFFECT_TICK
), jak widać na ilustracji 7. 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 tego, ile różnych tekstur haptycznych chcą udostępnić.
Rysunek 7. Zakres stałej HAL według tekstury (HAL_H0) i skali amplitudy (S)
Rysunek 8. 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 interfejsu HAL-API).
Rysunek 7 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 9. Większa zmienność 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ć w sposób umożliwiający wyraźne rozróżnienie ich za pomocą różnych stałych wartości HAL. Zalecamy to podejście, jeśli chcesz dodać wariację tekstury.
Krok 3. Sprawdź sprzęt
Ocena sprzętu obejmuje zdefiniowanie 3 efektów haptycznych oznaczonych etykietami Efekty 1, 2 i 3 dla tej konkretnej oceny.
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 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 drażniąca ucho.
Rysunek 10. 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 niestandardowych efektów haptycznych o zmiennej amplitudzie to jeden ze wskaźników pozwalających ocenić, czy urządzenie może obsługiwać zaawansowane czujniki haptyczne.
Zalecane wartości timings []
i amplitudes []
to odpowiednio {500, 500}
i {128, 255}
, co wykazują wzrost amplitudy z 50% do 100% z częstotliwością próbkowania 500 ms.
Rysunek 11. 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 12. 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ąć nieprawidłowej haptyki, w tym niewyczuwalnej haptyki, której użytkownicy nie mogą poczuć, lub niezamierzonej haptyki, w której przypadku przebiegi fali nie generują pożądanych wzorców.
Przeprowadź zaawansowaną ocenę
Zdecydowanie zalecamy przeprowadzanie zaawansowanych ocen jakości. Zaawansowane oceny jakości opisują wymierne atrybuty reakcji haptycznych, co pozwala wdrożyć czujniki haptyczne jakościowe. 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 ocenę sprzętu.