第一次写博客,非常的担心自己的表达能力不足造成大家的不便,如有不便请谅解,我会继续努力。写出更高质量更好的博客分享。
本人的公司是做无人机的,之前采用手机获取经纬度的数据给飞控进行跟随功能的开发,但是公司觉得还是需要提高无人机跟随的灵敏度,并且希望在gps信号不好的情况下还能进行一定程度的跟随,所以在跟飞控工程师的协商下,获取了手机的方向传感器跟加速度传感器。具体的方向传感器的意义可以参考此链接:https://my.oschina.net/airship/blog/383047 加速度传感器的意义可以参考此链接:http://blog.csdn.net/lincyang/article/details/49471929
通过飞控工程师给的算法计算出了正东,正北与向下的加速度。
首先获取传感器的实例并且设置监听:
private SensorManager sensorManager; private Sensor acc_sensor; private Sensor mag_sensor;
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); acc_sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION); mag_sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); //给传感器注册监听: sensorManager.registerListener(this, acc_sensor, SensorManager.SENSOR_DELAY_GAME); sensorManager.registerListener(this, mag_sensor,SensorManager.SENSOR_DELAY_GAME);
在activity中添加接口
implements SensorEventListener
实现接口函数:
@Override public void onSensorChanged(SensorEvent event) { if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){ v_tmp1 = (float)(Math.round(event.values[0]*1000)/1000); v_tmp2 = (float)(Math.round(event.values[1]*1000)/1000); v_tmp3 = (float)(Math.round(event.values[2]*1000)/