Projektowanie UX haptics

Mapowanie stałych HAL-API wprowadzone w kroku 2 listy kontrolnej z czujnikiem haptycznym jest oparte na bardzo zalecanych zasadach projektowania UX. Zasady projektowania UX określają, jak, kiedy i czego używać podczas korzystania z interfejsów API haptycznych Androida. Przeczytaj artykuł Zaawansowane funkcje haptyczne: kiedy, co i jak działają nowe interfejsy haptyczne, aby dowiedzieć się więcej o tych podstawowych zasadach.

Stałe mapowanie

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

Wybieranie efektów haptycznych

Na podstawie siły haptycznej (VibrationEffect)

Najlepiej zacząć od wartości EFFECT_CLICK, która określa preferowany poziom siły haptycznej (VibrationEffect): jest to mediana między „lekkim” czujnikiem haptycznym EFFECT_TICK i „intensywnym” czujnikiem haptycznym EFFECT_HEAVY_CLICK. Począwszy od EFFECT_CLICK możesz zwiększać lub zmniejszać energię koncepcyjną, zwiększając siłę za pomocą funkcji EFFECT_HEAVY_CLICK lub zmniejszając ją za pomocą funkcji EFFECT_TICK. Pamiętaj, że EFFECT_DOUBLE_CLICK zapewnia najwyższą energię koncepcyjną, ponieważ jest powtarzany.

Siła dotyku

Rysunek 2. Ustawienia siły haptycznej

Według zdarzeń wprowadzania danych i elementów interfejsu (HapticFeedbackConstants)

Jeśli Twój cel jest powiązany z określonymi zdarzeniami wejścia (np. długim naciśnięciem lub przesunięciem) lub elementami interfejsu użytkownika (np. klawiaturą), znajdź w HapticFeedbackConstants wstępnie zdefiniowane stałe haptyczne. Nazwa każdej stałej odnosi się do konkretnych przypadków użycia, takich jak KEYBOARD_PRESS lub LONG_PRESS.

Symulowanie rzeczywistych zdarzeń naciśnięcia przycisku

Dotykowe informacje zwrotne zdarzeń wprowadzania (wirtualne przyciski) mogą symulować naciśnięcia przycisków za pomocą elementów fizycznych (takich jak mechaniczne przyciski).

Zdarzenie wejściowe: wzajemna ścieżka interakcji

Zdarzenie kliknięcia ma na celu symulowanie działania przycisku mechanicznego, który jest naciskany, a następnie zwalniany. Postrzegana energia impulsu mechanicznego po naciśnięciu przycisku jest większa niż ta, gdy go zwolnisz. Dlatego reakcja haptyczna na naciśnięcie przycisku jest silniejsza niż reakcja haptyczna na zwolnienie przycisku.

Haptic feedback przy naciśnięciu i zwolnieniu przycisku

Rysunek 3. Efekty haptyczne na podstawie binarnego zdarzenia wejściowego

Siła haptyczna: możliwości naciśnięcia przycisku

Zdarzenia wejściowe o krótszym i mniejszym zaangażowaniu są powiązane z mniej intensywnymi wibracjami. Zdarzenia wejściowe, które wiążą się z dłuższym i intensywniejszym zaangażowaniem, są powiązane z silniejszym wibrowaniem.

Reakcja haptyczna przycisków

Rysunek 4. Efekty haptyczne w ramach możliwości

Symuluj wirtualną teksturę w zdarzeniu wprowadzania gestami

Dane wejściowe oparte na gestach (np. przesuwanie lub przewijanie) można dopasowywać do wirtualnych tekstur haptycznych, gdy palec porusza się po ekranie, a także do wizualnych elementów interfejsu. Można na przykład generować powtarzające się sygnały haptyczne, gdy palec porusza się po interfejsie zegara z wirtualnymi elementami interfejsu w postaci znaczników.

Efekty wirtualnych tekstur haptycznych są przeznaczone do powtarzania. Często powoduje to, że postrzegana energia jest większa niż amplituda (gdy efekt jest wywoływany bez powtórzeń lub tylko raz). Z tego powodu stałe haptyczne przeznaczone do wirtualnych tekstur haptycznych (takich jak CLOCK_TICK lub TEXT_HANDLE_MOVE) muszą być subtelne, aby zapewniać uczucie ruchu dzięki powtarzającym się sygnałom.

Wirtualna tekstura

Rysunek 5. efekty haptyczne symulujące wirtualną fakturę;

Uwzględnij nastroje

Aby uwzględnić w efektach haptycznych pozytywne lub negatywne nastroje, zastosuj silniejsze wrażenie w przypadku nastroju negatywnego, aby zwrócić uwagę użytkownika.

Uczucie dotykowe

Rysunek 6. Efekty haptyczne z uwzględnieniem nastroju

Unikaj dźwięków podczas długich wibracji

Aby uniknąć słyszalnego hałasu z powodu długich wibracji, które mają zwracać uwagę, przyspiesz wzór płynnie, aby uzyskać efekt narastania. Użyj w tym celu argumentu createWaveform(long[] timings, int[] amplitudes, int repeat).

Długie wibracje

Rysunek 7. Długi efekt narastania wibracji