Вопрос по android – Воспроизведение нескольких файлов в MediaPlayer один за другим В Android

1

У меня проблема с воспроизведением нескольких mp3-файлов в MediaPlayer для Android ... Он воспроизводит все файлы вместе и создает беспорядок. Я хочу, чтобы решение состояло в том, чтобы он просто проигрывал каждый файл за раз, а затем воспроизводил другой файл.

использовать exoPlayer. эта библиотека поможет вам объединить несколько видео вместе roghayeh hosseini

Ваш Ответ

3   ответа
6

public class MainActivity extends Activity implements MediaPlayer.OnCompletionListener
{
    int[] tracks = new int[3];
    int currentTrack = 0;
    private MediaPlayer mediaPlayer = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      tracks[0] = R.raw.say1;
      tracks[1] = R.raw.say2;
      tracks[2] = R.raw.say3;
      mediaPlayer = MediaPlayer.create(getApplicationContext(), tracks[currentTrack]);
      mediaPlayer.setOnCompletionListener(this);
      mediaPlayer.start();
    }

    public void onCompletion(MediaPlayer arg0) {
      arg0.release();
      if (currentTrack < tracks.length) {
        currentTrack++;
        arg0 = MediaPlayer.create(getApplicationContext(), tracks[currentTrack]);
        arg0.setOnCompletionListener(this);
        arg0.start();
      }
    }
}
Выполняются только первые два аудиофайла, третий не воспроизводится. Почему это происходит, у вас есть какое-то решение для этого?
2

http://www.androidadb.com/class/on/OnCompletionListener.html

mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {

    public void onCompletion(MediaPlayer theMediaPlayer) {
        mParent.playNextAudio();
        mParent = null;
    }

http://developer.android.com/reference/android/media/MediaPlayer.html#setOnCompletionListener(android.media.MediaPlayer.OnCompletionListener)

но будьте осторожны, вы можете услышать mp3 дважды: /
У меня так же, он проигрывает только первые два файла. Похоже, вам нужно добавить прослушиватель завершения в MediaPlayer. Понятия не имею, как, хотя ...
Я реализовал это, но ... он не работает должным образом ... он воспроизводит только первые 2 файла Faisal Amjad
String PATH_TO_FILE = & quot; / sdcard / my_downloads / & quot; + filenum + & quot; .mp3 & quot ;; mediaPlayer = new MediaPlayer (); try {mediaPlayer.setDataSource (PATH_TO_FILE); mediaPlayer.prepare (); mediaPlayer.start (); mediaPlayer.setOnCompletionListener (new OnCompletionListener () {public void onCompletion (MediaPlayer mp) {// TODO String path = & quot; / sdcard / my_downloads / & quot; + filenum + & quot; .mp3 & quot ;; mediaPlayer =) try MediaPlayer = new MediaPlayer mediaPlayer.setDataSource (path); mediaPlayer.prepare (); mediaPlayer.start ();} catch (Exception e) {// TODO: обработать исключение} filenum ++;}}); Faisal Amjad
3

private ArrayList<MediaPlayer> mPlayerList = new ArrayList<MediaPlayer>();
public void playSound4FileList(ArrayList<String> fileList) 
{
    mPlayerList.clear();
    for (String fileName : fileList)
    {
        try {
            MediaPlayer mPlayerT = new MediaPlayer();

            AssetFileDescriptor descriptor = context.getAssets().openFd(fileName);
            mPlayerT.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength());
            descriptor.close();

            mPlayerT.prepare();
            mPlayerT.setVolume(1f, 1f);
            mPlayerT.setLooping(false);

            mPlayerList.add(mPlayerT);

        } catch (Exception e) {
        }

    }
    for (int i=0; i<mPlayerList.size()-1; i++) //Do not include last element
    {
        mPlayerList.get(i).setNextMediaPlayer(mPlayerList.get(i+1));

    }

    mPlayerList.get(0).start();
}
Для вызова требуется уровень API 16: android.media.MediaPlayer # setNextMediaPlayer!

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