Playing audio files one after another

后端 未结 7 1296
情书的邮戳
情书的邮戳 2020-12-10 06:05

I have a list of audio files like this,

int music_numbers[] = { R.raw.one, R.raw.two, R.raw.three, R.raw.four,
            R.raw.five, R.raw.six, R.raw.seve         


        
7条回答
  •  -上瘾入骨i
    2020-12-10 07:01

    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(); 
    

提交回复
热议问题