`
流沙-只如初见
  • 浏览: 7476 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
文章分类
社区版块
存档分类
最新评论

androidU盘检测

阅读更多
在网上查了一些资料。U盘检测的方法一般有两种方式,检测电池或者查看配置信息。
1.Batterymanager检测方法如下:
IntentFilter mIntentFilter = new IntentFilter();
mIntentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(BtStatusReceiver, mIntentFilter);

public BroadcastReceiver BtStatusReceiver = new BroadcastReceiver() // receive broadcast that BT Adapter status change
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
     String action = intent.getAction();
     if (action.equals(Intent.ACTION_BATTERY_CHANGED))
     {      
      Log.d("Battery", "" + intent.getIntExtra("plugged", 0));Toast text=Toast.makeText(context, "ACTION_USB_DEVICE_ATTACHED"+intent.getIntExtra("plugged", 0), Toast.LENGTH_LONG);
         text.show();
         dataview.setText(""+intent.getIntExtra("plugged", 0));
     }
    }     
};
intent.getIntExtra("plugged", 0)得到的值分别为:
0):断开
1):连上USB
2):连上了充电器

2检测listroot是否有文件路径多出
public class testU implements Runnable{
    private File[] roots=File.listRoots();
    public testU() {
    }
   
    public void run() {
        System.out.println("检测系统开启...");
        while (true) {
            File[] tempFile = File.listRoots();
            boolean sign = false;
            if (tempFile.length > roots.length) {
                for (int i = tempFile.length - 1; i >= 0; i--) {
                    sign = false;
                    for(int j = roots.length - 1; j >= 0; j--) {
                        if (tempFile[i].equals(roots[j])) {
                            sign = true;
                        }
                    }
                    if (sign == false) {
                        System.out.println("插入盘符:"+tempFile[i].toString());
                    }
                }
                roots=File.listRoots();//更新roots
            } else {
                for (int i = roots.length - 1; i >= 0; i--) {
                    sign = false;
                    for(int j = tempFile.length - 1; j >= 0; j--) {
                        if (tempFile[j].equals(roots[i])) {
                            sign = true;
                        }
                    }
                    if (sign == false) {
                        System.out.println("退出盘符:"+roots[i].toString());
                    }
                }
                roots=File.listRoots();//更新roots
            }
            try {
                Thread.sleep(1000);
            } catch (InterruptedException ex) {
                Logger.getLogger(testU.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    public static void main(String args[]) {
        new Thread(new testU()).start();
    }
}
检测u盘插入后,获取u盘总内存及可利用内存可以采用statFs获取。类似SD卡。
final StatFs stat = new StatFs(Udisk.getPath());
final long blockSize = stat.getBlockSize();
final long totalBlocks = stat.getBlockCount();
final long availableBlocks = stat.getAvailableBlocks();
    long mTotalSize = totalBlocks * blockSize;
long mAvailSize = availableBlocks * blockSize;
3,检测配置文件
File Usbfile = new File("/proc/partitions");
                if(Usbfile.exists()){
                try {
                     FileReader  file= new FileReader("/proc/partitions");
                         BufferedReader br=new BufferedReader(file);
                         String strLine="";
                         while((strLine=br.readLine())!=null)
                        {
                             if(strLine.indexOf("sd")>0)
                            {
                            searchFile("usb",Ufile);
                                 System.out.println("Udisk insert---------------------------------->");
                                 Log.d("Udisk","Udisk insert---------->");
                                 break;
                             }
                         }
                         br.close();
                         file.close();
                     } catch (Exception e) {
                         // TODO Auto-generated catch block
                         e.printStackTrace();
                     }
                }  
然后获取usb路径
//获usb文件路径
    private void searchFile(String keyword,File filepath) 
    {
    System.out.println("searchFile start...");
    File[] files = filepath.listFiles();     
            if (files.length > 0) 
            { 
                    for (File file : files) 
                    { 
                     if (file.isDirectory()) 
                     { 
                      //如果目录可读就执行(一定要加,不然会挂掉) 
                      if(file.canRead()){ 
                       searchFile(keyword,file);  //如果是目录,递归查找 
                      } 
        } 
                     else {   
                       //判断是文件,则进行文件名判断
                    //System.out.println("*******************"+file.getName().indexOf(keyword));
                                try {    
                                 if (file.getName().indexOf(keyword) > -1||file.getName().indexOf(keyword.toUpperCase()) > -1)  
                                 {
                                System.out.println("Udisk find:------------------------------>");
                                System.out.println(file.getPath());
                                System.out.println(file.getName());
                                Log.d("Udisk",file.getName());
                                 }    
                               } catch(Exception e) {    
                                        Toast.makeText(this,"find error", Toast.LENGTH_SHORT).show();    
                                }    
                       } 
                    } 
         }  
    } 
分享到:
评论
1 楼 zxlvxj 2013-07-17  
很好,找了有有一段时间了,找到了。。

相关推荐

    android检测U盘插拔事件

    工程里面有俩包,分别用了两种方法检测U盘热插拔,但只有利用广播方式监听U盘热插拔这种方式有效。

    Android 获取OTG U盘路径 sdcard路径

    Android M 读取OTG U盘路径和sdcard路径demo , 第三方apk可以参考使用。摘要为什么要50个字,为什么呢?

    Android USB检测,文件读写demo

    实时检测USB的插入,检测并读取文件,也可根据路径进行文件读写操作

    Android编程实现识别与挂载U盘的方法

    主要介绍了Android编程实现识别与挂载U盘的方法,对比分析了Android针对U盘的识别与挂载技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    android通过usb读取U盘的方法

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

    Android检测USB(OTG)状态(拔出获取连接)

    在Android开发中,如何检测USB(OTG)线状态

    监听u盘插入并自动复制文件

    监听u盘,自动复制文件,部分代码参见csdn高手,但不记得地址了,对不住了。 源码仅限于学习和交流!

    最新 超级U盘加密器V5.39

    高强度的加密算法,有力地保障了您的机密数据安全,双重安全检测机制,保证加密解密畅通无阻,是您U盘安全的必备软件! 是最好的U盘加密软件!  软件操作简单, 性能卓越,加密后的文件夹具有防复制,防删除,防大小查看...

    android USB插拔事件

    一个很实用的test,检测USB的插拔事件

    检测手机otg功能app

    OTG是手机非常非常实用的功能,能接移动硬盘、U盘(这个功能相当于你的手机可以无限扩展内存卡。手机OTG功能检测,教你手机OTG隐藏功能。

    TestUSB.zip

    最近工作需要检测U盘的插入和拔出,就做了这个例子,传到网上,方便自己以后查看,也给有需要的朋友提供一点资料,有需要的朋友可以下载。

    检测USB接口的硬件设备

    枚举USB设备,并列出详细信息,可列举包括U盘,windowsmobile手机,android手机等

    usb_bootloader.zip

    支持各种系统(Windows/Linux/Mac/Android) 不用开发任何上位机,提高产品效率 支持各种加密算法(AES256等),轻松安全升级 自动识别Bin,Hex,自定义加密固件(后缀为sec)文件 支持MD5文件校验机制,保证固件...

    康佳智能电视刷机数据 KKTV U60J等 Uxx系列 物料号99016095 V1.0.12 强制刷机 整机USB升级 主程序

    康佳电视串号检测平台 : http://service.kkapp.com/KKAFTERSALE/pages/sn/sn.jsp 确认自己的主程序软件号 强制升级方法: 1、解压压缩包 2、将文件夹内的update.zip复制到8G容量内FAT32格式的U盘(未做过系统盘)...

    Mt3561系列安卓导航root&recovery.zip

     3、U 盘一个,格式化为 fat32 格式,在根目录放置 OTA 升级固件 xxx_evb3561sv_ct_66_m0-ota-xxx.zip ,以及 ROOT.zip 。 Recovery 安装  1、车机断电,从车机后侧的 microusb 口(非普通 usb 口)接电脑。  2、...

    Jlink ob制作教程 三线Jlink ob神器!!!

    经过一番折腾,终于找到了正解:jlinkob,一个只有三条线的调试器,除了不能检测目标板电压(也没啥用),剩下的都是优点了:体积小(只有u盘大小)、占用引脚少(只占两个引脚)、数据线和android手机通用(到处都...

    【最新版】wechat_devtools_1.02.2004020.dmg【亲测可用】最好的微信开发者工具

    A 新增 选取 android 设备上的 profile 文件进行分析 详情 A 新增 WXML 面板支持自定义组件数据查看与实时修改 A 新增 WXML 面板支持使用键盘 (上下左右) navigate the DOM tree A 新增 WXML 面板支持右键操作 ...

Global site tag (gtag.js) - Google Analytics