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.
Gambar 1. Membangun pengetahuan antara produsen dan pengembang perangkat
Daftar periksa penerapan haptik
- Daftar konstanta untuk mengimplementasikan haptics.
Memetakan konstanta antara HAL dan API
- Memetakan rekomendasi antara konstanta API publik (yang diberi nama 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 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.
Gambar 2. Efek penerapan
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.
EFFECT_CLICK
Getaran bentuk gelombang dibuat dengan
VibrationEffect.createWaveform
dan pengaturan waktunya dikonfigurasi diframeworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern
.EFFECT_HEAVY_CLICK
Getaran bentuk gelombang dibuat dengan
VibrationEffect.createWaveform
dan pengaturan waktunya dikonfigurasi diframeworks/base/core/res/res/values/config.xml##config_longPressVibePattern
.EFFECT_DOUBLE_CLICK
Getaran bentuk gelombang dibuat dengan
VibrationEffect.createWaveform
dan pengaturan waktunya (0, 30, 100, 30).EFFECT_TICK
Getaran bentuk gelombang dibuat dengan
VibrationEffect.createWaveform
dan pengaturan waktunya 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 |
---|---|
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.
- 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 (
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.
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 .
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.
Gambar 7. Rentang konstanta HAL berdasarkan tekstur (HAL_H0) dan skala amplitudo (S)
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.
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 .
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.
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.
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.