外接Caller ID设备经OTG连接Android,应用能否获取来电号码?
问题答复
首先明确两个核心问题的结论:
- Android系统本身支持这类外接USB来电显示设备,只要设备符合USB通信规范或者你可以自行完成驱动适配即可使用。
- 你完全可以在自己的Android应用中通过监听USB端口的方式获取来电号码。
具体实现步骤如下:
- 首先在应用的
AndroidManifest.xml中配置USB相关权限与广播监听:
申请权限:`
同时添加监听USB设备插入的intent-filter,用于捕获设备接入事件。 - 设备接入识别:通过系统
UsbManager服务枚举当前连接的USB设备,匹配你手中Caller ID设备的VID(厂商ID)和PID(产品ID),获取对应的UsbDevice实例。 - 建立USB通信:绝大多数这类来电显示设备都属于USB CDC ACM串口类设备,你可以直接使用开源的USB串口通信库打开设备端口,按照该设备在Windows下的驱动参数配置对应的波特率、校验位、停止位即可完成端口初始化。
- 数据解析:端口初始化完成后,即可持续读取端口返回的数据流,按照设备的通信协议解析数据即可提取出来电号码,这类设备通常在有来电时会主动推送FSK/DTMF解码后的号码数据,按照协议格式解析即可拿到目标数据。
注意事项
- 要确保你使用的Android设备正常开启OTG功能,部分设备系统设置中存在单独的OTG开关,需要手动打开后才能正常识别外接USB设备,同时要保证OTG链路供电可以带动你的来电显示设备。
- 如果你的Caller ID设备是需要专属Windows驱动的非标准USB设备,你需要先拿到设备的通信协议文档,否则无法正确解析读取到的原始二进制数据。

内容的提问来源于stack exchange,提问作者Muhammet Adamoglu
相关产品推荐
相关产品推荐

