gpt4 book ai didi

android - 我怎样才能让 android 中的 mediaPlayer 一个接一个地播放 2 个或更多 mp3 文件?

转载 作者:太空宇宙 更新时间:2023-11-03 13:16:43 24 4
gpt4 key购买 nike

我正在创建一个 android 应用程序,我希望它可以一个接一个地播放多个 mp3 文件。

我的应用程序中有一个 mediaPlayer,如何设置队列来播放 mp3 文件?

最佳答案

实现此目的的方法是创建一个实现 OnCompletionListener 的类,该类处理 onCompletion 并接收要播放的下一个文件。首先将您的类定义为 PlayMedia,如下所示:

import android.content.Context;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.AsyncTask;
import android.util.Log;

public class PlayMedia extends AsyncTask<Void, Void, Void> {

private static final String LOG_TAG = PlayMedia.class.getSimpleName();

Context context;
private MediaPlayer mediaPlayer;
int[] soundIDs;
int idx =1;

public PlayMedia(MediaPlayer mediaPlayer) {
this.mediaPlayer = mediaPlayer;
}
public PlayMedia(final Context context, final int[] soundIDs) {
this.context = context;
this.soundIDs=soundIDs;
mediaPlayer = MediaPlayer.create(context,soundIDs[0]);
setNextMediaForMediaPlayer(mediaPlayer);
}

public void setNextMediaForMediaPlayer(MediaPlayer player){
player.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
if(soundIDs.length>idx){
mp.release();
mp = MediaPlayer.create(context,soundIDs[idx]);
setNextMediaForMediaPlayer(mp);
mp.start();
idx+=1;
}
}
});
}

@Override
protected Void doInBackground(Void... params) {
try {
mediaPlayer.start();
} catch (IllegalArgumentException e) {
Log.e(LOG_TAG, "", e);
} catch (SecurityException e) {
Log.e(LOG_TAG, "", e);
} catch (IllegalStateException e) {
Log.e(LOG_TAG, "", e);
}

return null;
}
}

然后像这样使用 PlayMedia:

int[] soundIDs = {R.raw.firstmp3, R.raw.secondmp3};
PlayMedia playAudio = new PlayMedia(context,soundIDs);
playAudio.execute();

关于android - 我怎样才能让 android 中的 mediaPlayer 一个接一个地播放 2 个或更多 mp3 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34937437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com