Jump to content

Utiliser les sensors


Blister

Recommended Posts

Bonjour,

Je viens d'implémenté votre petit programme dans votre news qui "scan" les sensors.

Mais lorsque je met ce programme dans eclispe il ne veux pas me le compiler. je vous montres mon code

package fr.superdroid;

import android.app.Activity;
import android.content.Context;
import android.hardware.SensorListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;


public class superdroid extends Activity {    
   @Override

   public void onCreate(Bundle savedInstanceState)
   {
   capteur accelerometre;
   String txt = new String();        
   TextView tv = new TextView(this);        
   accelerometre = new capteur();        
   super.onCreate(savedInstanceState);
       SensorManager m = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
       m.registerListener(accelerometre, SensorManager.SENSOR_ACCELEROMETER);      

       txt = "X : " + accelerometre.x;
       txt = txt + "\nY : " + accelerometre.y;
       txt = txt + "\nZ : " + accelerometre.z;


       tv.setText(txt);
       setContentView(tv);
   }

   class capteur implements SensorListener{

       float x, y, z;        
       public void onSensorChanged(int sensor, float[] values) {

           x = values[0];
           y = values[1];
           z = values[2];

       }
   }    
}

il me souligne en rouge le capteur de class capteur donc je ne sais pas quoi faire ...

Pouvez vous m'aider ?

Merci,

Bonne soirée

Link to comment
Share on other sites

Salut,

Bienvenue sur le forum :)

à priori c'est déjà fait, mais au cas où, un petit "ctrl+maj+o" pour ajouter tous les imports qui pourraient manquer :(

Sinon, quelle erreur est affichée en relation avec ce soulignement rouge ?

Link to comment
Share on other sites

Quand je clique sur "Add unimplemented methods" voilà ce qu'il me rajoute dans la class

Avant :

class capteur implements SensorListener{

       float x, y, z;        
       public void onSensorChanged(int sensor, float[] values) {

           x = values[0];
           y = values[1];
           z = values[2];

       }
   }    

Apres

   class capteur implements SensorListener{

       float x, y, z;        
       public void onSensorChanged(int sensor, float[] values) {

           x = values[0];
           y = values[1];
           z = values[2];

       }
       @Override
       public void onAccuracyChanged(int sensor, int accuracy) {
           // TODO Auto-generated method stub

       }
   }

Edited by Blister
Link to comment
Share on other sites

Quand je clique sur "Add unimplemented methods" voilà ce qu'il me rajoute dans la class

Avant :

class capteur implements SensorListener{

       float x, y, z;        
       public void onSensorChanged(int sensor, float[] values) {

           x = values[0];
           y = values[1];
           z = values[2];

       }
   }    

Apres

   class capteur implements SensorListener{

       float x, y, z;        
       public void onSensorChanged(int sensor, float[] values) {

           x = values[0];
           y = values[1];
           z = values[2];

       }
       @Override
       public void onAccuracyChanged(int sensor, int accuracy) {
           // TODO Auto-generated method stub

       }
   }

et ça marche pas ça ?

sinon faut voir avec l'interface SensorEventListener comme le dit pjv...

Link to comment
Share on other sites

sinon faut voir avec l'interface SensorEventListener comme le dit pjv...

Testé et approuvé :)

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;

public class Capteur implements SensorEventListener {

   private float x;
   private float y;
   private float z;

   public void onAccuracyChanged(Sensor sensor, int accuracy) {
       // TODO Auto-generated method stub

   }

   public void onSensorChanged(SensorEvent event) {

       x = event.values[0];
       y = event.values[1];
       z = event.values[2];
   }

   public float getX() {
       return x;
   }

   public float getY() {
       return y;
   }

   public float getZ() {
       return z;
   }
}

Edited by pjv
Link to comment
Share on other sites

J'ai bien cocher la case pour les sources inconnus mais quand j'essaye d'installer ça me marque (quand j'installe avec astro)

Impossible d'installer l'application sur ce téléphone ...

Sinon pour ta classe je la met dans un autre fichier ? ou je peut tous mettres sur le même ?

Edited by Blister
Link to comment
Share on other sites

J'ai bien coucher la case pour les sources inconnus mais quand j'essaye d'installer ça me marque (quand j'installe avec astro)

Impossible d'installer l'application sur ce téléphone ...

Sinon pour ta classe je la met dans un autre fichier ? ou je peut tous mettres sur le même ?

C'est la même classe (capteur) mais il faut que tu changes l'interface qu'elle implemente

Donc change SensorListener en SensorEventListener

Link to comment
Share on other sites

Une autre question,

est ce que ce morceau de code est obligatoire ?

SensorManager m = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
m.registerListener(accelerometre, SensorManager.SENSOR_ACCELEROMETER);

car il me met cette erreur

erreurandroid2.jpg

Link to comment
Share on other sites

Une autre question,

est ce que ce morceau de code est obligatoire ?

SensorManager m = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
m.registerListener(accelerometre, SensorManager.SENSOR_ACCELEROMETER);

car il me met cette erreur

erreurandroid2.jpg

Non bien sur que non, je pense qu'il a mis cela en place pour embrouiller l'esprit!

Oui c'est obligatoire, car tu récupères l'accès au sensor proposé par le systeme...et tu ajoutes l'écouteur qui va écouter ce qu'il se passe sur le sensor pour y appliquer ton code.

Link to comment
Share on other sites

Ton soucis vient du faire que ton objet accelerometre (instance de la classe Capteur implémentant SensorEventListener) est reconnu comme "une variante de SensorEventListener".

Dans le tutoriel que tu utilises, le SensorManager fait appel à sa méthode registerListener qui prend en paramètre un objet SensorListener. Or, ton accelerometre n'est pas "une variante" de SensorListener.

Je te laisse le plaisir de trouver la modification à apporter pour que cela fonctionne comme tu le souhaites (ce n'est pas compliqué).

Quant à l'utilité de définir un SensorManager, c'est nécessaire car c'est la passerelle entre ton application et le hardware. Il se charge de définir quel Sensor est nécessaire à l'appli. Ceci permet de faire en sorte qu'elle ne soit pas perturbée par n'importe quel autre Sensor.

Link to comment
Share on other sites

Donc si j'ai bien compris il faudrais que je face un registerEventListener ? sinon j'ai séparer en 2 fichier un pour ma classe capteur et l'autre pour ma classe "mère"

Une autre question il faut toujours que j'utilise SensorManager ? car il me dit que la methode registerEventListener n'est pas définé pour un type sensorManager

Link to comment
Share on other sites

Donc si j'ai bien compris il faudrais que je face un registerEventListener ? sinon j'ai séparer en 2 fichier un pour ma classe capteur et l'autre pour ma classe "mère"

Non.

Une autre question il faut toujours que j'utilise SensorManager ? car il me dit que la methode registerEventListener n'est pas définé pour un type sensorManager

Tout simplement parce qu'elle n'existe pas.

Est-ce que tu utilises cette doc : lien ? Tout est là, il suffit de lire un peu et de trouver ce que tu cherches.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...