Android 10 Audiopolicy不能同时识别两个USB声卡

问题:

        在Android设备上同时插入应该USB拾音器与USB摄像头,在反复上电后导致录音机无法录音的情况。

原因分析:     

        插入的顺序会影响Audiopolicy对声卡的识别。

        当我先插入USB拾音器然后再插入USB摄像头时,Available Devices只能识别USB摄像头的麦克风设备,但不能识别USB拾音器的任何设备。 如果先插入USB摄像头,然后再插入USB拾音器,Available Devices只能识别USB拾音器和麦克风,但不能识别USB摄像头的麦克风。

        但在内核内部,USB摄像头麦克风和USB拾音器麦克风都能正常工作,tinyCap或tinyPlay可以用来录制和播放。

        在Android Audiopolicy中是否有一种机制,只识别最后插入的USB声卡设备?

        我需要它同时识别两个以上的USB声卡设备,然后我自己到引擎去切换。 我应该怎么做呢?
将USB声卡加载到Audiopolicy Available Devices中的代码在哪里?

解决方法:

diff --git a/android/frameworks/base/services/usb/java/com/android/server/usb/UsbAlsaManager.java b/android/frameworks/base/services/usb/java/com/android/server/usb/UsbAlsaManager.java
index 5239d976e6..396fff8729 100644
--- a/android/frameworks/base/services/usb/java/com/android/server/usb/UsbAlsaManager.java
+++ b/android/frameworks/base/services/usb/java/com/android/server/usb/UsbAlsaManager.java
@@ -48,7 +48,7 @@ public final class UsbAlsaManager {
 
     // Flag to turn on/off multi-peripheral select mode
     // Set to true to have single-device-only mode
-    private static final boolean mIsSingleMode = true;
+    private static final boolean mIsSingleMode = false;
 
     private static final String ALSA_DIRECTORY = "/dev/snd/";

        将mIsSingleMode变量的值从true更改为false可以启用多外设选择模式。此后可以选择同时操作多个外设,而不仅仅是一个设备。

        在多外设选择模式下,您可以同时连接和操作多个设备,这对于需要同时使用多个外设的应用程序非常有用。例如,如果您需要同时操作多个音频输入设备或音频输出设备,或者连接多个USB设备进行数据传输,就需要开启多外设选择模式。

猜你喜欢

转载自blog.csdn.net/qq_53676406/article/details/131897781