イベントに触覚フィードバックを追加する

ハプティクスの最も基本的なユースケースの一つは、ユーザーにフィードバックを提供することです。 やり取りできます時間選択ツール、仮想キーボードのキー入力、テキスト 触覚フィードバックの良いユースケースの一般的な例です。詳細 ハプティクスを適用するタイミングと方法については、 ハプティクスの設計原則

このページでは、触覚フィードバックを提供する 3 つの方法について説明します。

これらのメソッドでは、デバイスレベルで定義されたプリミティブを使用して、高品質の フィードバックを提供します。

どの触覚フィードバック方法でも、ユーザーのタップ フィードバックの設定が尊重されます。 あります。

View コンポーネントを使用して触覚フィードバックを生成する

View.performHapticFeedback メソッドを使用して触覚フィードバックを生成します。「 HapticFeedbackConstants で定義される触覚定数は、 実行される触覚効果のタイプではなく、

基盤となる実装は、デバイスとハードウェアによって異なる場合があります。 ただし、アプリは提供するフィードバックの種類のみを考慮すればよい 学習します。機能に重点を置くことで、 フィードバックをお寄せください。ユーザーはさまざまな意味を関連付けるようになる 経時的に異なる触覚に変化します

前提条件: 触覚フィードバックを有効にする

View が表示されている限り、そのイベントに触覚フィードバックを使用できます。 長押しなどの一部のイベントにはデフォルトのハプティクスがあり、 ビューのリスナーがイベントを処理します(true を返します)。

Android View は、 View.hapticFeedbackEnabled プロパティを false に設定します。このプロパティの無効化 デフォルトのフィードバックになります。

performHapticFeedback メソッドはシステム設定も考慮します。 HAPTIC_FEEDBACK_ENABLED: ユーザーがこの機能を無効にできます。 システム全体で使用されます

他の触覚 API とは異なり、ViewHapticFeedbackConstants を使用する VIBRATE 権限は必要ありません。

HapticFeedbackConstantを選択

HapticFeedbackConstantsView コンポーネントを使用する場合、 特定のデバイスのサポートを評価してください。これらの定数は、 使用することもできます。考慮する必要があるのは、使用する SDK の あります。

例 1: キー入力

View でタップ入力に触覚フィードバックを追加する方法の例 タッチリスナーを使っています手で押している感覚をシミュレーションする効果です。 ボタンを押し、離します。

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;
  }
}

例 2: [Submit] ボタン

触覚フィードバックのユースケースは、Google Pixel との物理的なやり取りをシミュレーションするだけにとどまりません。 ダウンロードします抽象的な意味を伝えるためにも使用されます。たとえば アプリケーションに対する CONFIRM 効果は 短いバイブレーションと REJECT の例: フィードバックを強化し 不具合を知らせることができますこれを次の図に示します。 送信ボタンのフィードバックの例を見てみましょう

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);
  }
});

事前定義された VibrationEffect を使用して触覚フィードバックを生成する

View ベースのアプローチを使用すると、ユーザーの操作に重点が置かれます。内容 システム全体の一貫性を保つことをおすすめします。ただし 事前定義された VibrationEffect API を呼び出して、触覚フィードバックをカスタマイズすることもできます できます。

事前定義された効果は VibrationEffect として利用可能 定数があり、 サポートを確認し、Vibrator 例を示します。

VibrationEffect API のデバイス サポートについて

基本的な使用では、個々のユーザーのサポートを確認する必要はない VibrationEffect API。Vibrator.areEffectsSupported などの API および Vibrator.areAllEffectsSupported は、デバイスが次の状態にあるかどうかを判断するために使用されます。 定数のカスタマイズされた実装。カスタマイズしたエフェクトが その場合でも、アプリはエフェクトを再生し、プラットフォーム定義の 使用します。

詳しくは、事前定義された VibrationEffect

前提条件: バイブレーターと VIBRATE 権限を読み込む

ほとんどのバイブレーションは、読み込み可能な Vibrator サービスで再生できます。 次のとおりです。

Kotlin

import android.os.Vibrator

val vibrator = context.getSystemService(Vibrator::class.java)

Java

import android.os.Vibrator;

Vibrator vibrator = context.getSystemService(Vibrator.class);

アプリは VIBRATE 権限を このサービスを使用してデバイスをバイブレーションします。権限は アプリケーション マニフェスト ファイル:

<uses-permission android:name="android.permission.VIBRATE"/>

あらかじめ定義された VibrationEffect を再生する

事前定義されたエフェクトは、VibrationEffect.createPredefined を使用して準備できます。 その後、Vibratorvibrate メソッドのいずれかを使用して再生しました。

この例ではクリック効果が発生します。

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));

プリミティブで高度なコンポジションを使用する

VibrationEffect.Composition API を使用すると、以下を実現できます。 実現できます。ただし効果とは異なり、これらのプリミティブには これはシステムレベルのフォールバックです。つまり、システムレベルのフォールバックには細心の デバイスがサポートするプリミティブとその他の機能。

これらの API の使用方法については、このモジュールの カスタムの触覚効果の作成