为何AT指令在不同设备上结果不同?双卡设备来电SIM识别疑问
蓝牙HFP下双卡设备来电SIM识别的AT指令问题及解决方案
问题根源分析
- HFP规范里,
AT+CNUM的定义是返回设备存储的号码信息,并没有强制要求关联当前通话的SIM卡。不同厂商的实现逻辑差异才是结果不一致的核心原因,和Android版本、蓝牙版本没有直接必然联系:- 像Oppo F11 Pro这类设备,来电时会动态把
AT+CNUM的返回值更新为当前通话对应的SIM号码; - 但Pixel 6a、OnePlus 10T、iPhone 12 Pro这些设备,只会返回预设的默认SIM信息,或者所有SIM的静态存储内容,不会随当前通话切换返回值。
- 像Oppo F11 Pro这类设备,来电时会动态把
可行替代方案
1. 解析AT+CLCC的扩展信息
不少Android设备的HFP实现会在AT+CLCC(当前通话列表)的返回结果里附加SIM卡标识,格式大概是这样:
+CLCC: 1,0,4,0,"1234567890",129,"SIM1"
其中最后一段的SIM1或SIM2就是当前通话使用的SIM卡标识。需要注意不同厂商的扩展格式可能有差异,得针对性测试解析。
2. 监听来电时的AT+CLIP指令
有来电触发时,蓝牙设备会收到+CLIP(来电显示)指令,部分Android设备会在该指令的扩展字段里携带SIM信息,例如:
+CLIP: "1234567890",129,"","",0,"SIM2"
这个属于厂商自定义实现,需要先确认目标设备是否支持。
3. iOS设备的特殊处理
iOS对HFP的AT指令限制很严格,AT+CNUM仅返回默认SIM的信息,且几乎没有自定义扩展字段。目前没法通过AT指令直接识别来电对应的SIM卡,只能考虑通过来电语音提示、系统通知这类间接方式判断。
最后提个醒:
AT+CNUM的行为差异全看厂商怎么实现,和Android/蓝牙版本无直接关联;- 优先尝试解析
AT+CLCC或AT+CLIP的扩展字段,这是获取当前通话SIM信息最可行的路子; - iOS设备别死磕AT指令了,得换其他思路。
内容的提问来源于stack exchange,提问作者Aryaveer Chaudhary
相关产品推荐
相关产品推荐

