Je fais une application qui enregistre les lectures de l'accéléromètre. Quand j'entre dans TYPE_ACCELEROMETER, il peut parfaitement enregistrer les données de l'accéléromètre brut. Cependant quand j'entre dans TYPE_LINEAR_ACCELERATION il ne renvoie aucune valeur. L'application ne me donne pas une erreur ou quitter. Je pense que je dois utiliser un périphérique qui ne prend pas en charge TYPE_LINEAR_ACCELERATION ou que je n'ai pas toutes les autorisations nécessaires dans mon manifeste.autorisations pour type_linear_acceleration
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION);
currentX = (TextView) findViewById(R.id.currentX);
currentY = (TextView) findViewById(R.id.currentY);
currentZ = (TextView) findViewById(R.id.currentZ);
}
public void onSensorChanged(SensorEvent event) {
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
currentX.setText(Float.toString(x));
currentY.setText(Float.toString(y));
currentZ.setText(Float.toString(z));
try {
writer.write(x + "," + y + "," + z + "\n");
} catch (IOException e) {
Log.e(LOG_TAG2, "failed");
}
}
};
public void Recordbutton(View view) {
if (recordbuttonstatus) {
playBtn.setEnabled(true);
recordbuttonstatus = false;
startBtn.setText(getString(R.string.stoprecording));
sensorManager.registerListener(accelListener, sensor, SensorManager.SENSOR_DELAY_NORMAL);
sensorManager.registerListener(accelListener, sensor, SensorManager.SENSOR_DELAY_NORMAL);
Thread accelerometerrecord = new Thread(new Runnable() {
@Override
public void run(){
File accoutputFile = new File(Environment.getExternalStorageDirectory(), "accelerometervals.txt");
try {
accoutputFile.createNewFile();
} catch (IOException e){
e.printStackTrace();
}
try {
writer = new FileWriter(accoutputFile, false); /*When false, the file is overwritten, when true, the file is appended.*/
} catch (IOException e) {
Log.e(LOG_TAG2, "failed");
}
}
});
accelerometerrecord.start();
} else {
startBtn.setText(getString(R.string.newrecording));
recordbuttonstatus = true;
sensorManager.unregisterListener(accelListener);
}
}
protected void onPause() {
super.onPause();
sensorManager.unregisterListener(accelListener);
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
Log.e(LOG_TAG2, "failed");
}
}
}
public void onStop() {
super.onStop();
sensorManager.unregisterListener(accelListener);
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
Log.e(LOG_TAG2, "failed");
}
}
}
devrait peut-être confirmer ce qui est disponible en regardant la disponibilité des fonctionnalités en utilisant SensorManager apis – JoxTraex
Vous pouvez vérifier la disponibilité du capteur à votre appareil en utilisant ce lien: http://stackoverflow.com/a/26054086/3819836 –