系统-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_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口.

解决方案二:

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

http://www.jb51.net/article/48638.htm

解决方案三:

http://download.csdn.net/detail/glouds/8055743

时间: 2024-08-01 17:05:58

系统-android usb通讯 大神。。。。来吧的相关文章

android,各位大神扫一眼帮忙指点一下错误

问题描述 android,各位大神扫一眼帮忙指点一下错误 //选择图片之后对图片进行的操作 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (resultCode != RESULT

求教各位看过linuxunix 系统编程手册的大神

问题描述 求教各位看过linuxunix 系统编程手册的大神 小弟使用centos 6.7系统,在编译书中程序时总是出现许多错误,编译前已将所有头文件移至/usr/include 中 解决方案 是不是环境变量没有配置好呀... 你echo $PATH看一下 解决方案二: 那该怎么配置才算正确呢 解决方案三: 看看usr/include在不在搜索路径中,用echo $PATH

android-Android 写事件监听 真机调试出现闪退(我是新手,刚学Android,求大神指教)

问题描述 Android 写事件监听 真机调试出现闪退(我是新手,刚学Android,求大神指教) 这是我的程序: ImageView imageView = (ImageView) findViewById(R.id.login_image); imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); 这是错误日志: 03-08 18:10:43

乱码-我是Android 新手 求大神帮助

问题描述 我是Android 新手 求大神帮助 使用phonegap和zxing实现二维码的扫描,问题是,当二维码中有中文时,会出现乱码 解决方案 调一下编码方式应该就可以了吧,

android-求助:我是Android 新手 求大神帮助

问题描述 求助:我是Android 新手 求大神帮助 Android新手,想要请教给位大神帮助,为什么我的虚拟机一运行,上边框 就没有了 直接顶在了屏幕的左上边?没有最小化关闭按钮了,再就是,我自己用PS画了一个图标,为什么添加图标了 在RUN 一下,就显示下面的东西,菜单进不去.....求帮忙啊 解决方案 ![ 解决方案二: 换虚拟机吧,软模拟太难用了,用genymotion 解决方案三: 虚拟机可以换Genymotion,真的很快!你添加的是要显示封面的吗?是不是你的图标是中文命名的? 解决

转投Android?越狱大神Pod2g吐槽苹果iOS7

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   iOS 7 自推出以来大家对其带来的 新功能以及新界面的评价偏向两极化,有人 211.html">觉得是突破惊喜不断,同时也有不少人觉得了无新意.凭着开发iOS 5及 协助开发iOS 6完美越狱工具而享负盛名的大神级黑客Pod2g,近日试用了iOS 7测试版后,表示对苹果的这款新系统 感到非常失望.       Pod2g昨晚在Twitter上吐

android应用-各位大神,我想在屏幕上定义一片区域,可以在这片区域进行各种操作,能不能实现?

问题描述 各位大神,我想在屏幕上定义一片区域,可以在这片区域进行各种操作,能不能实现? 5C 如果能实现,能否告诉我原理,最好有代码啦.O(∩_∩)O谢谢! 解决方案 屏幕上的区域,如果是在你的应用内,你想如何操作都行!但是,如果是系统界面显示,或者其它应用显示时,你想直接操作是不太可能的.至少,应用级是无法做到的. 当然,如果你有系统,或者驱动一级的权限,可能考虑直接操作 FrameBuffer 来实现. 解决方案二: 就只是应用内的,在屏幕中划出一片区域来放一些view或者组件,需要用到什么

android.mk-跪求大神教写Android.mk

问题描述 跪求大神教写Android.mk 我有三个项目 A,B,C A项目依赖B,C B和C都是一个工程 里面有res资源文件 导出jar无法使用 1.静态库 2.动态库 3.还依赖其他工程 这种情况请问要怎样写Android.mk 啊? 解决方案 android Android.mk 怎么写android Android.mk 怎么写[Makefile]如何写Android.mk(整理)---------------------- 解决方案二: 可以参考一下phone.settings这些工

android st...-求大神帮忙,怎么查看Android Studio for mac的数字签证

问题描述 求大神帮忙,怎么查看Android Studio for mac的数字签证 本人小白,刚刚学习没有多久.在使用百度地图做一个demo,需要签证,找了好久没有找到,哪位大神能帮忙解决一下,急用,谢谢. 解决方案 http://blog.csdn.net/christiansheng/article/details/44770335 解决方案二: http://my.oschina.net/u/1780920/blog/464638 解决方案三: 签证还是签名.说清楚 具体是干什么用的 解