Android 如何在原始文件夹中连续播放歌曲,且无循环
我是新手,你能帮我吗??我想按顺序播放我原始文件夹中的所有歌曲,在所有歌曲播放完毕后,我不希望出现循环 我已经尝试过这个代码,但是在播放完所有歌曲后,它仍在循环 { 在播放完所有歌曲后,它仍会继续循环。我不想在播放完所有歌曲后循环,感谢您的帮助Android 如何在原始文件夹中连续播放歌曲,且无循环,android,arrays,audio,media-player,Android,Arrays,Audio,Media Player,我是新手,你能帮我吗??我想按顺序播放我原始文件夹中的所有歌曲,在所有歌曲播放完毕后,我不希望出现循环 我已经尝试过这个代码,但是在播放完所有歌曲后,它仍在循环 { 在播放完所有歌曲后,它仍会继续循环。我不想在播放完所有歌曲后循环,感谢您的帮助int[]sound; int [] sound; int soundke = 0; MediaPlayer mediaPlayer; @Override protected void onCreate(Bundle
int[]sound;
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) {
}
}
int-soundke=0;
媒体播放器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kubus);
声音=新的int[]{R.raw.swoosh2,R.raw.swoosh1,R.raw.swoosh2};
mediaPlayer=mediaPlayer.create(kubus.this,声音[0]);
mediaPlayer.setLooping(false);
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(新的mediaPlayer.OnCompletionListener(){
@凌驾
完成时的公共作废(MediaPlayer mp){
如果(声音大小<声音长度-1){
播放(++soundke);
}否则{
soundke=0;
mediaPlayer.stop();
}
}
});
}
私人无效播放(int曲目){
//soundke=(soundke+1)%3;
AssetFileDescriptor afd=this.getResources().openRawResourceFd(声音[track]);
试一试{
mediaPlayer.reset();
setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getDeclaredLength());
mediaPlayer.setLooping(false);
mediaPlayer.prepare();
mediaPlayer.start();
afd.close();
}捕获(IOE异常){
}
}
循环是指从第一首曲目开始还是在最后一首曲目上循环?在最后一首曲目上。@Ewa Saputra让我快速编辑我的答案,然后再试一次it@EwaSaputra现在试一试ItError当最后一首歌播放完毕应用程序关闭它自己它在log cat中说了什么。哪一行是错误?我不知道哪一行是错误,但像这样的错误是致命的异常:主进程:com.example.smkm2p.apkfortunetra,PID:27163 java.lang.ArrayIndexOutOfBoundsException:length=3;index=3
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) {
}
}