我正在尝试学习Android USB主机/附件连接。我读Android设备可以行为usb主机或USB配件。因此我创建了两个项目,其中一个是usb主机项目,另一个是usb附件项目。我将这些项目安装到两个不同的Android设备上。其中一个有usb主机(Device A)项目,另一个有usb附件(Device B)项目。
我的问题是,我可以将usb主机项目连接到Device B.我可以看到有关设备的所有信息。但在附件项目(设备B)中,我看不到有关设备A的任何信息。
manager.getAccessoryList()始终返回null。我的USB配件项目代码在这里。
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
for (UsbAccessory accessory : manager.getAccessoryList()) {
String list = " DESCRIPTION : " + accessory.getDescription() + " MODEL : " + accessory.getModel() + " MANUFACTURER : " + accessory.getManufacturer() + " SERIAL : " + accessory.getSerial();
Toast.makeText(this, list, Toast.LENGTH_LONG).show();
}
答案 0 :(得分:0)
这是因为当您将附件连接到设备B时,充当美国B主机的附件必须实施Android开放附件协议(AOAP)。请参阅Connecting over USB.由于设备A(主机)未实现AOAP,设备B将拒绝与握手尝试之外的设备A通信。
答案 1 :(得分:0)
试试这个https://github.com/quandoo/android2android-accessory
即使我的配件清单为0。 但是在github项目中,他们首先从一个充当主机的Android设备向其他附属设备发送了一些控制消息。 发送控制消息后,我将附件列表设为非零。