我有一个连接到USB配件的应用程序。很简单,但即使在USB电缆拔出后,配件也保持连接状态。
这是我的代码:
public boolean checkOpenAccessory(){
UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
UsbAccessory[] accessories = usbManager.getAccessoryList();
UsbAccessory accessory;
if(accessories == null ){
accessory = null;
return false;
} else {
accessory = accessories[0];
if(usbManager.hasPermission(accessory)) {
return (usbManager.openAccessory(accessory) != null);
} else {
return false;
}
}
}
这让我觉得我已连接到USB配件,但我不是。我有一个开发人员应用程序,可以监控手机中的所有内容并说同样的事情:
UsbAccessory[] accessories = usbManager.getAccessoryList();
附件已连接。我还尝试过触发广播或杀死后台进程。只有重新启动时,手机才会显示配件。
sendBroadcast(new Intent(UsbManager.ACTION_USB_ACCESSORY_DETACHED));
我的问题只是Htc One M9,Api 22,Android 5.1版。 如果你们可以提供帮助,那将是一件好事,我花了几天时间试图解决这个问题。
答案 0 :(得分:0)
我做了一些改进。它的工作原理是这样......但不是100%肯定。
boolean check = checkOpenAccessory();
然后在某处需要时使用checkOpenAccessory()
并返回真实的东西。
基本上第二次会起作用,而不是100%肯定但是有效。