参考:https://blog.youkuaiyun.com/lj402159806/article/details/69940628
1、概述
android端的AOA模式 是使android端作为从设备,外设硬件设备作为主设备,遵循AOA协议进行usb的通信。
2、android端
2.1 manifest配置
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gavinandre.usbaccessory">
<uses-feature android:name="android.hardware.usb.accessory"/>
<application
...
<activity
...
<intent-filter>
//对应的activity需要配置USB_ACCESSORY_ATTACHED广播 用于唤起activity
//并获取UsbAccessory实例 这是一个大坑
<action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"/>
</intent-filter>
<meta-data
android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"
android:resource="@xml/accessory_filter"/>
</activity>
</application>
</manifest>
2.2 accessory_filter.xml配置
在res文件夹下建立xml文件夹, 添加accessory_filter.xml文件
<?xml version="1.0" encoding="utf-8"?>
<resources>
<usb-accessory
manufacturer="Lutixia"
model="Demo"
version="1.0"
/>
</resources>
2.3 具体代码
public AccessoryCommunicator(final Context context) {
this.context = context;
usbManager = (UsbManager) this.context.getSystemService(Context.USB_SERVICE);
final UsbAccessory[] accessoryList = usbManager.getAccessoryList();
if (accessoryList == null || accessoryList.length == 0) {
onError("no accessory found");
} else {
openAccessory(accessoryList[0]);
}
}