Kann nicht auf die sensoren in Android
Schreibe ich eine Kompass-Anwendung aber keinen Zugriff auf die sensoren, die für einige Grund.
Ich habe implementiert die SensorEventListener
- Schnittstelle und registrieren meine sensoren auf diese Weise:
sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
magnetometer = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
In meinem onSensorChange()
Methode:
public void onSensorChanged(SensorEvent event) {
Toast t = Toast.makeText(this, "onSensorChanged", Toast.LENGTH_LONG);
t.setGravity(Gravity.TOP, 0, 0);
t.show();
if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){
mGravity = event.values;
}
if(event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD){
mGeomagnetic = event.values;
}
if(mGravity !=null && mGeomagnetic !=null){
float [] R = new float[9];
float [] I = new float [9];
boolean success = sensorManager.getRotationMatrix(R, I, mGravity, mGeomagnetic);
if(success){
float [] orientation = new float [3];
sensorManager.getOrientation(R, orientation);
north = orientation[0];
}
}
}
Den Toast
Nachricht nicht auf dem Bildschirm angezeigt und wenn ich versuche, die Nord-Wert in einem TextView
die Ausgabe ist 0
. Wäre toll, wenn jemand könnte mir erklären, warum ich keinen Zugriff auf die onSensorChanged()
Methode. Berechtigungen im manifest:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
InformationsquelleAutor user1163392 | 2012-01-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vergessen Sie nicht, Registrierung.
Mehr: http://developer.android.com/reference/android/hardware/SensorManager.html
Weil Sie nicht registrieren zu dieser Veranstaltung. Mit dem sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); Zeile Sie nur Zugriff auf den sensor. Nachdem es müssen Sie sich registrieren. Dies ist einfaches event-handling in java.
Ich weiß, aber ich dachte, ich habe mich registriert der sensor mit getDefaultSensor()
InformationsquelleAutor tungi52