我正在尝试创建一个简单的应用程序,向用户显示他的手机与起点相比的位置。例如,如果手机在x轴上移动了一米并在y轴上移动了2米,那么它应该显示x:1 y:2 z:0(或-1,-2,取决于它移动的方式)
我试图将加速度两次整合以获得位置,但我得到一些奇怪的结果'就好像手机正在移动,即使它仍然存在。 这是我的代码:
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType() ==Sensor.TYPE_LINEAR_ACCELERATION){
long now = event.timestamp;
if(lastEvent==0){
lastEvent=now;
}
interval = now - lastEvent;
lastEvent = now;
dt=((float) interval)* (float)0.000000001; /// event timestamp is in nannoseconds
for(int i=0;i<3;i++)
{
location[i]=location[i]+v0[i]*dt+event.values[i]*dt*dt/2;
v0[i]=v0[i]+event.values[i]*dt;
}
x.setText("x: "+location[0]); //// textviews
y.setText("y: "+location[1]);
z.setText("z: "+location[2]);
}
return;
}
我是在正确的轨道上还是离开了?