Android Media Player不播放音乐

时间:2015-04-19 20:29:24

标签: android android-fragments android-activity

我正在尝试播放远程服务器中的歌曲并且在此链接中。你也可以查看这首歌。但根据我编码的内容,歌曲无法从远程服务器播放。

Button b = (Button) findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        try{

        mySong = new MediaPlayer();
        mySong.setDataSource("http://www.hrupin.com/wp-content/uploads/mp3/testsong_20_sec.mp3");
        mySong.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mySong.prepareAsync();
        mySong.start();     

        }
        catch(Exception ee){
            TextView tv = (TextView) findViewById(R.id.textView1);
            tv.setText(ee.getMessage());
        }
        finally{
            mySong.reset();
            mySong.release();
        }
    }
});

2 个答案:

答案 0 :(得分:1)

你是认真的吗? 你正在启动它只是为了重置并立即释放它?找到错误的逻辑!

或者你认为在播放歌曲后将会执行finally语句吗?

答案 1 :(得分:1)

您在代码中调用prepareAsync()。因为您正在异步准备,所以在您声明您的Activity实现onPrepared(MediaPlayer)之后,您将收到名为MediaPlayer.OnPreparedListener的回调。在这里你应该打电话给mySong.start()。在prepareAsync之后调用它很可能会导致IllegalStateException发生,因为MediaPlayer还没有准备好。最后,您要设置MediaPlayer.OnCompletionListener,以便可以在那里释放MediaPlayer而不是finally块。此外,重置MediaPlayer和释放是多余的。如果您要立即发布,则没有理由重置它。