【问题标题】:Android media player error(1, -1004) while playing a stream from external website播放来自外部网站的流时 Android 媒体播放器错误(1,-1004)
【发布时间】:2014-07-24 04:20:38
【问题描述】:

我试图在我的 android 应用程序中播放来自网站的音频文件,但遇到媒体播放器错误 (1, -1004)。

当我在 windows 媒体播放器或 vlc 播放器中使用流媒体链接时,它工作正常。为什么android媒体播放器会产生这个错误?我的代码是

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_play_file);
    // Show the Up button in the action bar.
    setupActionBar();

     playSong("http://WEBSITE/001.mp3");
}

private void playSong(String songPath) {
    MediaPlayer mP = new MediaPlayer();
    try {
        mP.setDataSource(songPath);
        mP.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mP.prepare();
        mP.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                // TODO Auto-generated method stub
                mp.start();

            }
        });

    } catch (IllegalArgumentException e) {
          e.printStackTrace();
    } catch (IllegalStateException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }


}

【问题讨论】:

  • 你看到我更新的答案了吗?请看
  • 嗨,如果问题解决了,请接受答案并提出我们可以解决下一个问题的分数...

标签: android android-mediaplayer


【解决方案1】:

使用下面的代码

MediaPlayer mP = new MediaPlayer();
        mP.setAudioStreamType(AudioManager.STREAM_MUSIC);
        try {
            mP.setDataSource(songPath);
            mP.setOnErrorListener(this);
            mP.setOnPreparedListener(this);
            mP.prepareAsync();
        } catch (IllegalArgumentException e) {

            e.printStackTrace();
        } catch (IllegalStateException e) {

            e.printStackTrace();
        } catch (IOException e) {

            e.printStackTrace();
        }
    }

【讨论】:

  • 你在哪里添加 mp.start();
  • 在onPrepared的overridenn方法中如下:@Override public void onPrepared(MediaPlayer play) { if (progressDialog != null && progressDialog.isShowing()) { progressDialog.dismiss(); } play.start(); }
【解决方案2】:

这可能是解决方案:

<permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.INTERNET" />
<permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<use-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

多亏了这个 - https://stackoverflow.com/a/17911777/1193534

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    相关资源
    最近更新 更多