//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 } } } |
StatFs 一个模拟linux的df命令的一个类,获得SD卡和手机内存的使用情况
StatFs 常用方法:
|
getAvailableBlocks()
|
返回 Int ,获取当前可用的存储空间
|
|
getBlockCount()
|
返回 Int ,获取该区域可用的文件系统数
|
|
getBlockSize()
|
返回 Int ,大小,以字节为单位,一个文件系统
|
|
getFreeBlocks()
|
返回 Int ,该块区域剩余的空间
|
|
restat(String path)
|
执行一个由该对象所引用的文件系统
|
// 获得挂载的USB设备的存储空间使用情况public static String getAvailableStore(Context context,String filePath) { // 取得sdcard文件路径 StatFs statFs = new StatFs(filePath); // 获取block的SIZE long blocSize = statFs.getBlockSize(); // 获取BLOCK总数量 long totalBlocks = statFs.getBlockCount(); // 可使用的Block的数量 long availaBlock = statFs.getAvailableBlocks(); // long total = totalBlocks * blocSize; long availableSpare = availaBlock * blocSize; String usedSize = Formatter.formatFileSize(context, (totalBlocks - availaBlock) * blocSize); String availableSize = Formatter.formatFileSize(context, availaBlock * blocSize); return usedSize + " / " + availableSize;// 空间:已使用/可用的;} |
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) { e.printStackTrace(); } |
另:设备信息也可以通过 adb shell 进入执行 cat /proc/bus/input/devices看到。

USB外接输入设备信息含义如下:
I: Bus=0019 Vendor=0002 Product=0001 Version=0100 //在Android设备与USB设备数据交互的是否使用到。
N: Name="vmouse" //外接的USB设备的名称。
H: Handlers=sysrq kbd event4 //输入设备监听事件
P: Phys=vmouse/input0
S: Sysfs=/devices/virtual/input/input0
这两行可用于识别该USB设备连接在Android设备的哪一个USB口.
1.)对键盘输入进行监听 getevent
/dev/input/event4(指定的event)

监听到的内容都是16进制的,具体数值的对应键盘按键还没有查到。
2.)对鼠标输入进行监听 cat /dev/input/mouse1(指定的mouse)

至于乱码的话我也不知道为什么
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/kun5069073/article/details/47257493