2017-07-14 19 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

つだけMediaPlayerを参照することができますあなたの単一mp変数ので、あなたの一時停止]ボタンで再生中のすべての曲を一時停止することができますコードは、の最後のMediaPlayerインスタンスを解放しようとしています食べた。すべてのMediaPlayerインスタンスへの参照を保持する必要があります。

[UPDATED]このような

何かがよりよく動作するはず:

// 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

ありがとう、すべての曲が同時に再生され、一時停止ボタンも動作しています –

関連する問題