Отображение значений акселерометра в Android - PullRequest
1 голос
/ 22 октября 2011

Я ищу некоторый исходный код или пример кода, подробно описывающий, как отображать значения акселерометра в Android.Предпочтительно, чтобы значения показывали ускорение в направлении x, направлении y и направлении z.

Я новичок в Android, поэтому любая помощь очень ценится.

Ответы [ 2 ]

11 голосов
/ 22 октября 2011

Вы проверили пример Акселерометр в образцах Android? Вы всегда можете попробовать что-то вроде этого (что я получил от здесь ):

 public class SensorActivity extends Activity implements SensorEventListener {
     private final SensorManager mSensorManager;
     private final Sensor mAccelerometer;

     public SensorActivity() {
         mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
         mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
     }

     protected void onResume() {
         super.onResume();
         mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
     }

     protected void onPause() {
         super.onPause();
         mSensorManager.unregisterListener(this);
     }

     public void onAccuracyChanged(Sensor sensor, int accuracy) {
     }

     public void onSensorChanged(SensorEvent event) {
       //Right in here is where you put code to read the current sensor values and 
       //update any views you might have that are displaying the sensor information
       //You'd get accelerometer values like this:
       if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER)
            return;
        float mSensorX, mSensorY;
        switch (mDisplay.getRotation()) {
            case Surface.ROTATION_0:
                mSensorX = event.values[0];
                mSensorY = event.values[1];
                break;
            case Surface.ROTATION_90:
                mSensorX = -event.values[1];
                mSensorY = event.values[0];
                break;
            case Surface.ROTATION_180:
                mSensorX = -event.values[0];
                mSensorY = -event.values[1];
                break;
            case Surface.ROTATION_270:
                mSensorX = event.values[1];
                mSensorY = -event.values[0];
         }
     }
 }
2 голосов
/ 18 июня 2013

Вот еще один пример с гравитацией, который вернет вектор гравитации. Обратите внимание, что вы можете изменить тип датчика и скорость выборки, подробнее здесь

SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

sensorManager.registerListener(new SensorEventListener() {
    @Override
    public void onSensorChanged(SensorEvent event) {

        float x = event.values[0];
        float y = event.values[1];
        float z = event.values[2];
        double total = Math.sqrt(x * x + y * y + z * z);

    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    }

}, sensor, SensorManager.SENSOR_DELAY_FASTEST);
...