1
MediaPlayer mediaPlayer = Common.getMediaPlayer();
mediaPlayer.reset();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(this,Uri.parse(url));
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mediaPlayer) {
        mediaPlayer.start();
    }
});
mediaPlayer.prepareAsync();

これは私が使用したコードです。再生する音楽をクリックします。別の音楽をクリックすると、古い音楽がオフになり、クリックされた新しい音楽が再生されます。ただ、できれば音楽1を再生し続け、それが終わったら音楽2を再生することができればと考えています.

4

2 に答える 2

1

おそらく、曲のリストを維持し、onCompletionListener を登録して、各曲がいつ終了するかを判断することをお勧めします。onCompletion() コールバックでは、リストから次の曲をポップして再生します。

最終的には複数の MediaPlayer リスナーを使用することになるため、匿名の内部クラスに伴う変数アクセスの問題を回避し、囲んでいるクラスにそれらを実装させるのがおそらく最善です。

したがって、次のように補完リスナーを作成します。

mediaPlayer.setOnCompletionListener(this);

クラス定義に追加implements OnCompletionListenerし、次のようなメソッドを追加します。

@Override
public void onCompletion(MediaPlayer mp) {
    // Pop next song from the list, prepare it, and play it.
}
于 2014-03-30T12:01:39.280 に答える
-1

oncomple listener を追加し、すべての音楽を任意の配列リストに入れます。現在再生中のアイテムを思い出し続けます。1 つの再生が完了したら、リストの次の再生を行います。

    mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        // play next.
    }
于 2014-03-30T12:04:51.097 に答える