Terapkan haptik

Produsen perangkat umumnya dianggap sebagai pemilik aset pribadi yang dibuat untuk setiap perangkat. Oleh karena itu, upaya rekayasa mereka sering kali terfokus pada basis per perangkat ; sedikit atau bahkan tidak ada upaya yang dilakukan untuk menjaga konsistensi perangkat lain dalam ekosistem.

Sebaliknya, pengembang berusaha keras untuk membangun aplikasi yang berfungsi pada 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 ekspektasi yang ditetapkan oleh pengembang aplikasi. Jadi jika API haptics berfungsi pada beberapa ponsel Android namun tidak pada ponsel lainnya, akibatnya adalah ekosistem yang tidak konsisten. Inilah sebabnya konfigurasi perangkat keras memainkan peran penting dalam memastikan bahwa produsen dapat mengimplementasikan Android haptics API di setiap perangkat.

Halaman ini menyediakan daftar periksa langkah demi langkah untuk menyiapkan kepatuhan perangkat keras agar dapat menggunakan API haptics Android dengan sebaik-baiknya.

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

Diagram kasus penggunaan haptik untuk pengembang aplikasi dan produsen perangkat

Gambar 1. Membangun pengetahuan antara produsen dan pengembang perangkat

Daftar periksa penerapan haptik

  1. Menerapkan konstanta

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

  3. Nilai perangkat kerasnya

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

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

Langkah 1: Terapkan konstanta

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

Diagram alur proses implementasi haptics

Gambar 2. Efek penerapan

Diagram alur langkah-langkah untuk mengimplementasikan primitif

Gambar 3. Menerapkan primitif

Periksa status penerapan konstanta haptic berikut.

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

Getaran alternatif yang dijelaskan di bawah ini dilakukan pada perangkat yang tidak mengimplementasikan konstanta VibrationEffect . Disarankan untuk memperbarui konfigurasi ini agar memiliki kinerja terbaik pada perangkat tersebut.

  1. EFFECT_CLICK

    Getaran bentuk gelombang dibuat dengan VibrationEffect.createWaveform dan pengaturan waktunya 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 waktunya 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 waktunya (0, 30, 100, 30).

  4. EFFECT_TICK

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

Diagram alur langkah-langkah untuk menguji umpan balik haptik

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 haptik di HapticFeedbackConstants membantu peristiwa masukan dengan elemen UI tertentu, seperti KEYBOARD_PRESS dan KEYBOARD_RELEASE , yang dipanggil dengan 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 fallback yang dijelaskan pada Langkah 1 untuk menghasilkan keluaran serupa. Pemetaannya dibantu oleh dua model default yang berbeda.

  • Model diskrit (sederhana)

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

    • Tekstur dan amplitudo adalah variabel kunci dari model ini. Setiap entitas di HAL mewakili tekstur haptik yang berbeda. Amplitudo setiap entitas HAL dikendalikan oleh faktor skala ( S ).
    • Model ini memerlukan perangkat keras tingkat lanjut. Jika OEM ingin menggunakan UX haptic tingkat lanjut dengan VibrationEffect.Composition (untuk penggunaan terbaik API haptics terbaru), disarankan untuk mengimplementasikan 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 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 menentukan pemetaan.

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

Diagram rentang konstanta HAL dan amplitudo umpan balik

Gambar 5. Rentang konstanta HAL berdasarkan amplitudo

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

Model diskrit untuk pemetaan konstan HAL-API

Gambar 6. Pemetaan konstan HAL-API: Model diskrit

Jika perangkat Anda hanya mendukung dua konstanta HAL dengan amplitudo diskrit, pertimbangkan untuk menggabungkan konstanta HAL tingkat amplitudo Sedang dan Tinggi. Contoh dari 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 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 berskala 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 mengatur faktor skala ( S ). Produsen perangkat dapat menentukan jumlah konstanta HAL berdasarkan berapa banyak tekstur haptik berbeda yang ingin mereka sediakan.

Kisaran konstan HAL berdasarkan tekstur dan amplitudo

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

Model berkelanjutan untuk pemetaan konstan HAL-API

Gambar 8. Pemetaan konstan HAL-API: Model kontinu

Dalam model kontinu, konstanta HAL yang berbeda mewakili tekstur haptik yang berbeda dan bukan 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. Peningkatan variasi dengan skalabilitas amplitudo

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 menggunakan konstanta HAL yang berbeda. Pendekatan ini disarankan jika Anda ingin menambahkan variasi pada tekstur .

Langkah 3: Nilai perangkat keras

Penilaian perangkat keras melibatkan pendefinisian tiga efek haptik, 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 atau penyebut umum dalam pemetaan HAL-API yang disediakan pada 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 haptik khusus singkat

Konstanta VibrationEffect.createOneShot(20,255) ditujukan untuk efek haptik khusus. Singkatnya, impuls khusus tunggal, 20 ms adalah ambang batas maksimum yang disarankan untuk menentukan durasi. Impuls tunggal yang panjangnya lebih dari 20 ms tidak disarankan karena dianggap sebagai getaran yang mendengung .

Bentuk gelombang efek haptik khusus pendek

Gambar 10. Efek haptik khusus singkat

Efek 3: Efek haptik khusus yang panjang dengan variasi amplitudo

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

Bentuk gelombang efek haptik dengan variasi amplitudo

Gambar 11. Efek haptik kustom panjang dengan variasi amplitudo

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

Diagram alur penilaian efek haptik subjektif

Gambar 12. Penilaian subjek terhadap efek haptik 1, 2, dan 3

Lakukan penilaian subjektif

Untuk pemeriksaan koherensi cepat, lakukan penilaian subjektif terlebih dahulu. Tujuan dari penilaian subjektif adalah untuk mengamati amplitudo efek haptik untuk 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 mudah terlihat oleh pengguna seperti yang diharapkan? Menjawab pertanyaan ini membantu Anda menghindari haptik yang gagal , termasuk haptik yang tidak terlihat dan tidak dapat dirasakan pengguna, atau haptik yang tidak diinginkan ketika bentuk gelombang tidak menghasilkan pola sebagaimana dimaksud.