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口.

时间: 2024-10-01 20:13:40

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

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

1,USB存储设备(如:U盘,移动硬盘):  //USB存储设备 插拔监听与 SD卡插拔监听一致. 复制代码 代码如下:  private USBBroadCastReceiver mBroadcastReceiver;      IntentFilter iFilter = new IntentFilter();       iFilter.addAction(Intent.ACTION_MEDIA_EJECT);       iFilter.addAction(Intent.ACTION_M

CentOS 7 中查看网络连接的命令

  CentOS 7系统与以前centos6是有一些区别的,那么如何在CentOS 7 中查看网络连接?有需要了解的朋友可以和小编一起来看看吧. 一直用 ifconfig 命令查看 CentOS 中的网络连接,包括 IP 地址.MAC 地址.网络连接状态等.升级到 CentOS 7 之后 ifconfig 就找不到了,原来这个指令已经被废弃,改用 ip 指令.同样的事情也发生在 RHEL 7.Oracle Linux 7.Scientific Linux 7 的 minimal 版本中. 在 C

android-如何在Android中查看intent的请求码和结果码

问题描述 如何在Android中查看intent的请求码和结果码 如何在Android中查看intent的请求码和结果码,最好详细一点,本人是个新手,谢谢大家 解决方案 你输出要logcat上不就能看到了 解决方案二: android中的请求码和结果码Android基础 Intent 请求码和返回码Android中startActivity的使用----请求码与结果码的意义 解决方案三: 你是调用的startActivityForResult么?如果是的话,请求码是你自己设置的,结果码再重写那个

android java 回调-关于android中的回调机制 求大神帮忙看看代码

问题描述 关于android中的回调机制 求大神帮忙看看代码 boss 叫我写一个sdk 然后里面得实现回调 还给了我个demo 说回调机制和这个demo 一样 大概就是从A客户端发出一个数据 然后我这边接受 接受和执行一个事件 然后再回调给C public class DemoActivity extends Activity { private InputInterceptor input; @Override protected void onCreate(Bundle savedInst

Android中RecyclerView上拉下拉,分割线,多条目的实例代码

//activity的xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity

Android中imageView图片放大缩小及旋转功能示例代码

一.简介 二.方法 1)设置图片放大缩小效果 第一步:将<ImageView>标签中的android:scaleType设置为"fitCenter" android:scaleType="fitCenter" 第二步:获取屏幕的宽度 DisplayMetrics dm=new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); dm.widthPixels 第三

方法-通过无线连接手机获取手机信息的代码

问题描述 通过无线连接手机获取手机信息的代码 大神求救,本人技术渣,在做毕业设计,老师要求做移动端APP但是需要通过无线连接电脑并获取手机得基本信息,完全不懂,求大神指点连接和获取数据的方法.多谢 解决方案 可以通过wifi或者蓝牙链接电脑,wifi的话就是socket编程了,在android上有专门的API获取手机信息,然后通过socket传到pc上

关于JAVA中事件分发和监听机制实现的代码实例

文章标题:关于JAVA中事件分发和监听机制实现的代码实例 文章地址: http://blog.csdn.net/5iasp/article/details/37054171 作者: javaboy2012 Email:yanek@163.com qq:    1046011462     一.场景假设 假设有博客系统中需要实现如下功能: 系统中用户发布文章,修改文章,删除文章时,需要一些相关的操作需要执行. 发布文章后,给好友发送邮件通知,给用户加积分,对文章做全文索引. 修改文章后,给好友发送

Android中判断网络连接是否可用及监控网络状态_Android

获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 1)判断是否有网络连接 复制代码 代码如下: public boolean isNetworkConnected(Context context) { if (context != null) { ConnectivityManager mConn