一般情况下,在android系统中获取手机的方位信息azimuth似乎是很简单的事情,在api中有TYPE_ORIENTATION常量,可以像得到加速度传感器那样得到方向传感器sm.getDefaultSensor(Sensor.TYPE_ORIENTATION);然而我们这样做的话在最新版的SDK中就会看到这么一句话:“TYPE_ORIENTATION This constant is deprecated. use SensorManager.getOrientation() instead. ”即这种方式也过期,不建议使用!Google建议我们在应用程序中使用SensorManager.getOrientation()来获得原始数据。
其实,Android中的方向传感器也是是通过磁力计magnetometer和加速度传感器accelerometer抽象出来的。因此我们可以通过磁力计magnetometer和加速度传感器accelerometer来获得方位信息。由磁场和加速度如何得到方位信息的算法在api中已被封装好了。通过这种方式比直接获得方向传感器获得的信息更准确。
values[0] :azimuth 方向角,但用(磁场+加速度)得到的数据范围是(-180