da ich schon seit paar Tagen einen kleinen Kompass habe, werde ich nun ein Tutorial dafür schreiben.
Das wichtigste dafür ist der SensorManager.
TYPE_ORIENTATION ist die Art des Sensors und wird natürlich beim Kopass von der Ausrichtung des Handys spiegelt.SensorManager meinSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
meinSensorManager.registerListener(this, mSensorManager .getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_NORMAL);
Der erste Parameter beim
SensorManager.
registerListener(this...
ist unsere Schnittstelle der SensorEventListener
dieser muss in der Klasse implementiert werden. Oder eigene Klasse dafür schreiben.Anschließend gucken wir uns die Methode onSensorChanged des Listeners an. Diese liefert uns die Daten, die wir benötigen.
event.values
liefert uns ein float[] - Werte für drei Achsen.event.values[0] gibt uns die Grad - 0 = Norden, 90 = Osten, 180 = Süden, 270 = Westen und 360 entspricht wieder dem Wert von 0.
Simples System :) Viel Spaß beim Ausprobieren.
Hier noch ma der Code mit Log.d-Ausgabe fürs LogCat.
regardsimport android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.Log;
public class KompassActivity extends Activity implements SensorEventListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SensorManager meinSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
meinSensorManager.registerListener(this,meinSensorManager
.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
float grad = event.values[0];
if (grad < 22) {
Log.d("Kompass", "N");
} else if (grad >= 22 && grad < 67) {
Log.d("Kompass", "NE");
} else if (grad >= 67 && grad < 112) {
Log.d("Kompass", "E");
} else if (grad >= 112 && grad < 157) {
Log.d("Kompass", "SE");
} else if (grad >= 157 && grad < 202) {
Log.d("Kompass", "S");
} else if (grad >= 202 && grad < 247) {
Log.d("Kompass", "SW");
} else if (grad >= 247 && grad < 292) {
Log.d("Kompass", "W");
} else if (grad >= 292 && grad < 337) {
Log.d("Kompass", "NW");
} else if (grad >= 337) {
Log.d("Kompass", "N");
}
}
}
Keine Kommentare:
Kommentar veröffentlichen