gpt4 book ai didi

Android MediaPlayer setDataSource() 抛出 IllegalStateException 错误

转载 作者:行者123 更新时间:2023-11-29 14:03:37 27 4
gpt4 key购买 nike

虽然我使用几乎相同的代码来播放两个视频,但第一个可以完美运行,而第二个则不能。当我按下一个视频按钮时,程序崩溃了:

WARN/System.err(15726): java.lang.IllegalStateException
WARN/System.err(15726): at android.media.MediaPlayer.setDataSource(Native Method)

源代码:

第一个播放代码:

    mediaPlayer = new MediaPlayer();
playURI = receiveIntent.getStringExtra("playURI");
showDebugInfo("play uri "+playURI);
Log.e("Gplayer on create", "play uri "+playURI);
try {
mediaPlayer.setDataSource(playURI);
} catch (IllegalArgumentException e) {
Log.v(LOGTAG, e.getMessage());
finish();
} catch (IllegalStateException e) {
Log.v(LOGTAG, e.getMessage());
finish();
} catch (IOException e) {
Log.v(LOGTAG, e.getMessage());
finish();
}

当按下下一步按钮时,它运行以下代码:

   String uri = listAdapter.getItem(position).getItem().getFirstResource().getValue();
showDebugInfo(" Uri "+uri);
if(mediaPlayer != null){
mediaPlayer.stop();
}
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(uri);
mediaPlayer.prepareAsync();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
finish();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
finish();
}

为什么会这样?我检查了两个部分,唯一不同的是,第一个是新的媒体播放器,第二个是让媒体播放器停止并重置,然后相同。

最佳答案

我遇到了同样的问题。

您需要在调用第二个视频 mediaPlayer.setDataSource(uri); 之前调用 mediaPlayer.reset(); 原因是,因为函数 mediaPlayer.setDataSource(uri); 只能在空闲状态下调用,而 mediaPlayer.reset(); 是让你进入空闲状态的函数。

我从这个理解answer ,即使问题有点不同。

关于Android MediaPlayer setDataSource() 抛出 IllegalStateException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8312269/

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