android监听usb插拔

本文详细介绍了如何在Android应用中通过注册BroadcastReceiver来监听USB设备的插入和拔出事件,包括创建广播接收者、生成过滤器、注册和注销接收者等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、写个广播接收者:

BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) {
                Log.e(TAG, "拔出usb了");
                UsbDevice device = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
                if (device != null) {
                    Log.e(TAG, "设备的ProductId值为:" + device.getProductId());
                    Log.e(TAG, "设备的VendorId值为:" + device.getVendorId());
                }
            } else if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {
                Log.e(TAG, "插入usb了");
            }
        }
    };

2、生成变量:

private IntentFilter usbDeviceStateFilter;

3、注册:

        usbDeviceStateFilter = new IntentFilter();
        usbDeviceStateFilter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
        usbDeviceStateFilter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
        registerReceiver(mUsbReceiver, usbDeviceStateFilter);

4、注销:

        if (mUsbReceiver != null) {
            unregisterReceiver(mUsbReceiver);
            mUsbReceiver = null;
        }

5、效果:

参考:

https://blog.youkuaiyun.com/zhizhuodewo6/article/details/74973356

### Android USB 插入和移除广播接收器示例 #### 创建广播接收者类 为了监听USB设备的插入和拔出事件,在应用程序中需要定义一个继承自`BroadcastReceiver`的类。该类负责处理接收到的广播消息。 ```java public class UsbDeviceReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) { // 当检测到有新的USB设备连接时触发此逻辑 Toast.makeText(context, "USB device attached", Toast.LENGTH_SHORT).show(); } else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) { // 当已连接的USB设备被断开时执行这里的代码 Toast.makeText(context, "USB device detached", Toast.LENGTH_SHORT).show(); } } } ``` #### 动态注册广播接收者 为了让上述广播接收者能够正常工作,还需要将其注册到系统当中。这可以通过在Java/Kotlin文件中的适当位置调用`registerReceiver()`方法实现: ```java // 获取系统的UsbManager服务实例 UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE); IntentFilter filter = new IntentFilter(); filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED); filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED); // 注册广播接收者 registerReceiver(new UsbDeviceReceiver(), filter); ``` 以上操作通常放在活动(Activity)或服务(Service)生命周期内的合适阶段完成,比如`onCreate()`或者`onStart()`.当不再需要监听这些事件的时候记得取消注册以防止内存泄漏[^1]. #### XML布局配置按钮用于测试功能 如果希望提供界面元素让用户主动发起某些动作来验证广播机制的有效性,则可以在项目的资源目录下编辑相应的XML布局文件加入如下所示的按钮组件[^3]: ```xml <Button android:id="@+id/btn_test_usb" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Test USB Broadcast"/> ``` 随后为这个按钮绑定点击事件处理器即可启动特定流程来进行调试目的.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值