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;
        }
    };

}