Mulai 27 Maret 2025, sebaiknya gunakan android-latest-release, bukan aosp-main, untuk mem-build dan berkontribusi pada AOSP. Untuk mengetahui informasi selengkapnya, lihat Perubahan pada AOSP.
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Rilis Android 10 mencakup pemfaktoran ulang signifikan pada pengelola kebijakan audio untuk memberikan fleksibilitas yang lebih besar dalam mendukung kasus penggunaan otomotif yang kompleks:
Strategi perutean khusus OEM.
Grup volume yang dapat disesuaikan untuk grup jenis streaming lama yang menggunakan kurva volume yang sama.
Strategi perutean yang dideklarasikan oleh mesin kebijakan audio, bukan di-hard code.
Kurva dan grup volume yang dikelola oleh mesin kebijakan audio.
Refaktorisasi internal yang mempersiapkan pemisahan antara kode umum dan kode yang dapat dikonfigurasi pada masa mendatang
serta menawarkan pengelolaan perangkat audio yang lebih kaya. Misalnya, penggunaan semua properti perangkat, bukan hanya
jenisnya dalam aturan kebijakan.
Android 7.0 memperkenalkan format file konfigurasi kebijakan audio (XML) untuk mendeskripsikan topologi audio Anda.
Rilis Android sebelumnya mengharuskan penggunaan
device/<company>/<device>/audio/audio_policy.conf
untuk mendeklarasikan perangkat audio yang ada di produk Anda (Anda dapat melihat contoh
file ini untuk hardware audio Galaxy Nexus di
device/samsung/tuna/audio/audio_policy.conf). Namun, CONF adalah
format sederhana dan eksklusif yang terlalu terbatas untuk mendeskripsikan topologi kompleks untuk
vertical seperti televisi dan mobil.
Android 7.0 menghentikan penggunaan audio_policy.conf dan menambahkan dukungan untuk menentukan topologi audio menggunakan format file XML yang lebih mudah dibaca, memiliki berbagai alat pengeditan dan parsing, serta cukup fleksibel untuk mendeskripsikan topologi audio yang kompleks. Android 7.0 menggunakan
flag build USE_XML_AUDIO_POLICY_CONF untuk memilih format
XML file konfigurasi.
Keuntungan format XML
Seperti dalam file CONF, file XML memungkinkan penentuan jumlah dan jenis profil streaming output dan input, perangkat yang dapat digunakan untuk pemutaran dan pengambilan, serta atribut audio. Selain itu, format XML menawarkan peningkatan berikut:
Di Android 10, lebih dari satu aplikasi perekaman aktif diizinkan secara bersamaan.
Mulai merekam tidak pernah ditolak karena situasi serentak.
Callback registerAudioRecordingCallback(AudioManager.AudioRecordingCallback cb)
memberi tahu klien tentang perubahan jalur pengambilan.
Dalam situasi berikut, klien akan mendapatkan sampel audio senyap:
Kasus penggunaan yang sensitif terhadap privasi (misalnya, VOICE_COMMUNICATION) sedang aktif.
Klien tidak memiliki layanan latar depan atau UI latar depan.
Peran khusus dikenali oleh kebijakan:
Layanan aksesibilitas: Dapat merekam meskipun kasus penggunaan yang sensitif terhadap privasi sedang aktif.
Asisten: Dianggap sensitif terhadap privasi jika UI berada di atas.
Profil audio memiliki struktur yang mirip dengan deskriptor audio sederhana HDMI, sehingga memungkinkan serangkaian
frekuensi sampling/masker saluran yang berbeda untuk setiap format audio.
Ada definisi eksplisit untuk semua kemungkinan koneksi antara perangkat dan aliran.
Sebelumnya, aturan implisit memungkinkan semua perangkat yang terhubung ke modul HAL yang sama
terhubung, sehingga mencegah kebijakan audio mengontrol koneksi yang diminta dengan API patch audio. Dalam format XML, deskripsi topologi menentukan batasan koneksi.
Dukungan untuk includes menghindari pengulangan definisi pengiriman ulang, USB, atau A2DP standar.
Kurva volume dapat disesuaikan. Sebelumnya, tabel volume di-hardcode. Dalam format XML, tabel volume dijelaskan dan dapat disesuaikan.
Template di
frameworks/av/services/audiopolicy/config/audio_policy_configuration.xml
menunjukkan banyak fitur ini yang sedang digunakan.
Format dan lokasi file
File konfigurasi kebijakan audio baru adalah
audio_policy_configuration.xml dan terletak di
/system/etc. Contoh berikut menunjukkan konfigurasi kebijakan audio sederhana dalam
format file XML untuk Android 12 dan untuk versi di bawah
Android 12.
Menampilkan contoh kebijakan audio untuk Android 12
Struktur tingkat teratas berisi modul yang sesuai dengan setiap modul hardware HAL audio, dengan setiap modul memiliki daftar port campuran, port perangkat, dan rute:
Port campuran menjelaskan kemungkinan profil konfigurasi untuk streaming
yang dapat dibuka di HAL audio untuk pemutaran dan pengambilan.
Port perangkat menjelaskan perangkat yang dapat dipasang dengan
jenisnya (dan secara opsional alamat dan properti audio, jika relevan).
Routes dipisahkan dari deskriptor port campuran,
yang memungkinkan deskripsi rute dari perangkat ke perangkat atau streaming ke perangkat.
Tabel volume adalah daftar sederhana titik yang menentukan kurva yang digunakan untuk menerjemahkan dari indeks UI ke volume dalam dB. File include terpisah menyediakan kurva
default, tetapi setiap kurva untuk kasus penggunaan dan kategori perangkat tertentu dapat
ditimpa.
Metode Penyertaan XML (XInclude) dapat digunakan untuk menyertakan informasi konfigurasi kebijakan audio yang ada di file XML lain. Semua file yang disertakan harus mengikuti struktur yang dijelaskan di atas dengan batasan berikut:
File hanya dapat berisi elemen tingkat teratas.
File tidak boleh berisi elemen XInclude.
Gunakan include untuk menghindari penyalinan informasi konfigurasi modul HAL audio Android Open Source Project (AOSP) standar ke semua file konfigurasi kebijakan audio (yang rentan terhadap error). File XML konfigurasi kebijakan audio standar
disediakan untuk HAL audio berikut:
AudioPolicyManager.cpp dibagi menjadi beberapa modul
agar mudah dikelola dan dikonfigurasi. Organisasi
frameworks/av/services/audiopolicy mencakup
modul berikut.
Modul
Deskripsi
/managerdefault
Mencakup penerapan antarmuka dan perilaku generik yang umum untuk semua aplikasi. Mirip dengan AudioPolicyManager.cpp dengan fungsi
mesin dan konsep umum yang diabstraksi.
/common
Menentukan class dasar (misalnya, struktur data untuk profil streaming audio input/output, deskriptor perangkat audio, patch audio, dan port audio). Sebelumnya, ini ditentukan di dalam AudioPolicyManager.cpp.
/engine
Menerapkan aturan yang menentukan perangkat dan volume mana yang harus digunakan untuk
kasus penggunaan tertentu. Bagian ini menerapkan antarmuka standar dengan bagian generik, seperti untuk mendapatkan perangkat yang sesuai untuk kasus penggunaan pemutaran atau pengambilan gambar tertentu, atau untuk menyetel perangkat terhubung atau status eksternal (yaitu, status panggilan penggunaan paksa) yang dapat mengubah keputusan perutean.
Penerapan mesin kebijakan yang mengandalkan Framework Parameter (lihat di bawah).
Konfigurasi didasarkan pada Framework Parameter dan tempat kebijakan
ditentukan oleh file XML.
/enginedefault
Implementasi mesin kebijakan berdasarkan implementasi Android Audio Policy Manager sebelumnya. Ini adalah default dan mencakup aturan hard code yang sesuai dengan implementasi Nexus dan AOSP.
/service
Mencakup antarmuka binder, threading, dan implementasi penguncian dengan
antarmuka ke framework lainnya.
Konfigurasi menggunakan Parameter Framework
Kode kebijakan audio disusun agar mudah dipahami dan dikelola, sekaligus mendukung kebijakan audio yang sepenuhnya ditentukan oleh file konfigurasi. Desain organisasi dan kebijakan audio didasarkan pada Parameter Framework Intel, framework berbasis plugin dan berbasis aturan untuk menangani parameter.
Dengan menggunakan kebijakan audio yang dapat dikonfigurasi, OEM vendor dapat:
Jelaskan struktur sistem dan parameternya dalam XML.
Tulis (dalam C++) atau gunakan kembali backend (plugin) untuk mengakses parameter yang dijelaskan.
Tentukan (dalam XML atau dalam bahasa khusus domain) kondisi/aturan yang menentukan
parameter tertentu harus mengambil nilai tertentu.
AOSP menyertakan contoh file konfigurasi kebijakan audio yang menggunakan Framework Parameter di Frameworks/av/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/PolicyConfigurableDomains.xml. Untuk
mengetahui detailnya, lihat dokumentasi Intel tentang
Parameter Framework.
Di Android 10 atau yang lebih lama, kebijakan audio yang dapat dikonfigurasi dipilih menggunakan opsi build USE_CONFIGURABLE_AUDIO_POLICY.
Di Android 11 atau yang lebih tinggi, versi mesin kebijakan audio dipilih dalam file audio_policy_configuration.xml.
Untuk memilih mesin kebijakan audio yang dapat dikonfigurasi, tetapkan nilai atribut engine_library
elemen globalConfiguration ke configurable
seperti dalam contoh berikut:
Android 6.0 memperkenalkan Enumeration and Selection API publik yang berada di atas infrastruktur patch audio/port audio dan memungkinkan developer aplikasi menunjukkan preferensi untuk output atau input perangkat tertentu untuk rekaman atau trek audio yang terhubung.
Di Android 7.0, Enumeration and Selection API diverifikasi oleh pengujian CTS dan diperluas untuk menyertakan perutean untuk aliran audio C/C++ (OpenSL ES) native.
Perutean streaming native terus dilakukan di Java, dengan penambahan
antarmuka AudioRouting yang menggantikan, menggabungkan, dan menghentikan penggunaan
metode perutean eksplisit yang khusus untuk class AudioTrack dan
AudioRecord.
Untuk mengetahui detail tentang Enumeration and Selection API, lihat
antarmuka konfigurasi Android dan OpenSLES_AndroidConfiguration.h.
Untuk mengetahui detail tentang perutean audio, lihat
AudioRouting.
Dukungan multisaluran
Jika hardware dan driver Anda mendukung audio multichannel melalui HDMI, Anda dapat
mengeluarkan aliran audio langsung ke hardware audio (ini melewati mixer
AudioFlinger sehingga tidak di-downmix ke dua saluran.) HAL audio
harus mengekspos apakah profil stream output mendukung kemampuan audio multichannel. Jika HAL mengekspos kemampuannya, pengelola kebijakan default
mengizinkan pemutaran multisaluran melalui HDMI. Untuk mengetahui detail implementasinya, lihat
device/samsung/tuna/audio/audio_hw.c.
Untuk menentukan bahwa produk Anda berisi output audio multisaluran, edit file konfigurasi kebijakan audio untuk mendeskripsikan output multisaluran untuk produk Anda. Contoh berikut dari
frameworks/av/services/audiopolicy/config/primary_audio_policy_configuration_tv.xml
menampilkan mask channel dinamis, yang berarti bahwa pengelola kebijakan audio mengkueri mask channel yang didukung oleh sink HDMI setelah koneksi.
Anda juga dapat menentukan mask channel statis seperti
AUDIO_CHANNEL_OUT_5POINT1. Mixer AudioFlinger secara otomatis melakukan downmix konten ke stereo saat dikirim ke perangkat audio yang tidak mendukung audio multichannel.
Codec media
Pastikan codec audio yang didukung hardware dan driver Anda dideklarasikan dengan benar untuk produk Anda. Untuk mengetahui detailnya, lihat
Mengekspos Codec ke Framework.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-10-10 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-10-10 UTC."],[],[]]