2015-05-22 4 views
2

Я работаю с MediaPlayer в Android. У меня есть список названий песен и URL-адресов песен с сервера. когда я нажимаю на любой элемент, песня с сервера воспроизводится в MediaPlayer. Вот мой код для воспроизведения песни при нажатии кнопки «Список».Несколько экземпляров проблемы с медиаплеером в android

txtEndTimingForMediaPlayer.setText(""); 
    txtStarTimingForMediaPlayer.setText(""); 
    seekBarPlayer.setProgress(0); 
// this code is for stop current playing song and release media player 
    if(mediaPlayer!=null && mediaPlayer.isPlaying()){ 
     mediaPlayer.stop(); 
     mediaPlayer.reset(); 
     mediaPlayer.release(); 
     mediaPlayer=null; 
    } 

    // start new song for play 
    mediaPlayer=new MediaPlayer(); 
    Uri myUri1 = Uri.parse(url); 

    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    try { 
     mediaPlayer.reset(); 
     mediaPlayer.setDataSource(getActivity(), myUri1); 
     mediaPlayer.prepareAsync(); 

     mediaPlayer.setOnPreparedListener(new OnPreparedListener() { 

      @Override 
      public void onPrepared(MediaPlayer player) { 
       playPause=true; 
       player.start(); 
       mediaFileLengthInMilliseconds = player.getDuration(); 
      } 
     }); 

     mediaPlayer.setOnCompletionListener(new OnCompletionListener() { 

      @Override 
      public void onCompletion(MediaPlayer mp) { 
       playPause=false; 
       btnPlayPause.setBackgroundResource(R.drawable.icon_play);     
      } 
     }); 
    } catch (IllegalArgumentException e) { 
     e.printStackTrace(); 
    } catch (SecurityException e) { 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

Теперь вопрос с этим кодом заключается в том, когда я непрерывно нажимаю на песню, тогда одна и та же песня воспроизводится несколько раз. как избежать этой проблемы с несколькими экземплярами.

ответ

1

Я думаю, что if(mediaPlayer!=null && mediaPlayer.isPlaying()) не прав, когда вы слишком быстро нажимаете на эту же песню, а затем mediaPlayer=new MediaPlayer(); создает новый экземпляр и воспроизводит песню, что приведет к тому, что вы услышите одну и ту же песню несколько раз. отладить и проверить, не введен ли код if (condition)

Смежные вопросы