在我的项目中,我正在尝试创建一个播放shoutcast流的媒体播放器。在我按下设备上的后退按钮之前,一切似乎都运行良好,我认为这会停止活动并导致设备在重新启动时重新创建活动。问题是,当重新创建活动时,我将失去对媒体播放器的控制并创建新的媒体播放器。
我需要能够让媒体播放器控制回来。怎么可能?
此部分代码属于onCreate
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button);
if (mediaPlayer == null){
mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setDataSource(getString(R.string.yayin));
} catch (Exception e) {
e.printStackTrace();
}
mediaPlayer.prepareAsync();
}
if(!isPlaying){
btn.setBackgroundResource(R.drawable.oynat);
}
else{
btn.setBackgroundResource(R.drawable.durdur);
}
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!isPlaying){
playOnReady();
isPlaying = true;
btn.setBackgroundResource(R.drawable.durdur);
}
else{
mediaPlayer.reset();
isPlaying = false;
btn.setBackgroundResource(R.drawable.oynat);
}
}
});
这部分代码属于playOnReady()函数
private void playOnReady(){
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
}
答案 0 :(得分:0)
查看Android活动生命周期流程图:https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
您需要考虑离开Activity时调用onPause的路径,然后在再次输入时调用onResume。解决方案可能就像将部分/全部代码从onCreate移动到onResume一样简单。
答案 1 :(得分:0)
使用this教程我已经设法构建了一个处理媒体播放器的服务,我可以随时控制它。