Android: преобразование выходного сигнала акселерометра из координаты телефона в мировую систему координат - PullRequest
0 голосов
/ 08 января 2011

Я работал в проекте Android, который использует значения акселерометра.

Однако выходной сигнал акселерометра определяется в терминах системы координат телефона. но мне нужно, чтобы они были в мировой системе координат ,,

знает ли какой-либо орган способ преобразования выходных значений акселерометра в координаты мира?

С уважением,

Moustafa

Ответы [ 2 ]

0 голосов
/ 04 февраля 2011

http://developer.android.com/reference/android/hardware/SensorEvent.html#values как сказано здесь значения - массив ускорений, а не координат ..

Не могли бы вы связаться со мной прямо сейчас, я пытаюсь получить координаты телефона (не глобальные, а локальные) и не уверен, что мои материалы работают правильно.

Идея состоит в том, что вы получаете мировые координаты телефона при настройке (своего рода калибровке), а затем применяете координаты телефона в новой системе

0 голосов
/ 08 января 2011

Если вы имеете в виду координаты x, y, z, вы не можете просто умножить их на -1? Вот что я сделал, когда впервые начал возиться с акселерометром:

package com.semajhan.android.accelerometer;

импорт android.app.Activity; импорт android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; импорт android.hardware.SensorManager; импорт android.os.Bundle; import android.widget.TextView;

Акселерометр общедоступного класса расширяет деятельность {

SensorManager sensorManager;
Sensor accelerometer;
TextView textView;
private SensorEventListener sensorEventListener = new SensorEventListener() {

    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }

    public void onSensorChanged(SensorEvent event) {

        float x = event.values[0];
        float y = event.values[1];
        float z = event.values[2];
        update(x, y, z);
    }
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    textView = new TextView(this);
    setContentView(textView);
    sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
    accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}

public void update(float x, float y, float z) {

    textView.setText("x: " + x + " y: " + y + " z: " + z);
}

protected void onResume() {
    super.onResume();
    sensorManager.registerListener(sensorEventListener, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
}

protected void onPause() {
    super.onPause();
    sensorManager.unregisterListener(sensorEventListener);
}

}

...