android的方向传感器Sensor.TYPE_ORIENTATION(已过时,实测新方法得到的结果和旧方法一致)
三个值分别表示:
value[0] 方向角,用来测方向
value[1] 垂直方向夹角,抬起手机上下两侧该值改变
value[2] 水平方向夹角,抬起手机左右两侧该值改变
这三个值按理说是可以完全还原出手机在3D空间中的方向姿态的。但是小米品牌的部分设备该值反常。
使用华为设备测试该传感器参数。首先手机水平放置,value[1],value[2]基本为0,抬起手机右侧,value[2]增加,经过90度这个临界点后value[2]又开始减少,此时,value[0]方向角发生一个100多度的突变。
使用小米设备,重复该操作,经过临界点后,value[0]方向角未发生任何变化。
小米设备的方向传感器参数反常了,还原出来的3D姿态东南西北方向不对。
最开始我认为是不是小米把3个方向角的值进行了某些换算,所以进行控制变量法测试value[1]和value[2]的值。测试发现,华为设备和小米设备同步操作下,垂直方向夹角value[1]和水平方向夹角value[2]无论怎么变化都是一致的。这说明,小米设备只对方向角value[0]进行了偏移矫正。
这真的就很难受了,相当于要单独给小米设备调整这个参数,并且还不清楚是不是所有的小米设备方向传感器参数都是如此。