как играть песню в сырой папке непрерывно, без циклов - PullRequest
0 голосов
/ 24 июня 2019

я новичок здесь, вы можете мне помочь ?? я хочу последовательно воспроизвести все песни в моей необработанной папке, после того, как все песни закончились, я не хочу зацикливаться.

Я пробовал этот код, но он продолжает работать после всей песни {

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

    }
}

он продолжает повторяться после воспроизведения всей песни. я не хочу зацикливаться после всей песни, спасибо за вашу помощь

1 Ответ

0 голосов
/ 24 июня 2019
  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) {

        }
    }
...