Example usage for android.support.v4.media.session IMediaControllerCallback asBinder

List of usage examples for android.support.v4.media.session IMediaControllerCallback asBinder

Introduction

In this page you can find the example usage for android.support.v4.media.session IMediaControllerCallback asBinder.

Prototype

public IBinder asBinder();

Source Link

Document

Retrieve the Binder object associated with this interface.

Usage

From source file:androidx.media.MediaSession2StubImplBase.java

private void onControllerClosed(IMediaControllerCallback iController) {
    ControllerInfo controller;/*from   w w  w  .  ja  v  a 2s  . c om*/
    synchronized (mLock) {
        controller = mControllers.remove(iController.asBinder());
        if (DEBUG) {
            Log.d(TAG, "releasing " + controller);
        }
    }
    if (controller == null) {
        return;
    }
    final ControllerInfo removedController = controller;
    mSession.getCallbackExecutor().execute(new Runnable() {
        @Override
        public void run() {
            mSession.getCallback().onDisconnected(mSession.getInstance(), removedController);
        }
    });
}

From source file:androidx.media.MediaSession2StubImplBase.java

@Override
public void onCommand(String command, final Bundle extras, final ResultReceiver cb) {
    switch (command) {
    case CONTROLLER_COMMAND_CONNECT:
        connect(extras, cb);//from  w  w  w .  j a  v  a 2s  . c om
        break;
    case CONTROLLER_COMMAND_DISCONNECT:
        disconnect(extras);
        break;
    case CONTROLLER_COMMAND_BY_COMMAND_CODE: {
        final int commandCode = extras.getInt(ARGUMENT_COMMAND_CODE);
        IMediaControllerCallback caller = (IMediaControllerCallback) extras
                .getBinder(ARGUMENT_ICONTROLLER_CALLBACK);
        if (caller == null) {
            return;
        }

        onCommand2(caller.asBinder(), commandCode, new Session2Runnable() {
            @Override
            public void run(ControllerInfo controller) {
                switch (commandCode) {
                case COMMAND_CODE_PLAYBACK_PLAY:
                    mSession.play();
                    break;
                case COMMAND_CODE_PLAYBACK_PAUSE:
                    mSession.pause();
                    break;
                case COMMAND_CODE_PLAYBACK_RESET:
                    mSession.reset();
                    break;
                case COMMAND_CODE_PLAYBACK_PREPARE:
                    mSession.prepare();
                    break;
                case COMMAND_CODE_PLAYBACK_SEEK_TO: {
                    long seekPos = extras.getLong(ARGUMENT_SEEK_POSITION);
                    mSession.seekTo(seekPos);
                    break;
                }
                case COMMAND_CODE_PLAYLIST_SET_REPEAT_MODE: {
                    int repeatMode = extras.getInt(ARGUMENT_REPEAT_MODE);
                    mSession.setRepeatMode(repeatMode);
                    break;
                }
                case COMMAND_CODE_PLAYLIST_SET_SHUFFLE_MODE: {
                    int shuffleMode = extras.getInt(ARGUMENT_SHUFFLE_MODE);
                    mSession.setShuffleMode(shuffleMode);
                    break;
                }
                case COMMAND_CODE_PLAYLIST_SET_LIST: {
                    List<MediaItem2> list = MediaUtils2
                            .fromMediaItem2ParcelableArray(extras.getParcelableArray(ARGUMENT_PLAYLIST));
                    MediaMetadata2 metadata = MediaMetadata2
                            .fromBundle(extras.getBundle(ARGUMENT_PLAYLIST_METADATA));
                    mSession.setPlaylist(list, metadata);
                    break;
                }
                case COMMAND_CODE_PLAYLIST_SET_LIST_METADATA: {
                    MediaMetadata2 metadata = MediaMetadata2
                            .fromBundle(extras.getBundle(ARGUMENT_PLAYLIST_METADATA));
                    mSession.updatePlaylistMetadata(metadata);
                    break;
                }
                case COMMAND_CODE_PLAYLIST_ADD_ITEM: {
                    int index = extras.getInt(ARGUMENT_PLAYLIST_INDEX);
                    MediaItem2 item = MediaItem2.fromBundle(extras.getBundle(ARGUMENT_MEDIA_ITEM));
                    mSession.addPlaylistItem(index, item);
                    break;
                }
                case COMMAND_CODE_PLAYLIST_REMOVE_ITEM: {
                    MediaItem2 item = MediaItem2.fromBundle(extras.getBundle(ARGUMENT_MEDIA_ITEM));
                    mSession.removePlaylistItem(item);
                    break;
                }
                case COMMAND_CODE_PLAYLIST_REPLACE_ITEM: {
                    int index = extras.getInt(ARGUMENT_PLAYLIST_INDEX);
                    MediaItem2 item = MediaItem2.fromBundle(extras.getBundle(ARGUMENT_MEDIA_ITEM));
                    mSession.replacePlaylistItem(index, item);
                    break;
                }
                case COMMAND_CODE_PLAYLIST_SKIP_TO_NEXT_ITEM: {
                    mSession.skipToNextItem();
                    break;
                }
                case COMMAND_CODE_PLAYLIST_SKIP_TO_PREV_ITEM: {
                    mSession.skipToPreviousItem();
                    break;
                }
                case COMMAND_CODE_PLAYLIST_SKIP_TO_PLAYLIST_ITEM: {
                    MediaItem2 item = MediaItem2.fromBundle(extras.getBundle(ARGUMENT_MEDIA_ITEM));
                    mSession.skipToPlaylistItem(item);
                    break;
                }
                case COMMAND_CODE_VOLUME_SET_VOLUME: {
                    int value = extras.getInt(ARGUMENT_VOLUME);
                    int flags = extras.getInt(ARGUMENT_VOLUME_FLAGS);
                    VolumeProviderCompat vp = mSession.getVolumeProvider();
                    if (vp == null) {
                        // TODO: Revisit
                    } else {
                        vp.onSetVolumeTo(value);
                    }
                    break;
                }
                case COMMAND_CODE_VOLUME_ADJUST_VOLUME: {
                    int direction = extras.getInt(ARGUMENT_VOLUME_DIRECTION);
                    int flags = extras.getInt(ARGUMENT_VOLUME_FLAGS);
                    VolumeProviderCompat vp = mSession.getVolumeProvider();
                    if (vp == null) {
                        // TODO: Revisit
                    } else {
                        vp.onAdjustVolume(direction);
                    }
                    break;
                }
                case COMMAND_CODE_SESSION_REWIND: {
                    mSession.getCallback().onRewind(mSession.getInstance(), controller);
                    break;
                }
                case COMMAND_CODE_SESSION_FAST_FORWARD: {
                    mSession.getCallback().onFastForward(mSession.getInstance(), controller);
                    break;
                }
                case COMMAND_CODE_SESSION_PLAY_FROM_MEDIA_ID: {
                    String mediaId = extras.getString(ARGUMENT_MEDIA_ID);
                    Bundle extra = extras.getBundle(ARGUMENT_EXTRAS);
                    mSession.getCallback().onPlayFromMediaId(mSession.getInstance(), controller, mediaId,
                            extra);
                    break;
                }
                case COMMAND_CODE_SESSION_PLAY_FROM_SEARCH: {
                    String query = extras.getString(ARGUMENT_QUERY);
                    Bundle extra = extras.getBundle(ARGUMENT_EXTRAS);
                    mSession.getCallback().onPlayFromSearch(mSession.getInstance(), controller, query, extra);
                    break;
                }
                case COMMAND_CODE_SESSION_PLAY_FROM_URI: {
                    Uri uri = extras.getParcelable(ARGUMENT_URI);
                    Bundle extra = extras.getBundle(ARGUMENT_EXTRAS);
                    mSession.getCallback().onPlayFromUri(mSession.getInstance(), controller, uri, extra);
                    break;
                }
                case COMMAND_CODE_SESSION_PREPARE_FROM_MEDIA_ID: {
                    String mediaId = extras.getString(ARGUMENT_MEDIA_ID);
                    Bundle extra = extras.getBundle(ARGUMENT_EXTRAS);
                    mSession.getCallback().onPrepareFromMediaId(mSession.getInstance(), controller, mediaId,
                            extra);
                    break;
                }
                case COMMAND_CODE_SESSION_PREPARE_FROM_SEARCH: {
                    String query = extras.getString(ARGUMENT_QUERY);
                    Bundle extra = extras.getBundle(ARGUMENT_EXTRAS);
                    mSession.getCallback().onPrepareFromSearch(mSession.getInstance(), controller, query,
                            extra);
                    break;
                }
                case COMMAND_CODE_SESSION_PREPARE_FROM_URI: {
                    Uri uri = extras.getParcelable(ARGUMENT_URI);
                    Bundle extra = extras.getBundle(ARGUMENT_EXTRAS);
                    mSession.getCallback().onPrepareFromUri(mSession.getInstance(), controller, uri, extra);
                    break;
                }
                case COMMAND_CODE_SESSION_SET_RATING: {
                    String mediaId = extras.getString(ARGUMENT_MEDIA_ID);
                    Rating2 rating = Rating2.fromBundle(extras.getBundle(ARGUMENT_RATING));
                    mSession.getCallback().onSetRating(mSession.getInstance(), controller, mediaId, rating);
                    break;
                }
                case COMMAND_CODE_SESSION_SUBSCRIBE_ROUTES_INFO: {
                    mSession.getCallback().onSubscribeRoutesInfo(mSession.getInstance(), controller);
                    break;
                }
                case COMMAND_CODE_SESSION_UNSUBSCRIBE_ROUTES_INFO: {
                    mSession.getCallback().onUnsubscribeRoutesInfo(mSession.getInstance(), controller);
                    break;
                }
                case COMMAND_CODE_SESSION_SELECT_ROUTE: {
                    Bundle route = extras.getBundle(ARGUMENT_ROUTE_BUNDLE);
                    mSession.getCallback().onSelectRoute(mSession.getInstance(), controller, route);
                    break;
                }
                case COMMAND_CODE_PLAYBACK_SET_SPEED: {
                    float speed = extras.getFloat(ARGUMENT_PLAYBACK_SPEED);
                    mSession.setPlaybackSpeed(speed);
                    break;
                }
                }
            }
        });
        break;
    }
    case CONTROLLER_COMMAND_BY_CUSTOM_COMMAND: {
        final SessionCommand2 customCommand = SessionCommand2
                .fromBundle(extras.getBundle(ARGUMENT_CUSTOM_COMMAND));
        IMediaControllerCallback caller = (IMediaControllerCallback) extras
                .getBinder(ARGUMENT_ICONTROLLER_CALLBACK);
        if (caller == null || customCommand == null) {
            return;
        }

        final Bundle args = extras.getBundle(ARGUMENT_ARGUMENTS);
        onCommand2(caller.asBinder(), customCommand, new Session2Runnable() {
            @Override
            public void run(ControllerInfo controller) throws RemoteException {
                mSession.getCallback().onCustomCommand(mSession.getInstance(), controller, customCommand, args,
                        cb);
            }
        });
        break;
    }
    }
}