2012-03-12 174 views
1

我是Android新手。在我的应用程序中,MediaPlayer按顺序播放歌曲组。这些歌曲都存储在一个ArrayList和歌曲名称存储在另一个数组列表..Android媒体播放器播放歌曲有序

for(i=0;i< songarray.sizeof();i++) 
{ 
    mp=MediaPlayer.create(this,(Integer) songarray.get(i)); 

    sname.setText(songname.get(i)); 
    mp.start 
} 

的问题是,歌曲的播放只有一个,然后打印一组歌曲的名字。

+0

哪一个玩过吗?最后一个? – iTurki 2012-03-12 12:31:03

回答

2

你应该监听器设置为歌曲的结束,然后开始下一个(顺便说一句 - 什么是sizeof()):

int index = 0; 
sname.setText(songname.get(i)); 
mp = MediaPlayer.create(this,(Integer) songarray.get(i)); 
mp.start(); //as per @iturki comment 
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
    @Override 
    public void onCompletion(MediaPlayer player) { 
     mp.release(); 
     if (i < (songarray.size() - 1)) { 
      i++; 
      mp = MediaPlayer.create(this,(Integer) songarray.get(i)); 
      sname.setText(songname.get(i)); 
      mp.setOnCompletionListener(this); 
      mp.start();    
     }   
    } 
}); 
+0

完美。只需要添加'mp.start'即可开始播放第一首歌曲。 – iTurki 2012-03-12 12:39:14

+0

@iturki - 当然...忘了:) :) – MByD 2012-03-12 12:39:45

+0

嗨..最后选定的歌曲只播放... – Palaniraja 2012-03-12 13:19:14