Wdrażanie haptyki

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Producenci urządzeń są ogólnie uważani za właścicieli prywatnych zasobów utworzonych dla każdego urządzenia. W związku z tym ich wysiłki inżynieryjne często koncentrują się na poszczególnych urządzeniach ; niewielki lub żaden wysiłek nie idzie w kierunku spójności innych urządzeń w ekosystemie.

W przeciwieństwie do tego programiści starają się tworzyć aplikacje, które działają na wszystkich telefonach z Androidem w ekosystemie, niezależnie od specyfikacji technicznych każdego urządzenia. Ta różnica w podejściu może powodować problem z fragmentacją, na przykład możliwości sprzętowe niektórych telefonów nie odpowiadają oczekiwaniom określonym przez twórców aplikacji. Jeśli więc dotykowe interfejsy API działają na niektórych telefonach z Androidem, a na innych nie, rezultatem jest niespójny ekosystem. Dlatego konfiguracja sprzętowa odgrywa kluczową rolę w zapewnieniu producentom możliwości implementacji dotykowych interfejsów API systemu Android na każdym urządzeniu.

Ta strona zawiera listę kontrolną krok po kroku umożliwiającą skonfigurowanie zgodności sprzętu w celu najlepszego wykorzystania dotykowych interfejsów API systemu Android.

Poniższy rysunek ilustruje budowanie wspólnej wiedzy między producentami urządzeń i programistami, co jest kluczowym krokiem w tworzeniu spójnego ekosystemu.

Diagram przypadków użycia elementów dotykowych dla twórców aplikacji i producentów urządzeń

Rysunek 1. Budowanie wiedzy pomiędzy producentami urządzeń a programistami

Lista kontrolna wdrożenia haptyki

  1. Zaimplementuj stałe

    • Lista stałych do implementacji haptyki.
  2. Odwzoruj stałe między HAL a API

  3. Oceń sprzęt

    • Instrukcje dotyczące docelowych efektów dotykowych. Skorzystaj z tych instrukcji, aby szybko sprawdzić swój sprzęt.

Poniżej omówimy każdy z tych kroków bardziej szczegółowo.

Krok 1: Zaimplementuj stałe

Wykonaj te kontrole, aby określić, czy Twoje urządzenie spełnia minimalne wymagania dotyczące implementacji funkcji dotykowych.

Schemat procesu wdrażania haptyki

Rysunek 2. Efekty wdrożenia

Schemat blokowy kroków implementacji prymitywów

Rysunek 3. Implementacja prymitywów

Sprawdź stan implementacji następujących stałych dotykowych.

Stałe dotykowe Lokalizacje i streszczenia
EFFECT_TICK , EFFECT_CLICK , EFFECT_HEAVY_CLICK , EFFECT_DOUBLE_CLICK Klasa VibrationEffect
Stałe dotykowe w VibrationEffect nie zawierają żadnego pojęcia zdarzeń wejściowych i nie mają elementów interfejsu użytkownika. Zamiast tego stałe obejmują pojęcie poziomów 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 Klasa VibrationEffect.Composition
Stałe dotykowe w VibrationEffect.Composition mogą mieć skalowalną intensywność, która jest wywoływana przez addPrimitive(int primitiveId, float scale, int delay) .

Opisane poniżej alternatywne wibracje będą wykonywane na urządzeniach, które nie implementują stałych VibrationEffect . Zaleca się aktualizację tych konfiguracji, aby działały najlepiej na takich urządzeniach.

  1. EFFECT_CLICK

    Wibracje Waveform utworzone za pomocą VibrationEffect.createWaveform i czasy skonfigurowane w frameworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern .

  2. EFFECT_HEAVY_CLICK

    Wibracje kształtu fali utworzone za pomocą VibrationEffect.createWaveform i czasy skonfigurowane w frameworks/base/core/res/res/values/config.xml##config_longPressVibePattern .

  3. EFFECT_DOUBLE_CLICK

    Wibracje Waveform utworzone za pomocą VibrationEffect.createWaveform i timingi (0, 30, 100, 30).

  4. EFFECT_TICK

    Wibracje Waveform utworzone za pomocą VibrationEffect.createWaveform i czasy skonfigurowane w frameworks/base/core/res/res/values/config.xml##config_clockTickVibePattern .

Schemat blokowy etapów testowania dotykowego sprzężenia zwrotnego

Rysunek 4. Implementacja stałych sprzężenia zwrotnego

Sprawdź stan następujących stałych opinii publicznej.

Stałe dotykowe 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

Klasa HapticFeedbackConstants
Stałe dotykowe w HapticFeedbackConstants wspomagają zdarzenia wejściowe z pewnymi elementami interfejsu użytkownika, takimi jak KEYBOARD_PRESS i KEYBOARD_RELEASE , które są wywoływane przez performHapticFeedback() .

