Android MediaPlayer未从prepareAsync返回

Android 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

我将在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/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。谢谢