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) {

        }
    }