Atribut audio

Pemutar audio mendukung atribut yang menentukan cara sistem audio menangani keputusan pemilihan rute, volume, dan fokus untuk sumber tertentu. Lamaran dapat menambahkan atribut ke pemutaran audio (seperti musik yang diputar oleh layanan streaming atau notifikasi untuk email baru), lalu meneruskan audio sumber ke framework, tempat sistem audio menggunakan atribut untuk membuat keputusan penggabungan dan memberi tahu aplikasi tentang status sistem file.

Di Android 4.4 dan versi sebelumnya, kerangka kerja membuat keputusan pencampuran hanya dengan menggunakan jenis streaming audio. Namun, mendasarkan keputusan tersebut pada jenis aliran terlalu untuk menghasilkan {i>output<i} berkualitas di berbagai aplikasi dan perangkat. Misalnya, pada perangkat seluler, beberapa aplikasi (yaitu Google Maps) memainkan petunjuk arah pada jenis aliran STREAM_MUSIC; tetapi, di perangkat seluler dalam mode proyeksi (yaitu Android Auto), aplikasi tidak dapat mencampur mengemudi arah dengan aliran media lain.

Menggunakan Audio Attribute API, aplikasi yang memberikan sistem audio detail informasi tentang sumber audio tertentu, termasuk penggunaan (mengapa sumber tersebut diputar), jenis konten (apa yang sedang diputar sumber), laporan (bagaimana sumbernya yang harus diputar), dan konteks (baru di Android 9). Syntax (Sintaks):

AudioAttributes {
    mUsage
    mContentType
    mSource
    mFlags
    mTags / mFormattedTags / mBundle    (key value pairs)
}
  • Penggunaan. Menentukan alasan sumber diputar dan kontrolnya pemilihan rute, fokus, dan volume.
  • Jenis konten. Menentukan apa yang diputar oleh sumber (musik, film, pidato, sonifikasi, tidak diketahui).
  • Context. Nilai penggunaan diabstraksi ke HAL Audio.
  • Tanda. Menentukan cara sumber harus diputar. Termasuk dukungan untuk penerapan audibilitas (suara shutter kamera diperlukan dalam di beberapa negara) dan sinkronisasi audio/video hardware.

Untuk pemrosesan dinamis, aplikasi harus membedakan antara film, musik, dan isi ucapan. Informasi tentang data itu sendiri juga penting, seperti kenyaringan dan nilai sampel puncak.

Menggunakan atribut

Penggunaan menentukan konteks penggunaan streaming, sehingga informasi tentang alasan suara tersebut diputar dan untuk apa suara tersebut digunakan. Informasi penggunaan lebih ekspresif daripada jenis streaming dan memungkinkan platform atau kebijakan {i>routing<i} untuk menyempurnakan keputusan volume atau {i>routing<i}.

Sediakan salah satu nilai penggunaan berikut untuk instance apa pun:

  • PENGGUNAAN_UNKNOWN
  • USAGE_MEDIA
  • USAGE_VOICE_COMMUNICATION
  • USAGE_VOICE_COMMUNICATION_SIGNALLING
  • USAGE_ALARM
  • USAGE_NOTIFICATION
  • USAGE_NOTIFICATION_TELEPHONY_RINGTONE
  • USAGE_NOTIFICATION_COMMUNICATION_REQUEST
  • USAGE_NOTIFICATION_COMMUNICATION_INSTANT
  • USAGE_NOTIFICATION_COMMUNICATION_ berdampak pada keterlambatan
  • USAGE_NOTIFICATION_EVENT
  • USAGE_ASSISTANCE_ACCESSIBILITY
  • USAGE_ASSISTANCE_NAVIGATION_{/1}
  • USAGE_ASSISTANCE_SONIFICATION
  • GAME_USAGE
  • USAGE_VIRTUAL_SOURCE
  • USAGE_ASSISTANT

Nilai penggunaan atribut audio sama-sama bersifat eksklusif. Lihat contoh, USAGE_MEDIA dan USAGE_ALARM definisi; untuk pengecualian, lihat AudioAttributes.Builder definisi.

Jenis konten

Jenis konten menentukan suara dan kategori umum dari konten seperti film, ucapan, atau bunyi bip/nada. Framework audio menggunakan informasi jenis konten untuk mengonfigurasi pascapemrosesan audio secara selektif blok. Meskipun memberikan jenis konten bersifat opsional, Anda harus menyertakan jenis informasi tertentu kapan pun jenis kontennya diketahui, seperti menggunakan CONTENT_TYPE_MOVIE untuk layanan streaming film atau CONTENT_TYPE_MUSIC untuk aplikasi pemutaran musik.

Sediakan salah satu nilai jenis konten berikut untuk instance apa pun:

  • CONTENT_TYPE_UNKNOWN (default)
  • CONTENT_TYPE_MOVIE
  • CONTENT_TYPE_MUSIC
  • CONTENT_TYPE_SONIFICATION
  • CONTENT_TYPE_SPEECH

Nilai jenis konten atribut audio sama-sama bersifat eksklusif. Untuk detail tentang jenis konten, lihat audio API atribut tambahan.

Konteks

Setiap suara di Android diidentifikasi oleh aplikasi dan alasan yang bertanggung jawab untuk menghasilkan suara; dan perangkat Android menggunakan informasi ini untuk menentukan cara menyajikan suara. Di Android 8.x dan yang lebih rendah, aplikasi dapat melaporkan alasan pembuatan suara menggunakan jenis streaming lama (mis. AudioSystem.STREAM_MUSIC) atau AudioAttributes. Di beberapa Android 9, nilai AudioAttributes.usage diabstraksi di tingkat HAL sebagai Konteks.

Konteks audio HAL Penggunaan AudioAttributes
MUSIK MEDIA
VOICE_COMMAND USAGE_ASSISTANT
NAVIGASI ASSISTANCE_NAVIGATION_PANDUAN
TELEPON VOICE_COMMUNICATION
RINGKASAN NOTIFIKASI_RINGTONE
NOTIFIKASI NOTIFIKASI
ALARM ALARM
SUARA_SISTEM ASSISTANCE_SONIFICATION
TIDAK DIKETAHUI TIDAK DIKETAHUI

Anda dapat memberikan salah satu nilai CONTEXT_NUMBER berikut untuk setiap :

  • MUSIC_CONTEXT // Pemutaran musik
  • NAVIGATION_CONTEXT // Petunjuk navigasi
  • VOICE_COMMAND_CONTEXT // Sesi perintah suara
  • CALL_RING_CONTEXT // Panggilan suara berdering
  • CALL_CONTEXT // Panggilan suara
  • ALARM_CONTEXT // Suara alarm dari Android
  • NOTIFICATION_CONTEXT // Notifikasi
  • SYSTEM_SOUND_CONTEXT // Suara interaksi pengguna (klik tombol, dsb.)

Tanda

Tanda menentukan cara framework audio menerapkan efek ke pemutaran audio. Sediakan satu atau beberapa flag berikut untuk sebuah instance:

  • FLAG_AUDIBILITY_ENFORCED. Meminta sistem untuk memastikan audibilitas suara. Digunakan untuk memenuhi kebutuhan layanan lama STREAM_SYSTEM_ENFORCED (seperti memaksakan suara shutter kamera).
  • HW_AV_SYNC. Meminta sistem memilih streaming output yang mendukung sinkronisasi perangkat keras A/V.

Tanda atribut audio bersifat non-eksklusif dan dapat digabungkan. Untuk mengetahui detail tentang penanda ini, lihat audio API atribut tambahan.

Contoh

Dalam contoh ini, AudioAttributes.Builder menentukan AudioAttributes untuk digunakan oleh AudioTrack baru :

AudioTrack myTrack = new AudioTrack(
  new AudioAttributes.Builder()
 .setUsage(AudioAttributes.USAGE_MEDIA)
    .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
    .build(),
  myFormat, myBuffSize, AudioTrack.MODE_STREAM, mySession);

Kompatibilitas

Developer aplikasi harus menggunakan atribut audio saat membuat atau mengupdate aplikasi untuk Android 5.0 dan yang lebih tinggi. Namun, aplikasi tidak yang diperlukan untuk memanfaatkan atribut; mereka dapat menangani jenis streaming lama saja atau tetap tidak menyadari keberadaan atribut (yaitu pemutar media umum yang tidak tahu apa pun tentang konten yang diputar).

Dalam kasus tersebut, framework mempertahankan kompatibilitas mundur dengan versi lama perangkat dan rilis Android dengan menerjemahkan streaming audio lama secara otomatis jenis ke atribut audio. Namun, kerangka kerja ini tidak menerapkan atau menjamin pemetaan ini di seluruh perangkat, produsen, atau rilis Android.

Pemetaan kompatibilitas:

Android 5.0 dan yang lebih tinggi Android 4.4 dan yang lebih lama
CONTENT_TYPE_SPEECH
USAGE_VOICE_COMMUNICATION
STREAM_VOICE_CALL
CONTENT_TYPE_SONIFICATION
USAGE_ASSISTANCE_SONIFICATION
STREAM_SYSTEM
CONTENT_TYPE_SONIFICATION
USAGE_NOTIFICATION_RINGTONE
STREAM_RING
CONTENT_TYPE_MUSIC
USAGE_UNKNOWN
USAGE_MEDIA
USAGE_GAME
USAGE_ASSISTANCE_ACCESSIBILITY
USAGE_ASSISTANCE_NAVIGATION_GUIDANCE
STREAM_MUSIC
CONTENT_TYPE_SONIFICATION
USAGE_ALARM
STREAM_ALARM
CONTENT_TYPE_SONIFICATION
USAGE_NOTIFICATION
USAGE_NOTIFICATION_COMMUNICATION_REQUEST
USAGE_NOTIFICATION_COMMUNICATION_INSTANT
USAGE_NOTIFICATION_COMMUNICATION_DELAYED
USAGE_NOTIFICATION_EVENT
STREAM_NOTIFICATION
CONTENT_TYPE_SPEECH (@sembunyikan) STREAM_BLUETOOTH_SCO
FLAG_AUDIBILITY_ENFORCED (@sembunyikan) STREAM_SYSTEM_ENFORCED
CONTENT_TYPE_SONIFICATION
USAGE_VOICE_COMMUNICATION_SIGNALLING
(@sembunyikan) STREAM_DTMF

Jenis aliran data yang tidak digunakan lagi

Android 9 menghentikan penggunaan jenis aliran data berikut untuk penggunaan otomotif:

  • STREAM_DEFAULT
  • STREAM_VOICE_CALL
  • SISTEM_STREAM
  • CINCIN_STREAMING
  • STREAM_MUSIK
  • STREAM_ALARM
  • STREAM_NOTIFICATION
  • STREAM_BLUETOOTH_SCO
  • STREAM_SYSTEM_ENFORCED
  • STREAM_DTMF
  • STREAM_TTS
  • STREAM_ACCESSIBILITY

Untuk detail selengkapnya, lihat Audio Otomotif.