Menerapkan Haptik

Produsen perangkat umumnya dianggap sebagai pemilik aset pribadi yang dibuat untuk setiap perangkat. Dengan demikian, upaya rekayasa mereka sering difokuskan pada basis per-perangkat ; sedikit atau tidak ada upaya untuk menjaga konsistensi perangkat lain dalam ekosistem.

Sebaliknya, pengembang berusaha keras untuk membangun aplikasi yang berfungsi di semua ponsel Android di ekosistem, terlepas dari spesifikasi teknis masing-masing perangkat. Perbedaan pendekatan ini dapat menyebabkan masalah fragmentasi, misalnya, kemampuan perangkat keras ponsel tertentu tidak sesuai dengan harapan yang ditetapkan oleh pengembang aplikasi. Jadi, jika haptics API berfungsi di beberapa ponsel Android tetapi tidak di ponsel lain, hasilnya adalah ekosistem yang tidak konsisten. Inilah sebabnya mengapa konfigurasi perangkat keras memainkan peran penting dalam memastikan bahwa produsen dapat mengimplementasikan API haptics Android di setiap perangkat.

Halaman ini menyediakan daftar periksa langkah demi langkah untuk menyiapkan kepatuhan perangkat keras untuk penggunaan terbaik Android haptics API.

Gambar di bawah mengilustrasikan membangun pengetahuan umum antara produsen dan pengembang perangkat, yang merupakan langkah penting dalam menciptakan ekosistem yang kohesif.

Diagram kasus penggunaan haptics untuk pengembang aplikasi dan produsen perangkat

Gambar 1. Membangun pengetahuan antara produsen perangkat dan pengembang

Daftar periksa implementasi haptics

  1. Terapkan konstanta

    • Daftar konstanta untuk mengimplementasikan haptics.
  2. Konstanta peta antara HAL dan API

  3. Menilai perangkat keras

    • Petunjuk tentang efek haptic target. Gunakan petunjuk ini untuk melakukan pemeriksaan cepat pada perangkat keras Anda.

Kami akan menjelajahi setiap langkah ini secara lebih rinci di bawah ini.

Langkah 1: Terapkan konstanta

Lakukan pemeriksaan ini untuk menentukan apakah perangkat Anda memenuhi persyaratan minimum untuk menerapkan haptics.

Flowchart dari proses implementasi haptics

Gambar 2. Menerapkan efek

Flowchart langkah-langkah untuk mengimplementasikan primitif

Gambar 3. Menerapkan primitif

Periksa status implementasi konstanta haptic berikut.

Konstanta haptik Lokasi dan ringkasan
EFFECT_TICK , EFFECT_CLICK , EFFECT_HEAVY_CLICK , EFFECT_DOUBLE_CLICK Kelas VibrationEffect
Konstanta haptic di VibrationEffect tidak menyertakan gagasan apa pun tentang peristiwa input, dan tidak memiliki elemen UI. Konstanta menyertakan gagasan tingkat energi sebagai gantinya, seperti EFFECT_CLICK dan EFFECT_HEAVY_CLICK , yang dipanggil oleh createPredefined() .
PRIMITIVE_TICK , PRIMITIVE_CLICK , PRIMITIVE_LOW_TICK> , PRIMITIVE_SLOW_RISE , PRIMITIVE_QUICK_RISE , PRIMITIVE_QUICK_FALL , PRIMITIVE_SPIN , PRIMITIVE_THUD VibrationEffect.Composition
Konstanta haptic di VibrationEffect.Composition diperbolehkan memiliki intensitas yang terukur, yang disebut dengan addPrimitive(int primitiveId, float scale, int delay) .

