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.
Gambar 1. Membangun pengetahuan antara produsen perangkat dan pengembang
Daftar periksa implementasi haptics
- Daftar konstanta untuk mengimplementasikan haptics.
Konstanta peta antara HAL dan API
- Memetakan rekomendasi antara konstanta API publik (bernama placeholder dalam kerangka kerja) dan konstanta HAL, yang mengimplementasikan placeholder.
- Lihat Prinsip-prinsip desain untuk memandu pemetaan yang direkomendasikan untuk mempelajari lebih lanjut tentang proses ini.
- 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.
Gambar 2. Menerapkan efek
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.
EFFECT_CLICK
Getaran bentuk gelombang 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 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 dibuat dengan
VibrationEffect.createWaveform
dan pengaturan waktu (0, 30, 100, 30).EFFECT_TICK
Getaran bentuk gelombang dibuat dengan
VibrationEffect.createWaveform
dan pengaturan waktu yang dikonfigurasi diframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
.
Gambar 4. Menerapkan konstanta umpan balik
Periksa status konstanta umpan balik publik berikut.
Konstanta haptik | Lokasi dan ringkasan |
---|---|
| 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.
- 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 (
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.
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 .
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.
Gambar 7. Kisaran konstanta HAL berdasarkan tekstur (HAL_H0) dan skala amplitudo (S)
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.
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 .
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.
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.
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.