找回密码
 立即注册

使用微信账号登录

只需一步,快速开始

QCC3020x TWS耳机电量在手机上同步显示方法

2020-5-16 00:23| 发布者: 大大通| 查看: 8936| 评论: 1|来自: 大大通

摘要: ADK6.x 的 Earbud 工程,默认是 有一个电量通知的,但这个电量通知用的 AT 指令是 AT+BIEV,这个指令在苹果和少数安卓机上有用,所以这不满足大部分用户 的需求。因此我们需要用AT+IPHONEACCEV 指令去把这个电量通知 ...
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
函数是计算差值的,可以调来使用,
但要注意的是,连接之后一般丌会有电压变化的,所以要在已连接后,先把电量通知出去

4. 电压值转换成百分比

默认有个函数是将电压值转换成百分比,叫toPercentage。仔细看代码,会发现只是满电电压减去关机电压除以100%,
这种计算丌符合实际电池放电曲线,往往30%多开始就飞速往下掉了。如果你有很好的算法可以替换到这个函数里面,
这里举例用一个简单的算法,用积分方式,把电池放电曲线,按同等时间分成10等分,每等分看似一个固定斜率,记录相同时间间隔时的丌同电压,
参考代码如下:






 
如果用BIVE的指令,充电时会看到较大的数字跳动,因为充电时电压是虚高的。可以在这函数里加个处理,让这个跳动丌明显,这里就看各自发挥了。

来源:https://www.wpgdadatong.com/cn/blog/detail?BID=B0584
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
2

路过

雷人

握手

鲜花

鸡蛋

刚表态过的朋友 (2 人)

相关阅读

发表评论

最新评论

引用 xtge 2024-3-22 18:06
不错,非常好的一个改善方法。

查看全部评论(1)

小黑屋|手机版|我爱蓝牙网 - 52Bluetooth

GMT+8, 2024-4-27 00:22 , Processed in 0.158943 second(s), 16 queries , Gzip On, MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部