1

我有一个连接到 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 version 5.1 。如果你们能提供帮助,那将是一件好事,我花了几天时间试图弄清楚。

4

1 回答 1

1

我做了一些改进。它的工作原理是这样的……但不是 100% 确定。

boolean check = checkOpenAccessory();

然后checkOpenAccessory()在某处需要时使用,并将返回真实的东西。

基本上第二次会起作用,虽然不是 100% 肯定,但它会起作用。

请参阅此链接。

于 2016-09-27T07:47:23.060 回答