问题
Any one Help for MediaPlayer Error. when aim is to Change DataSource and Play second Audio when First Audio is Compliting its Playing.
My Code is below :- mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer arg0)
{
String fileName = Environment.getExternalStorageDirectory().getAbsolutePath() + FILENAME+arrListSize+".wav";
mMediaPlayer.release();
mMediaPlayer = null;
mMediaPlayer = new MediaPlayer();
Uri uri = Uri.parse("file://"+fileName); mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try
{
mMediaPlayer.setDataSource(getApplicationContext(), uri);
mMediaPlayer.prepare();
}
catch (Exception e)
{
e.printStackTrace();
}
Error :- setDataSource called in state 32
Thanks.
回答1:
From the error, it looks like the previous instance of the MediaPlayer
is not released completely. When the playback has completed, the player is in Paused state when the onCompletionListener
is invoked. Can you please stop
the MediaPlayer
before releasing the same?
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = NULL;
mMediaPlayer = new MediaPlayer();
...
来源:https://stackoverflow.com/questions/15152172/mediaplayer-change-datasource-error-when-mediaplayer-complets-playing-first-audi