I am developing application for car acceleration tracking. I used standard accelerometer, calibrating it in specific position beforehand.
然后,假设电话的取向没有变化,我将摄像仪数据贴上一定时间,并计算出移动参数,其中之一就是测试结束时的车速。
It works rather well, on a straight, horizontal road: error of a few percent.
但是,我发现,在APIC级10中,有虚拟传感器称为TYPE_LINEAR_ACCELERATION
,而且,根据我的理解,它必须做我需要做的事情:过滤重力、方向变化——因此我可以使用,并完全地加速移动装置。
BUT在实际生活中。
我提出了简单的申请,这没有什么检验:
//public class Accelerometer implements SensorEventListener { ...
public void onSensorChanged(SensorEvent se)
{
if(!active)
return;
lastX = se.values[SensorManager.DATA_X];
lastY = se.values[SensorManager.DATA_Y];
lastZ = se.values[SensorManager.DATA_Z];
long now = System.currentTimeMillis();
interval = now - lastEvetn;
lastEvetn = now;
out.write(Float.toString(lastX) + ";" +
Float.toString(lastY) + ";" +
Float.toString(lastZ) + ";" +
Long.toString(interval) + "
");
}
我的听众有以下参数:
mSensorManager.registerListener(linAcc,
mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION),
SensorManager.SENSOR_DELAY_GAME);
它使用科索沃语,但当我分析数据倾销时,计算速度如<代码>V = V0 + AT时,首先,在<代码>V0 = 0上,在此之前的间隔速度:A = 加速度(SQRT(x*x+y*y+z*z)
(t = 间隔时间),我最终获得非常低的速度――比实际速度低三倍。
Changing Sensor type to TYPE_ACCELEROMETER
, calibrating and using same formula to calculate speed - I get good results, much closer to reality.
So, the question is:
如果我错了,或与<代码”有过错。 传感器.TYPE_LINEAR_ACCELERATION 执行?
我使用三星Nexus S电话。