android - android studio-依次播放音频文件
问题描述
当按下播放按钮时,我想用 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();
}
}
''
解决方案
尝试这个
int i = 0;
public void play(View v) {
player = MediaPlayer.create(this, audio_id_list.get(i));
player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
stopPlayer();
if(i < audio_id_list.size()) {
i++;
play(v);
}
}
});
player.start();
}
推荐阅读
- c++ - variadic template for sorting variable number of arrays
- c++ - “地图”中的方括号是什么意思
实例[数量特征];" - opengl - glMultiDrawElements 和 glDrawElements 等价
- javascript - How to route the form action to a specific file by using express router
- javascript - 控制按钮切换与窗口大小重置
- swift - wanting to fetch firestore like realTimeDatabase
- android - 使用 mediacodec 在 android 上解码和组合两个视频
- python - 在 csv 文件中搜索特定标题
- ios - TouchableOpacity 在 React Native 的 mapview 中表现得很奇怪
- google-apps-script - 如何获取 findText() 的下一个或上一个字符