Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Menerapkan Haptik

Produsen perangkat umumnya dianggap sebagai pemilik aset pribadi yang dibuat untuk setiap perangkat. Dengan demikian, upaya rekayasa mereka sering terfokus pada basis per-perangkat; sedikit atau tidak ada upaya untuk menjaga konsistensi perangkat lain dalam ekosistem.

Sebaliknya langsung, pengembang berusaha untuk membangun aplikasi pekerjaan yang pada semua ponsel Android dalam 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 hardware memainkan peran penting dalam memastikan bahwa produsen dapat menerapkan API Android haptics pada setiap perangkat.

Halaman ini menyediakan daftar periksa langkah demi langkah untuk menyiapkan kepatuhan perangkat keras untuk penggunaan Android haptics API terbaik.

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

Diagram kasus penggunaan haptics untuk pengembang aplikasi dan produsen perangkat

Gambar 1. Membangun pengetahuan antara produsen perangkat dan pengembang

Daftar periksa implementasi haptics

  1. Terapkan konstanta

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

  3. Menilai perangkat keras

    • 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.

Flowchart proses implementasi haptics

Efek Gambar 2. Pelaksana

Flowchart langkah-langkah untuk mengimplementasikan primitif

Primitif Gambar 3. Pelaksana

Periksa status implementasi konstanta haptic berikut.

Konstanta haptik Lokasi dan ringkasan
EFFECT_TICK , EFFECT_CLICK , EFFECT_HEAVY_CLICK , EFFECT_DOUBLE_CLICK VibrationEffect kelas
Konstanta haptic di VibrationEffect tidak mencakup gagasan peristiwa input, dan tidak memiliki elemen UI. Konstanta termasuk gagasan tingkat energi sebagai gantinya, seperti EFFECT_CLICK dan EFFECT_HEAVY_CLICK , yang disebut oleh createPredefined() .
PRIMITIVE_TICK , PRIMITIVE_CLICK , PRIMITIVE_LOW_TICK> , PRIMITIVE_SLOW_RISE , PRIMITIVE_QUICK_RISE , PRIMITIVE_QUICK_FALL , PRIMITIVE_SPIN , PRIMITIVE_THUD VibrationEffect.Composition kelas
Konstanta haptic di VibrationEffect.Composition diperbolehkan untuk memiliki intensitas scalable, yang disebut oleh addPrimitive(int primitiveId, float scale, int delay) .

Getaran alternatif dijelaskan di bawah akan dilakukan pada perangkat yang tidak melaksanakan VibrationEffect konstanta. Disarankan untuk memperbarui konfigurasi ini agar berkinerja terbaik pada perangkat tersebut.

  1. EFFECT_CLICK

    Gelombang getaran dibuat dengan VibrationEffect.createWaveform dan timing dikonfigurasi pada frameworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern .

  2. EFFECT_HEAVY_CLICK

    Gelombang getaran dibuat dengan VibrationEffect.createWaveform dan timing dikonfigurasi pada frameworks/base/core/res/res/values/config.xml##config_longPressVibePattern .

  3. EFFECT_DOUBLE_CLICK

    Gelombang getaran dibuat dengan VibrationEffect.createWaveform dan timing (0, 30, 100, 30).

  4. EFFECT_TICK

    Gelombang getaran dibuat dengan VibrationEffect.createWaveform dan timing dikonfigurasi pada frameworks/base/core/res/res/values/config.xml##config_clockTickVibePattern .

Diagram alir langkah-langkah untuk menguji umpan balik haptic

Konstanta umpan balik Gambar 4. Pelaksana

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

HapticFeedbackConstants kelas
Konstanta haptic di HapticFeedbackConstants membantu peristiwa input dengan elemen UI tertentu, seperti KEYBOARD_PRESS dan KEYBOARD_RELEASE , yang disebut 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 fallback 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 kontinu (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 maju UX haptic dengan VibrationEffect.Composition (untuk penggunaan terbaik dari API haptics terbaru), menerapkan perangkat keras mereka menggunakan model ini dianjurkan.

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. Sebuah pertanyaan yang spesifik terstruktur sekitar yang gagasan terlihat seperti ini: Berapa banyak efek haptic single-impuls dengan perbedaan amplitudo manusia-jelas dapat didefinisikan dalam 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.

Diagram rentang konstan HAL dan amplitudo umpan balik

Gambar 5. HAL kisaran konstan dengan 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 lebih lanjut, lihat Haptics UX Desain .

Model diskrit untuk pemetaan konstan HAL-API

Gambar 6. HAL-API konstan pemetaan: Model Discrete

Jika perangkat Anda hanya mendukung dua konstanta HAL dengan amplitudo diskrit, pertimbangkan untuk menggabungkan konstanta HAL level amplitudo Sedang dan Tinggi. Contoh dari gagasan ini dalam praktek akan memetakan EFFECT_CLICK dan EFFECT_HEAVY_CLICK untuk konstanta HAL yang sama, yang akan menjadi Medium tingkat amplitudo HAL konstan. Jika perangkat Anda mendukung hanya satu konstan HAL dengan amplitudo diskrit, mempertimbangkan penggabungan tiga tingkat menjadi satu.

Model berkelanjutan

Model kontinu dengan skalabilitas amplitudo dapat diterapkan untuk menentukan konstanta HAL. Faktor skala ( S ) dapat diterapkan untuk konstanta HAL (misalnya, HAL_H0 , HAL_H1 ) untuk menghasilkan skala HAL ( HAL_H0 x S ). Dalam hal ini, HAL skala dipetakan untuk mendefinisikan konstanta API ( HAL_H0 x S1 = H0S1 = EFFECT_TICK ) seperti pada gambar 7. Dengan menggunakan skalabilitas amplitudo model terus menerus, perangkat dapat menyimpan sejumlah kecil konstanta HAL dengan tekstur yang khas dan menambahkan variasi amplitudo dengan menyesuaikan faktor skala ( S ). Produsen perangkat dapat menentukan jumlah konstanta HAL berdasarkan berapa banyak tekstur haptic berbeda yang ingin mereka berikan.

Kisaran konstan HAL berdasarkan tekstur dan amplitudo

Gambar 7. HAL kisaran konstan oleh tekstur (HAL_H0) dan skala amplitudo (S)

Model berkelanjutan untuk pemetaan konstan HAL-API

Gambar 8. HAL-API konstan pemetaan: Model berkelanjutan

Dalam model terus menerus, konstanta HAL yang berbeda mewakili tekstur haptic 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.

Meningkatkan Variasi 1

Meningkatkan Variasi 2

Gambar 9. Meningkatkan variasi dengan skalabilitas amplitudo

Catatan: Gambar di atas menggambarkan contoh spesifik pemetaan konstan, sehingga konvensi penamaan yang hipotetis. Melakukan proses ini unik untuk setiap produsen perangkat.

Untuk semua konstanta API scalable seperti PRIMITIVE_TICK dan PRIMITIVE_CLICK di VibrationEffect.Composition , tingkat energi API konstan tergantung pada float scale paramater ketika API konstan dinyatakan 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 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

The VibrationEffect.EFFECT_CLICK konstan adalah efek dasar atau denominator umum di HAL-API pemetaan diberikan pada Langkah 2. Ini dipetakan dengan efek yang paling sering digunakan, HapticFeedbackConstants.KEYBOARD_PRESS . Menilai efek ini membantu menentukan kesiapan perangkat target Anda untuk haptics jelas .

Efek 2: Efek haptic kustom pendek

The VibrationEffect.createOneShot(20,255) konstan untuk efek kustom haptic. Singkatnya, impuls khusus tunggal, 20 ms adalah ambang batas maksimum yang disarankan untuk menentukan durasi. Sebuah impuls tunggal lebih dari 20 ms tidak dianjurkan karena itu dianggap sebagai getaran buzzy .

Bentuk gelombang efek haptic kustom pendek

Gambar 10. Short efek kustom haptic

Efek 3: Efek haptic kustom panjang dengan variasi amplitudo

The VibrationEffect.createWaveform(timings[], amplitudes[], int repeat) konstan untuk efek kustom panjang dengan variasi amplitudo. Kemampuan untuk menghasilkan berbagai amplitudo efek kustom haptic merupakan salah satu indikator untuk mengevaluasi kemampuan perangkat untuk haptics kaya . Direkomendasikan timings [] dan amplitudes [] adalah {500, 500} dan {128, 255} , masing-masing, yang menyajikan kecenderungan peningkatan amplitudo dari 50% menjadi 100%, dengan 500 ms sampling rate.

Bentuk gelombang efek haptic dengan variasi amplitudo

Gambar 11. Panjang efek kustom haptic dengan variasi amplitudo

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

Diagram alir penilaian efek haptic subjektif

Gambar 12. penilaian Subyek efek haptic 1, 2, dan 3

Melakukan 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 dilihat manusia.

Sebuah pertanyaan yang spesifik terstruktur sekitar gagasan ini terlihat seperti ini: Dapatkah perangkat menghasilkan mudah efek haptic jelas kepada pengguna seperti yang diharapkan? Menjawab pertanyaan ini membantu Anda menghindari haptics gagal, termasuk haptics tak terlihat bahwa pengguna tidak dapat merasakan, atau haptics tidak diinginkan di mana gelombang tidak menghasilkan pola sebagaimana dimaksud.