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

Yayasan UX untuk Kerangka Haptic

Semua peningkatan framework Android yang dibangun di sekitar haptics didorong oleh serangkaian prinsip UX yang berkembang dengan kecepatan yang sama. Prinsip saat ini melibatkan penggantian getaran buzzy dengan haptics yang jelas , dan menjelajahi haptics yang kaya .

Prinsip UX

Gambar 1. Prinsip saat ini

API berdasarkan Tahun

Gambar 2. Haptics API menurut tahun

Getaran buzzy

Kembali ke pager dan ponsel berfitur, getaran berbasis buzzer ERM berkualitas rendah tetapi hemat daya telah digunakan sebagai pengganti dering pendengaran dalam mode senyap . Komponen perangkat keras lawas yang menghasilkan suara keras dan tidak menyenangkan dapat merusak UX haptic dengan memberikan tayangan berkualitas rendah (misalnya, ponsel yang murah dan rusak).

Hapus haptics

Clear haptics mendukung sensasi perubahan status diskrit (misalnya, perubahan biner selama proses nyala / mati). Karena sifat dari kemampuan diskrit , haptic yang jelas dihasilkan sebagai entitas tunggal (misalnya, satu efek haptik per satu peristiwa masukan).

Android bertujuan untuk memberikan haptics yang jelas dengan sensasi yang kuat namun tajam, bukan sensasi yang buzzy atau lembek.

Konstanta haptik standar yang dibuat untuk mendukung haptik jelas meliputi yang berikut ini.

Di HapticFeedbackConstants :

  • CLOCK_TICK
  • CONFIRM
  • CONTEXT_CLICK
  • GESTURE_END
  • GESTURE_START
  • KEYBOARD_PRESS
  • KEYBOARD_RELEASE
  • KEYBOARD_TAP
  • LONG_PRESS
  • REJECT
  • TEXT_HANDLE_MOVE
  • VIRTUAL_KEY
  • VIRTUAL_KEY_RELEASE

Dalam VibrationEffect :

  • EFFECT_CLICK
  • EFFECT_DOUBLE_CLICK
  • EFFECT_HEAVY_CLICK
  • EFFECT_TICK

Membangun pengetahuan umum antara produsen dan developer perangkat adalah kunci untuk meningkatkan kualitas haptics secara keseluruhan dalam ekosistem Android. Gunakan daftar periksa dasar , penilaian perangkat keras , dan CDD . untuk mempelajari lebih lanjut tentang implementasi haptic.

Tekan dan lepaskan

Gambar 3. Menekan dan melepaskan.

Haptics yang kaya

Rich haptics adalah kategori haptics berkembang yang melampaui efek berbasis impuls tunggal. Android bertujuan untuk mendukung haptics yang kaya dengan komposabilitas tinggi dan penyesuaian dengan tingkat perincian yang bagus. Kasus penggunaan berikut didukung di Android 11 atau lebih rendah.

Rich Haptics

Gambar 4. Haptics kaya dengan tekstur geser

Menarik dan Menggesek

Gambar 5. Menarik dan menggesek

Kasus penggunaan 1: Tekstur geser

Jika efek haptik diulang saat jari meluncur di atas permukaan sentuh (misalnya, menyeret, menggesek, menjelajahi permukaan dengan tekstur haptik bayangan), efek haptik berulang sebaiknya tajam dan halus.

Jika efek individu buzzy daripada crisp, maka interval antara pengulangan kemungkinan besar akan terhapus. Hasilnya adalah satu buzz panjang, bukan beberapa sinyal diskrit.

Jika amplitudo tidak cukup halus, energi haptik yang dirasakan menumpuk melalui pengulangan, menghasilkan haptik yang sangat kuat di akhir pengulangan.

Menerapkan tekstur haptik permukaan sederhana untuk isyarat gesek dan seret

Gunakan CLOCK_TICK dan TEXT_HANDLE_MOVE di HapticFeedbackConstants . Konstanta ini menentukan karakteristik pengulangan dan amplitudo.

Menciptakan efek Anda sendiri

