Android 如何在主HAL和USB音频HAL之间配置呼叫音频?

Android 如何在主HAL和USB音频HAL之间配置呼叫音频?,android,audio,usb,android-source,modem,Android,Audio,Usb,Android Source,Modem,我有以下系统: 支持SGTL5000的专有NXP主音频HAL工作正常。我可以从Android上播放和录制声音 EM12-G调制解调器显示为USB声卡。我可以使用adb shell中的tinyplay,将.wav文件从调制解调器播放到远程电话(当通话已设置时)。i、 e.当声音在远程电话中出现时,EM12-G在ALSA层作为声卡正常工作 我的问题是,当我替换默认的usb_audio_policy_configuration.xml时 <module name="usb"

我有以下系统:

支持SGTL5000的专有NXP主音频HAL工作正常。我可以从Android上播放和录制声音

EM12-G调制解调器显示为USB声卡。我可以使用
adb shell
中的
tinyplay
,将.wav文件从调制解调器播放到远程电话(当通话已设置时)。i、 e.当声音在远程电话中出现时,EM12-G在ALSA层作为声卡正常工作

我的问题是,当我替换默认的usb_audio_policy_configuration.xml时

<module name="usb" halVersion="2.0">
    <mixPorts>
        <mixPort name="usb_accessory output" role="source">
            <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                     samplingRates="44100" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
        </mixPort>
        <mixPort name="usb_device output" role="source"/>
        <mixPort name="usb_device input" role="sink"/>
    </mixPorts>
    <devicePorts>
        <devicePort tagName="USB Host Out" type="AUDIO_DEVICE_OUT_USB_ACCESSORY" role="sink">
            <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                     samplingRates="44100" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
        </devicePort>
        <devicePort tagName="USB Device Out" type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink"/>
        <devicePort tagName="USB Headset Out" type="AUDIO_DEVICE_OUT_USB_HEADSET" role="sink"/>
        <devicePort tagName="USB Device In" type="AUDIO_DEVICE_IN_USB_DEVICE" role="source"/>
        <devicePort tagName="USB Headset In" type="AUDIO_DEVICE_IN_USB_HEADSET" role="source"/>
    </devicePorts>
    <routes>
        <route type="mix" sink="USB Host Out"
               sources="usb_accessory output"/>
        <route type="mix" sink="USB Device Out"
               sources="usb_device output"/>
        <route type="mix" sink="USB Headset Out"
               sources="usb_device output"/>
        <route type="mix" sink="usb_device input"
               sources="USB Device In,USB Headset In"/>
    </routes>
</module>
这里的主要问题是,上层没有给下层任何地址,导致
*卡=-1,*设备=-1
。下层需要知道EM12-G调制解调器声卡的卡号和设备号才能打开它

使用耳机配置时,我看到:

I modules.usbaudio.audio_hal: parse_card_device_params() "card=3;device=0"
I modules.usbaudio.audio_hal: parse_card_device_params() *card: 3, *device: 0
问题:

  • USB音频可以用于通话音频吗
  • 如果是,我使用的配置有什么问题
I AudioFlinger: nextUniqueId()
I AudioFlinger: loadHwModule() Loaded usb audio interface, handle 18
I AudioPolicyClientImpl: openOutput(), address: ""
I AudioFlinger: openOutput(), address: ""
I AudioFlinger: openOutput() this 0xe8a10dbf1600, module 18 Device 0x10000, SamplingRate 16000, Format 0x000001, Channels 0x3, flags 0
I AudioFlinger: openOutput_l(), address: ""
I AudioFlinger: findSuitableHwDev_l()
I AudioFlinger: nextUniqueId()
I DeviceHAL: openOutputStream()
I DeviceHAL: openOutputStreamImpl()
I DeviceHAL: open_output_stream handle: 21 devices: 10000 flags: 0 srate: 16000 format 0x1 channels 3 address 
I modules.usbaudio.audio_hal: adev_open_output_stream()
I modules.usbaudio.audio_hal: adev_open_output_stream() handle:0x15, devicesSpec:0x10000, flags:0x0, address:""
I modules.usbaudio.audio_hal: parse_card_device_params() 
I modules.usbaudio.audio_hal: parse_card_device_params() *card: -1, *device: -1
I modules.usbaudio.audio_hal: adev_open_output_stream() ret: 0
I DeviceHAL: open_output_stream status 0 stream 0xf2205540
I DeviceHAL: analyzeStatus()
I modules.usbaudio.audio_hal: out_get_sample_rate()
I modules.usbaudio.audio_hal: parse_card_device_params() "card=3;device=0"
I modules.usbaudio.audio_hal: parse_card_device_params() *card: 3, *device: 0