Impossible d'accéder aux capteurs dans Android
Question
J'écris une application Compass mais je ne peux pas accéder aux capteurs nécessaires pour une raison quelconque. J'ai implémenté le SensorEventListener
Interface et enregistrer mes capteurs de cette façon:
sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
magnetometer = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
Dans mon onSensorChange()
méthode:
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];
}
}
}
La Toast
Le message ne s'affiche pas à l'écran et lorsque j'essaie de mettre la valeur nord dans un TextView
La sortie est 0
. Serait formidable si quelqu'un pouvait m'expliquer pourquoi je ne peux pas accéder au onSensorChanged()
méthode. Autorisations de manifeste:
<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"/>
La solution
sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
sensorManager.registerListener(this, magnetometer, SensorManager.SENSOR_DELAY_NORMAL);
N'oubliez pas de les désinscrire.
Suite: http://developer.android.com/reference/android/hardware/sensormanager.html
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow