Android 14 неправильно поддерживает несколько USB-устройств ?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android 14 неправильно поддерживает несколько USB-устройств ?

Сообщение Anonymous »

Чтобы протестировать поддержку Android 14 для нескольких USB-устройств, я установил Android 14 на Raspberry Pi.
Мой образ Android 14 получен по следующей ссылке: https://konstakang.com/devices/rpi4/AOSP14 /.
Я обнаружил, что Android 14 по умолчанию не поддерживает несколько USB-устройств, поэтому я изменил файл system/build.prop и добавил следующее линия:

Код: Выделить всё

ro.audio.multi_usb_mode=true
После перезагрузки Raspberry Pi я выполнил следующие шаги:
  • Сначала я использовал команду оболочка 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
По этой ссылке: https://source.android.com/docs/core/au ... io-routing, в документации упоминается, что платформа USB поддерживает маршрутизацию на несколько USB. устройства, если USB-устройства имеют разные типы аудиоустройств.
Я проверил две свои 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»