之前做了一个关于Android USB通信的Case,通过Android的USB总线给Zigbee供电,和板载的Zigbee(基于Zigbee的自组网)进行通信。要使用Android的USB Host功能,首先你需要确定你的平板(手机)设备是否支持USB Host的功能,你可以从手机开发商的简介里面看到,这个功能是由CPU直接关联的,和软件没有关系,所以,你可以把你的外设模块插进去你的Android设备看看有没有反应(比如:指示灯亮),假如没有反应,那肯定是不支持的。
废话说了那么多了,进入正题。
我的案子是把USB的通信写在Service里面的,有不了解Service的,先看Service的相关内容。下面列出了Android对USB的支持。
点开USB,你可以看到Android USB支持的两种模式:
第一种就是HOST模式:Android设备为USB总线和外设供电,数据传输是双向的。
第二种是Accessory模式:即附件模式,Android作为附件,手机和电脑连接,通常是这种模式,由USB Device端向总线供电,数据传输方向是双向的。这就是为什么手机插到电脑上可以充电的原因。
我们讨论的是第一种模式——HOST。
在讨论具体代码之前,我需要先讲一下再host模式下面的调试办法,因为数据线的端口被外设使用了,那么,传统的连接数据线调试的方法已经不行了。官网给出了解决办法:
1、请把你的Android设备用数据线连接到电脑,当然,你也要把Android设备的wifi打开。
2、在windows命令行下,进入SDK platform-tools/
目录(具体看你把SDK安装在哪个目录了),执行 adb tcpip 5555
回车。这里其实是打开了adb调试的无线端口(Android设备在电脑上的端口映射),其实后面的数字你可以随便来,只要端口没有被占用。
3、adb connect <device-ip-address>:5555键入回车,这里的device-ip-address是你Android端的IP地址。
4、最后adb usb回车,假如没有问题,现在你已经可以在eclipse上看到logcat的输出了。
其实还有个简单的办法,笔者是使用这个办法,你可以在应用商店上下一个无线ADB工具