最近公司的盒子端扩展一个新功能:插入U盘后自动幻灯片播放U盘指定文件夹下的所有图片,拔出U盘后恢复视频播放。

直接上代码:

一、注册广播监听U盘的插拔

1.1、注册
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED);//插
//intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);//拔
intentFilter.addAction(Intent.ACTION_MEDIA_REMOVED);  //完全拔出
intentFilter.addDataScheme("file");//没有这行监听不起作用
registerReceiver(receiver, intentFilter);1.2、广播接收者
private BroadcastReceiver receiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {Log.e("TAG", "action === " + intent.getAction());if (intent.getAction().equals("android.intent.action.MEDIA_MOUNTED")) {//U盘插入String path = intent.getDataString();String pathString = path.split("file://")[1];//U盘路径insertUSB(pathString);}else if (intent.getAction().equals("android.intent.action.MEDIA_REMOVED")) {//U盘拔出removeUSB();}}
};

这一步的注意事项:
1,intentFilter.addAction(Intent.ACTION_MEDIA_REMOVED)添加完全拔出意图,因为U盘插入的时候:

E/TAG: action === android.intent.action.MEDIA_UNMOUNTED
E/TAG: action === android.intent.action.MEDIA_MOUNTED
E/TAG: U盘已插入,正在读取

2,intentFilter.addDataScheme(“file”),没有这行广播不起作用

二、获取U盘指定目录的所有图片文件

String imagesPath = pathString + "/aaa";File file = new File(imagesPath);//指定存放图片的文件夹不存在的情况if(!file.exists()) {Toast.makeText(this, "未在U盘中检测到【aaa】文件夹,请检查后重试!", Toast.LENGTH_LONG).show();return;}File[] files = file.listFiles();//空文件夹的情况if(files.length == 0) {Toast.makeText(this, "检测到【aaa】文件夹是空的,请检查后重试!", Toast.LENGTH_LONG).show();return;}//获取所有图片路径imgPathList = new ArrayList<>();for(int i = 0; i < files.length; i++) {File imageFile = files[i];if (checkIsImageFile(imageFile.getPath())) {//检查文件是不是图片imgPathList.add(imageFile.getPath());}}
}if(imgPathList.size() <= 0) {Toast.makeText(this, "检测到【aaa】文件夹中没有图片文件,请检查后重试!", Toast.LENGTH_LONG).show();return;}//排个序Collections.sort(imgPathList, new MapComparator());for(int i = 0; i < imgPathList.size(); i++) {Log.e("TAG", "排序后:" + imgPathList.get(i));}//设置幻灯片适配器initAdapter();

检查图片文件的方法:

private boolean checkIsImageFile(String fName) {boolean isImageFile;// 获取扩展名String FileEnd = fName.substring(fName.lastIndexOf(".") + 1, fName.length()).toLowerCase();if (FileEnd.equals("jpg") || FileEnd.equals("png") || FileEnd.equals("gif")|| FileEnd.equals("jpeg")|| FileEnd.equals("bmp") ) {isImageFile = true;} else {isImageFile = false;}return isImageFile;
}

