HwAudioSource는 오디오 소스 기기를 Android 믹서에 직접 연결합니다.
동기 부여
Android에서 기기 간 또는 하드웨어 오디오 패치를 사용하면 몇 가지 제한사항이 적용될 수 있습니다. 이 경우 PLAY, PAUSE, STOP 등의 미디어 키 이벤트를 수신할 수 없으며 Android의 오디오 스택을 우회하므로 패치를 Android의 다른 오디오로 믹스해야 합니다.
HwAudioSource 사용
HwAudioSource는 소프트웨어 패치로 설계된 새로운 유형의 플레이어입니다. 이를 통해 이 플레이어를 사용하는 애플리케이션이 미디어 키 이벤트 및 출력 스트림을 믹스하여 Android에서 라우팅할 수 있습니다.
mHwAudioSource = new HwAudioSource.Builder() .setAudioDeviceInfo(AudioDeviceInfo: info) .setAudioAttributes(new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_MEDIA) .build()) .build(); mHwAudioSource.play(); mHwAudioSource.stop();
오디오 HAL의 변경
이 새로운 플레이어를 사용하는 경우 오디오 HAL에 관한 몇 가지 예상 요소가 있습니다(예: device/generic/car/emulator/audio/driver/audio_hw.c
).
Adev_create_audio_patch
는 기기에서 믹서로 오디오 패치를 설정하는 요청을 예상합니다. 이 경우 특별한 작업이 필요하지 않습니다.Adev_open_input_stream
은 audio_source가AUDIO_SOURCE_FM_TUNER
일 것으로 예상합니다.In_read
는 오디오 버퍼를 실제 브로드캐스트 무선 오디오 데이터로 채웁니다.
audio_policy_configuration.xml
에서 AUDIO_DEVICE_IN_FM_TUNER
유형으로 튜너 기기를 구성하는 것이 좋습니다.
<devicePort tagName="Tuner_source" type="AUDIO_DEVICE_IN_FM_TUNER" role="source" address="tuner0"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="48000" channelMasks="AUDIO_CHANNEL_IN_STEREO"/> </devicePort>
이 기기 설정에서는 AudioDeviceInfo.TYPE_FM_TUNER
와 함께 AudioManager.getDevices(AudioManager.GET_DEVICES_INPUTS)
를 사용하여 FM 라디오 입력 기기를 쉽게 찾을 수 있습니다.