Мой образ Android 14 получен по следующей ссылке: https://konstakang.com/devices/rpi4/AOSP14 /.
Я обнаружил, что Android 14 по умолчанию не поддерживает несколько USB-устройств, поэтому я изменил файл system/build.prop и добавил следующее линия:
Код: Выделить всё
ro.audio.multi_usb_mode=true
- Сначала я использовал команду оболочка adb getprop ro.audio.multi_usb_mode, чтобы проверить значение, и результат был true, как показано ниже.
Код: Выделить всё
D:\pre>adb shell getprop ro.audio.multi_usb_mode
true
- Во-вторых, я использовал cat /proc/asound/cards, чтобы проверить и подтвердить, что два USB-устройства были обнаружено.
Код: Выделить всё
rpi4:/ # cat /proc/asound/cards
0 [Headphones ]: bcm2835_headpho - bcm2835 Headphones
bcm2835 Headphones
1 [vc4hdmi0 ]: vc4-hdmi - vc4-hdmi-0
vc4-hdmi-0
2 [vc4hdmi1 ]: vc4-hdmi - vc4-hdmi-1
vc4-hdmi-1
3 [Set ]: USB-Audio - C-Media USB Headphone Set
C-Media USB Headphone Set at usb-0000:01:00.0-1.2, full speed
4 [Headset ]: USB-Audio - Logi USB Headset
Logi USB Headset Logi USB Headset at usb-0000:01:00.0-1.3, full speed
- Наконец, я вошел в свое приложение и использовал методы AudioManager для получения информации об устройстве, но только один USB-устройство было возвращено. Соответствующий код и журналы следующие:
Код: Выделить всё
private fun getDeviceList(){
val audioManager= mContext.getSystemService(Context.AUDIO_SERVICE) as AudioManager
val inputDeviceList=audioManager.getDevices(AudioManager.GET_DEVICES_INPUTS)
val outputDeviceList=audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS)
Log.i(tag,"The number of audio input devices size is ${inputDeviceList.size}")
for(inputAudioDeviceInfo in inputDeviceList){
Log.i(tag,"type:${inputAudioDeviceInfo.type},product name:${inputAudioDeviceInfo.productName}," +
"isSource:${inputAudioDeviceInfo.isSource},isSink:${inputAudioDeviceInfo.isSink}")
}
Log.i(tag,"The number of audio output devices size is :${outputDeviceList.size}")
for(outputDevice in outputDeviceList){
Log.i(tag,"type:${outputDevice.type},product name:${outputDevice.productName}," +
"isSource:${outputDevice.isSource},isSink:${outputDevice.isSink}")
}
}
Код: Выделить всё
2024-01-04 19:45:52.882 2628-2628 MyApplication com.test.pjsiptest I The number of audio input devices size is 3
2024-01-04 19:45:52.883 2628-2628 MyApplication com.test.pjsiptest I type:15,product name:Raspberry Pi 4,isSource:true,isSink:false
2024-01-04 19:45:52.883 2628-2628 MyApplication com.test.pjsiptest I type:25,product name:Raspberry Pi 4,isSource:true,isSink:false
2024-01-04 19:45:52.883 2628-2628 MyApplication com.test.pjsiptest I type:22,product name:USB-Audio - Logi USB Headset,isSource:true,isSink:false
2024-01-04 19:45:52.883 2628-2628 MyApplication com.test.pjsiptest I The number of audio output devices size is :2
2024-01-04 19:45:52.883 2628-2628 MyApplication com.test.pjsiptest I type:2,product name:Raspberry Pi 4,isSource:false,isSink:true
2024-01-04 19:45:52.884 2628-2628 MyApplication com.test.pjsiptest I type:22,product name:USB-Audio - Logi USB Headset,isSource:false,isSink:true
Я проверил две свои USB-гарнитуры, и обе имеют тип аудиоустройства TYPE_USB_HEADSET. Является ли это причиной того, что моя программа может распознавать только одну USB-гарнитуру?
Наше текущее требование — использовать два USB-устройства на устройстве Android для обработки двух одновременных вызовов.
Если Android 14 должен поддерживать USB-устройства с разными типами устройств, как я могу реализовать свою функциональность?
Могу ли я добиться этого, изменив дескриптор устройства USB-аудиоустройства, или изменив тип аудиоустройства USB-гарнитуры в аудиосистеме Android. Уровень HAL, например, непосредственное изменение класса UsbAlsaManager? Если да, то это позволит Android 14 поддерживать обе мои USB-гарнитуры.
Подробнее здесь: https://stackoverflow.com/questions/793 ... sb-devices
Мобильная версия