Getaran alternatif yang dijelaskan di bawah ini akan dilakukan pada perangkat yang tidak menerapkan konstanta VibrationEffect . Disarankan untuk memperbarui konfigurasi ini agar berkinerja terbaik pada perangkat tersebut.

  1. EFFECT_CLICK

    Getaran bentuk gelombang dibuat dengan VibrationEffect.createWaveform dan pengaturan waktu yang dikonfigurasi di frameworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern .

  2. EFFECT_HEAVY_CLICK

    Getaran bentuk gelombang dibuat dengan VibrationEffect.createWaveform dan pengaturan waktu yang dikonfigurasi di frameworks/base/core/res/res/values/config.xml##config_longPressVibePattern .

  3. EFFECT_DOUBLE_CLICK

    Getaran bentuk gelombang dibuat dengan VibrationEffect.createWaveform dan pengaturan waktu (0, 30, 100, 30).

  4. EFFECT_TICK

    Getaran bentuk gelombang dibuat dengan VibrationEffect.createWaveform dan pengaturan waktu yang dikonfigurasi di frameworks/base/core/res/res/values/config.xml##config_clockTickVibePattern .

Diagram alir langkah-langkah untuk menguji umpan balik haptic

Gambar 4. Menerapkan konstanta umpan balik

Periksa status konstanta umpan balik 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

Kelas HapticFeedbackConstants
Konstanta haptic di HapticFeedbackConstants membantu kejadian input dengan elemen UI tertentu, seperti KEYBOARD_PRESS dan KEYBOARD_RELEASE , yang dipanggil oleh performHapticFeedback() .

Langkah 2: Petakan konstanta antara HAL dan API

Langkah 2 menyajikan pemetaan yang direkomendasikan antara konstanta HAL publik dan konstanta API. Jika perangkat keras yang dinilai pada Langkah 1 tidak mengimplementasikan konstanta HAL, maka Langkah 2 harus digunakan untuk memperbarui pola mundur yang dijelaskan pada Langkah 1 untuk menghasilkan keluaran yang serupa. Pemetaan dibantu oleh dua model default yang berbeda.

  • Model diskrit (sederhana)

    • Amplitudo adalah variabel kunci dari model ini. Setiap entitas di HAL mewakili amplitudo haptic yang berbeda.
    • Model ini adalah persyaratan minimum yang diperlukan untuk mengimplementasikan UX haptic dasar.
    • UX haptic yang lebih canggih membutuhkan perangkat keras canggih dan model lanjutan (model berkelanjutan).
  • Model berkelanjutan (lanjutan)

    • Tekstur dan amplitudo adalah variabel kunci dari model ini. Setiap entitas di HAL mewakili tekstur haptic yang berbeda. Amplitudo setiap entitas HAL dikendalikan oleh faktor skala ( S ).
    • Model ini membutuhkan perangkat keras canggih. Jika OEM ingin menggunakan UX haptic tingkat lanjut dengan VibrationEffect.Composition (untuk penggunaan terbaik dari API haptics terbaru), disarankan untuk menerapkan perangkat keras mereka menggunakan model ini.

Model diskrit

Disarankan untuk memetakan semua konstanta publik yang disediakan di API dengan konstanta HAL yang sesuai. Untuk memulai proses ini, cari tahu berapa banyak bentuk gelombang haptik dengan amplitudo diskrit yang dapat ditentukan perangkat dalam HAL. Pertanyaan spesifik yang terstruktur seputar gagasan itu terlihat seperti ini: Berapa banyak efek haptik impuls tunggal dengan perbedaan amplitudo yang dapat dilihat manusia yang dapat ditentukan di ponsel saya? Jawaban atas pertanyaan ini menentukan pemetaan.

Mendefinisikan konstanta HAL adalah proses yang bergantung pada perangkat keras. Misalnya, ponsel tingkat pemula mungkin hanya memiliki kemampuan perangkat keras untuk menghasilkan bentuk gelombang haptik tunggal. Perangkat dengan komponen perangkat keras yang lebih canggih menghasilkan rentang tingkat amplitudo diskrit yang lebih luas, dan dapat menentukan beberapa bentuk gelombang haptik di HAL. Pemetaan konstanta HAL-API mengambil konstanta HAL (menggunakan amplitudo sedang sebagai garis dasar), kemudian mengatur efek yang lebih kuat atau lebih lemah dari sana.

Diagram rentang konstan HAL dan amplitudo umpan balik

Gambar 5. Kisaran konstanta HAL berdasarkan amplitudo

Ketika jumlah konstanta HAL dengan amplitudo diskrit ditentukan, saatnya untuk memetakan konstanta HAL dan API dengan jumlah konstanta HAL. Proses pemetaan ini dapat menyegmentasikan konstanta API impuls tunggal menjadi hingga tiga kelompok tingkat amplitudo diskrit. Cara konstanta API tersegmentasi didasarkan pada prinsip-prinsip UX untuk peristiwa masukan yang menyertai. Untuk informasi selengkapnya, lihat Desain UX Haptics .

Model diskrit untuk pemetaan konstan HAL-API

Gambar 6. Pemetaan konstanta HAL-API: Model diskrit

Jika perangkat Anda hanya mendukung dua konstanta HAL dengan amplitudo diskrit, pertimbangkan untuk menggabungkan konstanta HAL level amplitudo Sedang dan Tinggi. Contoh gagasan ini dalam praktiknya adalah memetakan EFFECT_CLICK dan EFFECT_HEAVY_CLICK ke konstanta HAL yang sama, yang akan menjadi konstanta HAL tingkat amplitudo Medium. Jika perangkat Anda hanya mendukung satu konstanta HAL dengan amplitudo diskrit, pertimbangkan untuk menggabungkan ketiga level menjadi satu.

Model berkelanjutan

Model kontinu dengan skalabilitas amplitudo dapat diterapkan untuk menentukan konstanta HAL. Faktor skala ( S ) dapat diterapkan pada konstanta HAL (misalnya, HAL_H0 , HAL_H1 ) untuk menghasilkan HAL berskala ( HAL_H0 x S ). Dalam hal ini, HAL yang diskalakan dipetakan untuk mendefinisikan konstanta API ( HAL_H0 x S1 = H0S1 = EFFECT_TICK ) seperti yang ditunjukkan pada gambar 7. Dengan menggunakan skalabilitas amplitudo model kontinu, perangkat dapat menyimpan sejumlah kecil konstanta HAL dengan tekstur yang berbeda dan tambahkan variasi amplitudo dengan menyesuaikan faktor skala ( S ). Produsen perangkat dapat menentukan jumlah konstanta HAL berdasarkan berapa banyak tekstur haptic berbeda yang ingin mereka berikan.

Kisaran konstan HAL berdasarkan tekstur dan amplitudo

Gambar 7. Kisaran konstanta HAL berdasarkan tekstur (HAL_H0) dan skala amplitudo (S)

Model berkelanjutan untuk pemetaan konstan HAL-API

Gambar 8. Pemetaan konstan HAL-API: Model berkelanjutan

Dalam model kontinu, konstanta HAL yang berbeda mewakili tekstur haptik yang berbeda daripada amplitudo yang berbeda; faktor skala ( S ) dapat mengkonfigurasi amplitudo. Namun, karena persepsi tekstur (misalnya, ketajaman) terkait dengan persepsi durasi dan amplitudo, disarankan untuk menggabungkan tekstur dan faktor skala (dalam proses desain pemetaan HAL-API).

Gambar 7 mengilustrasikan pemetaan konstan dengan meningkatkan variasi dari satu HAL ke banyak konstanta API dengan skalabilitas amplitudo.

Meningkatkan Variasi 1

Meningkatkan Variasi 2

Gambar 9. Meningkatkan variasi dengan skalabilitas amplitudo

Catatan: Gambar di atas mengilustrasikan contoh spesifik pemetaan konstan, sehingga konvensi penamaan bersifat hipotetis. Melakukan proses ini unik untuk setiap produsen perangkat.

