我正在创建一个流媒体播放器,到目前为止它的工作正常。我可以设法启动和停止流式传输。当我按下主页按钮时,活动关闭但声音仍在播放。我很好,问题是,当我再次启动应用程序并点击停止按钮时,该对象为空。那是我的代码:
public class Main extends Activity {
private MediaPlayer player;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void onPlayClick(View v) {
try {
player = new MediaPlayer();
player.setDataSource("*****");
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
Log.i("In", "Prepared Listener");
player.start();
}
});
player.prepareAsync();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void onStopClick(View v) {
if (player != null && player.isPlaying()) {
player.stop();
player.release();
player = null;
}
}
}
有谁知道这个简单代码会出现什么问题? 非常感谢 Ť
答案 0 :(得分:1)
您希望将播放器置于服务中:http://developer.android.com/reference/android/app/Service.html
这样当你重新加载活动时它仍然有效。
答案 1 :(得分:0)
我认为值得注意的是,如果你要去活动路线而不是服务,你应该放
if (player != null && player.isPlaying()) {
player.stop();
player.release();
player = null;
}
在你的onStop()或你活动的onDestroy()方法中。如果你把它放在onStop()上,音频会在按下主页按钮时停止(或者任何时候另一个活动可能接管电话铃声)。如果你将它放在onDestroy()中,它将继续播放,直到系统需要你的应用程序正在使用的资源。无论哪种方式,这都是一个好主意,以便您的应用程序不会保留MediaPlayer资源,因为用户无论出于何种原因都没有按下停止按钮。