1. 关联 compile ‘com.github.mjdev:libaums:+’
  2. 权限设置
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.hardware.usb.host" android:required="false" />
<uses-feature android:name="android.hardware.usb.host" android:required="true" />

  1. 监听u盘 插入拔出的广播
 //监听otg插入 拔出IntentFilter usbDeviceStateFilter = new IntentFilter();usbDeviceStateFilter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);usbDeviceStateFilter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);mContext.registerReceiver(UDiskMountedReceiver, usbDeviceStateFilter);//注册监听自定义广播IntentFilter filter = new IntentFilter(Constant.ACTION_USB_PERMISSION);mContext.registerReceiver(UDiskMountedReceiver, filter);
  1. 4.
package com.zb.usbtest;/**  @项目名:  UsbTest *  @包名:    com.zb.usbtest*  @文件名:   ReadUDisk*  @创建者:   25934*  @创建时间:  2018-07-24 13:50*  @描述:    TODO*/import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.hardware.usb.UsbManager;
import android.util.Log;
import com.github.mjdev.libaums.UsbMassStorageDevice;
import com.github.mjdev.libaums.fs.FileSystem;
import com.github.mjdev.libaums.fs.UsbFile;
import com.github.mjdev.libaums.partition.Partition;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import static com.zb.usbtest.Constant.ACTION_USB_PERMISSION;public class ReadUDisk {private UDiskCallBack.OnUDiskCallBack mOnUDiskCallBack = null;private Context                mContext;private UsbMassStorageDevice[] storageDevices;private List<UsbFile> usbFiles = new ArrayList<>();private final UsbManager mUsbManager;public ReadUDisk(Context context) {mContext = context;mUsbManager = (UsbManager) mContext.getSystemService(Context.USB_SERVICE);}/*** 接受U盘插入和拔出事件* @param onUDiskCallBack*/public void setOnUDiskCallBack(UDiskCallBack.OnUDiskCallBack onUDiskCallBack) {if (mOnUDiskCallBack == null) {registerReceiver();mOnUDiskCallBack = onUDiskCallBack;}}/*** 注册广播接收者*/public void registerReceiver() {//监听otg插入 拔出IntentFilter usbDeviceStateFilter = new IntentFilter();usbDeviceStateFilter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);usbDeviceStateFilter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);mContext.registerReceiver(UDiskMountedReceiver, usbDeviceStateFilter);//注册监听自定义广播IntentFilter filter = new IntentFilter(Constant.ACTION_USB_PERMISSION);mContext.registerReceiver(UDiskMountedReceiver, filter);Log.e("ReadUDisk", "registerReceiver: ");}/*** 注销广播接收者*/public void unReisterReceiver() {if (UDiskMountedReceiver != null) {mContext.unregisterReceiver(UDiskMountedReceiver);}}/*** 检查usb设备的权限* @param device* @return*/public boolean checkPerssion(UsbMassStorageDevice device) {if (mUsbManager==null){return false;}if (mUsbManager.hasPermission(device.getUsbDevice())) {//有就直接读取设备是否有权限return true;} else {return false;}}/*** 读取当前usb设备的数量* @return*/public int getDeviceCount() {//获取存储设备UsbMassStorageDevice[] storageDevices =UsbMassStorageDevice.getMassStorageDevices(mContext);return storageDevices.length;}/*** 根据position获取usb设备* @param position* @return*/public UsbMassStorageDevice getUsbMassDevice(int position) {//获取存储设备UsbMassStorageDevice[] storageDevices =UsbMassStorageDevice.getMassStorageDevices(mContext);if (position > storageDevices.length) {return null;} else {return storageDevices[position];}}/*** 获取usb上所有的存储设备* @return*/public UsbMassStorageDevice[] getUsbMassAllDevice() {//获取存储设备UsbMassStorageDevice[] storageDevices =UsbMassStorageDevice.getMassStorageDevices(mContext);return storageDevices;}/*** 根据设备获取路径* @param device* @return*/public FileSystem readDevice(UsbMassStorageDevice device) {try {if (!checkPerssion(device)){  //检查是否有权限return null;}device.init();//使用设备之前需要进行 初始化Partition  partition = device.getPartitions().get(0); //仅使用设备的第一个分区FileSystem currentFs = partition.getFileSystem();// currentFs.getCapacity(); //容量大小// currentFs.getOccupiedSpace(); //已使用大小// currentFs.getFreeSpace();  //未使用的大小UsbFile root       = currentFs.getRootDirectory();//获取根目录String  deviceName = currentFs.getVolumeLabel();//获取设备标签return currentFs;} catch (Exception e) {e.printStackTrace();return null;}}/*** 获取U盘的文件和文件夹路径* @param fileSystem* @return*/public List<UsbFile> getUsbFiles(FileSystem fileSystem) {usbFiles.clear();try {for (UsbFile file : fileSystem.getRootDirectory().listFiles()) {  //将所以文件和文件夹路径添加到usbFiles数组中usbFiles.add(file);}Collections.sort(usbFiles, new Comparator<UsbFile>() {//简单排序 文件夹在前 文件在后@Overridepublic int compare(UsbFile oFile1, UsbFile oFile2) {return oFile1.isDirectory()? -1: 1;}});} catch (IOException e) {e.printStackTrace();}return usbFiles;}private BroadcastReceiver UDiskMountedReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();switch (action) {case ACTION_USB_PERMISSION: //自定义权限广播if (mOnUDiskCallBack != null) {mOnUDiskCallBack.onPermissionCallBack();}break;case UsbManager.ACTION_USB_DEVICE_ATTACHED: //usb设备插入广播if (mOnUDiskCallBack != null) {mOnUDiskCallBack.onAttachDeviceCallBack();}break;case UsbManager.ACTION_USB_DEVICE_DETACHED: //usb设备拔出广播if (mOnUDiskCallBack != null) {mOnUDiskCallBack.onDetachDeviceCallBack();}break;}}};
}

android 通过usb读取 U盘相关推荐

  1. android通过usb读取U盘的方法

    本文实例为大家分享了android通过usb读取U盘的具体代码,供大家参考,具体内容如下 1.关联 compile 'com.github.mjdev:libaums:+' 2.权限设置 <us ...

  2. android u盘广播,android通过usb读取U盘的方法

    本文实例为大家分享了android通过usb读取U盘的具体代码,供大家参考,具体内容如下 1.关联 compile 'com.github.mjdev:libaums:+' 2.权限设置 3.监听u盘 ...

  3. android通过USB读取身份证信息

    一.USB的通信流程 搜索设备->建立连接->通信 , 全部代码请 "戳这" 1.搜索设备 /*** 获取目标UsbDevice* @param view*/publi ...

  4. u盘安卓linux,Android/Linux USB OTG U盘的挂载问题

    问题:通过otg可以识别到USB鼠标,但插上U盘却不识别. 问题分析:怀疑是USB otg的menuconfig没有配置. 问题处理: 1.make menuconfig进入config的配置 2.配 ...

  5. Android设备与外接U盘实现数据读取操作

    现在越来越多手机支持OTG功能,通过OTG可以实现与外接入的U盘等USB设备实现数据传输.关于OTG,可以参考: http://blog.csdn.net/srw11/article/details/ ...

  6. android OTG (USB读写,U盘读写)最全使用相关总结

    androidOTG (USB读写,U盘读写) 最全使用相关总结 简介 第一种读取方法:android推荐使用的通过endpoint的形式进行通信 第二种读取方法:像读你sdcard的形式来读你的U盘 ...

  7. Android USB OTG U盘读写相关使用最全总结

    Android USB OTG U盘读写相关使用最全总结 https://blog.csdn.net/qq_29924041/article/details/80141514 androidOTG ( ...

  8. Android 8.0 Car开发板读取U盘上的文件

    整体框架 Vold是Volume Daemon的缩写,它是Android平台中外部存储系统的管控中心,是管理和控制Android平台外部存储设备的后台进程.其功能主要包括:SD卡的插拔事件检测.SD卡 ...

  9. android usb没有读写节点,2019踩坑无数含泪写下最新教程系列(三)树莓派挂载android(树莓派通过usb读取手机里面档案)...

    2019踩坑无数含泪写下最新教程系列(三)树莓派挂载android(树莓派通过usb读取手机里面档案) STEP1: Install packages Install support for MTP: ...

最新文章

  1. Flume-0.9.4数据插入HBase-0.96
  2. CSDN湘苗培优|成长,从走出舒适区开始
  3. 静态页转换平台(StaticPol)-静态页生成终极解决方案(转)
  4. python如何在官网下载1005无标题,如何安装python cairo?
  5. Docker怎样提交镜像(把容器打成镜像)
  6. MyBatisPlus条件构造器带条件查询selectList使用
  7. CSS 温故知新 CSS垂直居中
  8. c语言贪吃蛇游戏完整代码
  9. 查看Product table entry数量的几种办法
  10. ajax失败的原因,使用https协议失败的ajax请求失败的可能原因但http工作
  11. 只工作不玩耍_不玩耍:独立游戏开发商的经验教训
  12. 思科模拟器企业网站服务器配置,思科模拟器服务器配置
  13. 局域网制作ftp服务器,如何架设内网ftp服务器 搭建ftp yum源
  14. Machine Learning - Coursera week5 Backpropagation in Practice
  15. 智能一代云平台(三十一):mybatis加入分页
  16. 厄拉多塞筛法求素数 c语言,求质数(Prime Number 素数)的方法——厄拉多塞筛法...
  17. 计算机程序员证书限制条件,高级程序员考试报名条件有什么限制?
  18. amazeui验证遇到的坑
  19. Coursera 斯坦福大学科学论文写作课程笔记(二)
  20. 必备效率:一个让你不再加班的小白编程课

热门文章

  1. buuctf密码题 传统知识+古典密码
  2. 【每日手写JS代码】
  3. FCPX插件-16个手绘卡通素描涂鸦图形文字标题动画 Scribble Sketch Lower Thirds
  4. vista 之万能五笔7问题
  5. 【Unity笔记】使物体(船)漂浮在水面上——浮力
  6. 计算机学院毕业典礼口号,毕业典礼主题口号
  7. high sierra镜像_在High Sierra升级后修复git
  8. 新年3D烟花秀,新年快乐代码,春节快乐代码,跨年立体烟花秀
  9. Session是什么东西
  10. php 多线程并发处理