IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Capteurs et SurfaceView


Sujet :

Composants graphiques Android

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 315
    Points : 114
    Points
    114
    Par défaut Capteurs et SurfaceView
    Bonjour,

    J'ai un souci que je vous expose ici

    Soit une Activity avec 2 boutons

    le bouton boutonproxi lance un Intent qui traite le capteur de proximité : c'est OK

    le bouton boutonboule lance un Intent qui traite le capteur accéléromètre : OK mais le problème vient quand j'appuie sur Backspace pour retourner vers l'activité principale

    Celle-ci se bloque et l'application devient inutilisable

    Une aide me serait précieuse , Merci

    Voici l'activity principale = CopyOfCapteur et CopyOfCapteursBoule.class = accéléromètre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    package com.example.capteurskegtux;
     
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
     
    public class CopyOfCapteur extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
     
     
    	Button boutonproxi = (Button) findViewById(R.id.buttonproxi);
    	boutonproxi.setOnClickListener(new OnClickListener() {
    		public void onClick(View arg0) {
    			Intent proxi = new Intent(CopyOfCapteur.this,CapteursProxi.class);
    			startActivity(proxi);
    		}
    	});
     
     
        Button boutonboule = (Button) findViewById(R.id.buttonboule);
        boutonboule.setOnClickListener(new OnClickListener() {
        	public void onClick(View arg0) {
        		Intent boule = new Intent(CopyOfCapteur.this,CopyOfCapteursBoule.class);
        		startActivity(boule);
        	}
        });
     
    	}
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    package com.example.capteurskegtux;
     
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.*;
    import android.hardware.*;
    import android.os.Bundle;
    import android.view.*;
     
    public class CopyOfCapteursBoule extends Activity implements SensorEventListener {
     
    private SensorManager gestionCapteurs;
    private Sensor accelerometre;
    private SurfaceView surface;
    private SurfaceHolder holder;
    private Bitmap boule, fond;
    private float bx, by, vx, vy, tx, ty;
    public Context c;
     
    @Override
    public void onCreate(Bundle savedInstanceState) {
    	super.onCreate(savedInstanceState);
    	boule = BitmapFactory.decodeResource(getResources(), R.drawable.boule);
    	fond = BitmapFactory.decodeResource(getResources(), R.drawable.fonecran);
    	surface = new SurfaceView(this);
    	holder = surface.getHolder();
    	gestionCapteurs = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    	accelerometre = gestionCapteurs.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    	setContentView(surface);
    }
    @Override
    protected void onStart() {
    super.onStart();
    gestionCapteurs.registerListener(this, accelerometre, SensorManager.SENSOR_DELAY_GAME);
    }
     
    @Override
    protected void onStop() {
    super.onStop();
    gestionCapteurs.unregisterListener(this, accelerometre); 
    }
     
    @Override
    protected void onPause() {
        super.onPause();
    }
     
    @Override
    protected void onResume() {
        super.onResume();
    }
     
    public void onSensorChanged(SensorEvent evt) {
    	if (evt.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
    	// Ajout les valeurs du capteur aux variables
    	vx -= evt.values[0];
    	vy += evt.values[1];
    	// Déplacement de la boule
    	bx += vx;
    	by += vy;
    	// Récupération de la taille de l'écran
    	tx = surface.getWidth() - boule.getWidth();
    	ty = surface.getHeight() - boule.getHeight();
    	// Empêcher la boule de sortir
    	if (bx<0) { bx = 0; vx = 0; }
    	if (by<0) { by = 0; vy = 0; }
    	if (bx>tx) { bx = tx; vx = 0; }
    	if (by>ty) { by = ty; vy = 0; }
    	// Redessiner
    	Canvas dessin = holder.lockCanvas();
    	if (dessin==null) return;
    	dessin.drawBitmap(fond, 0, 0, null);
    	dessin.drawBitmap(boule, bx, by, null);
    	holder.unlockCanvasAndPost(dessin);
    	}
    }
    public void onAccuracyChanged(Sensor capteur, int precision) { }
     
    }

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 315
    Points : 114
    Points
    114
    Par défaut Personne à bord ??
    Merci

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/11/2006, 10h27
  2. [VBA-E] Récupérer les données d'un capteur en USB
    Par $p00ky dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/05/2006, 16h29
  3. Capteur InfraRouge sur port com
    Par PoOky dans le forum Composants VCL
    Réponses: 12
    Dernier message: 12/01/2006, 16h31
  4. Utiliser le C pour récuperer données d'un capteur
    Par Malek_BAKLOUTI dans le forum C
    Réponses: 12
    Dernier message: 05/10/2005, 11h40
  5. comment récupérer l'état d'un capteur?
    Par r0d dans le forum Périphériques
    Réponses: 8
    Dernier message: 17/08/2005, 21h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo