Cours 10 Capteurs et TP10

Modérateurs : Douin, F. Lemoine, Farinone

LudovicF
Messages : 29
Inscription : 20 févr. 2017 15:45

Cours 10 Capteurs et TP10

Message par LudovicF » 20 avr. 2017 14:41

Bonjour,

Pour répondre à la question 1 du TP10, j'ai suivie les informations du cours sur les Capteurs jusqu'à la page 35 (code ci-dessous). De ce que j'ai compris, c'est dans le onSensorChanged() qu'il est possible de capturer(après abonnement à un listener) le changement d'un capteur et de le renvoyer dans une vue/UI. Hors j'ai 2 erreurs au lancement de application "E/SensorManager: sensor or listener is null".

- Erreurs :

Code : Tout sélectionner

04-20 14:29:09.877 2702-2702/cnam.smb116.tp10capteurs W/art: Before Android 4.1, method int android.support.v7.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
04-20 14:29:12.446 2702-2702/cnam.smb116.tp10capteurs E/SensorManager: sensor or listener is null
04-20 14:29:12.451 2702-2702/cnam.smb116.tp10capteurs E/SensorManager: sensor or listener is null
04-20 14:29:12.651 2702-3073/cnam.smb116.tp10capteurs D/OpenGLRenderer: endAllActiveAnimators on 0x9e4af380 (RippleDrawable) with handle 0x9e4bc1f0
- Code :

Code : Tout sélectionner

package cnam.smb116.tp10capteurs;

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

public class CapteursActivity extends AppCompatActivity {

    private SensorManager sensorManager = null;
    private Sensor accelerometre;
    //private Sensor sensor;
    //private List<Sensor> ls;

    SensorEventListener accelerometreListener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_capteurs);

        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        //ls = sensorManager.getSensorList(Sensor.TYPE_ALL);
        //for(int i = 0; i < ls.size(); i++){}
        accelerometre = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

        sensorManager.registerListener(accelerometreListener, accelerometre, SensorManager.SENSOR_DELAY_UI);

    }

    protected void onSensorChanged(SensorEvent event){
        Log.i("CapteursActivity",  "onSensorChanged");
    }

    @Override
    protected void onResume() {
        super.onResume();
        sensorManager.registerListener(accelerometreListener, accelerometre, SensorManager.SENSOR_DELAY_UI);
    }

    @Override
    protected void onPause() {
        super.onPause();
        sensorManager.unregisterListener(accelerometreListener);
    }
}
Une autre question, est-il possible d'abonner tous les capteur à un listener via une boucle plus la liste des capteurs ?

Fujimoto
Messages : 9
Inscription : 02 oct. 2016 15:02

Re: Cours 10 Capteurs et TP10

Message par Fujimoto » 01 mai 2017 12:38

Bonjour,

je viens de regarder le code que tu as posté et je pense que cela vient du fait que accelerometreListener a été déclaré mais il n'a pas été initialisé (new ...).

De mon côté, j'ai fait en sorte que l'activité implémente l'interface SensorEventListener pui j'ai implémenté les 2 méthodes onSensorChanged() et onAccuracyChanged() et dans sensorManager.registerListener(this, accelerometre, SensorManager.SENSOR_DELAY_UI);

LudovicF
Messages : 29
Inscription : 20 févr. 2017 15:45

Re: Cours 10 Capteurs et TP10

Message par LudovicF » 02 mai 2017 13:50

Bonjour Fujimoto,

Merci pour ta réponse mais on est bien d'accord que ca n'apparais pas dans le cours et que le seul moyen de capter les changement d'un capteur sont de déclarer le SensorEventListener pour chaque capteurs comme dans le lien ci-dessous ?

https://openclassrooms.com/courses/cree ... /r-2034857

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité