Android - 媒体播放器错误:在状态 64 中调用的附加新播放器



我正在以下帖子中创建简单的音乐播放器,但是从列表中选择任何歌曲或从MediaController按上一页/下一首会出现以下错误。我正在使用奥利奥(Andoid 8.1.0 API 27(。

public void playSong()
{
Song playSong = songs.get(songPosn);
songTitle=playSong.getTitle();
long currSong = playSong.getID();
Uri trackUri = ContentUris.withAppendedId(android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,currSong);
try
{        
    player.setDataSource(getApplicationContext(), trackUri);
    player.prepareAsync();
}
catch(Exception e){
    Log.e("MUSIC SERVICE", "Error setting data source", e);
}

}

错误MediaPlayer error: attachnewplayer called in state 64

参考:创建简单的音乐播放器

你必须重置播放器,还必须设置 setAudioStreamType,所以你的代码将如下所示

try 
{
    player.reset();
    player.setDataSource(getApplicationContext(), trackUri);
    player.setAudioStreamType(AudioManager.STREAM_MUSIC);
    player.prepareAsync();
}

我认为像这样的问题的关键是让人们知道状态列表:

  • 1: ?
  • 64: ?
  • 128:播放完成。我遇到 128,播放完成后,在调用 setDataSource 之前不会调用停止和重置。我知道停止,重置,设置数据源,准备异步,开始的顺序正在工作。
  • ?: ?

最新更新