我一直在使用一个利用加速度计值的Android项目。
然而,加速度计的输出是根据手机的坐标系定义的。但是我需要它们在世界的坐标系中,
是否有人知道将加速度计的输出值转换为世界坐标的方法?
此致
穆斯塔法
答案 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正如它在这里所说的那样 - 加速度数组,而不是坐标..
你能告诉我,现在,我正在努力获得手机的连接(不是全球性的,而是本地的)并且不确定我的东西是否正常工作。
这个想法是你在配置(有点校准)时获得手机的世界坐标,然后将手机的坐标应用到新系统中