Mengimplementasikan haptic

Produsen perangkat umumnya dianggap sebagai pemilik aset pribadi yang dibuat untuk setiap perangkat. Dengan demikian, upaya engineering mereka sering kali berfokus pada per perangkat; sedikit atau tidak ada upaya yang dilakukan untuk konsistensi perangkat lain dalam ekosistem.

Sebaliknya, developer berupaya membuat aplikasi yang berfungsi di semua ponsel Android dalam ekosistem, terlepas dari spesifikasi teknis setiap perangkat. Perbedaan pendekatan ini dapat menyebabkan masalah fragmentasi, misalnya, kemampuan hardware ponsel tertentu tidak sesuai dengan ekspektasi yang ditetapkan oleh developer aplikasi. Jadi, jika API haptik berfungsi di beberapa ponsel Android, tetapi tidak di ponsel lainnya, akibatnya adalah ekosistem yang tidak konsisten. Itulah sebabnya konfigurasi hardware memainkan peran penting dalam memastikan produsen dapat menerapkan API haptik Android di setiap perangkat.

Halaman ini menyediakan checklist langkah demi langkah untuk menyiapkan kepatuhan hardware agar dapat menggunakan API haptics Android secara optimal.

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

Diagram kasus penggunaan haptik untuk developer aplikasi dan produsen perangkat

Gambar 1. Membangun pengetahuan antara produsen dan developer perangkat

Checklist penerapan haptic

  1. Menerapkan konstanta

    • Daftar konstanta untuk mengimplementasikan haptic.
  2. Memetakan konstanta antara HAL dan API

  3. Menilai hardware

    • Petunjuk tentang target efek haptik. Gunakan petunjuk ini untuk melakukan pemeriksaan cepat pada hardware Anda.

Kita akan mempelajari setiap langkah ini secara lebih mendetail di bawah ini.

Langkah 1: Terapkan konstanta

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

Diagram alir proses penerapan haptic

Gambar 2. Menerapkan efek

Diagram alir langkah-langkah untuk menerapkan primitif

Gambar 3. Mengimplementasikan primitif

Periksa status penerapan konstanta haptic berikut.

Konstanta haptik Lokasi dan ringkasan
EFFECT_TICK, EFFECT_CLICK, EFFECT_HEAVY_CLICK, EFFECT_DOUBLE_CLICK Konstanta haptik class VibrationEffect
di VibrationEffect tidak menyertakan konsep peristiwa input apa pun, dan tidak memiliki elemen UI. Konstanta menyertakan konsep tingkat energi, 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 Konstanta haptik class VibrationEffect.Composition
di VibrationEffect.Composition diizinkan untuk memiliki intensitas yang skalabel, yang dipanggil oleh addPrimitive(int primitiveId, float scale, int delay).

Getaran alternatif yang dijelaskan di bawah dilakukan pada perangkat yang tidak menerapkan konstanta VibrationEffect. Sebaiknya perbarui konfigurasi ini agar memiliki performa terbaik di perangkat tersebut.

  1. EFFECT_CLICK

    Getaran bentuk gelombang yang 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 yang dibuat dengan VibrationEffect.createWaveform dan waktu yang dikonfigurasi di frameworks/base/core/res/res/values/config.xml##config_longPressVibePattern.

  3. EFFECT_DOUBLE_CLICK

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

  4. EFFECT_TICK

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

Diagram alir langkah-langkah untuk menguji respons haptik

Gambar 4. Menerapkan konstanta masukan

Periksa status konstanta masukan publik berikut.

Konstanta haptic 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 haptic di HapticFeedbackConstants membantu peristiwa input dengan elemen UI tertentu, seperti KEYBOARD_PRESS dan KEYBOARD_RELEASE, yang dipanggil oleh performHapticFeedback().

Langkah 2: Memetakan konstanta antara HAL dan API

