2010-06-04 83 views
3

我在Android的硬件指南针上找不到很多信息。我一直试图设置我的标准来强制Android使用硬件指南针。基本上我的问题是我想要轴承更新,即使设备是静止的。Android,使用硬件指南针

从我的理解中,GPS只会在您移动时更新您的方位。无论你是否在移动,我都希望更新。我尝试过将设备推入,认为它是通过将速度设置为恒定的10来移动,但轴承总是返回0.0。我现在使用的测试设备是HTC Tattoo。它有一个指南针,所以这不是问题。所以我的问题是,有没有办法让轴承更新使用硬件指南针或不?不管你的移动与否?

回答

2

你见过this example code?这里用SensorListener来查询方向:

mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); 
mListener = new SensorListener() { 
    public void onSensorChanged(int sensor, float[] values) { 
     if (Config.LOGD) Log.d(TAG, "sensorChanged (" + values[0] + ", " + values[1] + ", " + values[2] + ")"); 
     mValues = values; 
     if (mView != null) { 
      mView.invalidate(); 
     } 
    } 
mSensorManager.registerListener(mListener, 
        SensorManager.SENSOR_ORIENTATION, 
        SensorManager.SENSOR_DELAY_GAME); 

好的,所以这是不推荐使用的代码。现在SensorManager有一个可以使用的方法getOrientation()。这确实需要旋转矩阵。见here for an example

+0

虽然这是使用折旧API的,但没有其他方式吗? – Skizit 2010-06-04 12:52:18

+0

对不起,我已经离开了Android几个月。我发现现在有一个'SensorManager.getOrientation(float [])'方法。 – Marc 2010-06-04 13:00:43

+0

这就是我一直在寻找的!谢谢! :) – Skizit 2010-06-04 14:11:14