Максимальное значение показаний акселерометра на Android - PullRequest
3 голосов
/ 05 января 2012

Я использую диспетчер датчиков Android для получения показаний акселерометра.Показания, которые я получаю, m / s2 и почти все в порядке.Но максимальное значение, которое я получаю по любой оси в любом направлении, составляет | 19.xx |, что составляет примерно 2 Gs.Это проблема для смартфона или есть какие-то настройки, которые мне нужно изменить, чтобы получить большие значения?

Это код, который я использую для получения датчика акселерометра:

sensorManager = (SensorManager) context
            .getSystemService(Context.SENSOR_SERVICE);

    List<Sensor> sensors = sensorManager
            .getSensorList(Sensor.TYPE_ACCELEROMETER);
    if (sensors.size() > 0) {
        sensor = sensors.get(0);
        float max = sensor.getMaximumRange();
        boolean running = sensorManager.registerListener(sensorEventListener,
                sensor, SensorManager.SENSOR_DELAY_GAME);           
    }

и вот так выглядит onSensorChanged ()

public void onSensorChanged(SensorEvent event) {

        now = event.timestamp;

        x = event.values[0];
        y = event.values[1];
        z = event.values[2];

    }

Я использую Android API 7-го уровня.

И я проверил на двух телефонах: HTC HD 2 (Android 2.3.5)) Samsung Spica (Android 2.1)

Ответы [ 2 ]

0 голосов
/ 13 октября 2012

Вы можете заставить G делать это: Gs = sqrt (Xg ^ 2 + Yg ^ 2 + Zg ^ 2), где ^ 2 означает sqr или квадрат (X ^ 2 = X * X) Это даст вам Gs.

0 голосов
/ 05 января 2012

«Точных значений» там нет. Это зависит от устройства. Ускорение может быть положительным или отрицательным - getMaximumRange (), я бы предположил, что вы можете безопасно умножить это значение на -1, чтобы получить минимальное значение.

...