2

在我的应用程序中,我使用 MediaPlayer 播放直播链接。

这是我的代码

progress = ProgressDialog.show(ctx, "",
              "Loading..", true);

new Thread(new Runnable() {
              @Override
              public void run()
              {

                runOnUiThread(new Runnable() {
                  @Override
                  public void run()
                  {
                      mediaPlayer = new MediaPlayer();
                        try
                        {
                            mediaPlayer.reset();
                            mediaPlayer = new MediaPlayer();
                            mediaPlayer.setDataSource(radioUrl);
                            mediaPlayer.prepare();
                            mediaPlayer.start();

                        }catch (Exception e) {
                            e.printStackTrace();
                            // TODO: handle exception


                        }
                                progress.dismiss();
                  }
                });
              }
            }).start();

发生以下错误

 I/MediaPlayer(23237): mContext is null, can't getMirrorDisplayStatus!!!

在我尝试播放的一些链接上

 MediaPlayer Error (-38,0)
4

1 回答 1

4

当尚未准备好播放从 URL 下载的声音时,您会收到此错误 ( MediaPlayer Error (-38,0)) 。mediaPlayer

一种解决方法是设置一个侦听器,它会在媒体播放器准备好时启动它。

mediaPlayer.setDataSource(radioUrl);
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.prepareAsync();

@Override
public void onPrepared(MediaPlayer player) {
    player.start();
}

对于I/MediaPlayer(23237): mContext is null, can't getMirrorDisplayStatus!!!,您应该检查为什么mContext可以为空。使用您提供的代码,将很难提供帮助。

编辑:

您还可以使用匿名类来实现:

         MediaPlayer mediaPlayer = new MediaPlayer();
        mediaPlayer.setDataSource(radioUrl);
        mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {            
            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.start();
            }
        });
    mediaPlayer.prepareAsync();
于 2013-05-23T09:41:53.830 回答