Langkah 2 menyajikan pemetaan yang direkomendasikan antara konstanta HAL publik dan konstanta API. Jika hardware yang dinilai di Langkah 1 tidak menerapkan konstanta HAL, Langkah 2 harus digunakan untuk memperbarui pola penggantian yang dijelaskan di Langkah 1 untuk menghasilkan output yang serupa. Pemetaan dibantu oleh dua model default yang berbeda.

  • Model diskret (sederhana)

    • Amplitudo adalah variabel kunci dari model ini. Setiap entitas dalam HAL mewakili amplitudo haptic yang berbeda.
    • Model ini adalah persyaratan minimum yang diperlukan untuk menerapkan UX haptik dasar.
    • UX haptic yang lebih canggih memerlukan hardware lanjutan dan model lanjutan (model berkelanjutan).
  • Model berkelanjutan (tingkat lanjut)

    • Tekstur dan amplitudo adalah variabel utama model ini. Setiap entity di HAL mewakili tekstur haptik yang berbeda. Amplitudo setiap entity HAL dikontrol oleh faktor skala (S).
    • Model ini membutuhkan hardware canggih. Jika OEM ingin menggunakan UX haptik lanjutan dengan VibrationEffect.Composition (untuk penggunaan API haptik terbaru yang terbaik), sebaiknya implementasikan hardware mereka menggunakan model ini.

Model diskret

Sebaiknya petakan 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 di HAL. Pertanyaan spesifik yang disusun berdasarkan gagasan tersebut terlihat seperti ini: Berapa banyak efek haptik impuls tunggal dengan perbedaan amplitudo yang dapat dirasakan manusia yang dapat ditentukan di ponsel saya? Jawaban atas pertanyaan ini akan menentukan pemetaan.

Menentukan konstanta HAL adalah proses yang bergantung pada hardware. Misalnya, ponsel kelas pemula mungkin hanya memiliki kemampuan hardware untuk menghasilkan satu bentuk gelombang haptik. Perangkat dengan komponen hardware yang lebih canggih menghasilkan rentang tingkat amplitudo terpisah yang lebih luas, dan dapat menentukan beberapa bentuk gelombang haptik di HAL. Pemetaan konstanta HAL-API menggunakan konstanta HAL (menggunakan amplitudo sedang sebagai dasar pengukuran), lalu mengatur efek yang lebih kuat atau lebih lemah dari sana.

Diagram rentang konstanta HAL dan amplitudo masukan

Gambar 5. Rentang konstan HAL menurut amplitudo

Saat jumlah konstanta HAL dengan amplitudo diskret ditentukan, saatnya memetakan konstanta HAL dan API berdasarkan jumlah konstanta HAL. Proses pemetaan ini dapat menyegmentasi konstanta API impuls tunggal menjadi maksimal tiga grup level amplitudo yang berlainan. Cara segmentasi konstanta API didasarkan pada prinsip UX untuk menyertai peristiwa input. Untuk informasi selengkapnya, lihat Desain UX haptic.

Model diskret untuk pemetaan konstanta HAL-API

Gambar 6. Pemetaan konstanta HAL-API: Model diskret

Jika perangkat Anda hanya mendukung dua konstanta HAL dengan amplitudo terpisah, pertimbangkan untuk menggabungkan konstanta HAL tingkat 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 Sedang. Jika perangkat Anda hanya mendukung satu konstanta HAL dengan amplitudo diskret, pertimbangkan untuk menggabungkan ketiga level menjadi satu.

Model berkelanjutan

Model berkelanjutan dengan skalabilitas amplitudo dapat diterapkan untuk menentukan konstanta HAL. Faktor skala (S) dapat diterapkan ke konstanta HAL (misalnya, HAL_H0, HAL_H1) untuk menghasilkan HAL yang diskalakan (HAL_H0 x S). Dalam hal ini, HAL yang diskalakan dipetakan untuk menentukan 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 menambahkan variasi amplitudo dengan menyesuaikan faktor skala (S). Produsen perangkat dapat menentukan jumlah konstanta HAL berdasarkan jumlah tekstur haptic yang berbeda yang ingin mereka berikan.

Rentang konstanta HAL menurut tekstur dan amplitudo

