Android中查看USB连接的外接设备信息的代码实例

 更新时间:2014年04月02日 09:40:18   作者:  
这篇文章主要介绍了Android中查看USB连接的外接设备信息的代码实例,需要的朋友可以参考下

1,USB存储设备(如:U盘,移动硬盘):

 //USB存储设备 插拔监听与 SD卡插拔监听一致。

复制代码 代码如下:

 private USBBroadCastReceiver mBroadcastReceiver;

     IntentFilter iFilter = new IntentFilter();
       iFilter.addAction(Intent.ACTION_MEDIA_EJECT);
       iFilter.addAction(Intent.ACTION_MEDIA_MOUNTED);
       iFilter.addAction(Intent.ACTION_MEDIA_REMOVED);
       iFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);

       iFilter.addDataScheme("file");
       mBroadcastReceiver = new USBBroadCastReceiver();
       registerReceiver(mBroadcastReceiver, iFilter);

private class USBBroadCastReceiver extends BroadcastReceiver {
      @Override
      public void onReceive(Context context, Intent intent) {
       String action = intent.getAction();

       if (action.equals(Intent.ACTION_MEDIA_EJECT)) {

          //USB设备移除,更新UI    
       } else if (action.equals(Intent.ACTION_MEDIA_MOUNTED)) {

          //USB设备挂载,更新UI
        }
      }
 }

  //获得挂载的USB设备的存储空间使用情况

public static String getUSBStorage(Context context){
      // USB Storage 

      //storage/udisk为USB设备在Android设备上的挂载路径.不同厂商的Android设备路径不同。

      //这样写同样适合于SD卡挂载。
      File path = new File("/storage/udisk");

      StatFs stat = new StatFs(path.getPath());
      long blockSize = stat.getBlockSize();
      long totalBlocks = stat.getBlockCount();
      long availableBlocks = stat.getAvailableBlocks();
      String usedSize = Formatter.formatFileSize(context, (totalBlocks-availableBlocks) * blockSize);
      String availableSize = Formatter.formatFileSize(context, availableBlocks * blockSize);
      return usedSize + " / " + availableSize;//空间:已使用/可用的
 }


2,USB外接输入设备(如:键盘,鼠标,扫描枪)
复制代码 代码如下:

try {

     //获得外接USB输入设备的信息
     Process p=Runtime.getRuntime().exec("cat /proc/bus/input/devices");
     BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
     String line = null;
     while((line = in.readLine())!= null){
       String deviceInfo = line.trim();

       //对获取的每行的设备信息进行过滤,获得自己想要的。

     }  

    } catch (Exception e) {
  // TODO: handle exception
     e.printStackTrace();
    }


另:设备信息也可以通过 adb shell 进入执行  cat /proc/bus/input/devices看到。

USB外接输入设备信息打印如下:

复制代码 代码如下:

I: Bus=0003 Vendor=11c0 Product=0030 Version=0110
N: Name="ACRUX USB Keyboard"
P: Phys=usb-0000:00:04.0-1.3/input1
S: Sysfs=/devices/pci0000:00/0000:00:04.0/usb1/1-1/1-1.3/1-1.3:1.1/input/input3
U: Uniq=
H: Handlers=mouse1 event3
B: PROP=0
B: EV=17
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=103
B: MSC=10

I: Bus=0003 Vendor=11c0 Product=0030 Version=0110 这行信息会在Android设备与USB设备数据交互的是否使用到。

关于USB外接设备如何与Android设备数据数据交互的代码书写可以参考:

http://developer.android.com/guide/topics/connectivity/usb/index.html

N: Name="ACRUX USB Keyboard" 这行说明了外接的USB设备的名称。

P: Phys=usb-0000:00:04.0-1.3/input1

S: Sysfs=/devices/pci0000:00/0000:00:04.0/usb1/1-1/1-1.3/1-1.3:1.1/input/input3

这两行可用于识别该USB设备连接在Android设备的哪一个USB口.

相关文章

  • Android中PopuWindow实现下拉列表实例

    Android中PopuWindow实现下拉列表实例

    本篇文章主要介绍了Android中PopuWindow实现下拉列表实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Android sharedPreferences实现记住密码功能

    Android sharedPreferences实现记住密码功能

    这篇文章主要为大家详细介绍了Android sharedPreferences实现记住密码功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Android WebView userAgent 设置为桌面UA实例

    Android WebView userAgent 设置为桌面UA实例

    这篇文章主要介绍了Android WebView userAgent 设置为桌面UA实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Android开发No Focused Window ANR产生原理解析

    Android开发No Focused Window ANR产生原理解析

    这篇文章主要为大家介绍了Android开发No Focused Window ANR产生原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Flutter实现固定header底部滑动页效果示例

    Flutter实现固定header底部滑动页效果示例

    这篇文章主要为大家介绍了Flutter实现固定header底部滑动页效果示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Android使用第三方服务器Bmob实现发送短信验证码

    Android使用第三方服务器Bmob实现发送短信验证码

    这篇文章主要介绍了Android使用第三方服务器Bmob实现发送短信验证码的思路详解,需要的朋友可以参考下
    2016-09-09
  • Android布局之LinearLayout线性布局

    Android布局之LinearLayout线性布局

    LinearLayout是线性布局控件:要么横向排布,要么竖向排布,下面通过本篇文章给大家介绍Android布局之LinearLayout线性布局,涉及到android linearlayout 布局相关知识,对本文感兴趣的朋友一起学习吧
    2015-12-12
  • Android 的触摸事件详解及示例代码

    Android 的触摸事件详解及示例代码

    本文主要介绍Android 的触摸事件,这里整理了详细的资料,并附代码示例,希望能帮助到有需要的小伙伴
    2016-09-09
  • Android AnalogClock简单使用方法实例

    Android AnalogClock简单使用方法实例

    这篇文章主要介绍了Android AnalogClock简单使用方法,结合实例形式简单分析了AnalogClock的布局调用技巧,需要的朋友可以参考下
    2016-01-01
  • Android自定义View实现圆形切图效果

    Android自定义View实现圆形切图效果

    这篇文章主要为大家详细介绍了Android自定义View实现圆形切图效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12

最新评论