2012-08-14 137 views
4

基本上我有3首歌曲,我希望用户能够在3首歌曲的周期完成后循环回第一首歌曲。为什么这不工作?它将播放所有3首歌曲,然后在第四次点击时,不播放任何歌曲。如何循环播放媒体播放器文件?

MediaPlayer song0, song1, song2; 
Button play, next; 
ArrayList<MediaPlayer> music = new ArrayList<MediaPlayer>(); 
int track = 0; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 


    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    song0 = MediaPlayer.create(TheParty0Activity.this, R.raw.blacksunempire); 
    song1 = MediaPlayer.create(TheParty0Activity.this, R.raw.blueskies); 
    song2= MediaPlayer.create(TheParty0Activity.this, R.raw.fuckingnoise); 

    music.add(song0); 
    music.add(song1); 
    music.add(song2); 

    play = (Button) findViewById(R.id.button0); 
    next = (Button) findViewById(R.id.button1); 

    play.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      music.get(track).start(); 

     } 
    }); 

    next.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      music.get(track).stop(); 
      track++; 
      if(track == 3) 
       track = 0; 

      music.get(track).start(); 

     } 
    }); 
} 
+0

你到底想要做/什么。 .. ??? – SilentKiller 2012-08-14 11:41:15

+0

在重新启动媒体播放器之前,您应该重新启动媒体播放器 – 2012-08-14 11:43:40

回答

7

调用该函数:在mediaplayerObject

MediaPlayer.setLooping(true|false)

以后你就叫MediaPlayer.prepare()

例子:

Uri mediaUri = createUri(context, R.raw.media); // Audiofile in raw folder 
Mediaplayer mPlayer = new MediaPlayer(); 
mPlayer.setDataSource(context, mediaUri); 
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
mPlayer.prepare(); 

mPlayer.setLooping(true); 

mPlayer.start(); 
+2

请注意,无法设置有限数量的循环,并且(根据我的经验)循环绝对不是无缝的。如果预加载声音不成问题,那么SoundPool在循环方面会更好。 – 2012-08-23 12:37:12

+0

@sebweisgerber它会播放多少声音 – rup35h 2015-09-21 13:53:59

+0

无限期地调用http://developer.android.com/reference/android/media/MediaPlayer.html#stop() – 2015-09-21 14:13:25