【发布时间】:2016-12-06 18:53:06
【问题描述】:
我在 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 并传递它所在的位置以便它可以从那里开始。
【问题讨论】:
标签: android android-fragments service android-mediaplayer