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.
Gambar 1. Membangun pengetahuan antara produsen dan developer perangkat
Checklist penerapan haptic
-
- Daftar konstanta untuk mengimplementasikan haptic.
Memetakan konstanta antara HAL dan API
- Rekomendasi pemetaan antara konstanta API publik (bernama placeholder dalam framework) dan konstanta HAL, yang mengimplementasikan placeholder.
- Lihat Prinsip desain untuk memandu pemetaan yang direkomendasikan untuk mempelajari proses ini lebih lanjut.
-
- 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.
Gambar 2. Menerapkan efek
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.
EFFECT_CLICK
Getaran bentuk gelombang yang 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 yang dibuat dengan
VibrationEffect.createWaveform
dan waktu yang dikonfigurasi diframeworks/base/core/res/res/values/config.xml##config_longPressVibePattern
.EFFECT_DOUBLE_CLICK
Getaran bentuk gelombang yang dibuat dengan
VibrationEffect.createWaveform
dan waktu (0, 30, 100, 30).EFFECT_TICK
Getaran bentuk gelombang yang dibuat dengan
VibrationEffect.createWaveform
dan waktu yang dikonfigurasi diframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
.
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.
- 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 (
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.
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.
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.
Gambar 7. Rentang konstanta HAL menurut tekstur (HAL_H0) dan skala amplitudo (S)
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.
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.
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.
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.
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.