Android访问加速计:始终返回0作为值

Android访问加速计:始终返回0作为值,android,null,accelerometer,Android,Null,Accelerometer,我想在我的应用程序中使用Android手机中的加速计。 来自传感器的数据将与GPS点一起保存,因此仅当GPS点更新时才需要该值 如果我使用附加的代码,值总是零。 空气污染指数第八级 权限:互联网,精细位置 测试设备:Galaxy S(i9000),Nexus One 有什么建议吗?我被困在这一点上 德国致以最良好的祝愿, 帕斯卡 您是否在任何点为加速度计数据指定了值?我本来希望它被分配到onCreate方法中 您可能还需要考虑屏幕方向并过滤掉任何传入的非加速计事件(我不确定过滤是否绝对必要,但它

我想在我的应用程序中使用Android手机中的加速计。 来自传感器的数据将与GPS点一起保存,因此仅当GPS点更新时才需要该值

如果我使用附加的代码,值总是零。 空气污染指数第八级 权限:互联网,精细位置 测试设备:Galaxy S(i9000),Nexus One

有什么建议吗?我被困在这一点上

德国致以最良好的祝愿, 帕斯卡


您是否在任何点为加速度计数据指定了值?我本来希望它被分配到
onCreate
方法中


您可能还需要考虑屏幕方向并过滤掉任何传入的非加速计事件(我不确定过滤是否绝对必要,但它在中。

对不起,我是一个真正的noob。因此,要查看我是否正确,我应该像上面那样初始化并添加“AccelerometerData AccelerometerData=new AccelerometerData();”在我的Oncreate方法中?对于你令人印象深刻的快速答案,PascalJames比我快,删除了我的重复答案。你应该添加“AccelerometerData=new AccelerometerData();我还认为在onResume/onPause中注册/取消注册监听器可能比在onCreate/onStop中注册/取消注册监听器更好。
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;

public class AccelerometerService extends Activity{
    AccelerometerData accelerometerData;
    private SensorManager mSensorManager;
    private float x,y,z;
    private class AccelerometerData implements SensorEventListener{ 

        public void onSensorChanged(SensorEvent event) {
            x = event.values[0];
            y = event.values[1];
            z = event.values[2];
        }
        public void onAccuracyChanged(Sensor sensor, int accuracy) {}
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState);
        mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        mSensorManager.registerListener(accelerometerData,
                mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                SensorManager.SENSOR_DELAY_FASTEST);
    }
    @Override
    protected void onResume() {
        super.onResume();  
    }
    @Override
    protected void onStop() {
        mSensorManager.unregisterListener(accelerometerData);
        super.onStop();
    }
    public String getSensorString()
    {
        return ("X: " + x+"m/s, Y: "+ y +"m/s, Z: "+ z +"m/s" );
    }
}