我在Android上的MediaPlayer有问题,即时启动一个使用自定义实现的服务,我有所有方法使用媒体播放器,暂停,播放等
播放器在活动中运行良好,但它有一个按钮来最小化它,因为你可以继续在每个活动上听音频,所以我必须在我在BaseActivity上创建的BaseFragment上启动或恢复音频,但它不能恢复音频。
当我关闭媒体播放器的活动时,我暂停播放器并取消注册播放器服务
AudioPlayerService.unRegister(this);
这是我将BaseFragment连接到服务的方式
//Connection with a service
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
Log.d(">>>>>", "Service starts on fragment");
AudioPlayerService.LocalBinder mLocalBinder = (AudioPlayerService.LocalBinder) service;
audioServiceObject = mLocalBinder.getService();
mBounded = true;
if (audioServiceObject != null) {
audioServiceObject.startAudioPlayer(audio_path, media_length);
AudioPlayerService.register(this);
audioServiceObject.pauseAudioPlayer();
}
}
@Override
public void onServiceDisconnected(ComponentName name) {
Log.d(">>>>>", "Service end");
mBounded = false;
audioServiceObject = null;
}
};
我在BaseActivity上调用底部玩家
PlayerBottom newAudioPlayer = new PlayerBottom();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.add(R.id.audioPlayerFrame, newAudioPlayer);
transaction.commit();
并且我向底层玩家发送活动最小化时剩下的位置,所以我调用MediaPlayer.seekto并传递它离开的位置,以便它可以从那里开始。
答案 0 :(得分:1)
不确定您是如何开始服务的,但我认为您是通过将其绑定到您的活动来启动它的。 当您删除活动时,它会从服务中解除绑定,从而终止它。
您可能需要致电startService()
而不是bindService()
来启动服务。
如果是这种情况,您可能需要在此处详细了解服务:Services Documentation
解释差异的好视频:Perf matters video