我正在尝试播放远程服务器中的歌曲并且在此链接中。你也可以查看这首歌。但根据我编码的内容,歌曲无法从远程服务器播放。
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();
}
}
});
答案 0 :(得分:1)
或者你认为在播放歌曲后将会执行finally语句吗?
答案 1 :(得分:1)
您在代码中调用prepareAsync()。因为您正在异步准备,所以在您声明您的Activity实现onPrepared(MediaPlayer)
之后,您将收到名为MediaPlayer.OnPreparedListener
的回调。在这里你应该打电话给mySong.start()
。在prepareAsync
之后调用它很可能会导致IllegalStateException发生,因为MediaPlayer还没有准备好。最后,您要设置MediaPlayer.OnCompletionListener
,以便可以在那里释放MediaPlayer而不是finally块。此外,重置MediaPlayer和释放是多余的。如果您要立即发布,则没有理由重置它。