这个板子原本不支持USB Audio。根据USB 数字音频的教程,可以很方便地使其支持USB Audio。
Android 内核配置
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> USB sound devices --->
<*> USB Audio/MIDI driver
按照这个配置,内核已经支持USB Audio了,根据Android音频底层调试-基于tinyalsa,可以使用tinyalsa进行简单的录音放音了。如果想要让Android上层支持,还需要做后续步骤。
Android上层修改
修改/etc/audio_policy.conf添加如下:
audio_hw_modules {
...
usb {
outputs {
usb_accessory {
sampling_rates 44100
channel_masks AUDIO_CHANNEL_OUT_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_USB_ACCESSORY
}
usb_device {
sampling_rates dynamic
channel_masks dynamic
formats dynamic
devices AUDIO_DEVICE_OUT_USB_DEVICE
}
}
inputs {
usb_device {
sampling_rates dynamic
channel_masks AUDIO_CHANNEL_IN_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_IN_USB_DEVICE
}
}
}
...
}
编译usbaudio HAL,并将其推送到设备上。
mmm hardware/libhardware/modules/usbaudio/
adb push out/target/product/nanopi2/system/lib/hw/audio.usb.default.so /system/lib/hw/
adb reboot
这时,插入USB Audio时,Android上层播放音频会从USB Audio中播放出来。