Menambahkan respons haptic ke peristiwa

Terapkan respons haptik di aplikasi Android menggunakan komponen View, API VibrationEffect yang telah ditentukan sebelumnya, dan komposisi yang ditambatkan ke linimasa dengan VibrationEffect.Builder. keywords_public: > Pengembangan Android, teknologi haptik, respons haptik, UI, tampilan, VibrationEffect, View.performHapticFeedback, Vibrator, konstanta haptik

Salah satu kasus penggunaan paling dasar untuk haptik adalah memberikan umpan balik pada interaksi pengguna. Pemilih waktu, penekanan tombol pada keyboard virtual, dan pemilihan teks adalah contoh umum kasus penggunaan yang baik untuk respons haptik. Untuk mengetahui informasi selengkapnya tentang kapan dan cara menerapkan haptik, baca Prinsip desain haptik.

Halaman ini menjelaskan tiga cara untuk memberikan umpan balik haptik.

Metode ini menggunakan primitif yang ditentukan di tingkat perangkat untuk memberikan kualitas tinggi masukan yang disesuaikan dengan perangkat yang sedang digunakan.

Semua metode respons haptik secara default mematuhi setelan umpan balik sentuhan pengguna.

Menggunakan komponen View untuk menghasilkan respons haptik

Gunakan metode View.performHapticFeedback untuk menghasilkan respons haptik. Konstanta haptik yang ditentukan oleh HapticFeedbackConstants berfokus pada fungsinya dalam aplikasi, bukan jenis efek haptik yang dilakukan.

Implementasi yang mendasarinya mungkin bervariasi bergantung pada perangkat dan kemampuan hardware, tetapi aplikasi hanya perlu mempertimbangkan jenis masukan yang akan diberikan dalam konteks tertentu. Dengan berfokus pada fungsi, Anda dapat mengaktifkan respons haptik untuk interaksi serupa. Pengguna belajar mengaitkan berbagai makna dengan sensasi haptik yang berbeda dari waktu ke waktu.

Prasyarat: Aktifkan respons haptik

Selama View terlihat, respons haptik dapat digunakan untuk peristiwanya. Beberapa peristiwa, seperti sentuh lama, memiliki haptik default yang dipicu jika pendengar pada tampilan menangani peristiwa (menampilkan true).

View Android dapat menonaktifkan respons haptik dengan menyetel properti View.hapticFeedbackEnabled ke false. Menonaktifkan properti ini akan menghasilkan masukan default.

Metode performHapticFeedback juga mematuhi setelan sistem HAPTIC_FEEDBACK_ENABLED, yang memungkinkan pengguna menonaktifkannya untuk seluruh sistem.

Tidak seperti API haptik lainnya, penggunaan HapticFeedbackConstants dengan View tidak memerlukan izin VIBRATE.

Pilih HapticFeedbackConstant

Saat menggunakan komponen View dengan HapticFeedbackConstants, tidak perlu mengevaluasi dukungan perangkat tertentu, karena konstanta ini akan memiliki perilaku penggantian jika diperlukan. Satu-satunya pertimbangan adalah tingkat SDK konstanta yang diinginkan.

Contoh 1: Penekanan tombol

Berikut adalah contoh cara menambahkan respons haptik ke input sentuh di View menggunakan pemroses sentuh. Efek ini mensimulasikan perasaan menekan tombol, lalu melepaskannya.

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

Contoh 2: Tombol kirim

Kasus penggunaan respons haptik tidak hanya mensimulasikan interaksi fisik dengan perangkat. Simbol juga dapat digunakan untuk menyampaikan makna abstrak. Misalnya, ekspektasi umum untuk efek CONFIRM adalah getaran pendek dan ringan, sedangkan REJECT mungkin berupa respons yang lebih kuat untuk menandakan kegagalan. Hal ini diilustrasikan dalam contoh berikut untuk masukan tombol kirim.

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

Menggunakan VibrationEffect yang telah ditentukan sebelumnya untuk menghasilkan respons haptik

Menggunakan pendekatan berbasis View berfokus pada interaksi pengguna, jadi lebih baik gunakan pendekatan ini untuk konsistensi di seluruh sistem. Namun, Anda juga dapat memanggil API VibrationEffect bawaan tertentu untuk efek respons haptik yang disesuaikan.

Efek standar tersedia sebagai konstanta VibrationEffect, dan dapat diperiksa dukungannya dan dimainkan dengan layanan Vibrator seperti yang ditunjukkan dalam contoh berikut.

Memahami dukungan perangkat untuk API VibrationEffect

Dalam penggunaan dasar, tidak perlu memeriksa dukungan untuk setiap API VibrationEffect. API seperti Vibrator.areEffectsSupported dan Vibrator.areAllEffectsSupported digunakan untuk menentukan apakah perangkat memiliki penerapan konstanta yang disesuaikan. Jika efek yang disesuaikan tidak ada, aplikasi Anda tetap dapat memutar efek dan menggunakan penerapan penggantian yang ditentukan platform.

Untuk mengetahui detail selengkapnya, lihat Standar VibrationEffect.

Prasyarat: Muat Vibrator dan izin VIBRATE

Sebagian besar getaran dapat diputar dengan layanan Vibrator, yang dapat dimuat sebagai berikut:

Kotlin

import android.os.Vibrator

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

Java

import android.os.Vibrator;

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

Aplikasi Anda harus memiliki izin VIBRATE untuk menggetarkan perangkat menggunakan layanan ini. Anda dapat menambahkan izin ini ke file manifes aplikasi:

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

Memutar VibrationEffect yang telah ditentukan sebelumnya

Efek standar dapat disiapkan menggunakan VibrationEffect.createPredefined, lalu diputar menggunakan salah satu metode vibrate di Vibrator.

Contoh ini memutar efek Klik.

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

Menggunakan VibrationEffect.Builder untuk membuat komposisi

Mulai Android 16 (K4 2026), API VibrationEffect.Builder menawarkan cara paling fleksibel dan ekspresif untuk membuat respons haptik kustom dengan mengurutkan preset diskret, amplop, dan elemen getaran lainnya di sepanjang linimasa. Selain itu, komposisi yang dibuat dengan VibrationEffect.Builder memiliki dukungan penggantian otomatis bawaan di seluruh elemen yang didukungnya.

Penyusunan efek haptic dengan VibrationEffect.Builder (dan VibrationEffect.Composition API) dibahas lebih mendetail di Membuat Efek Haptic Kustom.