Dodawanie reakcji haptycznych do wydarzeń

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.

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.