新手请教 关于电池电量测算的问题


#1

我在安卓开发中获得如下的数据,请问怎样得到电量值?

!
为何我的13-14这数的值,每次都不同的?


#2

请问你购买了哪个型号的产品?是我们的beacon产品么?由于我们的beacon会以google eddystone TLM-plain方式广播电量,一般情况下你只需要观察eddystone TLM-plain格式的广播包就可以了,这个广播数据里包含电量


#3

这是你们的产品吧?我这个数据是从 安卓开发的接收到字段全部读出来的结果。
final byte[] scanRecord
for (int k=0;k<=(scanRecord.length-1);k++) {
gettest1=gettest1+k+": “+ scanRecord[k] +”
";
}
再将gettes1 显示,就这样的。但是好像跟你们例子中数据不同。


#4

这款产品是EEK beacon。它的广播形式是3个iBeacon广播和1个设备信息的广播。然后大概15秒左右插播一个Google Eddystone TLM-plain 广播包,你需要把这个TLM广播包过滤出来,然后读取其中的电量


#5

3个iBeacon广播和1个设备信息的广播是依次播放还是一次播放的? Google Eddystone TLM-plain 广播包 怎样读取? 我的意思是在安卓编程你们有源码共享一下吗?这方面的资料太少了。谢谢!


#6

检查了一下,13,14位 共收到三种数据:
-22
-79

-81
-62

11
93
应当哪一组才是电池电量的数据?


#7

请参考eddystone 的示例app

依次播放的,像这样

iBeacon - iBeacon - iBeacon - 设备信息 - iBeacon …


#8

组1
13:-22
14: -79
组2
13:-22
14: -79
组3
13:-22
14: -79
组4
13:-81
14: -62
那电量应当是多少?


#9

请注意广播内容是uint8的,不存在负数,你需要把它转成uint8来计算。另外TLM plain的广播头固定前缀定义在这里. 这里的第8个字节是0x11.

然后你再检查它的frame type是不是0x20,这样可以精确的过滤出TLM包。


#10

另外你可以安装eddystone validator 来检查电量的值