Krok 2: Odwzoruj stałe między HAL a API

Krok 2 przedstawia zalecane mapowania między publicznymi stałymi HAL a stałymi API. Jeśli sprzęt oceniony w kroku 1 nie implementuje stałych HAL, należy użyć kroku 2 do aktualizacji wzorców awaryjnych opisanych w kroku 1 w celu wygenerowania podobnych danych wyjściowych. Mapowanie jest wspomagane przez dwa różne modele domyślne.

  • Model dyskretny (prosty)

    • Amplituda jest kluczową zmienną tego modelu. Każda jednostka w HAL reprezentuje inną amplitudę haptyczną.
    • Ten model to minimalne wymaganie potrzebne do wdrożenia podstawowego haptic UX.
    • Bardziej zaawansowany dotykowy interfejs użytkownika wymaga zaawansowanego sprzętu i zaawansowanego modelu (model ciągły).
  • Model ciągły (zaawansowany)

    • Tekstura i amplituda to kluczowe zmienne tego modelu. Każda jednostka w warstwie HAL reprezentuje różne tekstury dotykowe. Amplituda każdej jednostki HAL jest kontrolowana przez współczynnik skali ( S ).
    • Ten model wymaga zaawansowanego sprzętu. Jeśli producenci OEM chcą korzystać z zaawansowanego haptycznego UX z VibrationEffect.Composition (w celu najlepszego wykorzystania najnowszych haptycznych interfejsów API), zaleca się wdrożenie ich sprzętu przy użyciu tego modelu.

Model dyskretny

Zalecane jest mapowanie wszystkich stałych publicznych udostępnianych w interfejsie API z odpowiednimi stałymi HAL. Aby rozpocząć ten proces, dowiedz się, ile fal haptycznych o dyskretnej amplitudzie urządzenie może zdefiniować w warstwie HAL. Konkretne pytanie zbudowane wokół tego pojęcia wygląda następująco: Ile jednoimpulsowych efektów dotykowych z dostrzegalnymi przez człowieka różnicami amplitudy można zdefiniować w moim telefonie? Od odpowiedzi na to pytanie zależy mapowanie.

Definiowanie stałych HAL jest procesem zależnym od sprzętu. Na przykład telefon klasy podstawowej może mieć tylko możliwości sprzętowe do wytworzenia pojedynczej fali dotykowej. Urządzenia z bardziej zaawansowanymi komponentami sprzętowymi wytwarzają szerszy zakres dyskretnych poziomów amplitudy i mogą definiować wiele przebiegów dotykowych w warstwie HAL. Mapowanie stałej HAL-API bierze stałą HAL (wykorzystując średnią amplitudę jako linię bazową), a następnie porządkuje mocniejsze lub słabsze efekty.

Diagram stałego zakresu HAL i amplitud sprzężenia zwrotnego

Rysunek 5. Zakres stałej HAL według amplitudy

Po zdefiniowaniu liczby stałych HAL z dyskretną amplitudą nadszedł czas na odwzorowanie stałych HAL i API przez liczbę stałych HAL. Ten proces mapowania może podzielić pojedynczą stałą API impulsu na maksymalnie trzy dyskretne grupy poziomów amplitudy. Sposób segmentacji stałych API opiera się na zasadach UX dotyczących towarzyszących zdarzeń wejściowych. Aby uzyskać więcej informacji, zobacz Projektowanie dotykowe UX .

Model dyskretny do mapowania stałych HAL-API

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

Jeśli Twoje urządzenie obsługuje tylko dwie stałe HAL z dyskretnymi amplitudami, rozważ połączenie stałych HAL poziomu średniej i wysokiej amplitudy. Przykładem tego pojęcia w praktyce byłoby odwzorowanie EFFECT_CLICK i EFFECT_HEAVY_CLICK na tę samą stałą HAL, która byłaby stałą HAL średniego poziomu amplitudy. Jeśli Twoje urządzenie obsługuje tylko jedną stałą HAL z dyskretną amplitudą, rozważ połączenie wszystkich trzech poziomów w jeden.

Model ciągły

Ciągły model ze skalowalnością amplitudy może być zastosowany do określenia stałych HAL. Współczynnik skali ( S ) można zastosować do stałych HAL (na przykład HAL_H0 , HAL_H1 ) w celu utworzenia skalowanej warstwy HAL ( HAL_H0 x S ). W tym przypadku skalowana warstwa HAL jest mapowana w celu zdefiniowania stałych API ( HAL_H0 x S1 = H0S1 = EFFECT_TICK ), jak pokazano na rysunku 7. Wykorzystując skalowalność amplitudy modelu ciągłego, urządzenie może przechowywać niewielką liczbę stałych HAL z charakterystycznymi teksturami i dodaj zmiany amplitudy, dostosowując współczynnik skali ( S ). Producenci urządzeń mogą zdefiniować liczbę stałych HAL na podstawie liczby różnych tekstur dotykowych, które chcą zapewnić.

