Android 14'ten itibaren, iş ortakları ve SoC tedarikçileri Mevcut HIDL HAL uygulamasının bir AIDL HAL ile değiştirilmesi önerilir. hakkında bilgi edindiniz.
HIDL Audio HAL'den sorunsuz bir geçiş sağlamak için AIDL Audio HAL'ye ek olarak, önemli farklılıklardan bazıları bu sayfada vurgulanmıştır. Bu sayfada ayrıca Ses HAL'si.
AIDL ve HIDL Audio HAL uygulaması arasındaki fark
HIDL yapısı ve AIDL yapısı arasındaki temel farklar şunlardır: şöyle olur:
AIDL Audio Core HAL'de,
IConfig
arayüzü, sistem genelindeki arayüzlerin yerini alacak parametrelerine sahip olacaktır. Çerçeve bu parametreleri, tedarikçi firma yapılandırma dosyası yerine Core HAL'den alır. Örneğin, kullanıcı denetimi amacıyla gösterilen surround biçimlerin listesi. sağlayanIConfig.getSurroundSoundConfig
yöntemini kullanabilirsiniz.AIDL Audio Effects HAL'de, HIDL Efektleri HAL'deki XML dosyalarında tanımlanan
effectProxy
mantığı ses çerçevesi var. Ses çerçevesi,IFactory.queryEffects
kullanan bir sistem ve bunu kullanan tüm efekt işlemleriIFactory.queryProcessing
.Ses sistemi türleri için cihaz teriminin kullanılmasıyla ilgili karışıklığı önlemek amacıyla HIDL Audio HAL'deki
IDevice
, AIDL Audio HAL'deIModule
olarak yeniden adlandırıldı.IPrimaryDevice
, AIDL Audio HAL'de değiştirilmiştir. Mevcut sesle ilgili güncellemeler mod ve ekran döndürme herIModule
örneğine gönderilir. Parametreler Bluetooth eşzamanlı bağlantı yönlü (BT SCO) ve Eller Serbest ile ilgili Profil (HFP), özel birIBluetooth
tarafından yönetilir kullanır. Özel birITelephony
arayüzü telefona özgü özellikler sunar kontrol eder. Bu her iki arayüzün örnekleri şuradan alınabilir:IModule
arayüzünün birincil örneği. Karşılaştırma tablolarına şu adresten ulaşabilirsiniz: Core HAL ve Özellikle ilgili işlevler konulu videomuzu izleyin.IDevicesFactory
, fazlalığı önlemek için AIDL Ses HAL'sinden kaldırıldı. HAL modüller (yaniIModule
arayüz örneği) artık doğrudan kaydedildi vebluetooth
veyar_submix
. Bunun tek istisnasıprimary
modülüdür. şu örnek adı altında kaydedilir:default
.
AIDL ve HIDL Audio HAL eşlemesi
Aşağıdaki bölümlerde yer alan tablolarda, HIDL ile AIDL arasındaki eşleşme gösterilmektedir Ses HAL arayüzleri. Görüntüleyin Ses HAL README dosyası inceleyebilirsiniz.
Temel HAL
Tüm HIDL arayüzleri android.hardware.audio@N.M
paketindedir.
N.M
, Major.Minor sürümünü gösterir. Tüm AIDL arayüzleri,
android.hardware.audio.core
paketi.
HIDL API arayüzleri ve yapılandırma dosyaları | AIDL API arayüzleri |
---|---|
IDevicesFactory |
IModule alanının ServiceManager üzerinden kaydı. |
IDevice |
IModule |
IPrimaryDevice |
ITelephony IBluetooth |
IStream IStreamIn
IStreamOut |
StreamDescriptor IStreamIn
IStreamCommon
IStreamOut |
audio_policy_configuration.xml
audio_policy_engine_configuration.xml |
IConfig IModule |
Yapılandırılabilir Ses Politikası dosyaları | Android 14'te HIDL uygulamasını kullanın. |
Ses bağlantı noktaları, dinamik profiller, rotalar ve yamalar
Bu tabloda, XML dosyalarının öğeleri açılı ayraçlar kullanılarak belirlenir.
HIDL API arayüz yöntemleri ve yapılandırma dosyası öğeleri | AIDL API arayüz yöntemleri |
---|---|
<attachedDevices>
<defaultOutputDevice>
<mixPorts>
<devicePorts> |
IModule.getAudioPorts |
IDevice.getAudioPort
IDevice.setConnectedState |
IModule.connectExternalDevice
IModule.disconnectExternalDevice |
IStream.getSupportedProfiles |
IModule.connectExternalDevice |
<routes > |
IModule.getAudioRoutes |
IDevice.createAudioPatch
IDevice.updateAudioPatch IDevice.releaseAudioPatch
IStream.getDevices
IStream.setDevices
IDevice.openInputStream ülkesindeki cihazın teknik özellikleri
IDevice.openOutputStream |
IModule.setAudioPatch
IModule.setAudioPortConfig
IModule.resetAudioPatch |
Ses bağlantı noktası yapılandırmaları ve akışları
HIDL API arayüz yöntemleri | AIDL API arayüz yöntemleri |
---|---|
IStream.getAudioProperties
IStream.setAudioProperties
IStreamIn.getAudioSource |
IModule.getAudioPortConfigs
IModule.setAudioPortConfig |
IDevice.openInputStream
IDevice.openOutputStream
IStreamIn.prepareForReading
IStreamOut.prepareForWriting
IStream.createMmapBuffer |
IModule.openInputStream
IModule.openOutputStream |
IStream.close |
IStreamCommon.close |
IStreamIn.updateSinkMetadata
IStreamOut.updateSourceMetadata |
IStreamIn.updateMetadata
IStreamOut.updateMetadata |
IStream.standby |
StreamDescriptor.Command.standby |
IStream.pause IStream.resume
IStream.start IStream.stop |
StreamDescriptor.Command.pause .start
.start .drain |
IStreamOut.drain IStreamOut.flush |
StreamDescriptor.Command.drain .flush |
IStreamOut.setCallback
IStreamOut.clearCallback |
IModule.openOutputStream
IStreamCommon.close |
IStreamOut.getPresentationPosition IStreamIn.getCapturePosition
IStreamOut.getLatency
IStream.getMmapPosition
IStreamIn.getInputFramesLost |
StreamDescriptor.Reply.observable
StreamDescriptor.Reply.latencyMs
StreamDescriptor.Reply.hardware
StreamDescriptor.Reply.xrunFrames |
IDevice.getInputBufferSize
IStreamOut.getLatency
IStream.getBufferSize
IStream.getFrameSize
IStream.getFrameCount |
IModule.setAudioPatch , nominal gecikme ve minimum arabellek
boyutları, HAL tarafından döndürülen AudioPatch yapısının bir parçasıdır.
Çerçevelerdeki gerçek arabellek boyutu, StreamDescriptor öğesinin bir parçasıdır
birlikte çalışır. Bayt cinsinden arabellek boyutu şu olabilir:
toplayarak hesaplanır. |
Ses Efektleri bağlantısı
HIDL API arayüz yöntemleri | AIDL API arayüz yöntemleri |
---|---|
IDevice.addDeviceEffect
IDevice.removeDeviceEffect |
IModule.addDeviceEffect
IModule.removeDeviceEffect |
IStream.addEffect
IStream.removeEffect |
IStreamCommon.addEffect
IStreamCommon.removeEffect |
Sistem genelinde yapılandırma
Daha önce ses politikası XML'inde tanımlanan sistem genelinde yapılandırma
yapılandırma dosyalarını (yani audio_policy_configuration.xml
ve
audio_policy_engine_configuration.xml
) IConfig
aracılığıyla sağlanmalıdır.
Ancak AIDL'ye geçişi kolaylaştırmak için tedarikçiler AIDL'ye geçişi kolaylaştırmak için
daha önce sistem genelinde yapılandırmayı ayarlamak için kullandıkları XML dosyalarının aynısını kullanabilirler. İlgili içeriği oluşturmak için kullanılan
IConfig
içindeki referans uygulaması,
AIDL veri türlerini kullanarak XML dosyasındaki bilgileri temsil eder.
XML'den AIDL'ye dönüştürmeyi kolaylaştırır.
HIDL yapılandırma dosyası öğeleri | AIDL API arayüz yöntemleri |
---|---|
<globalConfiguration>
<speaker_drc_enabled> <call_screen_mode_supported>
<engine_library> |
Bu yöntemler iki yönteme ayrılır:
ITelephony.getSupportedAudioModes IConfig.getEngineConfig |
<volumes> veya
<volumeGroups> <ProductStrategies>
|
IConfig.getEngineConfig |
<surroundSound> |
IConfig.getSurroundSoundConfig |
-
speaker_drc_enabled
, yapılandırma dosyasından şu şekilde kaldırıldı: Bu yapılandırma öğesi sistem içinde kullanılmaz. Tüm cihazlar DRC etkinleştirildi.<ahref="#fnref1" rev="footnote"> </ahref="#fnref1">
Özellikle ilgili işlevler
HIDL API arayüz yöntemleri | AIDL API arayüzü |
---|---|
IDevice.setMasterVolume
IDevice.getMasterVolume
IDevice.setMicMute
IDevice.getMicMute
IDevice.setMasterMute
IDevice.getMasterMute |
IModule.\* |
IPrimaryDevice.getTtyMode
IPrimaryDevice.setTtyMode
IPrimaryDevice.getHacEnabled
IPrimaryDevice.setHacEnabled
IPrimaryDevice.setVoiceVolume |
ITelephony.TelecomConfig.\* |
IPrimaryDevice.setBtScoHeadsetDebugName
IPrimaryDevice.getBtScoNrecEnabled
IPrimaryDevice.setBtScoNrecEnabled
IPrimaryDevice.getBtScoWidebandEnabled
IPrimaryDevice.setBtScoWidebandEnabled,
IPrimaryDevice.getBtHfpEnabled
IPrimaryDevice.setBtHfpEnabled
IPrimaryDevice.setBtHfpSampleRate
IPrimaryDevice.setBtHfpVolume |
IBluetooth.ScoConfig.\*
IBluetooth.HfpConfig.\* |
IPrimaryDevice.setMode
IPrimaryDevice.updateRotation |
ITelephony.switchAudioMode
IModule.updateAudioMode
IModule.updateScreenRotation |
IDevice.setScreenState
IDevice.getMicrophones |
IModule.updateScreenState
IModule.getMicrophones |
IDevice.getHwAvSync
IStream.setHwAvSync |
IModule.generateHwAvSyncId
IStreamCommon.updateHwAvSyncId |
IStreamIn.setGain IStreamIn.setMicrophoneDirection IStreamIn.setMicrophoneFieldDimension |
IStreamIn.setHwGain IStreamIn.setMicrophoneDirection IStreamIn.setMicrophoneFieldDimension |
IStreamOut.getDualMonoMode
IStreamOut.setDualMonoMode
IStreamOut.getPlaybackRateParameters
IStreamOut.setPlaybackRateParameters
IStreamOut.selectPresentation
IStreamOut.getAudioDescriptionMixLevel
IStreamOut.setAudioDescriptionMixLevel
IStreamOut.setLatencyMode
IStreamOut.getRecommendedLatencyModes |
IStreamOut.\* |
IStreamOut.setEventCallback
IStreamOut.setLatencyModeCallback |
IModule.openOutputStream (geri çağırmalar
IStreamOutEventCallback ) |
IDevice.get/setParameters
IStream.get/setParameters |
IModule.get/setVendorParameters
IStreamCommon.get/setVendorParameters |
Eski yöntemler
HIDL API arayüz yöntemleri | Yorumlar |
---|---|
IDevice.initCheck IDevice.close |
HAL modülü yalnızca aşağıdaki durumlarda ServiceManager ile kendini yayınlar:
başlatma işleminin başarılı olduğunu gösterir. Bu durumda kalıcı olarak kabul edilir.
ve kapatılamaz. |
IDevice.supportsAudioPatches
IStreamOut.supportsPauseAndResume
IStreamOut.supportsDrain |
Yama, duraklatma, devam ettirme ve boşaltma için destek zorunludur. |
IStreamOut.getRenderPosition
IStreamOut.getNextWriteTimestamp |
Eski. |
Satıcı uzantıları
HIDL API'de tedarikçi uzantıları, getParameters
veya
IDevice
ve IStream
arayüzlerinden setParameters
yöntem. Bu
yöntemleri rastgele dizeleri kabul eder.
AIDL API'sinde getVendorParameters
gibi karşılık gelen yöntemler vardır
veya setVendorParameters
ile rastgele Parcelable
örneklerini
ParcelableHolders
içine alma.
Diğer değişiklikler
Diğer genel değişiklikler aşağıdaki gibidir:
HAL API'lerinin test edilebilirliğini iyileştirmek için AIDL sürümünde VTS testleri tarafından kullanılan ve mevcut hata ayıklama seçeneklerini tanıtın
ModuleDebug
ayrıştırılabilir. Bu seçenekler, HAL'ye Belirli işlevlerin (örneğin, harici cihazların bağlantısı) taklit edilmesi, Aksi takdirde manuel müdahale ve harici test kullanılmasını gerektirir. sahip olursunuz.HAL hizmetlerinin, sistem özelliğinin değeri gerçekleştiğinde yeniden başlatılması gerekir
sys.audio.restart.hal
,1
olarak ayarlandı. Yeniden başlatma,audioserver.rc
. HAL'yi uygularkenaudioserver.rc
dosyası. Android 14'te bu advendor.audio-hal-aidl
özellikle HAL.
Efekt HAL'si
Tüm HIDL arayüzleri android.hardware.audio.effect@N.M*
içindedir
paketi (burada N.M
, Major.Minor sürümüdür). Tüm AIDL arayüzleri
android.hardware.audio.effect
paketinde satın alın.
HIDL API arayüzleri ve yapılandırma dosyaları | AIDL API arayüzleri |
---|---|
IEffectsFactory |
IFactory |
IEffect |
IEffect |
audio_effects.xml |
IEffect |
Efekt Fabrikası
HIDL API arayüzleri (android.hardware.audio.effect@X.X) |
AIDL API arayüzleri (android.hardware.audio.effect) |
---|---|
IEffectsFactory.getAllDescriptors |
Boş UUID parametresiyle IFactory.queryEffects |
IEffectsFactory.getDescriptor |
UUID parametresiyle IFactory.queryEffects |
IEffectsFactory.createEffect |
IFactory.createEffect |
audio_effects.xml |
IFactory.queryProcessing
IFactory.queryEffects |
Efekt arayüzleri
HIDL API arayüzleri (android.hardware.audio.effect@X.X) |
AIDL API arayüzleri (android.hardware.audio.effect) |
---|---|
IEffect.init |
IEffect.open |
IEffect.setConfig |
IEffect.setParameter |
IEffect.enable |
IEffect.command(CommandId::START) |
IEffect.disable |
IEffect.command(CommandId::STOP) |
IEffect.reset |
IEffect.command(CommandId::RESET) |
IEffect.getDescriptor |
IEffect.getDescriptor |
IEffect.command |
IEffect.command hedefine harita,
IEffect.setParameter veya
Eski HIDL türüne göre IEffect.getParameter
komut
|
Yok | IEffect.getState |
IEffect.setParameter |
IEffect.setParameter |
IEffect.getParameter |
IEffect.getParameter |
Efekt Komutları
HIDL API arayüzleri (android.hardware.audio.effect@X.X) |
AIDL API arayüzleri (android.hardware.audio.effect) |
---|---|
EFFECT_CMD_INIT |
IEffect.open |
EFFECT_CMD_RESET |
CommandId.RESET |
EFFECT_CMD_ENABLE |
IEffect.command(CommandId::START) |
EFFECT_CMD_DISABLE |
IEffect.command(CommandId::STOP) |
EFFECT_CMD_SET_PARAM_DEFERRED |
Efektler AIDL HAL'de kullanımdan kaldırıldı |
EFFECT_CMD_SET_PARAM_COMMIT |
Efektler AIDL HAL'de kullanımdan kaldırıldı |
EFFECT_CMD_SET_CONFIG
EFFECT_CMD_SET_PARAM
EFFECT_CMD_SET_DEVICE
EFFECT_CMD_SET_VOLUME
EFFECT_CMD_SET_AUDIO_MODE
EFFECT_CMD_SET_CONFIG_REVERSE
EFFECT_CMD_SET_INPUT_DEVICE
EFFECT_CMD_SET_FEATURE_CONFIG
EFFECT_CMD_SET_AUDIO_SOURCE
| IEffect.setParameter |
EFFECT_CMD_GET_PARAM
EFFECT_CMD_GET_CONFIG EFFECT_CMD_GET_CONFIG_REVERSE
EFFECT_CMD_GET_FEATURE_SUPPORTED_CONFIGS
EFFECT_CMD_GET_FEATURE_CONFIG
VISUALIZER_CMD_MEASURE
EFFECT_CMD_FIRST_PROPRIETARY
( VISUALIZER_CMD_CAPTURE ile aynı)
| IEffect.getParameter |
EFFECT_CMD_OFFLOAD |
Kullanımdan kaldırıldı.
AIDL'de boşaltma ve boşaltma olmayan mod anahtarları bahsedeceğim. |
EFFECT_CMD_DUMP |
Yerleşik bağlayıcı işlemi (AIBinder_dump ) tarafından yönetilir. |
Yaygın Etki parametreleri tanımı
HIDL tanımı (android.hardware.audio.effect@X.X) |
AIDL tanımı |
---|---|
Types.hal |
Flags.aidl
Parameter.aidl
|
Belirli Efektler tanımı
HIDL API arayüzleri (android.hardware.audio.effect@X.X) |
AIDL API arayüzleri (android.hardware.audio.effect) |
---|---|
I$EffectType$.hal |
$EffectType$.aidl |