文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2022-06-06 10:24

关注

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 Studio使用USB真机调试详解Android USB转串口通信开发实例详解android通过usb读取U盘的方法


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