Android MediaPlayer未从prepareAsync返回
我将在Logcat中获得以下内容,并使用特定的URI启动MediaPlayer。通常,每个Uri,好的或坏的,要么播放,要么返回错误,除了这个特定的UriAndroid MediaPlayer未从prepareAsync返回,android,error-handling,media-player,Android,Error Handling,Media Player,我将在Logcat中获得以下内容,并使用特定的URI启动MediaPlayer。通常,每个Uri,好的或坏的,要么播放,要么返回错误,除了这个特定的Uri I/MPS﹕ PrepAsync started V/MediaPlayer﹕ message received msg=8, ext1=0, ext2=0 V/MediaPlayer﹕ unrecognized message: (8, 0, 0) V/MediaPlayer﹕ callback application V/MediaPla
I/MPS﹕ PrepAsync started
V/MediaPlayer﹕ message received msg=8, ext1=0, ext2=0
V/MediaPlayer﹕ unrecognized message: (8, 0, 0)
V/MediaPlayer﹕ callback application
V/MediaPlayer﹕ back from callback
。。。挂在那里
我只是想看看如何在错误处理程序中捕捉这个对话,但如果有人知道实际问题,那就更好了
源代码FWIW:
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.start();
}
});
}
try {
mediaPlayer.setDataSource(sUrl);
mediaPlayer.prepareAsync();
} catch (Exception e) {
Log.d(TAG, "Exception:"+e;
}
此外,我还尝试创建了OnInfo Listener、OnError和OnBufferingUpdateListener。这些从来没有被称为。看起来mediaPlayer在onPrepareAsync期间消失了
这里是一个网址,如果有人受到启发玩这个
http://54.196.206.122/entercom-koitfmaac-64
我只是将其复制/粘贴到VLC中,以验证链接是否有效
更新:在进一步研究之后,如果我等待足够长的时间,最终我会得到以下结果:
I/dalvikvm﹕ threadid=3: reacting to signal 3
I/dalvikvm﹕ Wrote stack traces to '/data/anr/traces.txt'
更新:正如Shubhang Malviya指出的,这个问题是我需要使用URI.parse作为:
mMediaPlayer.setDataSource(mContext, Uri.parse("http://54.196.206.122/entercom-koitfmaac-64"));
我认为如果我能分享我的实现会很好: 尝试以下初始化媒体播放器的方法
try {
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnErrorListener(this);
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnInfoListener(this);
mMediaPlayer.setOnSeekCompleteListener(this);
mMediaPlayer.setDataSource(mContext, Uri.parse("http://54.196.206.122/entercom-koitfmaac-64"));
mMediaPlayer.prepareAsync();
} catch (IOException e) {
// reset media player
}
我的onPrepared(MediaPlayer mp)
在几秒钟后被调用,它正在播放你的音乐文件
另外,仅供参考,“无法在客户端打开文件,正在尝试服务器端”不是错误消息,而是来自MediaPlayer的调试消息。Logcat在播放网络视频流时总是这样说。此代码不足以识别您的问题。请发布您的源代码code@JonhSmith我试过使用你的url,我的onPrepared()被调用了,我想问题是我没有使用Uri.parse。谢谢