2010-06-04 5 views
3

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

+0

죄송합니다. 몇 달 동안 Android에서 떨어져있었습니다. 이제 SensorManager.getOrientation (float []) 메소드가 있음을 알 수 있습니다. – Marc

+0

이것은 내가 찾고 있었던 것이다! 감사! :) – Skizit

관련 문제