3

我的应用程序用于UsbManager与 USB 摄像头通信。某些设备不支持 USB。这些将返回nullfor (UsbManager)context.getSystemService( Context.USB_SERVICE ),或者NoSuchMethodError在枚举设备时抛出异常。我可以检测到两者并正确显示消息。不幸的是,一些不检测 USB 设备的 Android 不会导致这些问题。他们只是返回一个空的 USB 设备列表。如何正确检测到此系统不支持 USB OTG?

4

2 回答 2

7

确定设备是否具有 USB 主机功能的官方方法是使用相关的系统功能。

理想情况下,<uses-feature>向您的清单添加一个元素,表明您对该android.hardware.usb.host功能感兴趣。如果您不是绝对需要该功能,请添加android:required="false"为属性。

如果您使用android:required="false",并且您想在运行时确定设备是否是 USB 主机,请使用PackageManagerhasSystemFeature()FEATURE_USB_HOST。定义为与( )FEATURE_USB_HOST中使用的字符串相同的字符串。<uses-feature>android.hardware.usb.host

于 2014-05-29T13:33:00.960 回答
0
public static boolean getUsbConnection(Context context) {
        intent = context.registerReceiver(null, new IntentFilter("android.hardware.usb.action.USB_STATE"));
        return intent.getExtras().getBoolean("connected");
    }
于 2014-05-29T13:21:50.607 回答