for loop using a raw music array android

后端 未结 4 830
再見小時候
再見小時候 2021-01-01 08:15

I am currently trying to create a for loop in which it will play a raw file and when it\'s done, it will go on to the next sound file in the array. It is currently playing a

4条回答
  •  暗喜
    暗喜 (楼主)
    2021-01-01 08:44

    This is working code for playing songs in continue loop.

    public class MainActivity extends Activity 
    {
    private int[] tracks = {R.raw.explosion,R.raw.pianothingy_one,R.raw.car_horn_x};
    int mCompleted = 0;
    
    public void onCreate(Bundle savedInstanceState) 
    {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
    
     MediaPlayer mp = MediaPlayer.create(this, tracks[0]);
     mp.setOnCompletionListener(new OnCompletionListener() 
     {
         @Override
         public void onCompletion(MediaPlayer mp)
         {
             mCompleted++;
             mp.reset();
             if (mCompleted < tracks.length) 
             {
                 try
                 {
                     AssetFileDescriptor afd = getResources().openRawResourceFd(tracks[mCompleted]);
                     if (afd != null) 
                     {
                         mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
                         afd.close();
                         mp.prepare();
                         mp.start();
                     }
                 }
                 catch (Exception ex) 
                 {
                    ex.printStackTrace();
                 }
    
             } 
             else if (mCompleted>=tracks.length) 
             {
                 mCompleted =0;
                 try
                 {
                     AssetFileDescriptor afd = getResources().openRawResourceFd(tracks[mCompleted]);
                     if (afd != null) 
                     {
                         mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
                         afd.close();
                         mp.prepare();
                         mp.start();
                     }
                 }
                 catch (Exception ex) 
                 {
                    ex.printStackTrace();
                 }
             }
             else
             {
                 mCompleted=0;
                  mp.release();
                  mp = null;
             }
    
         }
     });
    
     mp.start();
    

提交回复
热议问题