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

Android Discussion :

Problème de lecture MediaPlayer


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 59
    Par défaut Problème de lecture MediaPlayer
    Bonjour,
    J'ai déjà utilisé le MediaPlayer pour jouer des mp3 sans problèmes, mais la je bloque. J'ai créé une petite appli de pour tester le binaural (hemisync). L'interface est composée de 4 boutons pour lancer, pauser, stopper le son, le quatrieme lançant une boucle de vibrations. Une animation est lancée à l'appui du bouton play. Tout fonctionne sauf le MediaPlayer. Si vous pouviez me donner une quelconque piste je vous en serais reconnaissant et éventuellement un tuto sur une façon simple d'utiliser les ToggleButton car j'ai un peu honte de mon code qui fait très bricolage. (J'utilise les OnClick du layout pour les fonctions). Merci d'avance.
    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    package com.binaural.space;
     
    import android.app.Activity;
    import android.content.Context;
    import android.media.AudioManager;
    import android.media.MediaPlayer;
    import android.media.MediaPlayer.OnCompletionListener;
    import android.os.Bundle;
    import android.os.Vibrator;
    import android.view.View;
    import android.view.animation.Animation;
    import android.view.animation.AnimationUtils;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.ToggleButton;
     
    public class InduktActivity extends Activity {
     
    	private ToggleButton play;
    	private ToggleButton pause;
    	private Button stop;
    	private ToggleButton vibrate;
    	private static MediaPlayer player;
    	private Vibrator vibrator = null;
    	private Animation rotate;
    	boolean vibre = false;
     
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.lay_indukt);
    	}
     
    	// Lance l'animation et le mp3
    	@SuppressWarnings("static-access")
    	public void playBinaural(View v) {
    		play = (ToggleButton) findViewById(R.id.tog_play);
    		pause = (ToggleButton) findViewById(R.id.tog_pause);
    		stop = (Button) findViewById(R.id.but_stop);
    		vibrate = (ToggleButton) findViewById(R.id.tog_vibrate);
    		pause.setClickable(true);
    		stop.setClickable(true);
    		vibrate.setClickable(true);
     
    		if (player == null) {
    			player = new MediaPlayer();
    			player.create(this, R.raw.binaural);
    			/*
    			 * Permet de planifier une action à la fin de la lecture du fichier
    			 * les boutons sont désactivés et le bouton play revient à sa
    			 * position initiale
    			 */
    			player.setOnCompletionListener(new OnCompletionListener() {
    				public void onCompletion(MediaPlayer mediaPlayerParam) {
    					pause.setClickable(false);
    					stop.setClickable(false);
    					vibrate.setClickable(false);
    					play.setSelected(false);
    				}
    			});
    			player.setAudioStreamType(AudioManager.STREAM_MUSIC);
    			player.start();
    			Animate();
    		} else {
    			if (pause.isChecked()) {
    				pause.setChecked(false);
    				player.start();
    				Animate();
    			}
    			pause.setSelected(false);
    			vibrate.setSelected(false);
    			pause.setClickable(true);
    			stop.setClickable(true);
    			vibrate.setClickable(true);
    		}
     
    	}
     
    	public void pauseBinaural(View v) {
    		play = (ToggleButton) findViewById(R.id.tog_play);
    		pause = (ToggleButton) findViewById(R.id.tog_pause);
    		stop = (Button) findViewById(R.id.but_stop);
    		vibrate = (ToggleButton) findViewById(R.id.tog_vibrate);
    		player.pause();
    		stop.setClickable(false);
    		if (vibrator != null) {
    			vibrator.cancel();
    		}
    		rotate.cancel();
    		play.setSelected(false);
    		play.setClickable(true);
    		stop.setClickable(false);
    		vibrate.setClickable(false);
    		vibrate.setChecked(false);
    		play.setChecked(false);
    	}
     
    	public void stopBinaural(View v) {
    		play = (ToggleButton) findViewById(R.id.tog_play);
    		pause = (ToggleButton) findViewById(R.id.tog_pause);
    		stop = (Button) findViewById(R.id.but_stop);
    		vibrate = (ToggleButton) findViewById(R.id.tog_vibrate);
    		player.stop();
    		player.release();
    		player = null;
    		if (vibrator != null) {
    			vibrator.cancel();
    		}
    		play.setChecked(false);
    		pause.setClickable(false);
    		stop.setClickable(false);
    		vibrate.setClickable(false);
    		vibrate.setChecked(false);
    		rotate.cancel();
     
    	}
     
    	// Utilisation du Vibrator  //Fonctionne sans le if puisque le media player ne fonctionne pas
    	public void doVibrate(View v) {
     
    		if ((player.isPlaying()) && (!vibre)) {
    			vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
    			// Start immediately
    			// Vibrate for 200 milliseconds
    			// Sleep for 200 milliseconds
    			long[] pattern = { 0, 200, 200 };
    			vibrator.vibrate(pattern, 0);
    			vibre = true;
    		}
    		if (vibre == true) {
    			vibrator.cancel();
    			vibrate.setChecked(false);
    			vibre = false;
    		}
     
    	}
     
    	private void Animate() {
    		// Ici je défini et lance une tween animation
    		ImageView arrow = (ImageView) findViewById(R.id.imageViewSpiral);
    		rotate = AnimationUtils.loadAnimation(this, R.anim.spiral_rotate);
    		arrow.startAnimation(rotate);
    	}
    }

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 59
    Par défaut Solution !!!
    Finalement j'ai trouvé la solution grâce à l'excellent StackOverFlow : c'est l'accès statique au MediaPlayer qui posait problème. Il suffit donc de remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    player = new MediaPlayer();
    player.create(this, R.raw.binaural);
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    player = MediaPlayer.create(this, R.raw.binaural);
    Celà est peut-être une erreur de débutant mais je pense que ça pourra toujours servir à quelqu'un. A la prochaine!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [débutant] problème de lecture d'image
    Par shura dans le forum OpenGL
    Réponses: 16
    Dernier message: 03/07/2004, 18h05
  2. [TFileStream] Problème de lecture de string
    Par Pedro dans le forum Langage
    Réponses: 6
    Dernier message: 28/06/2004, 13h06
  3. problème de lecture base de registre
    Par pafounet3 dans le forum MFC
    Réponses: 10
    Dernier message: 31/12/2003, 14h06
  4. [fread] Problème de lecture de buffer
    Par karl3i dans le forum C
    Réponses: 2
    Dernier message: 25/09/2003, 09h21
  5. Réponses: 4
    Dernier message: 23/07/2003, 13h07

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