问题:
在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设备进行数据传输,就需要开启多外设选择模式。