0

オーディオ ストリーム サービスを にバインドしていFragmentます。

の値をサービスpercentからに取得するにはどうすればよいですか?MediaPlayeronBufferingUpdateFragment

Broadcastサービスの からインテントを送信することを考えていましonBufferingUpdateたが、それは少しやり過ぎのようです。

誰でも助けることができますか?

サービス

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

}
4

1 に答える 1

0

私はあなたが提案したように行い、 a を使用しLocalBroadcastManagerて内部更新をフラグメントに送り返します。

( http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html )

フラグメントへの参照をサービスに保存する以外に、他にどのように行うかはわかりません。

于 2013-06-14T13:19:55.843 に答える