Gambar 7. Rentang konstanta HAL menurut tekstur (HAL_H0) dan skala amplitudo (S)

Model berkelanjutan untuk pemetaan konstanta HAL-API

Gambar 8. Pemetaan konstanta HAL-API: Model berkelanjutan

Dalam model berkelanjutan, konstanta HAL yang berbeda mewakili tekstur haptik yang berbeda, bukan amplitudo yang berbeda; faktor skala (S) dapat mengonfigurasi amplitudo. Namun, karena persepsi tekstur (misalnya, ketajaman) terkait dengan persepsi durasi dan amplitudo, menggabungkan tekstur dan faktor skala (dalam proses desain pemetaan HAL-API) direkomendasikan.

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

Variasi Peningkatan 1

Meningkatkan Variasi 2

Gambar 9. Meningkatkan variasi dengan skalabilitas amplitudo

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

Langkah 3: Nilai hardware

Penilaian hardware melibatkan penentuan tiga efek haptic, yang diberi label Efek 1, 2, dan 3 untuk penilaian khusus ini.

Efek 1: Konstanta haptik pendek yang telah ditentukan sebelumnya

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

Efek 2: Efek haptic kustom singkat

Konstanta VibrationEffect.createOneShot(20,255) adalah untuk efek haptic kustom. Untuk impuls kustom tunggal yang singkat, 20 milidetik adalah nilai minimum maksimum yang direkomendasikan untuk menentukan durasi. Satu impuls yang berdurasi lebih dari 20 milidetik tidak direkomendasikan karena dirasakan sebagai getaran berdengung.

Bentuk gelombang efek haptic kustom singkat

Gambar 10. Efek haptic kustom singkat

Efek 3: Efek haptic kustom panjang dengan variasi amplitudo

Konstanta VibrationEffect.createWaveform(timings[], amplitudes[], int repeat) adalah untuk efek kustom panjang dengan variasi amplitudo. Kemampuan untuk menghasilkan amplitudo yang bervariasi untuk efek haptik kustom adalah salah satu indikator untuk mengevaluasi kemampuan perangkat untuk haptik yang kaya. timings [] dan amplitudes [] yang direkomendasikan adalah {500, 500} dan {128, 255}, yang masing-masing menunjukkan tren peningkatan amplitudo dari 50% hingga 100%, dengan frekuensi sampling 500 milidetik.

Gelombang efek haptik dengan variasi amplitudo

Gambar 11. Efek haptic kustom panjang dengan variasi amplitudo

Untuk memeriksa kemampuan hardware kontrol amplitudo untuk Efek 3, gunakan metode Vibrator.hasAmplitudeControl(). Hasilnya harus true untuk mengeksekusi VibrationEffect.createWaveform dengan amplitudo yang bervariasi seperti yang diinginkan.

Diagram alir penilaian efek haptik subjektif

Gambar 12. Penilaian subjek tentang efek haptik 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 guna menentukan apakah perangkat dapat menghasilkan haptik dengan amplitudo yang dapat dirasakan manusia.

Pertanyaan spesifik yang disusun berdasarkan gagasan ini terlihat seperti ini: Dapatkah perangkat menghasilkan efek haptik yang dapat dirasakan oleh pengguna seperti yang diharapkan? Menjawab pertanyaan ini akan membantu Anda menghindari haptik yang gagal, termasuk haptik yang tidak terlihat yang tidak dapat dirasakan pengguna, atau haptik yang tidak diinginkan saat bentuk gelombang tidak menghasilkan pola seperti yang diinginkan.

Melakukan penilaian lanjutan

Sebaiknya lakukan penilaian kualitas lanjutan. Penilaian kualitas lanjutan mencirikan atribut efek haptik yang dapat diukur untuk menerapkan haptic berkualitas. Setelah selesai, produsen perangkat harus dapat mendiagnosis status haptic saat ini, yang berarti mereka dapat menetapkan sasaran untuk meningkatkan kualitas secara keseluruhan. Lihat Penilaian hardware.