//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