2017-05-29 35 views
1

私は一時停止しているオーディオを再生する際に問題に直面しています。私は単一の再生ボタンで3つの機能を実行したいと思います。最初に再生ボタンを押すと、オーディオが再生されるはずです。2回目の再生ボタンを押すと、もう一度再生ボタンが押されたということは、オーディオを一時停止状態から再開する必要があることを意味します。私はオーディオを一時停止できる多くの方法を試しましたが、一時停止状態からのオーディオを再開しない最初から再生しています。一時停止しているオーディオを再開するにはどうすればいいですか?

(!)(mediaPlayer.isPlaying & & mediaPlayer.getCurrentPosition()> 0) but it is not working.

私の作業コードが

play.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Toast.makeText(activity, "Playing sound", Toast.LENGTH_SHORT).show(); 
      if (mediaPlayer.isPlaying()) { 
       mediaPlayer.pause(); 
      } 
      if(!mediaPlayer.isPlaying() && mediaPlayer.getCurrentPosition() > 0){ 
       long currentPosition = mediaPlayer.getCurrentPosition(); 
       mediaPlayer.seekTo((int) currentPosition); 
       mediaPlayer.start(); 
      } 

      mediaPlayer.reset(); 
      try { 
       mediaPlayer.setDataSource(path); 
       mediaPlayer.setOnPreparedListener((MediaPlayer.OnPreparedListener) activity); 
       mediaPlayer.prepare(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      mediaPlayer.start(); 

      finalTime = mediaPlayer.getDuration(); 
      startTime = mediaPlayer.getCurrentPosition(); 

      if (oneTimeOnly == 0) { 
       seekBar.setMax((int) finalTime); 
       oneTimeOnly = 1; 
      } 

      songEndTime.setText(String.format("%02d:%02d:%02d", 
        TimeUnit.MILLISECONDS.toHours((long) finalTime), 
        TimeUnit.MILLISECONDS.toMinutes((long) finalTime) - 
          TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours((long) finalTime)), // The change is in this line 
        TimeUnit.MILLISECONDS.toSeconds((long) finalTime) - 
          TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) finalTime)))); 

      songStartTime.setText(String.format("%02d:%02d:%02d", 
        TimeUnit.MILLISECONDS.toHours((long) startTime), 
        TimeUnit.MILLISECONDS.toMinutes((long) startTime) - 
          TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours((long) startTime)), 
        TimeUnit.MILLISECONDS.toSeconds((long) finalTime) - 
          TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) startTime)))); 



      seekBar.setProgress((int) startTime); 
      myHandler.postDelayed(UpdateSongTime, 100); 
      stop.setVisibility(View.VISIBLE); 
      play.setVisibility(View.GONE); 
     } 
    }); 
+0

この質問を参照してください: - https://stackoverflow.com/questions/3855151/how-to-resume-the-mediaplayer – headshoT

答えて

0
mediaPlayer.pause(); 
length = mediaPlayer.getCurrentPosition(); 

と再開のためであれば、私は、この条件を使用最近停止した位置からのプレイヤーは次のようになります。

mediaPlayer.start();  
mediaPlayer.seekTo(length); 
+0

私はそれが動作しないこの条件を使用 –

+0

正しい順序です: - mediaPlayer。開始();次にmediaPlayer.seekTo(length);を呼び出します。 – headshoT

+0

あなたは正しい順序に従っていません – headshoT

0

MediaPlayer DataSourceを最初に設定してから、「mediaPlayer.reset();」を削除します。 ボタンがクリックされるたびにMediaPlayerオブジェクトがリセットされるためです。 それは、それが常に最初から始まる理由です。

+0

いいえ、それは動作しません –

関連する問題