【发布时间】:2020-09-24 09:24:12
【问题描述】:
我想在按下播放按钮时使用 android MediaPlayer 一个一个(依次)播放 mp3 文件。 当我运行我的代码时,音频文件同时运行而不是顺序运行。我想解决方案应该在 onCompletion 函数中 - 仅在最后一个完成后才启动新的 mp3file 但我尝试了几种方法但没有成功。这是我的代码:
package com.example.PlayerApp;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
MediaPlayer player;
static List<Integer> audio_id_list = new ArrayList<Integer>();;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
audio_id_list.add(R.raw.audio1);
audio_id_list.add(R.raw.audio2);
}
public void play(View v) {
for (int i = 0; i < audio_id_list.size(); i++) {
player = MediaPlayer.create(this, audio_id_list.get(i));
player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
stopPlayer();
}
});
player.start();
}
}
public void pause(View v) {
if (player != null) {
player.pause();
}
}
public void stop(View v) {
stopPlayer();
}
private void stopPlayer() {
if (player != null) {
player.release();
player = null;
Toast.makeText(this, "MediaPlayer released", Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onStop() {
super.onStop();
stopPlayer();
}
}
''
【问题讨论】:
标签: android android-studio audio media-player sequential