国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

android通過usb讀取U盤的方法

2019-10-21 21:45:14
字體:
來源:轉載
供稿:網友

本文實例為大家分享了android通過usb讀取U盤的具體代碼,供大家參考,具體內容如下

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" />

3.監聽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);

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>() {//簡單排序 文件夾在前 文件在后    @Override    public int compare(UsbFile oFile1, UsbFile oFile2) {     return oFile1.isDirectory()       ? -1       : 1;    }   });  } catch (IOException e) {   e.printStackTrace();  }  return usbFiles; } private BroadcastReceiver UDiskMountedReceiver = new BroadcastReceiver() {  @Override  public 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;   }  } };}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 怀化市| 扶风县| 伊通| 简阳市| 南平市| 宁武县| 江阴市| 金塔县| 米易县| 青阳县| 新源县| 宁波市| 灵山县| 鄂托克前旗| 大同市| 定襄县| 大丰市| 延庆县| 巴楚县| 女性| 波密县| 理塘县| 济南市| 碌曲县| 平和县| 丹棱县| 华亭县| 湘潭市| 贵德县| 陇西县| 怀柔区| 疏附县| 扎囊县| 澄江县| 涞水县| 游戏| 凤凰县| 徐州市| 新密市| 张北县| 温州市|