android-USB-OTG 外部设备通讯 USB插拔检测

android程序在运行期间,可以检测到外部设备(例如STM32设备,HID设备,U盘等)的插入、拔出事件,然后和外部设备通讯存取数据。

现已经实现功能需求。在此做个简单总结。

设备插入效果:

android-USB-OTG 外部设备通讯 USB插拔检测_第1张图片


读取数据

android-USB-OTG 外部设备通讯 USB插拔检测_第2张图片


设备拔出

android-USB-OTG 外部设备通讯 USB插拔检测_第3张图片



以下为USB设备类型:

当你的Android设备在USB主机模式中时,它作为USB主机给从属设备供电,并会列举被连接的USB设备。USB主机模式在Android3.1以后开始被支持。

因为不是所有的Android设备都保证支持USB主机模式,所以要在你的应用程序声明中包含元素,以声明你的应用程序要使用android.hardware.usb.host功能。

USB设备插入

系统检测到ACTION_USB_DEVICE_ATTACHED

USB设备拔出

系统检测到ACTION_USB_DEVICE_DETACHED


如果你希望你的应用程序能够自动的检测到你所期望的USB设备,那么要使用Intent过滤器。

监听事件注册一下:

IntentFilter usbDeviceStateFilter = new IntentFilter();

usbDeviceStateFilter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
usbDeviceStateFilter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
registerReceiver(mUsbReceiver, usbDeviceStateFilter);
然后在广播消息中即可对各种事件进行处理。

注册好监听事件以后,要做的就是接收系统广播消息

创建下面这样的广播接收器来监听事件:

BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {

   public void onReceive(Context context, Intent intent) {

       String action = intent.getAction();

     if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) {

           UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);

           if (device != null) {

               // call your method that cleans up and closes communication with the device

           }

       }

   }

};

你可能感兴趣的:(android)