Как Воспроизводить 3 audios формы последующей в Андроид Студио?

Что такой друзья, у меня есть три файла, если я делаю следующее внутри "onclick" моего main activity:

MediaPlayer Audio1 = MediaPlayer .create(this, R.raw.Audio1);

MediaPlayer Audio2 = MediaPlayer .create(this, R.raw.Audio2);

MediaPlayer Audio3 = MediaPlayer .create(this, R.raw.Audio3);


Audio2.start();

Audio3.start();

Они размножаются одновременной формы. Я хотел бы, чтобы кто-то предложил мне код, чтобы мочь решать это, я исследовал такие выборы как MediaListener и SoundPool, но ответы, которые я нахожу, осложнены и я не понимаю хорошо, как применять их. Если бы у кого-то был простой и прямой код, который функционировал бы, он ему был бы благодарен, после я начинаю изучать это в деталь, но у меня срочная необходимость решать эту деталь.

1
задан 29.05.2017, 18:49
2 ответа

Ты нуждаешься únicamente [один 112] для reproducci¦n audios, если ты будешь хранить их в /raw, можешь создавать array с элементами целый тип для reproducci¦n.

Помнит каждый раз, когда ресурсы должны определяться с именами в minúsculas с буквами a-z, 0-9, или underscore "_":

   private int[] sounds = {R.raw.audio1, R.raw.audio2, R.raw.audio3};

, завершив reproducci¦n аудио, обнаруженный посредством OnCompletionListener , продолжает со следующим аудио последовательно.

Восток ser¦ - в полный пример:

import android.content.res.AssetFileDescriptor;
import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import java.io.IOException;

public class MainActivity extends AppCompatActivity implements MediaPlayer.OnCompletionListener {

    private final static String TAG = "MediaPlayer audios";
    private MediaPlayer mediaPlayer;
    private int[] sounds = {R.raw.audio1, R.raw.audio2, R.raw.audio3};
    private int sound;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mediaPlayer = MediaPlayer.create(this, sounds[0]);
        mediaPlayer.setOnCompletionListener(this);
        mediaPlayer.start();
    }

    @Override
    public void onCompletion(MediaPlayer mp) {
        play();
    }

    private void play() {
        sound++;
        if (sounds.length <= sound){
            //Termina reproducción de todos los audios.
            return;
        }

        AssetFileDescriptor afd = this.getResources().openRawResourceFd(sounds[sound]);

        try {
            mediaPlayer.reset();
            mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getDeclaredLength());
            mediaPlayer.prepare();
            mediaPlayer.start();
            afd.close();
        }
        catch (IllegalArgumentException e) {
            Log.e(TAG, "IllegalArgumentException Unable to play audio : " + e.getMessage());
        }
        catch (IllegalStateException e) {
            Log.e(TAG, "IllegalStateException Unable to play audio : " + e.getMessage());
        }
        catch (IOException e) {
            Log.e(TAG, "IOException Unable to play audio : " + e.getMessage());
        }
    }
}
0
ответ дан 24.11.2019, 08:46
  • 1
    Спасибо за помощь и có я говорю, он довольно полный! – Marco Ycaza Lengua 04.06.2017, 19:24
  • 2
    Удовольствие мне приятно он был полезен, не необходимо добавлять несколько контроля, с одним он может воспроизводить все то, что ты требуешь в твоем aplicació n. – Jorgesys♦ 04.06.2017, 22:09

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

Audio1.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mp) {
                        //Cuando acabe hara esta accion 
                        mp=MediaPlayer.create(MainActivity.this,Uri.parse(String.valueOf("/sdcard/rune.mp3")));
                        mp.start()
                    }
                });
1
ответ дан 24.11.2019, 08:46
  • 1
    Спасибо за твою помощь, действительно funcionó!!! :D – Marco Ycaza Lengua 04.06.2017, 19:22

Теги

Похожие вопросы