Wie man einen genauen Kompass auf Android macht

meinem android-Anwendung zeigt die Richtung zu einem bestimmten Ort in der Welt und daher muss der Kompass Grad.

Dies ist der code, den ich benutzt habe, um die Berechnung der Grad:

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);
        }
};

Diese Methode funktioniert meistens, aber manchmal ist es einfach immer den falschen Norden an, was muss ich tun, um eine genauere Lage?

InformationsquelleAutor der Frage eladrich | 2011-10-24

Schreibe einen Kommentar