android - 如何连续播放原始文件夹中的歌曲,并且不循环播放
问题描述
我是新手,你能帮帮我吗?我想按顺序播放我的原始文件夹中的所有歌曲,在所有歌曲播放完之后我不想循环播放。
我已经尝试过这段代码,但是在播放所有歌曲后它一直在循环{
int [] sound;
int soundke = 0;
MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kubus);
sound = new int[] {R.raw.swoosh2, R.raw.swoosh1, R.raw.swoosh2};
mediaPlayer = MediaPlayer.create(kubus.this, sound[0]);
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
play();
}
});
}
private void play () {
soundke = (soundke + 1) % 3;
AssetFileDescriptor afd = this.getResources().openRawResourceFd(sound[soundke]);
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getDeclaredLength());
mediaPlayer.prepare();
mediaPlayer.start();
afd.close();
} catch (IOException e) {
}
}
在所有歌曲播放后它仍然保持循环。我不想在播放完所有歌曲后循环播放,谢谢你的帮助
解决方案
int [] sound;
int soundke = 0;
MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kubus);
sound = new int[] {R.raw.swoosh2, R.raw.swoosh1, R.raw.swoosh2};
mediaPlayer = MediaPlayer.create(kubus.this, sound[0]);
mediaPlayer.setLooping(false);
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
if(soundke < sound.length-1){
play(++soundke);
}else{
soundke=0;
mediaPlayer.stop();
}
}
});
}
private void play (int track) {
//soundke = (soundke + 1) % 3;
AssetFileDescriptor afd = this.getResources().openRawResourceFd(sound[track]);
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getDeclaredLength());
mediaPlayer.setLooping(false);
mediaPlayer.prepare();
mediaPlayer.start();
afd.close();
} catch (IOException e) {
}
}
推荐阅读
- python - 如何在 discord.py 中添加条件冷却?
- augmented-reality - 此应用程序需要在虚幻游戏中使用最新版本的arcore
- python - 尽管定义了变量,但出现名称未定义错误
- mysql - MySQL 中的递归查询(找到 Bob 的直接和间接主管)?
- html - SVG 动画圆圈垂直和水平居中
- python - 为什么使用 `as_index=False` 的 `groupby` 甚至比使用 `reset_index` 的 `groupby` 还要慢
- f# - 在 F# Akka.Net 中区分远程参与者之间的联合
- android - 如何使用NFC标签直接打开APP安卓
- scala - 有没有更好的方法来测试 Scala 中的泛型类型(没有类型参数)?
- docker - 在视频下载器中使用 ffmpeg 时出错:'ERR: spawn ./db/ffmpeg ENOENT'