2017-07-14 56 views
0

我正在开发音乐播放器应用程序,在我的应用程序中我想单击一下按钮播放所有mp3文件。我可以用MediaPlayer做到这一点,但无法使用暂停按钮暂停所有歌曲。如何暂停所有播放的歌曲一次同时播放和暂停多个音频文件

播放按钮

for (int i = 0; i < InstrumentCountSize; i++) { 
     mp = new MediaPlayer(); 
     mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     mp.setDataSource(instruments_count.get(i)); 
     mp.prepare(); 
     mp.start(); 

    } 

暂停按钮

if (mp != null) { 
     try { 
      mp.stop(); 
      mp.reset(); 
      mp.release(); 
      mp = null; 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

回答

1

你的单mp变量只能引用单个MediaPlayer,让您的暂停按钮代码只是试图释放最后的MediaPlayer你的实例eated。您需要保留对所有MediaPlayer实例的引用。

[增订]

像这样的东西应该更好地工作:

// This needs to replace your "mp" variable. 
List<MediaPlayer> mps = new ArrayList<MediaPlayer>(); 


// Play button code .... 
// Make sure all the media are prepared before playing 
for (int i = 0; i < InstrumentCountSize; i++) { 
    MediaPlayer mp = new MediaPlayer(); 
    mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    mp.setDataSource(instruments_count.get(i)); 
    mp.prepare(); 
    mps.add(mp); 
} 
// Now that all the media are prepared, start playing them. 
// This should allow them to start playing at (approximately) the same time. 
for (MediaPlayer mp: mps) { 
    mp.start(); 
} 


// Pause button code ... 
for (MediaPlayer mp: mps) { 
    try { 
     mp.stop(); 
     mp.reset(); 
     mp.release(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
mps.clear(); 
+0

感谢,很多它的正常工作,但只有一个问题,即第二音频播放后2或3秒 –

+0

我已经更新了我的回答,以确保所有媒体在开始播放之前都已准备好。 – cybersam

+0

谢谢,现在所有的歌曲都在同时播放,暂停按钮也在工作 –