Untuk membuat efek Anda sendiri, buat desain dengan merangkai urutan PRIMITIVE_CLICK dan PRIMITIVE_TICK dalam VibrationEffect.Composition . Anda dapat menyesuaikan karakteristik pengulangan dan skala amplitudo menggunakan addPrimitive(int primitiveID, float scale, int delay) . Dukungan mengandalkan kapabilitas CAP_COMPOSE_EFFECTS Antarmuka HAL Vibrator .

Kasus penggunaan 2: Getaran panjang dengan efek easy-in

Getaran panjang adalah getaran amplitudo halus yang bertransisi dari 0 ke amplitudo target. Getaran panjang dapat menghasilkan haptik perhatian yang dapat dilihat dengan mudah. Namun, getaran panjang yang tiba-tiba dapat mengejutkan pengguna di lingkungan yang tenang, dan sering kali menghasilkan suara dengung yang terdengar. Untuk menghasilkan getaran panjang yang lebih menyenangkan, terapkan efek kemudahan di awal getaran panjang. Ini menghasilkan transisi amplitudo halus yang dibangun menuju amplitudo target.

Menerapkan efek kemudahan

  1. Periksa kemampuan perangkat keras kontrol amplitudo dengan android.os.Vibrator.hasAmplitudeControl() .

    • Hasilnya harus true untuk menghasilkan efek kemudahan dengan amplitudo yang bervariasi.
  2. Gunakan VibrationEffect . createWaveform(timings[], amplitudes[], int repeat) .

  3. Sesuaikan rangkaian pengaturan timings[] dan amplitudes[] untuk menghasilkan kurva kemudahan, seperti yang ditunjukkan pada Gambar 6.

Getaran Panjang

Gambar 6. Kurva kemudahan-dalam getaran panjang

Kasus penggunaan 3: Haptik berpasangan audio

Haptik berpasangan audio adalah pola haptik yang digabungkan dengan ritme audio untuk menarik perhatian pengguna.

Haptics yang dipasangkan dengan audio: Manfaat

Untuk menerapkan haptik berpasangan audio, kombinasikan haptik jernih dengan getaran panjang. Sensasi haptik yang kuat namun pendek dari haptics yang jernih menghasilkan pola ritme yang berbeda. Ketika dikombinasikan dengan tingkat rangsangan tinggi yang diberikan oleh getaran panjang, ini sangat bagus untuk menarik perhatian pengguna.

Penting untuk mempertimbangkan pola ritme sensasi. Jika tidak ada rasa ritme, pengguna menganggap sensasi haptik sebagai dengungan acak, dan cenderung mengabaikannya.

Pasangan Audio

Gambar 7. Contoh haptics pasangan audio

Haptik berpasangan audio: Tip untuk menerapkan

Menerapkan haptic yang digabungkan dengan audio membutuhkan pemahaman dasar tentang pemutaran konten saluran audio dan haptik. Ingatlah hal-hal berikut ini.

  • Gunakan kelas MediaPlayer atau SoundPool .

    • Aset dalam format OGG dengan kunci metadata khusus ( ANDROID_HAPTIC diikuti oleh sejumlah saluran haptik) menunjukkan adanya data haptik dan pemutaran dengan MediaPlayer dan SoundPool .
  • Tunjukkan dukungan haptics dan pemutaran audio di audio_policy_configuration.xml .

    • Gunakan profil keluaran dengan saluran haptics AUDIO_CHANNEL_OUT_HAPTIC_A|B
    • Untuk aliran keluaran dengan saluran haptik, ingat bahwa saluran haptik disajikan sebagai saluran tambahan dalam data.

    Contoh

    Jika masker saluran untuk aliran keluaran terlihat seperti ini:

    AUDIO_CHANNEL_OUT_STEREO_HAPTIC_A

    Maka setiap sampel akan terlihat seperti ini:

    AUDIO_LEFT_CHANNEL,AUDIO_RIGHT_CHANNEL,HAPTIC_CHANNEL_A

  • Ubah AudioAttributes.Builder( ).setHapticChannelsMuted(boolean muted)

    ke false untuk memutar saluran haptic.

    • Secara default, saluran haptic dibungkam ( true ).
    • Kasus penggunaan termasuk nada dering dan suara UI dengan haptik dan umpan balik sinkron.
  • Vibrator HAL harus menerapkan dukungan kontrol eksternal.

Audio Ditambah Haptics

Gambar 8. Menerapkan haptics yang digabungkan dengan audio