Konstanta dan primitif haptik ditentukan oleh HAL vibrator dan dipetakan oleh framework Android ke API publik. Lakukan pemeriksaan ini untuk menentukan apakah perangkat Anda memenuhi persyaratan minimum untuk menerapkan haptik:
Gambar 2. Menerapkan efek
Gambar 3. Menerapkan primitif
Menerapkan konstanta
Konstanta haptik di VibrationEffect dapat digunakan oleh developer melalui VibrationEffect.createPredefined(). Periksa status penerapan konstanta haptik berikut.
Konstanta haptik | Lokasi dan ringkasan |
---|---|
EFFECT_TICK , EFFECT_CLICK ,
EFFECT_HEAVY_CLICK ,
EFFECT_DOUBLE_CLICK |
VibrationEffect
classKonstanta haptik di VibrationEffect tidak menyertakan konsep peristiwa input apa pun, dan tidak memiliki elemen UI. Konstanta mencakup konsep tingkat energi, seperti EFFECT_CLICK dan EFFECT_HEAVY_CLICK , yang dipanggil oleh
createPredefined() . |
Getaran alternatif yang dijelaskan berikutnya dilakukan pada perangkat yang tidak menerapkan konstanta VibrationEffect
. Sebaiknya perbarui konfigurasi ini agar
performa perangkat tersebut menjadi yang terbaik.
EFFECT_CLICK
Getaran bentuk gelombang yang dibuat dengan
VibrationEffect.createWaveform
dan pengaturan waktu yang dikonfigurasi diframeworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern
.EFFECT_HEAVY_CLICK
Getaran bentuk gelombang yang dibuat dengan
VibrationEffect.createWaveform
dan pengaturan waktu yang dikonfigurasi diframeworks/base/core/res/res/values/config.xml##config_longPressVibePattern
.EFFECT_DOUBLE_CLICK
Getaran bentuk gelombang yang dibuat dengan
VibrationEffect.createWaveform
dan pengaturan waktu (0, 30, 100, 30).EFFECT_TICK
Getaran bentuk gelombang yang dibuat dengan
VibrationEffect.createWaveform
dan pengaturan waktu yang dikonfigurasi diframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
.
Gambar 4. Menerapkan konstanta masukan
Konstanta haptik di HapticFeedbackConstants dapat digunakan oleh developer melalui View.performHapticFeedback()). Periksa status konstanta masukan publik berikut.
Konstanta haptik | Lokasi dan ringkasan |
---|---|
CLOCK_TICK , CONTEXT_CLICK , KEYBOARD_PRESS ,
KEYBOARD_RELEASE , KEYBOARD_TAP , LONG_PRESS ,
TEXT_HANDLE_MOVE , VIRTUAL_KEY ,
VIRTUAL_KEY_RELEASE , CONFIRM , REJECT ,
GESTURE_START , GESTURE_END |
Class HapticFeedbackConstants Konstanta haptik di HapticFeedbackConstants membantu peristiwa input
dengan elemen UI tertentu, seperti KEYBOARD_PRESS dan
KEYBOARD_RELEASE , yang dipanggil oleh
performHapticFeedback() . |
Menerapkan primitif
Primitif haptik di
VibrationEffect.Composition
memiliki intensitas yang dapat diskalakan yang dapat digunakan developer melalui
addPrimitive(int primitiveId, float scale, int delay)
.
Primitif dapat dibagi menjadi dua kategori:
Primitive pendek: Primitive dengan durasi pendek, biasanya kurang dari 20 md. Primitive ini adalah
CLICK
,TICK
, danLOW_TICK
.Primitif chirp: Primitif dengan amplitudo dan frekuensi yang bervariasi, biasanya dengan durasi yang lebih lama daripada primitif pendek. Parameter tersebut adalah
SLOW_RISE
,QUICK_RISE
,QUCK_FALL
,THUD
, danSPIN
.
Primitif pendek
Primitif pendek dapat dijelaskan oleh profil akselerasi output motor vibrator. Frekuensi absolut yang digunakan bervariasi untuk setiap elemen dasar, bergantung pada frekuensi resonansi aktuator. Lihat Menyiapkan peralatan pengujian untuk mengetahui informasi selengkapnya tentang penyiapan hardware dan alat untuk mengukur output.
Metrik kualitas yang berharga untuk getaran singkat adalah rasio pulsa terhadap dering (PRR), yang ditunjukkan pada Gambar 5. PRR didefinisikan sebagai rasio antara pulsa utama, yang ditentukan oleh sinyal di dalam jendela durasi saat amplitudo menurun hingga 10% dari amplitudo puncak, dan pulsa dering, yang ditentukan oleh sinyal saat amplitudo menurun dari 10% amplitudo puncak hingga kurang dari 1% dari amplitudo puncak. Rumus untuk PRR adalah:
Untuk mengetahui informasi selengkapnya tentang PRR, lihat Menganalisis bentuk gelombang dan untuk mengetahui informasi selengkapnya tentang menganalisis dan membandingkan hasil, lihat Membandingkan hasil menggunakan peta performa.
Gambar 5. Definisi rasio denyut ke dering
Terapkan primitif pendek sebagai masukan pengguna atau diputar dalam komposisi yang lebih panjang untuk menciptakan tekstur lembut. Artinya, biasanya dipicu sering dan diputar secara berurutan dengan cepat. Intensitas yang dirasakan dari satu primitif pendek dapat memperparah intensitas efek yang lebih besar. Oleh karena itu, kalibrasi satu tick atau primitif tick rendah dengan komposisi yang lebih besar, misalnya, 100 tick berturut-turut.
Klik primitif
Primitif klik adalah efek yang kuat dan jelas yang biasanya beroperasi mendekati frekuensi resonansi perangkat untuk mencapai output maksimum dalam durasi singkat. Lebih kuat dan dalam daripada primitif lainnya, serta beroperasi dengan intensitas maksimum.
Jika tersedia, gunakan overdrive motor di awal dan pengereman aktif di akhir untuk mencapai waktu naik dan turun motor yang singkat. Untuk beberapa motor, menggunakan gelombang persegi, bukan gelombang sinus, dapat mencapai akselerasi yang lebih cepat. Gambar 6 menunjukkan contoh profil akselerasi output untuk komponen klik:
Gambar 6. Contoh profil akselerasi output untuk primitif klik
Parameter | Panduan |
---|---|
Durasi |
Target: 12 md Batas: < 30 md |
Akselerasi output puncak |
Target: 2 G Batas: > 1 G |
Frekuensi | Kira-kira pada frekuensi resonansi |
Primitif tanda centang (tanda centang ringan)
Primitif tick adalah efek tajam dan singkat yang biasanya beroperasi pada rentang frekuensi yang lebih tinggi. Primitif ini juga dapat dideskripsikan sebagai klik intensitas sedang pada frekuensi yang lebih tinggi dengan ekor pendek. Panduan yang sama berlaku untuk mencapai waktu naik yang singkat menggunakan overdrive motor atau gelombang persegi untuk awal mula, dan pengereman aktif pada offset. Gambar 7 menunjukkan contoh profil percepatan output untuk primitif tanda centang:
Gambar 7. Contoh profil akselerasi output untuk primitif tanda centang
Parameter | Panduan |
---|---|
Durasi |
Target: 5 md Batas: < 20 md |
Akselerasi output puncak |
Target: Setengah dari Batas: Antara 0,5 G dan 1 G |
Frekuensi |
Target: 2x frekuensi resonansi Batas: < 500 Hz |
Primitif tanda centang rendah
Primitif tanda rendah adalah versi tanda ringan yang lebih lembut dan lemah, yang beroperasi pada rentang frekuensi yang lebih rendah untuk memberikan efek yang lebih kuat. Primitif ini juga dapat dideskripsikan sebagai klik intensitas sedang pada frekuensi yang lebih rendah, yang dimaksudkan untuk digunakan berulang kali untuk memberikan masukan dinamis. Panduan yang sama berlaku untuk mencapai waktu naik yang singkat menggunakan overdrive motor atau gelombang persegi untuk awal mula. Gambar 8 menunjukkan contoh profil akselerasi output untuk primitif tick rendah:
Gambar 8. Contoh profil akselerasi output untuk primitif tick rendah
Parameter | Panduan |
---|---|
Durasi |
Target: 12 md Batas: < 30 md |
Akselerasi output puncak |
Target: 1/4 dari Batas: Antara 0,2 G dan 0,5 G |
Frekuensi |
Target: Frekuensi resonansi 2/3 Batas: < 100 Hz |
Primitif Chirp
Primitif derau dapat dijelaskan oleh sinyal input untuk tingkat voltase dan frekuensi getaran. Percepatan yang dapat dihasilkan motor pada rentang frekuensi yang berbeda-beda bergantung pada kurva respons frekuensi aktuator. Rentang frekuensi dan tingkat voltase perlu disesuaikan berdasarkan per perangkat.
Primitif kenaikan lambat
Peningkatan lambat adalah sapuan amplitudo dan frekuensi lambat ke atas dengan permulaan lembut dan intensitas getaran yang terus meningkat di seluruh sapuan. Hal ini dapat diterapkan dengan menyapu amplitudo dan frekuensi secara konsisten, menggunakan rentang frekuensi yang lebih rendah yang beroperasi di luar resonansi. Gambar 9 menunjukkan parameter input dan contoh profil akselerasi output untuk penerapan ini. (Garis merah cocok dengan label amplitudo di sebelah kiri dan menunjukkan bagaimana amplitudo getaran bervariasi dari waktu ke waktu. Garis biru cocok dengan label frekuensi di sebelah kanan dan menunjukkan bagaimana frekuensi getaran bervariasi dari waktu ke waktu.)
Gambar 9. Parameter input dan contoh profil akselerasi output untuk primitif kenaikan lambat
Jika respons frekuensi motor terbatas (tidak cukup kuat di luar frekuensi resonansinya), maka implementasi alternatifnya adalah sapuan sinus dari 1/2x hingga 1x frekuensi resonansi. Resonansi motor berkontribusi untuk mencapai puncak sinyal di akhir.
Parameter | Panduan |
---|---|
Durasi |
Target: 500 md Toleransi: 20 md |
Akselerasi output puncak |
Target: 0,5 G Batas: Antara 0,5 G dan 1 G |
Frekuensi |
Target: 1/2 hingga 2/3 frekuensi resonansi Alternatif: 1/2 hingga frekuensi resonansi |
Primitif peningkatan cepat
Peningkatan cepat adalah peningkatan amplitudo dan frekuensi yang lebih cepat ke atas dengan permulaan yang lembut dan intensitas getaran yang terus meningkat di seluruh sapuan. Target frekuensi getaran dan akselerasi output harus sama dengan primitif peningkatan lambat, yang dicapai dalam durasi yang lebih singkat. Gambar 10 menunjukkan parameter input getaran dan contoh profil akselerasi output untuk primitif peningkatan lambat. (Garis merah cocok dengan label amplitudo di sebelah kiri dan menunjukkan bagaimana amplitudo getaran bervariasi dari waktu ke waktu. Garis biru cocok dengan label frekuensi di sebelah kanan dan menunjukkan bagaimana frekuensi getaran bervariasi dari waktu ke waktu.)
Gambar 10. Parameter input dan contoh profil akselerasi output untuk primitive peningkatan cepat
Parameter | Panduan |
---|---|
Durasi |
Target: 150 md Toleransi: 20 md |
Akselerasi output puncak |
Target: Sama seperti Batas: Sama dengan |
Frekuensi |
Target: Sama seperti Alternatif: Sama seperti |
Primitif jatuh cepat
Penurunan cepat adalah sapuan ke bawah dengan amplitudo dan frekuensi yang cepat dengan permulaan yang lembut. Anda dapat menggunakan frekuensi yang lebih tinggi sebagai titik awal saat motor meningkatkan kecepatan untuk mencapai akselerasi output puncak. Frekuensi harus terus menurun di seluruh sapuan, bahkan selama waktu naik. Gambar 11 menampilkan parameter input dan contoh profil akselerasi output untuk penerapan ini. (Garis merah cocok dengan label amplitudo di sebelah kiri dan menunjukkan bagaimana amplitudo getaran bervariasi dari waktu ke waktu. Garis biru cocok dengan label frekuensi di sebelah kanan dan menunjukkan bagaimana frekuensi getaran bervariasi dari waktu ke waktu.)
Gambar 11. Parameter input dan contoh profil akselerasi output untuk primitif jatuh cepat
Parameter | Panduan |
---|---|
Durasi |
Target: 100 md Toleransi: 20 md |
Akselerasi output puncak |
Target: 1 G Batas: Antara 0,5 G dan 2 G |
Frekuensi |
Target: 2x hingga 1x frekuensi resonansi |
Primitif Thud
Bunyi gedebuk adalah efek perkusi rendah yang berdebam dan mensimulasikan sensasi fisik mengetuk kayu berongga. Primitive ini beroperasi dalam rentang frekuensi rendah, mirip dengan primitive tick rendah, untuk memberikan efek yang lebih kuat. Anda dapat menerapkan primitif dentuman sebagai sapuan ke bawah amplitudo dan frekuensi pada rentang frekuensi yang lebih rendah (sebaiknya kurang dari 100 Hz). Gambar 12 menunjukkan parameter input dan contoh profil akselerasi output untuk penerapan ini. (Garis merah cocok dengan label amplitudo di sebelah kiri dan menunjukkan bagaimana amplitudo getaran bervariasi dari waktu ke waktu. Garis biru cocok dengan label frekuensi di sebelah kanan dan menunjukkan bagaimana frekuensi getaran bervariasi dari waktu ke waktu.)
Gambar 12. Parameter input dan contoh profil akselerasi output untuk primitif thud
Jika respons frekuensi motor terbatas, maka penerapan alternatif adalah memulai dengan sinyal drive intensitas penuh pada frekuensi resonansi dan turun ke frekuensi terendah yang masih dapat dirasakan. Pendekatan ini mungkin memerlukan peningkatan intensitas sinyal penggerak pada frekuensi yang lebih rendah agar getaran dapat dirasakan.
Parameter | Panduan |
---|---|
Durasi |
Target: 300 md Toleransi: 20 md |
Akselerasi output puncak |
Target: 0,25 G Batas: Antara 0,2 G dan 0,5 G |
Frekuensi |
Target: 1/2 hingga 1/3 frekuensi resonansi Alternatif: 1x hingga 1/2 frekuensi resonansi |
Primitif putar
Putaran ini menyimulasikan momentum putaran cepat ke atas dan ke bawah dengan sedikit aksen di tengah. Putaran dapat diimplementasikan dengan menyapu amplitudo dan frekuensi secara independen, ke arah yang berlawanan, dan diikuti dengan gerakan terbalik. Penting untuk menggunakan rentang frekuensi yang lebih rendah (sebaiknya kurang dari 100 Hz). Gambar 13 menunjukkan parameter input dan contoh output profil akselerasi untuk penerapan ini. (Garis merah cocok dengan label amplitudo di sebelah kiri dan menunjukkan bagaimana amplitudo getaran bervariasi dari waktu ke waktu. Garis biru cocok dengan label frekuensi di sebelah kanan dan menunjukkan bagaimana frekuensi getaran bervariasi dari waktu ke waktu.)
Kami merekomendasikan agar primitif putar dipanggil dua kali secara berurutan, atau tiga kali dalam komposisi, untuk menghasilkan sensasi berputar dan tidak stabil.
Jika respons frekuensi motor terbatas, implementasi alternatif adalah melakukan sapuan sinus cepat dari 1/2x hingga 1x frekuensi resonansi dan kembali. Resonansi motorik secara otomatis memberikan aksen pada sinyal di tengah.
Gambar 13. Parameter input dan contoh profil akselerasi output untuk spin primitive
Parameter | Panduan |
---|---|
Durasi |
Target: 150 md Toleransi: 20 md |
Akselerasi output puncak |
Target: 0,5 G Batas: Antara 0,25 G dan 0,75 G |
Frekuensi |
Target: 2/3 hingga 1/3, lalu kembali ke 1/2 frekuensi resonansi Alternatif: 2/3 hingga 1x, lalu kembali ke 1/2 frekuensi resonansi |