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分线器,后来调试的时候发现:同时连接两个设备的时候,只有一个设备能正常上传参数,但是连接是有两个的,我拔掉那个可用的设备后,另一个设备仍然没用,并不是我以为的连接被占用的情况,后来才发现是线程池的问题。