大家好!
这篇博文给大家讲解的是“基于高通平台 SINK工程该如何实现支持百分之一精度的电池电量显示功能”,希望大家喜欢,并多多指教!!!
在sink工程上,之前大家在电池电量的显示功能上基本都是采用柱状型的显示,柱状的显示都是走的标准化AT COMMAND中的HFP命令AT+IPHONEACCEV指令。
HFP命令AT+XAPL
- 描述:允许通过耳机自定义AT命令
- 发起者:耳机
- 格式:AT+XAPL=[vendorID]-[productID]-[version],[features]
- 参数:
- vendorID: 标识生产商的vendor ID的十六进制表示,但是没有0x前缀
- productID: 标识生产生的product ID的十六进制表示,但是没有0x前缀
- version: 软件的版本
- features: 用10进制标识的位标识:
- 1 = 耳机支持电池电量报告
- 2 = 耳机暂停或者正在充电
- 其他值保留
- 例子: AT+XAPL=ABCD-1234-0100,3
- 响应: +XAPL=iPhone,[features]
HFP命令AT+IPHONEACCEV
- 描述:报告耳机的状态变更
- 发起者:耳机
- 格式:AT+IPHONEACCEV=[Number of key/value pairs ],[key1 ],[val1 ],[key2 ],[val2 ],...
- 参数:
- Number of key/value pairs : 接下来参数的数量
- key: 被报告状态变化的类型
- 1 = 电量等级
- 2 = 暂停状态
- val: 更改的值
- Battery events:0-9之间数字的字符串 A string value between '0' and '9'.
- Dock state: 0 = undocked, 1 = docked.
- Example: AT+IPHONEACCEV=1,1,3
从上描述可以看出,柱状显示支持最大的精度就是10%,而在高通平台上往往我们都用的是6段。
自从前两年开始,iphone手机支持了精度1%的电量显示图标,这两年很多安卓的手机也跟随响应了这个需求,从而在用户的手中,更喜欢精度高的显示。
其1%的这个电量通知用的 AT 指令是 AT+BIEV:
描述:
HF Indicator
如果HF支持HF indicator,其会查看AG是否支持HF indicator。
如果HF和AG支持HF indicator特性,HF将发送AT+BIND=< HF supported HF indicators >通知HF侧支持的indicator,AG以OK应答。
当AG接收到HF告知的HF indicator特性,HF将发送AT+BIND=?请求AG侧支持的HF indicator。AG将会以+BIND和以OK结尾的应答。
当HF接收到AG支持的HF indicator,HF将会发送AT+BIND?命令确定HF目前使能的HF indicator。AG将会一次或多次以+BIND应答和以OK结尾的应答。
至此HF可能发送AT+BIEV命令告知AG其使能的HF indicator发生变化。
AG可以使用+BIND使能或者禁止任何HF indicator。
其柱状电量显示的实现方式,大家应该用的都是比较熟悉了,简单的描述就是动态的发送“AT+IPHONEACCEV 和 AT+XAPL”指令。