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

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

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

设备插入效果:



读取数据



设备拔出




以下为USB设备类型:

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

因为不是所有的Android设备都保证支持USB主机模式,所以要在你的应用程序声明中包含<uses-feature>元素,以声明你的应用程序要使用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

           }

       }

   }

};

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值