Android:将加速度计输出从手机坐标转换为世界坐标系

时间:2011-01-08 00:09:34

标签: android accelerometer

我一直在使用一个利用加速度计值的Android项目。

然而,加速度计的输出是根据手机的坐标系定义的。但是我需要它们在世界的坐标系中,

是否有人知道将加速度计的输出值转换为世界坐标的方法?

此致

穆斯塔法

2 个答案:

答案 0 :(得分:0)

如果你的意思是x,y,z坐标,你不能将它们乘以-1吗? 这是我第一次开始使用加速度计时所做的:

package com.semajhan.android.accelerometer;

import android.app.Activity; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.widget.TextView;

公共类Accelerometer扩展了活动{

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);
}

}

答案 1 :(得分:0)

http://developer.android.com/reference/android/hardware/SensorEvent.html#values正如它在这里所说的那样 - 加速度数组,而不是坐标..

你能告诉我,现在,我正在努力获得手机的连接(不是全球性的,而是本地的)并且不确定我的东西是否正常工作。

这个想法是你在配置(有点校准)时获得手机的世界坐标,然后将手机的坐标应用到新系统中