Untuk semua konstanta API yang dapat diskalakan seperti PRIMITIVE_TICK dan PRIMITIVE_CLICK di VibrationEffect.Composition , tingkat energi konstanta API bergantung pada parameter float scale ketika konstanta API dideklarasikan melalui addPrimitive(int primitiveID, float scale, int delay) . PRIMITIVE_TICK dan PRIMITIVE_CLICK dapat dirancang dengan perbedaan yang jelas dengan menggunakan konstanta HAL yang berbeda. Pendekatan ini disarankan jika Anda ingin menambahkan variasi pada tekstur .

Langkah 3: Nilai perangkat keras

Penilaian perangkat keras melibatkan penentuan tiga efek haptic, berlabel Efek 1, 2, dan 3 untuk penilaian khusus ini.

Efek 1: Konstanta haptic pendek yang telah ditentukan sebelumnya

Konstanta VibrationEffect.EFFECT_CLICK adalah efek dasar atau penyebut umum dalam pemetaan HAL-API yang disediakan di Langkah 2. Konstanta ini dipetakan dengan efek yang paling sering digunakan, HapticFeedbackConstants.KEYBOARD_PRESS . Menilai efek ini membantu menentukan kesiapan perangkat target Anda untuk haptics yang jelas .

Efek 2: Efek haptic kustom pendek

VibrationEffect.createOneShot(20,255) adalah untuk efek haptic khusus. Singkatnya, impuls khusus tunggal, 20 ms adalah ambang batas maksimum yang disarankan untuk menentukan durasi. Impuls tunggal yang lebih panjang dari 20 ms tidak disarankan karena dianggap sebagai getaran buzzy .

Bentuk gelombang efek haptic kustom pendek

Gambar 10. Efek haptic kustom pendek

Efek 3: Efek haptic kustom panjang dengan variasi amplitudo

Konstanta VibrationEffect.createWaveform(timings[], amplitudes[], int repeat) adalah untuk efek kustom yang panjang dengan variasi amplitudo. Kemampuan untuk menghasilkan amplitudo yang bervariasi untuk efek haptic khusus adalah salah satu indikator untuk mengevaluasi kemampuan perangkat untuk haptic yang kaya . Waktu yang direkomendasikan timings [] dan amplitudes [] adalah {500, 500} dan {128, 255} , masing-masing, yang menyajikan tren peningkatan amplitudo dari 50% menjadi 100%, dengan laju pengambilan sampel 500 ms.

Bentuk gelombang efek haptic dengan variasi amplitudo

Gambar 11. Efek haptic kustom panjang dengan variasi amplitudo

Untuk memeriksa kemampuan perangkat keras kontrol amplitudo untuk Efek 3, gunakan metode Vibrator.hasAmplitudeControl() . Hasilnya harus true untuk menjalankan VibrationEffect.createWaveform dengan amplitudo yang bervariasi sebagaimana dimaksud.

Diagram alir penilaian efek haptic subjektif

Gambar 12. Penilaian subjek efek haptic 1, 2, dan 3

Melakukan penilaian subjektif

Untuk pemeriksaan koherensi cepat, lakukan penilaian subjektif terlebih dahulu. Tujuan penilaian subjektif adalah untuk mengamati amplitudo efek haptik untuk menentukan apakah perangkat dapat menghasilkan haptik dengan amplitudo yang dapat dilihat manusia.

Pertanyaan spesifik yang terstruktur seputar gagasan ini terlihat seperti ini: Dapatkah perangkat menghasilkan efek haptic yang mudah dilihat oleh pengguna seperti yang diharapkan? Menjawab pertanyaan ini membantu Anda menghindari haptics yang gagal , termasuk haptics yang tidak terlihat yang tidak dapat dirasakan pengguna, atau haptics yang tidak diinginkan di mana bentuk gelombang tidak menghasilkan pola sebagaimana dimaksud.