【发布时间】:2013-05-24 19:10:47
【问题描述】:
我正在尝试基于 Sensor.TYPE_LINEAR_ACCELERATION 计算一个新的 X 位置,我将应用于我的 android 游戏。
我从以下变量全部设置为 0 开始:
float newX=0;
float lastX0 =0;
float lastX1 =0;
我的时间变量最初是这样设置的:
float newTime = System.currentTimeMillis()/1000;
float lastTime0 = lastTime1 = newTime;
然后我的 On SensorChange 看起来像这样:
public onSensorChanged(SensorEvent evt){
if (type == Sensor.TYPE_LINEAR_ACCELERATION) {
newTime = System.currentTimeMillis()/1000;
float oldDeltaTime = lastTime1-lastTime0;
float newDeltaTime = newTime- lastTime1;
if(oldDeltaTime<1)oldDeltaTime =1;
newX = lastX1 + ((lastX1 - lastX0)/oldDeltaTime)*newDeltaTime +(evt.values[0]/2)*(newDeltaTime*newDeltaTime);
lastX0 = lastX1;
lastX1 = newX;
lastTime0 = lastTime1;
lastTime1 = newTime;
Log.v("SENSOR MAN LINEAR", "new X:"+newX);
}
}
但我的日志中的 newX 一直为 0。
有没有人成功地将 LinearAcceleration 翻译成位置? 谁能弄清楚我做错了什么..
我在里面哭!
【问题讨论】:
标签: android accelerometer linear-algebra android-sensors sensor-fusion