Stały zakres HAL według tekstury i amplitudy

Rysunek 7. Zakres stałej HAL według tekstury (HAL_H0) i skali amplitudy (S)

Ciągły model mapowania stałych HAL-API

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 dotykowe, a nie różne amplitudy; współczynnik skali ( S ) może konfigurować amplitudę. Ponieważ jednak postrzeganie tekstury (na przykład ostrości) jest związane z postrzeganiem czasu trwania i amplitudy, zaleca się łączenie tekstury i współczynnika skali (w procesie projektowania mapowania HAL-API).

Rysunek 7 ilustruje mapowanie stałych poprzez zwiększanie zmienności od jednej HAL do wielu stałych API ze skalowalnością amplitudy.

Rosnąca zmienność 1

Rosnąca zmienność 2

Rysunek 9. Rosnąca zmienność ze skalowalnością amplitudy

Uwaga: Powyższy rysunek ilustruje konkretny przykład stałego mapowania, więc konwencje nazewnictwa są hipotetyczne. Wykonanie tego procesu jest unikalne dla każdego producenta urządzenia.

Dla wszystkich skalowalnych stałych API, takich jak PRIMITIVE_TICK i PRIMITIVE_CLICK w VibrationEffect.Composition , poziom energii stałej API zależy od parametru float scale , gdy stała API jest deklarowana przez addPrimitive(int primitiveID, float scale, int delay) . PRIMITIVE_TICK i PRIMITIVE_CLICK można zaprojektować z wyraźnym rozróżnieniem, używając różnych stałych HAL. To podejście jest zalecane, jeśli chcesz dodać wariację do tekstury .

Krok 3: Oceń sprzęt

Ocena sprzętu obejmuje zdefiniowanie trzech efektów dotykowych, oznaczonych jako Efekty 1, 2 i 3 dla tej konkretnej oceny.

Efekt 1: Predefiniowane krótkie stałe dotykowe

Stała VibrationEffect.EFFECT_CLICK jest efektem linii bazowej lub wspólnym mianownikiem w mapowaniu HAL-API podanym w kroku 2. Jest odwzorowana z najczęściej używanym efektem, HapticFeedbackConstants.KEYBOARD_PRESS . Ocena tego efektu pomaga określić gotowość urządzenia docelowego na wyraźne wrażenia dotykowe .

Efekt 2: Krótki niestandardowy efekt dotykowy

VibrationEffect.createOneShot(20,255) dotyczy niestandardowych efektów dotykowych. W przypadku krótkich, pojedynczych impulsów niestandardowych zalecanym maksymalnym progiem definiującym czas trwania jest 20 ms. Pojedynczy impuls dłuższy niż 20 ms nie jest zalecany, ponieważ jest odbierany jako brzęcząca wibracja .

Kształt fali krótkiego niestandardowego efektu haptycznego

Rysunek 10. Krótki niestandardowy efekt dotykowy

Efekt 3: Długi niestandardowy efekt haptyczny ze zmiennością amplitudy

Stała VibrationEffect.createWaveform(timings[], amplitudes[], int repeat) jest przeznaczona dla długich efektów niestandardowych ze zmiennością amplitudy. Zdolność do wytwarzania różnych amplitud dla niestandardowych efektów dotykowych jest jednym ze wskaźników oceny możliwości urządzenia w zakresie bogatych efektów dotykowych. Zalecane timings [] i amplitudes [] wynoszą odpowiednio {500, 500} i {128, 255} , co przedstawia rosnący trend amplitudy od 50% do 100%, przy częstotliwości próbkowania 500 ms.

Przebieg efektu dotykowego ze zmiennością amplitudy

Rysunek 11. Długi niestandardowy efekt haptyczny ze zmiennością amplitudy

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

Schemat blokowy subiektywnej oceny efektu dotykowego

Rysunek 12. Ocena efektu dotykowego przez osobę badaną 1, 2 i 3

Przeprowadzenie subiektywnej oceny

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

Konkretne pytanie zorganizowane wokół tego pojęcia wygląda następująco: Czy urządzenie może wytwarzać łatwo dostrzegalne efekty dotykowe dla użytkowników zgodnie z oczekiwaniami? Odpowiedź na to pytanie pomaga uniknąć nieudanych wrażeń dotykowych , w tym niedostrzegalnych wrażeń dotykowych, których użytkownicy nie mogą wyczuć, lub niezamierzonych wrażeń dotykowych, w przypadku których kształty fal nie tworzą wzorców zgodnie z zamierzeniami.