2019-06-24

Android USB通信

积少成多:在一个工地门口,有4个通道用于考勤,对应4个上班考勤机和4个下班考勤机,然后把考勤数据及时的显示在门口的电视上。PS:考勤信息有今日考勤人数,在场人数,最新进场人数,最新离场人数等。


开发过程中遇到以下两个坑:

1:循环获取USB设备使用权限;

2:监听每个设备发来的信息;

对于循环获取权限

代码:

以上是代码,这里需要注意的是  因为用到了PendingIntent  所以所在的Activity需要设置启动模式为:singleInstance。

对于监听每个设备发来的信息

我使用的是github上的开源项目:usb-serial-for-android 

主要对其中TemperatureUsbControl类的startIoManager进行了改造,代码如下:

其中需要注意的是:每一个设备都需要启动一个线程池去不断读取USB端口,不能用一个线程池去同时监听所有设备。


最后

一天电视机只有2个USB接口,我使用的是USB分线器进行了拓展,起初研究的时候遇到了那个线程池的问题,我就以为是Android usb协议不支持USB分线器,后来调试的时候发现:同时连接两个设备的时候,只有一个设备能正常上传参数,但是连接是有两个的,我拔掉那个可用的设备后,另一个设备仍然没用,并不是我以为的连接被占用的情况,后来才发现是线程池的问题。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容