Android开发-动态获取电视盒子U盘的插拔状态和路径相关推荐

  1. android获取版本号报错,Android开发:获取安卓App版本号的方法步骤

    在Android开发过程中,想要开发一个完整功能的App,各个地方的内容都要涉及到,比如获取App的系统版本号就是必须要有的功能.Android的App版本号相关内容比iOS的App版本号内容要多,而 ...

  2. Android开发之获取通话记录

    上一篇讲的是Android开发之获取手机通讯录,这一篇博客也将针对手机联系人这一块进行开发.下面是获取手机通话记录的详细步骤: 1. 首先,我们需要新建一个类CallLogInfo,用于通话记录的数据 ...

  3. android获取安卓版本,Android开发:获取安卓App版本号的方法步骤

    今天国庆节,在这举国欢庆的日子里,发一篇博文留念一下这个特殊的日子,国庆依然奋战在工作一线. 在Android开发过程中,想要开发一个完整功能的App,各个地方的内容都要涉及到,比如获取App的系统版 ...

  4. Android开发之获取相册照片和获取拍照照片

    在Android的开发过程中,我们可能会读取手机里面的照片或者通过相机拍摄获取照片,这是两种常用的获取图片的方式,在做项目过程中也会经常遇到,下面来介绍一下这两种获取方式.. 1.从本地相册获取照片: ...

  5. android开发:获取键盘的高度(实测真实有效)

    android开发:获取键盘的高度(实测真实有效) 由于最近在做即时通讯,做类似于微信的点击键盘消失,弹出表情页面(表情页面的高度和键盘的高度一致),于是在网上看了好多android测键盘高度的代码, ...

  6. Android开发——后台获取用户点击位置坐标(可获取用户支付宝密码)

    1. getevent命令 我们首先是根据adb shell getevent命令获取到被点击位置的信息. 这里要说明的是,不同的手机手机获得的点击输出是不一样的.以我的真机为例,输出如下 本文原创, ...

  7. android u盘挂载监听,Android SD卡及U盘插拔状态监听及内容读取

    本篇是通过系统方法来对sd卡及U盘插拔监听及数据获取,Android盒子端开发,有系统权限,当然,这个比较简单,知道具体方法,可以通过反射来实现. 先贴上效果图: 获取外置存储设备并监听插拔状态 获取 ...

  8. Android SD卡及U盘插拔状态监听和内容读取

    本篇是通过系统方法来对sd卡及U盘插拔监听及数据获取,Android盒子端开发,有系统权限,当然,这个比较简单,知道具体方法,可以通过反射来实现. 先贴上效果图: 获取外置存储设备并监听插拔状态 获取 ...

  9. [转]VB:如何检测到U盘的插拔(源代码)

    听说现在网络上流传着一些能实时检测到U盘插拔消息并能在其插入后伺机拷贝其中文档资料的恶意程序,而日前在CSDN论坛也看到有网友询问这类程序的实现原理,为此我想通过一个简单的VB程序演示一下核心操作过程 ...

最新文章

  1. CNN的一些可视化方法!
  2. 简易的 Linux 流量实时监控工具 watch+ifstat
  3. 基于MATLAB的RGB转YCBCR色彩空间转换
  4. SqlHelper 数据库操作类2
  5. hadoop整合纪要
  6. 3D点云论文汇总-实时更新
  7. jquery颜色选择器
  8. Apache Kafka 2.7.0 稳定版发布
  9. 实时导出正在运行的虚拟机或检查点
  10. cocos2d-x之SimpleGame分析
  11. 关于maven modules开发时候,eclipse的dubug模式不能找到源代码
  12. Security+ 学习笔记10 软件质量保证
  13. better-scroll插件 api
  14. 全国计算机b类一级考试试题题库,全国计算机等级考试模拟题:一级B试题(一)...
  15. Python如何实现人脸识别系统
  16. U盘系统安装步骤超级简单,弄懂ghost不管是windows7win10都不难
  17. DataGrip 保姆级教程 !
  18. 匿名者Anonymous 十项大事记
  19. linux循环显示系统时间,Linux shell时间处理大全,值得收藏
  20. K8S kube-scheduler-master CreateContainerError 问题解决及思路

热门文章

  1. XShell 和 WinScp 教程
  2. oracle截取字符段的函数,Oracle | 字符串操作 - SUBSTR 和 INSTR函数
  3. SAP PI PO 消息监控器 SXI_MONITOR 报文相关数据库表介绍 SXMSPMAST SXMSCLUP
  4. Java 实现出租车计费问题
  5. taro-ui 的 AtInput标签的bug
  6. vim编辑器配置文件
  7. docker安装各类软件以及创建私有仓库总结
  8. LV和Dior所属集团推出区块链平台以验证奢侈品真伪
  9. 游侠汽车宣布B+轮融资3.5亿美金 估值33.5亿美金
  10. centerandzoom 无效_百度地图api h5获取当前位置授权(iphone6s 和 iphone7失效)