【发布时间】:2011-01-08 00:09:34
【问题描述】:
我一直在从事一个使用加速度计值的 Android 项目。
但是,加速度计的输出是根据手机的坐标系定义的。但我需要它们在世界坐标系中,,
有没有人知道将加速度计的输出值转换为世界坐标的方法?
问候,
穆斯塔法
【问题讨论】:
标签: android accelerometer
我一直在从事一个使用加速度计值的 Android 项目。
但是,加速度计的输出是根据手机的坐标系定义的。但我需要它们在世界坐标系中,,
有没有人知道将加速度计的输出值转换为世界坐标的方法?
问候,
穆斯塔法
【问题讨论】:
标签: android accelerometer
如果你的意思是 x、y、z 坐标,你不能把它们乘以 -1 吗? 这是我第一次开始使用加速度计时所做的:
package com.semajhan.android.accelerometer;
导入android.app.Activity; 导入android.hardware.Sensor; 导入android.hardware.SensorEvent; 导入 android.hardware.SensorEventListener; 导入 android.hardware.SensorManager; 导入android.os.Bundle; 导入android.widget.TextView;
公共类 Accelerometer 扩展 Activity {
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);
}
}
【讨论】:
http://developer.android.com/reference/android/hardware/SensorEvent.html#values 正如这里所说的值 - 加速度数组,而不是坐标..
你能不能联系我,现在,我正在尝试获取手机的坐标(不是全局坐标,而是本地坐标),但不确定我的东西是否正常工作。
这个想法是您在配置(有点校准)时获得手机的世界坐标,然后将手机的坐标应用到新系统中
【讨论】: