如何检测Android是否具有完整的USB支持?

时间:2014-05-29 13:15:04

标签: android usb usb-otg

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

2 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:0)

public static boolean getUsbConnection(Context context) {
        intent = context.registerReceiver(null, new IntentFilter("android.hardware.usb.action.USB_STATE"));
        return intent.getExtras().getBoolean("connected");
    }