Android 如何获得MediaPlayer';s onBufferingUpdate从服务更新为片段?
我正在将音频流服务绑定到Android 如何获得MediaPlayer';s onBufferingUpdate从服务更新为片段?,android,service,media-player,Android,Service,Media Player,我正在将音频流服务绑定到片段 如何从服务的MediaPlayer的onBufferingUpdate中将值percent获取到片段中 我正在考虑从服务的onBufferingUpdate发送广播意图,但这似乎有点过头了 有人能帮忙吗 服务 碎片 我会按照您的建议,使用LocalBroadcastManager将内部更新发送回片段 () 除了在服务中存储对片段的引用之外,我不确定您还会如何做 public class StreamService extends Service implements
片段
如何从服务的MediaPlayer
的onBufferingUpdate
中将值percent
获取到片段中
我正在考虑从服务的onBufferingUpdate
发送广播
意图,但这似乎有点过头了
有人能帮忙吗
服务
碎片
我会按照您的建议,使用LocalBroadcastManager
将内部更新发送回片段
()
除了在服务中存储对片段的引用之外,我不确定您还会如何做
public class StreamService extends Service implements OnBufferingUpdateListener,
OnInfoListener, OnPreparedListener, OnErrorListener {
private final IBinder mBinder = new StreamServiceBinder();
MediaPlayer mMediaPlayer;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
initMediaPlayer();
return START_STICKY;
}
@Override
public void onBufferingUpdate(MediaPlayer player, int percent) {
// how to send percent to my fragment?
}
public class StreamServiceBinder extends Binder {
StreamService getService() {
return StreamService.this;
}
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
/* ... */
}
public class StreamPlayerFragment extends Fragment{
private StreamService mService;
private boolean mBound = false;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.stream_player, container, false);
}
@Override
public void onResume() {
super.onResume();
Intent intent = new Intent(getActivity(), StreamService.class);
getActivity().bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
}
@Override
public void onPause() {
super.onPause();
if (mBound) {
getActivity().unbindService(mConnection);
mBound = false;
}
}
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className, IBinder service) {
StreamServiceBinder binder = (StreamServiceBinder) service;
mService = binder.getService();
mBound = true;
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
mBound = false;
}
};
}