2010-06-04 74 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