Salah satu kasus penggunaan paling dasar haptic adalah memberikan masukan interaksi. Pemilih waktu, penekanan tombol pada keyboard virtual, dan teks pemilihan adalah contoh umum kasus penggunaan yang baik untuk respons haptik. Untuk selengkapnya informasi tentang waktu dan cara menerapkan haptic, baca Prinsip desain haptik.
Halaman ini menjelaskan tiga cara untuk memberikan respons haptik.
- Gunakan
View
(direkomendasikan). Pendekatan ini berorientasi pada tindakan, memiliki dukungan terluas, dan tidak memerlukan izinVIBRATE
. - Gunakan
VibrationEffect
yang telah ditetapkan. Pendekatan ini memiliki lebih banyak fleksibilitas, tetapi dengan beberapa kompromi. - Menggunakan komposisi lanjutan dengan primitif. Ini lebih baru dan lebih fleksibel, tetapi memerlukan perangkat spesifik dukungan teknis IT.
Metode ini menggunakan primitif yang ditetapkan pada tingkat perangkat untuk memberikan kualitas tinggi masukan yang disesuaikan dengan perangkat yang digunakan.
Semua metode respons haptik menghormati setelan masukan sentuh pengguna dengan secara default.
Menggunakan komponen View
untuk menghasilkan respons haptik
Gunakan metode View.performHapticFeedback
untuk menghasilkan respons haptik. Tujuan
konstanta haptic yang ditentukan oleh HapticFeedbackConstants
difokuskan pada
fungsi dalam aplikasi, bukan jenis efek haptik yang dilakukan.
Implementasi yang mendasarinya mungkin bervariasi, bergantung pada perangkat dan hardware kemampuan, tetapi aplikasi hanya perlu mempertimbangkan jenis umpan balik untuk memberikan dalam konteks tertentu. Dengan berfokus pada fungsi, Anda dapat mengaktifkan haptic masukan untuk interaksi yang serupa. Pengguna belajar mengaitkan berbagai arti terhadap sensasi haptik yang berbeda dari waktu ke waktu.
Prasyarat: Aktifkan respons haptik
Selama View
terlihat, respons haptik dapat digunakan untuk peristiwanya.
Beberapa peristiwa, seperti tekan lama, memiliki haptic default yang dipicu jika
pemroses pada tampilan menangani peristiwa (menampilkan true
).
View
Android dapat menonaktifkan respons haptik dengan menyetel
View.hapticFeedbackEnabled
menjadi false
. Menonaktifkan properti ini
akan menghasilkan masukan default.
Metode performHapticFeedback
juga mengikuti setelan sistem
HAPTIC_FEEDBACK_ENABLED
, yang memungkinkan pengguna menonaktifkannya
untuk seluruh sistem.
Tidak seperti API haptic lainnya, menggunakan HapticFeedbackConstants
dengan View
tidak memerlukan izin VIBRATE
.
Pilih HapticFeedbackConstant
Saat menggunakan komponen View
dengan HapticFeedbackConstants
, Anda tidak perlu
untuk mengevaluasi dukungan perangkat tertentu, karena konstanta ini akan memiliki penggantian
perilaku model jika diperlukan. Satu-satunya pertimbangan adalah tingkat SDK dari
.
Contoh 1: Menekan tombol
Berikut adalah contoh cara menambahkan respons haptik ke input sentuh di View
menggunakan pemroses sentuh. Efeknya menyimulasikan perasaan penekanan pada
tombol dan kemudian 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 umpan balik haptik lebih dari sekadar menyimulasikan interaksi fisik dengan
perangkat seluler. Istilah ini mungkin juga digunakan untuk menyampaikan makna abstrak. Misalnya,
ekspektasi umum untuk
Efek CONFIRM
adalah
getaran singkat dan ringan saat
REJECT
mungkin adalah
umpan balik yang lebih kuat
untuk menandakan kegagalan. Hal ini diilustrasikan dalam
contoh 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 untuk menghasilkan respons haptik
Menggunakan pendekatan berbasis View
berfokus pada interaksi pengguna. Penting
lebih disukai karena konsistensi
di seluruh sistem. Namun, fungsi spesifik
VibrationEffect
API juga dapat dipanggil untuk respons haptik yang disesuaikan
yang dihasilkan.
Efek yang telah ditentukan tersedia sebagai VibrationEffect
konstanta, dan dapat berupa
diperiksa untuk mendapatkan dukungan dan diputar dengan layanan Vibrator
seperti yang ditunjukkan di
contoh berikut.
Memahami dukungan perangkat untuk VibrationEffect
API
Dalam penggunaan dasar, seharusnya tidak perlu memeriksa dukungan
VibrationEffect
API. API seperti Vibrator.areEffectsSupported
dan Vibrator.areAllEffectsSupported
digunakan untuk menentukan apakah perangkat memiliki
implementasi konstanta yang disesuaikan. Jika efek yang disesuaikan tidak
saat ini, aplikasi Anda tetap dapat memutar efek dan menggunakan parameter yang ditentukan
implementasi penggantian.
Untuk 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 harus memiliki
Izin VIBRATE
secara berurutan
untuk menggetarkan perangkat
menggunakan layanan ini. Izin akses dapat ditambahkan ke
file manifes aplikasi:
<uses-permission android:name="android.permission.VIBRATE"/>
Memutar VibrationEffect
yang telah ditentukan
Efek yang telah ditentukan dapat disiapkan menggunakan VibrationEffect.createPredefined
,
lalu dimainkan menggunakan salah satu metode vibrate
di Vibrator
.
Contoh ini memainkan 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 komposisi lanjutan dengan primitif
VibrationEffect.Composition
API menawarkan kemungkinan tambahan untuk
respons haptik. Namun, tidak seperti efek, primitif ini tidak memiliki
tingkat sistem, yang berarti bahwa
Anda harus memperhatikan dengan cermat
primitif dan kemampuan lain
yang didukung perangkat.
Penggunaan API ini dibahas secara lebih mendetail dalam Membuat Efek Haptic Kustom.