如何同时为两个应用程序使用同一个 USB 配件?

How to use the same Usb accessory for two apps at same time?

我有一个使用

的应用程序
<uses-feature
        android:name="android.hardware.usb.accessory"
        android:required="true" />

我希望该 USB 与前台的 App1 运行 和后台的 App2 运行 通信。 App2 运行 在我的后台。前台的App1 运行 是第三方的。我将无法访问 App1。
当我尝试这样做时,每当一个应用程序获得访问权限时,另一个应用程序就会失去连接。有没有办法让两个应用程序同时与 USB 通信,

试试这个,

创建一个my_accessory_filter.xml res/xml/ 目录中的资源文件,其中包含一个用于识别您的配件的元素。

  <resources>

<usb-accessory model="CoolAccessory" manufacturer="My App Company" version="1.0"/>

</resources>

现在,当您将配件连接到设备时,android 将发送打开相应应用程序的意图。最好的部分是,多个应用程序可以响应给定的意图,因此多个应用程序可以选择响应同一配件。

不要忘记在清单中这样调用您的 my_accessory_filter.xml 资源文件:

<meta-data android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"
                android:resource="@xml/my_accessory_filter" />

希望对您有所帮助!!

我很确定这行不通。让我们假设系统允许您这样做(根据您的测试显然不是这种情况)。与 USB 配件通信的方式是 ParcelFileDescriptor.

要阅读它,您需要执行以下操作:

val buffer = ByteArray(16384)
val inStream = FileInputStream(fileDescriptor)

inStream.read(buffer)

如果您有两个应用同时读取,则每个应用都会读取部分流。例如,如果流是“A - B - C - D - E”,则第一个应用程序可能会读取“A - B - E”,第二个应用程序可能会读取“C - D”。但这绝对不是你想要的。