當我運行我的代碼時,加速度計返回的值似乎是隨機的,即使我拿起設備並旋轉它,似乎也沒有任何戲劇性數值變化或明顯指示設備已從靜止位置變爲移動位置。我從谷歌網站複製了代碼。基本上我試圖看看設備是否完全從靜止位置移動。解決方案應該在Android 2.2和工作上面,如果可能的:當設備處於靜止狀態時,加速度計給出隨機值
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_FASTEST);
float[] gravity = new float[3];
@Override
public void onSensorChanged(SensorEvent event)
{
try
{
final float alpha = 0.8f;
float[] linear_acceleration = new float[3];
// Isolate the force of gravity with the low-pass filter.
gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];
// Remove the gravity contribution with the high-pass filter.
linear_acceleration[0] = event.values[0] - gravity[0];
linear_acceleration[1] = event.values[1] - gravity[1];
linear_acceleration[2] = event.values[2] - gravity[2];
}
catch (Exception ex)
{
}
}
重力應該是一個類的方法不可變的領域! – 2013-02-19 08:44:42
沒有什麼區別。事件中的原始值在休息和移動之間沒有任何顯着變化。我雖然刪除了重力數組。 – AndroidDev 2013-02-19 09:09:21