Android用のMediaPlayerで複数のmp3ファイルを再生する際に問題があります...すべてのファイルを一緒に再生し、混乱を引き起こします.一度に各ファイルを再生し、その後に他のファイルを再生するという解決策が必要です.
質問する
18397 次
3 に答える
7
あなたはこのようなことを試すことができます:
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();
}
}
}
于 2013-01-27T15:16:03.830 に答える
5
私は次のコードでこれを行いました:
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();
}
于 2013-11-02T16:13:10.690 に答える
2
さまざまな MediaPlayer コールバックがあり、次のように使用します。
http://www.androidadb.com/class/on/OnCompletionListener.html
mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer theMediaPlayer) {
mParent.playNextAudio();
mParent = null;
}
于 2012-06-06T14:21:12.753 に答える