Акселерометр доступа к Android: всегда возвращает 0 в качестве значения

1

Я бы хотел использовать акселерометр в Android-телефоне для моего приложения. Данные от датчика будут сохранены вместе с точкой GPS, поэтому значение необходимо только при обновлении точки GPS.

Если я использую прилагаемый код, значения всегда равны нулю. Уровень API 8 Разрешения: Интернет, точное местоположение Испытательное устройство: Galaxy S (i9000), Nexus One

Любые предложения? Я застрял в этой точке.

С наилучшими пожеланиями из Германии, Pascal

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" );
    }
}
Теги:
null
accelerometer

1 ответ

2
Лучший ответ

Вы назначаете значение accelerometerData в любой точке? Я ожидал, что он будет назначен в методе onCreate.

Вам также может потребоваться учитывать ориентацию экрана и отфильтровать любые события без акселерометра, которые входят (я не уверен, что фильтрация абсолютно необходима, но она находится в Акселерометр Воспроизведите SDK-образец.

  • 0
    Прости, я настоящий нуб. Поэтому, чтобы понять, правильно ли я понял, я должен инициализировать, как указано выше, и добавить «AccelerometerData accelerometerData = new AccelerometerData ();» к моему методу Oncreate? Спасибо за ваш впечатляющий быстрый ответ, Паскаль
  • 1
    Джеймс был быстрее меня, удалил мой дубликат ответа. Вы должны добавить "accelerometerData = new AccelerometerData ();" создать метод. Я также думаю, что, возможно, было бы лучше зарегистрировать / отменить регистрацию слушателя в onResume / onPause вместо onCreate / onStop.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню