2012-02-27 17 views
17

W moim projekcie, gram plik muzyczny w Android odtwarzacz multimedialny za pomocą następującego koduAndroid Media Player Odtwarzaj/Pauza

MediaPlayer mPlayer = MediaPlayer.create(MyActivity.this, R.raw.myfile); 
mPlayer.start(); 

powyższe jest zakodowany w OnClick przycisku odtwarzania. Chcę wstrzymać odtwarzanie, klikając ten sam przycisk ponownie .ie) pojedynczy przycisk do odtwarzania/pauzy. Jak to zrobić.

Odpowiedz

41

Możesz użyć prostej instrukcji if-check, aby obsłużyć wstrzymanie. Spróbuj tego:

if(mPlayer.isPlaying()){ 
    mPlayer.pause(); 
} else { 
    mPlayer.start(); 
} 
8

Spróbuj to ::

final Button bPlay = (Button) findViewById(R.id.bPlay); 
MediaPlayer song1 = MediaPlayer.create(tutorialFour.this, R.raw.fluet); 
Button bStop = (Button) findViewById(R.id.bStop); 
bPlay.setWidth(10); 

song1.setOnCompletionListener(new OnCompletionListener() { 

     public void onCompletion(MediaPlayer mp) { 

      bPlay.setText("Play"); 


     } 
    }); 

bPlay.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      b = true; 

      if (bPlay.getText().equals("Play") && b == true) { 

       song1.start(); 

       bPlay.setText("Pause"); 
       b = false; 
      } else if (bPlay.getText().equals("Pause")) { 
       x = song1.getCurrentPosition(); 
       song1.pause(); 
       bPlay.setText("Resume"); 
       Log.v("log", "" + x); 
       b = false; 
      } else if (bPlay.getText().equals("Resume") && b == true) { 
       song1.seekTo(x); 
       song1.start(); 
       bPlay.setText("Pause"); 
       b = false; 
      } 


     } 

    }); 
5

Wewnątrz check button click for mediaPlayer.isPlaying(). To się zwróci, jeśli odtwarzacz multimedialny będzie odtwarzał inną wartość false.

Więc teraz z tym, wartość flagi można zrobić if i przełączyć się odtworzyć lub wstrzymać tak,

button.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View view) { 

      if (mediaplayer.isPlaying()) { 
       mediaplayer.pause(); 
      } else { 
       mediaplayer.start(); 
      } 
     } 
    }); 
3

poniższy kod dba o play/pause przycisk kliknij zdarzenie wraz z przodu i tyłu przyciski wyszukiwania do przodu i do tyłu na podanym pasku wyszukiwania (który jest zsynchronizowany ze ścieżką multimedialną). Obecnie gra tylko jedną piosenkę. Możesz jednak do tego dodać. To jest mój pierwszy odtwarzacz multimedialny używający mediaplayer class, więc możesz uznać go za nieco prymitywny. Jeśli jednak potrzebujesz, możesz również zapoznać się z przykładami VideoView. Najwyraźniej łatwiej z VideoView, ponieważ standardowa konsola multimedialna jest już dostępna w postaci predefiniowanych widżetów. dzięki czemu projektowanie odtwarzacza jest znacznie łatwiejsze.

package in.org.Test; 

import android.app.Activity; 
import android.media.MediaPlayer; 

import android.os.Bundle; 

import android.view.View; 
import android.view.View.OnClickListener; 

import android.widget.ImageButton; 

import android.widget.ProgressBar; 
import android.widget.SeekBar; 

import android.widget.Toast; 

public class Test12Activity extends Activity implements OnClickListener,Runnable { 

    private static final String isPlaying = "Media is Playing"; 
    private static final String notPlaying = "Media has stopped Playing"; 

    private SeekBar seek; 

    MediaPlayer player = new MediaPlayer(); 
    private ImageButton plus,minus; 

