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

Audio HAL

Hardware Abstraction Layer (HAL) audio Android menghubungkan API framework khusus audio level lebih tinggi di android.media ke driver audio dan perangkat keras yang mendasarinya. Audio HAL mendefinisikan antarmuka standar yang dipanggil oleh layanan audio. Ini harus diterapkan agar perangkat keras audio berfungsi dengan benar.

Halaman ini memberikan ikhtisar audio HAL dan memberikan detail API dan persyaratan implementasinya.

Antarmuka Audio HAL

Antarmuka audio HAL ditentukan menggunakan HIDL di file .hal dan skema XSD untuk file konfigurasi, yang ditunjukkan sebagai berikut:

audio_hal

Gambar 1: Antarmuka Audio HAL

File konfigurasi

Kebijakan audio dan efek audio File konfigurasi XML dianggap sebagai bagian dari antarmuka Audio HAL. File-file ini harus sesuai dengan skema mereka, dan kesesuaian diverifikasi oleh tes VTS.

Sebagai bagian dari penerapan HAL audio, Anda harus membuat file konfigurasi kebijakan audio yang menjelaskan topologi audio. Kemampuan Audio HAL harus dideklarasikan dalam file audio_policy_configuration.xml agar framework dapat menggunakannya.

Audio HAL API

Audio HAL berisi API berikut:

  • Inti HAL
  • Efek HAL
  • HAL umum

Masing-masing API ini dijelaskan di bagian berikut.

Inti HAL

Core HAL adalah API utama yang digunakan oleh AudioFlinger untuk memutar audio dan mengontrol perutean audio. Beberapa antarmuka utama adalah sebagai berikut:

  • IDeviceFactory.hal adalah titik masuk ke dalam API.
  • IDevice.hal dan IPrimaryDevice.hal berisi metode seperti setMasterVolume atau openInputStream .
  • Stream searah dan digunakan oleh AudioFlinger untuk mengirim atau menerima audio ke dan dari HAL melalui IStream.hal , IStreamOut.hal dan IStreamIn.hal .

Tabel berikut mencantumkan lokasi komponen Core HAL yang berguna:

Komponen HAL inti Lokasi
Versi terbaru dari API /hardware/interfaces/audio/6.0
Jenis khusus untuk Core HAL API terbaru /hardware/interfaces/audio/6.0/types.hal
File konfigurasi kebijakan audio skema XSD /hardware/interfaces/audio/6.0/config/audio_policy_configuration.xsd

Implementasi default dari Core HAL API ( /hardware/interfaces/audio/core/all-versions/default/ ) adalah pembungkus di sekitar implementasi HAL pra-Treble menggunakan pustaka bersama yang lama . Implementasi default juga dapat dianggap sebagai referensi saat mengimplementasikan versi baru audio HAL yang berinteraksi dengan driver kernel secara langsung.

Efek HAL

Effects HAL API digunakan oleh framework efek untuk mengontrol efek audio. Anda juga dapat mengonfigurasi efek pra-pemrosesan seperti kontrol penguatan otomatis dan pengurangan noise melalui Effects HAL API.

Tabel berikut mencantumkan lokasi komponen Effects HAL yang berguna:

Efek komponen HAL Lokasi
Versi terbaru dari API /hardware/interfaces/audio/effect/6.0/
Efek file konfigurasi skema XSD /hardware/interfaces/audio/effect/6.0/xml/audio_effects_conf.xsd

Untuk informasi lebih lanjut, lihat contoh implementasi dari Effects API ( /hardware/interfaces/audio/effect/all-versions/default/ ) dan bagian Audio Effects .

HAL umum

Common HAL adalah pustaka tipe data umum yang digunakan oleh Core dan Effects HAL API. Itu tidak memiliki antarmuka dan berisi yang berikut:

  • Definisi ( /hardware/interfaces/audio/common/6.0/types.hal ) dibagikan oleh Core and Effect API.
  • Utilitas ( /hardware/interfaces/audio/common/all-versions ) digunakan untuk membantu pengkodean terhadap HIDL API untuk implementasi, klien, dan pengujian.

Persyaratan

Selain menerapkan audio HAL dan membuat file konfigurasi kebijakan audio, persyaratan HAL berikut harus dipatuhi:

  • Jika perekaman untuk Pemicu Suara (pengambilan dari buffer DSP kata cepat) didukung oleh satu profil masukan, penerapannya harus mendukung jumlah aliran aktif di profil ini sesuai dengan jumlah sesi bersamaan yang didukung oleh Pemicu Suara HAL.
  • Konkurensi panggilan suara TX dan pengambilan dari prosesor aplikasi seperti yang dijelaskan di halaman Tangkap Serentak .

Informasi versi

Tabel berikut mencantumkan nomor versi HAL untuk setiap rilis Android.

Versi Android Versi HAL
Android 11 6.0
Android 10 5.0
Android 9 4.0
Android 8 2.0