Projektowanie UX haptics

Mapowanie stałych wartości interfejsu HAL do interfejsu API, o którym mowa w kroku 2 listy kontrolnej haptyki, jest oparte na zalecanych zasadach projektowania interfejsu użytkownika. Zasady projektowania UX określają, jak, kiedy i czego używać podczas korzystania z interfejsów API haptycznych Androida. Aby dowiedzieć się więcej o tych podstawowych zasadach, przeczytaj artykuł Zaawansowane haptyczne: kiedy, co i jak używać nowych interfejsów API haptycznych.

Stałe mapowanie

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

Wybieranie efektów haptycznych

Według siły reakcji haptycznej (VibrationEffect)

EFFECT_CLICK to najlepszy punkt wyjścia do określenia preferowanej siły wibracji (VibrationEffect): jest to średnia między „lekkimi” wibracjami w EFFECT_TICK a „mocnymi” wibracjami w 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 reakcji haptycznej

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 wprowadzania danych (np. długim naciśnięciem lub przesunięciem) lub elementami interfejsu użytkownika (np. klawiaturą), znajdź wstępnie zdefiniowane stałe haptyczne w HapticFeedbackConstants. 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 danych (wirtualne przyciski) mogą symulować naciśnięcia przycisków za pomocą elementów fizycznych (takich jak mechaniczne przyciski).

Zdarzenie wejściowe: wzajemna interakcja

Zdarzenie kliknięcia ma na celu symulowanie działania przycisku mechanicznego, który jest naciskany, a następnie zwalniany. Odbierana energia impulsu mechanicznego podczas naciśnięcia przycisku jest większa niż podczas jego zwolnienia. 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ść naciśnięcia przycisku

Zdarzenia wejściowe o krótszym i mniejszym zaangażowaniu są powiązane z mniejszą haptyką. 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

Symulowanie wirtualnej faktury w zdarzeniu wprowadzania gestów

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. Zwykle powoduje to, że wyczuwalna energia jest większa niż amplituda (gdy efekt jest wywoływany bez powtórzenia 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ć pozytywne lub negatywne nastawienie w efektach haptycznych, zastosuj silniejsze wrażenie do negatywnego nastawienia, aby zwrócić uwagę użytkownika.

Nastawienie 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 wibracji narastających