我在安卓开发中获得如下的数据,请问怎样得到电量值?
!为何我的13-14这数的值,每次都不同的?
请问你购买了哪个型号的产品?是我们的beacon产品么?由于我们的beacon会以google eddystone TLM-plain方式广播电量,一般情况下你只需要观察eddystone TLM-plain格式的广播包就可以了,这个广播数据里包含电量
这款产品是EEK beacon。它的广播形式是3个iBeacon广播和1个设备信息的广播。然后大概15秒左右插播一个Google Eddystone TLM-plain 广播包,你需要把这个TLM广播包过滤出来,然后读取其中的电量
3个iBeacon广播和1个设备信息的广播是依次播放还是一次播放的? Google Eddystone TLM-plain 广播包 怎样读取? 我的意思是在安卓编程你们有源码共享一下吗?这方面的资料太少了。谢谢!
检查了一下,13,14位 共收到三种数据:
-22
-79
-81
-62
11
93
应当哪一组才是电池电量的数据?
组1
13:-22
14: -79
组2
13:-22
14: -79
组3
13:-22
14: -79
组4
13:-81
14: -62
那电量应当是多少?
请注意广播内容是uint8的,不存在负数,你需要把它转成uint8来计算。另外TLM plain的广播头固定前缀定义在这里. 这里的第8个字节是0x11.
然后你再检查它的frame type是不是0x20,这样可以精确的过滤出TLM包。
另外你可以安装eddystone validator 来检查电量的值
看最后一个广播,我估计是这个
这个电压是 0x6FAD = 28589mv
,电压约等于2.8589mv
这是你帮另个人回答电量计算的回答:
13 = 12 = 0xC
14 = -82 = 0xAD
用计算器可以算得 0xCAD = 3245
,这里的单位是mV,所以剩余电量为3245mV
这是帮我计算电量的回答:
0x6FAD = 28589mv
,电压约等于 2.8589mv
首先你一定要确定一个包是TLM包,再去解析电量,否则解析结果怎么也不会正确。
0x11
0x20
,其中Version数据必定是0x00由这些条件,你肯定可以过滤出eddystone TLM数据包,而不是什么数据位发生变化这种情况。最后贴个swift代码示例,这里分别解析了eddystone的各种数据帧. 见方法frameTypeForFrame
我用你们提供的aprilbeacondemo 可以测试是75%电量,信号也是3组ibeacon +1组Eddystone信号,但是信号在7,11位数值上跟你说的又不同,晕死了。
明白了,怪不得数据老是不规律,原来TLM频率这么低。 那13位是b,14位是24,那电量值是多少? 正常电压应当是多少?
用你们提供的demoapp测算的值总是75%或66%,怀疑是错的。