Comment faire une boussole précise sur android

mon application android montre le sens d'une place particulière dans le monde et, par conséquent, les besoins en la matière pour obtenir la boussole degré.


C'est le code que j'ai utilisé pour calculer les degrés:

public void getDirection() {        
    mySensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
    List<Sensor> mySensors = mySensorManager.getSensorList(Sensor.TYPE_ORIENTATION);
    if(mySensors.size() > 0){
        mySensorManager.registerListener(mySensorEventListener, mySensors.get(0), SensorManager.SENSOR_DELAY_UI);           
    }
    else{
        TextView alert = (TextView)findViewById(R.id.instruct);
        alert.setText(getString(R.string.direction_not_found));
        myCompassView.setVisibility(myCompassView.INVISIBLE);

    }
}
private SensorEventListener mySensorEventListener = new SensorEventListener(){

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        //TODO Auto-generated method stub

    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        //TODO Auto-generated method stub
        compassBearing = (float)event.values[0];
        float bearing;
        bearing = compassBearing - templeBearing;
        if (bearing < 0)
            bearing = 360 + bearing;
        myCompassView.updateDirection(bearing);
        }
};

Cette méthode fonctionne, mais parfois il est juste le mauvais nord, que dois-je faire pour obtenir une localisation plus précise?

InformationsquelleAutor eladrich | 2011-10-24