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

更多相关文章

  1. android 访问SD卡的方法
  2. Android(安卓)获取设备和系统信息
  3. arm-eabi-addr2line工具
  4. android 使用post方法请求网址
  5. android线程调度工具类SchedulerUtils
  6. Android适配器之-----SimpleAdapter
  7. android常用知识(累计)
  8. android 音乐频谱
  9. Android中的高效率的数据库操作框架----LitePal

随机推荐

  1. android — JNI注册方法说明
  2. Android(安卓)Input(一)-相关模块初始化
  3. Android(安卓)UI (include的使用)
  4. Android(安卓)- RecyclerView系列之小白
  5. android 利用FloatActionButton悬浮按钮
  6. 软键盘常用控制方法
  7. 如何发布Android应用程序?
  8. Android(安卓)从零开始打造一个 3D立体旋
  9. Android硬件抽象层(HAL)概述
  10. (4.1.2.5)Android(安卓)屏幕旋转 处理 Asyn