    ImageButton im; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     plus = (ImageButton) findViewById(R.id.imageButton2); 
     minus = (ImageButton) findViewById(R.id.imageButton3); 


     player = MediaPlayer.create(this, R.raw.sound2); 


     player.setLooping(false); 
     im = (ImageButton) this.findViewById(R.id.imageButton1); 


     seek = (SeekBar) findViewById(R.id.seekBar1); 
     seek.setVisibility(ProgressBar.VISIBLE); 
     seek.setProgress(0); 
     seek.setMax(player.getDuration()); 
     new Thread(this).start(); 


     im.setOnClickListener(this); 
     player.start(); 

     Toast.makeText(this, isPlaying, Toast.LENGTH_LONG).show(); 


     plus.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { int cu = player.getCurrentPosition(); player.seekTo(cu-5000); }}); 
     minus.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) {int cu = player.getCurrentPosition(); player.seekTo(cu+5000);}}); 


    } 


    @Override 
    public void onClick(View arg0) { 
     if (arg0.getId() == R.id.imageButton1) { 
     if(player.isPlaying()) { 
     player.pause(); 

     Toast.makeText(this, notPlaying, Toast.LENGTH_LONG).show(); 
     ImageButton img1=(ImageButton) this.findViewById(R.id.imageButton1); 

     img1.setImageResource(R.drawable.play); 

     } 
     else 
     { 
      player.start(); 
      Toast.makeText(this, isPlaying, Toast.LENGTH_LONG).show(); 

      ImageButton img1=(ImageButton) this.findViewById(R.id.imageButton1); 
      img1.setImageResource(R.drawable.pause); 
     } 
     } 
     } 

    @Override 
    public void run() { 
     int currentPosition= 0; String s; 
     int total = player.getDuration(); 
     while (player!=null && currentPosition<total) { 
      try { 
       Thread.sleep(1000); 
       currentPosition= player.getCurrentPosition(); 
      } catch (InterruptedException e) { 
       return; 
      } catch (Exception e) { 
       return; 
      }    

      seek.setProgress(currentPosition); 


     } 


    } 
} 
1
MediaPlayer mpE = MediaPlayer.create(GuitarTuner.this, R.raw.test2); 

    play.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      if (mpE.isPlaying()) { 
       mpE.pause(); 
       play.setBackgroundResource(R.drawable.play); 
      } else { 

       mpE.start(); 
       play.setBackgroundResource(R.drawable.pause); 
      } 

     } 
    }); 
0

do wstrzymania odtwarzania Mediaplayer:

Mediaplayer.pause(); 
length = Mediaplayer.getCurrentPosition(); 

i wznawianie odtwarzacza z położenia, w którym zatrzymał się ostatnio odbywa się poprzez:

Mediaplayer.seekTo(length); 
Mediaplayer.start(); 
0

public class główną działalność rozciąga AppCompatActivity {

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

// utwór został wcześniej zapisany w folderze raw. Nazwa utworu to mylife (plik mp3) final MediaPlayer mMediaPlayer = MediaPlayer.create (MainActivity.this, R.raw.mylife);

//  Play song 
    Button playButton = (Button) findViewById(R.id.play); 
    playButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      mMediaPlayer.start(); // no need to call prepare(); create() does that for you 
     } 
    }); 
    //  Pause song 
    Button pauseButton = (Button) findViewById(R.id.pause); 
    pauseButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      mMediaPlayer.pause(); 
     } 
    }); 

    //  Stop song - when you stop a song, you can't play it again. First you need to prepare it. 

    Button stopButton = (Button) findViewById(R.id.stop); 
    stopButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      mMediaPlayer.stop(); 
      mMediaPlayer.prepareAsync(); 
     } 
    }); 

} 

}

+1

Proszę nie tylko zrzucić kod ... wyjaśnić swoją odpowiedź przynajmniej trochę. I weź [wycieczkę] –

Powiązane problemy