我正在使用GPS数据,每秒获取值并在地图上显示当前位置.问题是有时(特别是当精度很低时)值变化很大,使当前位置在地图中的远点之间"跳跃".
我想知道一些简单的方法来避免这种情况.作为第一个想法,我考虑过准确地丢弃超过一定阈值的值,但我想还有其他一些更好的方法.程序执行此操作的常用方法是什么?
任何人都可以帮助从加速度计读数中删除g因子吗?
我正在使用SensorEventListener以及onSensorChanged()获取Sensor.TYPE_ACCELEROMETER数据的方法.我只需要在所有方向上的纯加速度值.因此,在任何状态下,如果设备稳定(或以恒定速度),它应该大致给出(0.0,0.0,0.0).
目前,根据其俯仰和滚动,它根据作用在每个轴上的g力给出可变输出.
我希望有一些公式可以删除它,因为我还从Sensor.TYPE_ORIENTATION监听器获取方向值(俯仰和滚动).我用了一些,但没用.
我正在实施一个演示TIMER,振动(在特定条件下),当我按下启动时,我的计时器开始运行..当我使用停止按钮停止它时,它只是停止.
现在我必须集成一个功能,当人员移动设备时(在Timer运行时),它应该重置计时器.它工作得很好,但加速度计功能并不是绝对准确的.它需要一个快速的反射来重置计时器.
建议我一个很好的解决方案.
这是我的代码
public class SensorAccelerometer implements SensorEventListener {
private Context context;
private SensorManager sensorManager;
private Sensor accelerometer;
private TextView timelabel;
private Handler mHandler;
Runnable run;
private float mLastX, mLastY, mLastZ;
private final float NOISE = (float) 3.0;
public SensorAccelerometer(Context context) {
}
public SensorAccelerometer(Context context,TextView timelabel, Handler mHandler2, Runnable mUpdateTimeTask) {
// TODO Auto-generated constructor stub
this.context = context;
this.timelabel = timelabel;
this.mHandler = mHandler2;
this.run = mUpdateTimeTask;
initialiseSensor();
}
public void initialiseSensor(){
sensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE); …Run Code Online (Sandbox Code Playgroud)