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 :

Erreur Media Player - lecture mp3


Sujet :

Android

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 204
    Points : 159
    Points
    159
    Par défaut Erreur Media Player - lecture mp3
    Bonjour,

    Mon appli lit des mp3 sur le web, mais j'ai l'erreur suivante :

    Couldn't open file on client side, trying server side

    J'ai bien dans mon manifest.xml la ligne :
    <uses-permission android:name="android.permission.INTERNET" />

    L'url du mp3 fonctionne.
    Qu'est-ce qui peut donc bloquer son ouverture ?

    Merci.

    Edit :
    Le problème se situe bien au niveau de setDataSource():
    mPlayer = new MediaPlayer();
    mPlayer.setDataSource(_context, _url);
    Hormis la permission, je ne vois vraiment pas ce qui peut bloquer.

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2013
    Messages : 70
    Points : 113
    Points
    113
    Par défaut
    tu as tenté en utilisant setDataSource avec comme paramètre unique ton url?

    il me semble qu'en utilisant context en plus, c'est pour signifier ou tu dois lire ton fichier, ici dans ton application, ce qui expliquerai ton message d'erreur.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 204
    Points : 159
    Points
    159
    Par défaut
    Oui j'ai essayé.

    Il n'y a plus d'erreur mais pas chargé dans le lecteur.
    Je dois bien lui passer le context pour qu'il identifie où le lire, normalement il est ok.

    D'où mon incompréhension de cette erreur.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2013
    Messages : 70
    Points : 113
    Points
    113
    Par défaut
    j'aurais parié sur url sans context :/ montre moi comment tu gères le media player avant le .start()?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 204
    Points : 159
    Points
    159
    Par défaut
    J'ai réussi à faire fonctionner la lecture en remplaçant le code par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    mPlayer = MediaPlayer.create(_context, _url);
       		mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    	   	@Override
    	   	public void onCompletion(MediaPlayer mp) {
    		   	mpSet.remove(mp);
    		   	mPlayer.stop();
    		   	mPlayer.release();
    	   	}
    	   	});
    	   	mpSet.add(mPlayer);
    	   	mPlayer.start();
    Le problème est que mes boutons Lecture/Pause, Stop ne fonctionnent pas.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 204
    Points : 159
    Points
    159
    Par défaut
    Bon, je vais copier-coller toute ma classe, ça sera plus simple ^^

    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
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
     
    import java.io.IOException;
    import java.util.HashSet;
     
    import android.content.Context;
    import android.media.AudioManager;
    import android.media.MediaPlayer;
    import android.media.MediaPlayer.OnCompletionListener;
    import android.media.MediaPlayer.OnPreparedListener;
    import android.media.MediaPlayer.OnSeekCompleteListener;
    import android.net.Uri;
    import android.widget.ImageButton;
    import android.widget.SeekBar;
    import android.widget.TextView;
     
     
    public class MainPlayer implements OnSeekCompleteListener, OnCompletionListener, OnPreparedListener
    {
    	private ImageButton buttonStart = null;
    	public TextView textViewTime = null;
    	public SeekBar seekBar = null;
    	private int duration = 0;
       	private boolean initToPlay = false;
     
       	private MediaPlayer mPlayer;
       	private MainPlayerSeekThread mainPlayerSeekThread;
        private static HashSet<MediaPlayer> mpSet = new HashSet<MediaPlayer>();
     
       	//Initialisation du player
       	public void init(Context _context, Uri _url, SeekBar _seekBar, ImageButton _buttonStart, TextView _textViewTime)
       	{   		
       	/*
    		mPlayer = new MediaPlayer();
    		mPlayer.reset();
    		try{
    			mPlayer.setDataSource(_context, _url);
     
    			mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    			mPlayer.prepareAsync();
     
    	   		setSeekBar(_seekBar);
    	   		setButtonStart(_buttonStart);
    	   		setTextView(_textViewTime);
     
    			MediaPlayer.OnBufferingUpdateListener onBufferingUpdateListener = new MediaPlayer.OnBufferingUpdateListener()
    	   		{
    	   			public void onBufferingUpdate(MediaPlayer mp, int percent) {
    	   				if(percent == 15 && !initToPlay) initToPlay(false);
    				}
    	   		};
    	   		mPlayer.setOnBufferingUpdateListener(onBufferingUpdateListener);
     
    		}
    		catch(IOException e){
    			return;
    		}
    		*/
     
    	   		setSeekBar(_seekBar);
    	   		setButtonStart(_buttonStart);
    	   		setTextView(_textViewTime);
     
    	   		mPlayer = MediaPlayer.create(_context, _url);
    	   		mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
     
    	   		MediaPlayer.OnBufferingUpdateListener onBufferingUpdateListener = new MediaPlayer.OnBufferingUpdateListener()
    	   		{
    	   			public void onBufferingUpdate(MediaPlayer mp, int percent) {
    	   				if(percent == 15 && !initToPlay) initToPlay(false);
    				}
    	   		};
    	   		mPlayer.setOnBufferingUpdateListener(onBufferingUpdateListener);
    	   		mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    		   	@Override
    		   	public void onCompletion(MediaPlayer mp) {
    			   	mpSet.remove(mp);
    			   	mPlayer.stop();
    			   	mPlayer.release();
    		   	}
    		   	});
    		   	mpSet.add(mPlayer);
    		   	mPlayer.start();
     
       	}
     
       	//Initialisation avant lecture
       	public void initToPlay(boolean forceToStart)
       	{
       		initToPlay = true;
     
    		seekBar.setProgress(0);
     
    		textViewTime.setText(msToTime(0));
     
    		buttonStart.setBackgroundResource(R.drawable.play);
     
    		launchSeekBarThread();
     
    		if(forceToStart == true){
    			start();
    		}
       	}
     
       	//Démarre de la tache pour la barre de progression
       	public void launchSeekBarThread()
       	{
     
       		mainPlayerSeekThread = new MainPlayerSeekThread();
       		mainPlayerSeekThread.setPlayer(mPlayer);
       		mainPlayerSeekThread.setMainPlayer(this);
       		mainPlayerSeekThread.start();
       	}
     
       	//Enregistrement de la barre de progression dans la classe
       	public void setSeekBar(SeekBar _seekBar)
       	{
       		if(seekBar == null)
       		{
    	   		seekBar = _seekBar;
     
    	   		SeekBar.OnSeekBarChangeListener seekBarChangeListener = new SeekBar.OnSeekBarChangeListener()
    	   		{
     
    		   		@Override
    		   		public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
    		   		{
    		   			mPlayer.setOnSeekCompleteListener(null);
     
    		   			if(fromUser) mPlayer.seekTo(progress);
     
    	   				textViewTime.setText(msToTime(progress));
    		   		}
    		   		@Override
    		   		public void onStartTrackingTouch(SeekBar seekBar) {}
    		   		@Override
    		   		public void onStopTrackingTouch(SeekBar seekBar) {}
    	   		};
    	   		seekBar.setOnSeekBarChangeListener(seekBarChangeListener);
       		}else{
       			seekBar.setProgress(0);
       			seekBar.setMax(0);
       		}
       	}
     
       	public void setSeekMax(int total){
       		seekBar.setMax(total);
       	}
     
       	public void setSeekProgress(int progress){
       		seekBar.setProgress(progress);
       	}
     
       	public void setTextTime(String text){
       		textViewTime.setText(text);
       	}
     
       	//Enregistrement du boutton start dans la classe
       	public void setButtonStart(ImageButton _buttonStart)
       	{
       		if(buttonStart == null)
       			buttonStart = _buttonStart;
       	}
     
       	//Enregistrement du texte
       	public void setTextView(TextView _textView)
       	{
       		if(textViewTime == null)
       			textViewTime = _textView;
       	}
     
       	// Debut de la lecture / pause
    	public void start()
    	{
    		if(mPlayer != null && mPlayer.isPlaying())
    		{
    			mPlayer.pause();
     
    			buttonStart.setBackgroundResource(R.drawable.play);
    		}
    		else if(mPlayer != null)
    		{
    			if(initToPlay == true){
    				mPlayer.start();
     
    				mPlayer.setOnCompletionListener(this);
     
    				buttonStart.setBackgroundResource(R.drawable.pause);
    			}
    			else
    			{
    				initToPlay(true);
    			}
    		}
    	}
     
    	//Arret de la lecture
    	public void stop()
    	{
    		if(mPlayer != null && initToPlay)
    		{
    			mPlayer.setOnSeekCompleteListener(this);
    			mPlayer.seekTo(0);
     
    			buttonStart.setBackgroundResource(R.drawable.play);
    		}
    	}
     
    	//Converti millisecondes en minutes:secondes
    	private String msToTime(int _time)
    	{
    		if(_time < 1000) return "00:00";
     
    		int totalSeconds = (int) Math.floor(_time / 1000);
    		int minutes = (int) Math.ceil(totalSeconds / 60);
     
    		int seconds = totalSeconds - minutes * 60;
     
    		return ((minutes > 9) ? minutes : "0" + minutes ) + ":" + ((seconds > 9) ? seconds : "0" + seconds );
    	}
     
     
    	//EVENT Fin de chargement de la nouvelle position de lecture
    	public void onSeekComplete(MediaPlayer mp)
    	{
    		mPlayer.pause();
    		seekBar.setProgress(0);
    	}
     
     
    	//EVENT Fin de la lecture
    	public void onCompletion(MediaPlayer mp)
    	{
    		buttonStart.setBackgroundResource(R.drawable.play);
    		mPlayer.setOnSeekCompleteListener(this);
    	}
     
    	public void onPrepared(MediaPlayer mp)
    	{
            duration = mp.getDuration();
        }
     
       	//Destruction du player
       	protected void destroy()
       	{
       		initToPlay = false;
     
       		if(mPlayer.isPlaying())
       			mPlayer.stop();
     
       		if(mainPlayerSeekThread != null){
       			mainPlayerSeekThread.interrupt();
       		}
    	}
    }

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 204
    Points : 159
    Points
    159
    Par défaut
    Résolu !

    Le super dév précédent n'avait pas implémenté le onClick et évidement, je n'y avais même pas prêté attention

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2013
    Messages : 70
    Points : 113
    Points
    113
    Par défaut
    ok, et pour le .prepareAsync(), tu dois pas écouter l’événement prépare?
    la (avec le .create()) c'est comme si tu faisais un .prepare() normal?

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 204
    Points : 159
    Points
    159
    Par défaut
    Oui c'est comme un prepare normal je crois, j'ai viré l'Async.

    Le code finale de l'initialisation est :
    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
    	   		mPlayer = MediaPlayer.create(_context, _url);
    	   		mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
     
    	   		MediaPlayer.OnBufferingUpdateListener onBufferingUpdateListener = new MediaPlayer.OnBufferingUpdateListener()
    	   		{
    	   			public void onBufferingUpdate(MediaPlayer mp, int percent) {
    	   				if(percent == 15 && !initToPlay) initToPlay(false);
    				}
    	   		};
    	   		mPlayer.setOnBufferingUpdateListener(onBufferingUpdateListener);
    	   		mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    		   	@Override
    		   	public void onCompletion(MediaPlayer mp) {
    			   	mpSet.remove(mp);
    			   	mPlayer.stop();
    			   	mPlayer.release();
    		   	}
    		   	});
    		   	mpSet.add(mPlayer);
    ça fonctionne nickel.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/04/2009, 16h17
  2. Verifier que windows media player embedded est bien en lecture
    Par AIexis dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/07/2007, 20h13
  3. [Video] Message d'erreur de Windows Media Player
    Par The_FD dans le forum Vidéo
    Réponses: 2
    Dernier message: 29/01/2007, 15h25
  4. [V.B 6] Titre de la lecture de Windows Media Player
    Par comtention dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 06/01/2007, 07h07
  5. Réparer windows media player pour lecture drm
    Par Michaël dans le forum Windows XP
    Réponses: 6
    Dernier message: 02/12/2006, 17h34

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