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口.
上一篇: 茶叶是什么垃圾?茶叶的包装是什么垃圾?