Jednym z najbardziej podstawowych zastosowań funkcji haptycznych jest przekazywanie użytkownikowi opinii, interakcje. Selektory czasu, naciśnięcie klawisza na klawiaturze wirtualnej i tekst to typowe przykłady dobrych zastosowań reakcji haptycznych. Więcej o tym, kiedy i jak zastosować czujnik haptyczny, przeczytaj Zasady projektowania czujnika haptycznego.
Na tej stronie opisujemy 3 sposoby generowania reakcji haptycznych.
- Użyj
View
(zalecane). Jest to podejście ukierunkowane na działanie, ma najszerszą obsługę i nie wymaga uprawnieniaVIBRATE
. - Użyj wstępnie zdefiniowanej kategorii
VibrationEffect
. To podejście jest bardziej elastyczne, ale wiąże się z pewnymi kompromisami. - Używanie zaawansowanych kompozycji z elementami podstawowymi Ten jest nowsza i bardziej elastyczna, ale wymaga konkretnego urządzenia .
Te metody korzystają z elementów podstawowych zdefiniowanych na poziomie urządzenia, aby zapewnić wysoką jakość dostosowane do używanego urządzenia.
Wszystkie metody reakcji haptycznych biorą pod uwagę ustawienia wartość domyślną.
Używaj komponentów View
, aby generować reakcje haptyczne
Użyj metody View.performHapticFeedback
, aby wygenerować reakcję haptyczną.
stałe haptyczne zdefiniowane przez element HapticFeedbackConstants
koncentrują się na
funkcji w aplikacji, a nie rodzaju stosowanego efektu haptycznego.
Implementacja może się różnić w zależności od urządzenia i sprzętu funkcji, ale aplikacja musi brać pod uwagę tylko typ informacji zwrotnej w określonym kontekście. Skupiając się na funkcjonalności, możesz włączyć opinii na temat podobnych interakcji. Użytkownicy uczą się kojarzyć różne znaczenia na różne reakcje haptyczne.
Wymagania wstępne: włącz reakcję haptyczną
Jeśli widoczny jest symbol View
, w przypadku zdarzeń można używać reakcji haptycznych.
Niektóre zdarzenia, np. przytrzymanie, mają domyślny czujnik haptyczny, który uruchamia się, gdy
detektor w widoku danych obsługuje zdarzenie (zwraca true
).
W Androidzie View
można wyłączyć reakcję haptyczną, ustawiając
View.hapticFeedbackEnabled
na false
. Wyłączam tę usługę
spowoduje to pojawienie się
domyślnej informacji zwrotnej.
Metoda performHapticFeedback
również uwzględnia ustawienie systemowe.
HAPTIC_FEEDBACK_ENABLED
, które umożliwia użytkownikowi ewentualne wyłączenie tych uprawnień.
dla całego systemu.
W przeciwieństwie do innych interfejsów API z obsługą dotykową używanie HapticFeedbackConstants
z View
nie wymaga uprawnienia VIBRATE
.
Wybierz: HapticFeedbackConstant
Jeśli używasz komponentów View
razem z atrybutem HapticFeedbackConstants
, nie ma potrzeby
do oceny obsługi poszczególnych urządzeń, ponieważ te stałe mają wartości zastępcze
zachowanie w razie potrzeby. Jedyną różnicą, którą należy wziąć pod uwagę, jest poziom SDK pożądanego
jest stała.
Przykład 1: naciśnięcie klawisza
Oto przykład dodawania reakcji haptycznych do dotykowego wprowadzania danych w usłudze View
za pomocą detektorów dotykowych. Efekty symulują wrażenie naciśnięcia
i zwolnij go.
Kotlin
class HapticTouchListener : View.OnTouchListener { override fun onTouch(View view, MotionEvent event) : Boolean { when (event.actionMasked) { MotionEvent.ACTION_DOWN -> view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY) MotionEvent.ACTION_UP -> view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY_RELEASE) } return true } }
Java
class HapticTouchListener implements View.OnTouchListener { @Override public boolean onTouch(View view, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY); break; case MotionEvent.ACTION_UP: view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY_RELEASE); break; } return true; } }
Przykład 2. Przycisk Prześlij
Przypadki użycia reakcji haptycznej wykraczają poza symulowanie interakcji fizycznej
urządzenia. Mogą też służyć do przekazywania znaczenia abstrakcyjnego. Przykład:
ogólne oczekiwania
Efekt CONFIRM
to
krótka i lekka wibracja podczas
REJECT
może być
to sygnał, że sygnał jest niesłuszny. Zostało to pokazane na ilustracji poniżej.
przykład przesyłania opinii za pomocą przycisku przesyłania.
Kotlin
submitButton.setOnClickListener { view -> val successful = performSubmit() if (successful) { view.performHapticFeedback(HapticFeedbackConstants.CONFIRM) } else { view.performHapticFeedback(HapticFeedbackConstants.REJECT) } }
Java
submitButton.setOnClickListener(view -> { boolean successful = performSubmit(); if (successful) { view.performHapticFeedback(HapticFeedbackConstants.CONFIRM); } else { view.performHapticFeedback(HapticFeedbackConstants.REJECT); } });
Użyj wstępnie zdefiniowanego elementu VibrationEffect
, aby generować reakcje haptyczne
Metoda oparta na View
koncentruje się na interakcji użytkownika. Jest
dla zachowania spójności w całym systemie. Jednak określone wstępnie zdefiniowane
Interfejsy API VibrationEffect
można również wywoływać w celu dostosowania reakcji haptycznych
efekty.
Wstępnie zdefiniowane efekty są dostępne jako VibrationEffect
stałe i może być
sprawdziliśmy dostępność pomocy i korzysta z usługi Vibrator
, jak pokazano w
z poniższych przykładów.
Omówienie obsługi interfejsów API usługi VibrationEffect
na urządzeniach
W podstawowym środowisku nie powinno być potrzeby sprawdzania obsługi indywidualnej
VibrationEffect
interfejsów API. Interfejsy API, takie jak Vibrator.areEffectsSupported
i Vibrator.areAllEffectsSupported
służą do określenia, czy urządzenie
niestandardową implementację stałej. Jeśli niestandardowy efekt nie jest
obecnych, aplikacja nadal może odtwarzać efekty i używać
implementacji zastępczej.
Więcej informacji znajdziesz w sekcji Wstępnie zdefiniowane
VibrationEffect
Wymagania wstępne: wczytanie wibracji i uprawnienie VIBRATE
Większość wibracji można odtwarzać przy użyciu usługi Vibrator
, która może być ładowana
w następujący sposób:
Kotlin
import android.os.Vibrator val vibrator = context.getSystemService(Vibrator::class.java)
Java
import android.os.Vibrator; Vibrator vibrator = context.getSystemService(Vibrator.class);
Aplikacja musi mieć
VIBRATE
uprawnienie w kolejności
aby włączyć wibracje przy użyciu tej usługi, To uprawnienie można dodać do sekcji
plik manifestu aplikacji:
<uses-permission android:name="android.permission.VIBRATE"/>
Odtwarzanie wstępnie zdefiniowanej playlisty VibrationEffect
Wstępnie zdefiniowane efekty można przygotować za pomocą: VibrationEffect.createPredefined
,
a następnie odtwarzano za pomocą jednej z metod vibrate
na Vibrator
.
Ten przykład odtwarza efekt kliknięcia.
Kotlin
val vibrator = context.getSystemService(Vibrator::class.java) ... // Requires VIBRATE permission vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK))
Java
Vibrator vibrator = context.getSystemService(Vibrator.class); ... // Requires VIBRATE permission vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK));
Używanie zaawansowanych kompozycji z elementami podstawowymi
Interfejs API VibrationEffect.Composition
daje dodatkowe możliwości
reakcji haptycznych. W przeciwieństwie do efektów te elementy podstawowe nie mają jednak
na poziomie systemu, co oznacza, że trzeba dokładnie
elementów podstawowych i innych funkcji obsługiwanych przez urządzenie.
Korzystanie z tych interfejsów API zostało szczegółowo omówione tutaj: Tworzenie niestandardowych efektów haptycznych.