如何使用android线性加速来获取当前位置

时间:2012-01-23 18:38:08

标签: android

我正在尝试创建一个简单的应用程序,向用户显示他的手机与起点相比的位置。例如,如果手机在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; 
}

我是在正确的轨道上还是离开了?

0 个答案:

没有答案