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



我的应用程序使用UsbManager与USB相机通信。有些设备不支持USB。这些将为(UsbManager)context.getSystemService( Context.USB_SERVICE )返回null,或者在枚举设备时抛出NoSuchMethodError异常。我可以检测到两者并正确显示消息。不幸的是,一些无法检测到USB设备的安卓系统不会导致这两个问题。它们只是返回一个空的USB设备列表。我怎样才能正确检测到这个系统不支持USB OTG?

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新