【问题标题】:Android : Converting accelerometer output from phone's coordinate into the world coordinate systemAndroid:将加速度计输出从手机坐标转换为世界坐标系
【发布时间】:2011-01-08 00:09:34
【问题描述】:

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

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

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

问候,

穆斯塔法

【问题讨论】:

    标签: android accelerometer


    【解决方案1】:

    如果你的意思是 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);
    }
    

    }

    【讨论】:

    • 不,我的意思是我想把加速度转换成世界坐标X,Y,Z,这样重力的所有影响都会一直在Z轴上,不管是什么方向手机
    【解决方案2】:

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

    你能不能联系我,现在,我正在尝试获取手机的坐标(不是全局坐标,而是本地坐标),但不确定我的东西是否正常工作。

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

    【讨论】:

      猜你喜欢
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      • 2022-08-20
      • 2018-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多