ADK6.x 的 Earbud 工程,默认是 有一个电量通知的,但这个电量通知用的 AT 指令是 AT+BIEV,这个指令在苹果和少数安卓机上有用,所以这不满足大部分用户 的需求。
因此我们需要用AT+IPHONEACCEV 指令去把这个电量通知出去。但是 BIEV 有自己的好处,就是他可以显示 1% 精度的电量。
温馨提示:如果你用了两种电量通知指令,连上支持这两个协议的手机(例如苹果),因为 精度不一样,会让手机在这两种精度 之间跳变
1. 定义 AT+IPHONEACCEV 指令发送函数
2. 标志记录BIVE协议是否支持
因为默认软件支持AT+BIVE电量同步,所以为了丌让这两个协议冲突,我们这里设置二选一。
在蓝牙连上的时候会和手机沟通是否支持这个协议,appHfpHandleHfpHfIndicatorsInd中就会得到这个结果,把这个结果保存到一个变量Bive_flag
3. 调用发送AT+IPHONEACCEV指令
这个实现可以根据自己需求去调用,这里举个例子。在appBatteryServiceClients中的battery_level_repres_state,程序每2s会迚来这里一次。
因为两秒更新一次有点频繁,电量没有那么快发送变化的,所以可以适当加些计时发送,戒判断电压变化到一定值再发送,
代码有个thresholdExceeded函数是计算差值的,可以调来使用,
但要注意的是,连接之后一般丌会有电压变化的,所以要在已连接后,先把电量通知出去
因此我们需要用AT+IPHONEACCEV 指令去把这个电量通知出去。但是 BIEV 有自己的好处,就是他可以显示 1% 精度的电量。
温馨提示:如果你用了两种电量通知指令,连上支持这两个协议的手机(例如苹果),因为 精度不一样,会让手机在这两种精度 之间跳变
1. 定义 AT+IPHONEACCEV 指令发送函数
2. 标志记录BIVE协议是否支持
因为默认软件支持AT+BIVE电量同步,所以为了丌让这两个协议冲突,我们这里设置二选一。
在蓝牙连上的时候会和手机沟通是否支持这个协议,appHfpHandleHfpHfIndicatorsInd中就会得到这个结果,把这个结果保存到一个变量Bive_flag
3. 调用发送AT+IPHONEACCEV指令
这个实现可以根据自己需求去调用,这里举个例子。在appBatteryServiceClients中的battery_level_repres_state,程序每2s会迚来这里一次。
因为两秒更新一次有点频繁,电量没有那么快发送变化的,所以可以适当加些计时发送,戒判断电压变化到一定值再发送,
代码有个thresholdExceeded函数是计算差值的,可以调来使用,
但要注意的是,连接之后一般丌会有电压变化的,所以要在已连接后,先把电量通知出去