来自 url 的 MediaPlayer 流

Sér*_* LP 1 java android android-mediaplayer

我有一个简单的应用程序,我想从 url 播放 mp3。

当我将此代码添加到 OnCreate 时,应用程序在打开时崩溃:

try {
        mediaPlayer.setDataSource("http://www.freesfx.co.uk/rx2/mp3s/9/10183_1367780535.mp3");
        mediaPlayer.prepare();
    } catch (IOException e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

为什么?这部分代码有什么问题?

完整代码:

  public class MediaStreamTest extends AppCompatActivity {
ImageButton bPlay;
ImageButton bStop;
MediaPlayer mediaPlayer;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_media_stream_test);

    bPlay = (ImageButton)findViewById(R.id.btnPlay);
    bStop = (ImageButton)findViewById(R.id.btnStop);
    try {
        mediaPlayer.setDataSource("http://www.freesfx.co.uk/rx2/mp3s/9/10183_1367780535.mp3");
        mediaPlayer.prepare();
    } catch (IOException e) {
        e.printStackTrace();
    }

    bPlay.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mediaPlayer.isPlaying()) {
                bPlay.setBackgroundResource(R.drawable.ic_play_arrow_24dp);
                mediaPlayer.pause();
            }
            else {
                bPlay.setBackgroundResource(R.drawable.ic_pause_24dp);
                mediaPlayer.start();
            }
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

}

mma*_*ark 5

问题是因为 MediaPlayer 没有被初始化。这就是为什么您在尝试使用它时会收到空指针异常的原因。

只需添加:

mediaPlayer = new MediaPlayer();
Run Code Online (Sandbox Code Playgroud)

在调用MediaPlayer.setDataSource方法之前