2014-05-13 125 views
0

我正在eclipse上创建一个android应用程序。当我开始我的活动时,我已经在背景中播放音乐(song1.wav)。但是,我怎么能改变它,以便随机播放歌曲列表?Java随机MediaPlayer播放列表

这里是我的代码:

public class BCTR extends Activity { 
    protected MediaPlayer song1MediaPlayer; 

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

     Button homebutton = (Button) findViewById(R.id.homebtn); 



      final AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 
      int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); 
      int curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 
      SeekBar volControl = (SeekBar)findViewById(R.id.volbar); 
      volControl.setMax(maxVolume); 
      volControl.setProgress(curVolume); 
      volControl.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
       @Override 
       public void onStopTrackingTouch(SeekBar arg0) { 
       } 

       @Override 
       public void onStartTrackingTouch(SeekBar arg0) { 
       } 

       @Override 
       public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) { 
        audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, arg1, 0); 
       } 
      }); 


      song1MediaPlayer = MediaPlayer.create(BCTR.this, R.raw.song1); 
      song1MediaPlayer.start(); 

      homebutton.setOnClickListener(new OnClickListener() 
      { 
       public void onClick(View v) 
       { 

        song1MediaPlayer.stop(); 
        Intent intent = new Intent(BCTR.this, MainActivity.class); 
        startActivity(intent); 
       } 
      }); 



     // TODO Auto-generated method stub 
    } 

} 

所以基本上我有松1 - song10在我的原始文件夹,我想他们都在活动开始播放,但在一个随机顺序。

+0

问题:一首歌曲可以播放多少次,还是只想播放一次? –

+0

全部一次@LajosArpad – user1300788

+0

已回答您的问题。 –

回答

0

假设您有一个AbstractList<Integer>变量,名为indexes,其中有0,1,2,...,n - 1作为它们的值。现在,让我们有专人负责随机获得从indexes变量的索引和索引元素的方法:

public int getRandomNumber(numberOfElements) { 
    java.util.Random rnd = new java.util.Random(); 
    return rnd.nextInt(numberOfElements); 
} 

你需要建立你的AbstractList<Integer>包含indexes(比如,你可以使用ArrayList类实例化)和那么

while (indexes.size() > 0) { 
    int winnerIndex = indexes.remove(getRandomNumber(indexes.size())).intValue(); 
    //code, which displays the music 
} 
+0

所以在你已经有音乐代码的部分。我只是把song1MediaPlayer.start(); song2MediaPlayer.start(); song3MediaPlayer.start();等等? – user1300788

+0

您应该将这些命令放入数组中,然后创建将用于随机化和删除过程中已播放歌曲索引的索引集。 –