搜索
 找回密码
 立即注册

简单一步 , 微信登陆

usb设备插拔检测

作者:liuwei | 时间:2016-9-28 11:00:14 | 阅读:3255| 只看该作者
private class DiskChangeReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            String devicePath = intent.getDataString().substring(7); //mnt/usb/
            // Disk remove
            if (action.equals(Intent.ACTION_MEDIA_EJECT)) {   //usb 设备拔出的广播
                if (mPhotoFileList.get(0).getPath().contains(devicePath)) {  //根据路径判断是否是当前播放的usb设备
                    showToastAtCenter(getString(R.string.disk_eject));
                    // Close file resources
                    closeSilently(mFileInputStream);
                    ImagePlayerActivity.this.finish();
                }
            }
        }
    }

1.  不管以何种方式卸载(正常卸载拔出、正常卸载不拔出 sd 卡、直接拔出 sd 卡)
系统都会发出下面的 action 广播
ACTION_MEDIA_EJECT
ACTION_MEDIA_UNMOUNTED
2.  不管以何种方式安装 sd 卡,系统都会发出下面的 action 广播
file:///C:/Users/liuwei/AppData/Local/YNote/data/liuwei372**34@163.com/53360e9f49a1449fbfe5073c287a4dbb/7956623_1435.png

3.  ACTION_MEDIA_REMOVED 与 ACTION_MEDIA_UNMOUNTED 区别
ACTION_MEDIA_REMOVED
表示 sdcard 已经从卡槽移除。
ACTION_MEDIA_UNMOUNTED
只可以说明 sd 卡没有 mount 在文件系统上面,不可以说明其已经从卡槽移除。
从测试 4 就可以看出这个端倪。
4.  ACTION_MEDIA_REMOVED 与 ACTION_MEDIA_BAD_REMOVAL 区别
ACTION_MEDIA_BAD_REMOVAL
只有在直接拔出 sd 卡时,系统才会发送这样的 action 广播。
ACTION_MEDIA_REMOVED
不管何种方式从卡槽拔出 sd 卡时,系统就会发送这样的 action 广播。


5.  选择通过 usb 共享,系统一定会发出下面的 action 广播
ACTION_MEDIA_SHARED
ok,明白上面的道理(你基于的开发平台是否是这样,你还需要测试,我这里只是抛砖引玉),可以在接收到这些广播的时候,根据 action 写自己的逻辑代码了。如:


接收到 ACTION_MEDIA_EJECT 广播之后,sd 卡还是可以读写的,
直到接收到 ACTION_MEDIA_REMOVED、ACTION_MEDIA_UNMOUNTED等广播之后,sd 卡才不可以读写。




收藏
收藏0
分享
分享
点赞
点赞0
反对
反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
手机版