@Before public void setUp() { final ComponentName componentName = new ComponentName("a", "b"); mediaBrowser = new MediaBrowserCompat( context, componentName, new MediaBrowserCompat.ConnectionCallback(), null); shadow = shadowOf(mediaBrowser); mediaBrowser.connect(); root = shadow.createMediaItem(null, ROOT_ID, "root_title", FLAG_BROWSABLE); shadow.setRootId(ROOT_ID); child = shadow.createMediaItem(ROOT_ID, CHILD_ID, "child_title", FLAG_PLAYABLE); }
@Test public void mediaBrowserConnection_isDisconnected() { mediaBrowser.disconnect(); assertThat(mediaBrowser.isConnected()).isFalse(); }
@Test public void mediaBrowser_getRootId() { String mediaBrowserRootId = mediaBrowser.getRoot(); assertThat(mediaBrowserRootId).isEqualTo(ROOT_ID); }
@Override public void onConnected() { try { // Get a MediaController for the MediaSession. mMediaController = new MediaControllerCompat(mContext, mMediaBrowser.getSessionToken()); mMediaController.registerCallback(mMediaControllerCallback); // Sync existing MediaSession state to the UI. mMediaControllerCallback.onMetadataChanged(mMediaController.getMetadata()); mMediaControllerCallback.onPlaybackStateChanged( mMediaController.getPlaybackState()); MediaBrowserHelper.this.onConnected(mMediaController); } catch (RemoteException e) { Log.d(TAG, String.format("onConnected: Problem: %s", e.toString())); throw new RuntimeException(e); } mMediaBrowser.subscribe(mMediaBrowser.getRoot(), mMediaBrowserSubscriptionCallback); } }
@Override protected void onDestroy() { super.onDestroy(); mMediaBrowser.disconnect(); } }
/** * 连接 */ public void connect() { mediaBrowser.connect(); }
private MediaSessionConnection(Context context, ComponentName serviceComponent) { mContext = context; this.serviceComponent = serviceComponent; mediaBrowserConnectionCallback = new MediaBrowserConnectionCallback(); mMediaControllerCallback = new MediaControllerCallback(); mediaBrowser = new MediaBrowserCompat(context, serviceComponent, mediaBrowserConnectionCallback, null); }
/** * 已连接上 */ @Override public void onConnected() { super.onConnected(); try { mediaController = new MediaControllerCompat(mContext, mediaBrowser.getSessionToken()); mediaController.registerCallback(mMediaControllerCallback); transportControls = mediaController.getTransportControls(); rootMediaId = mediaBrowser.getRoot(); if (mConnectListener != null) { mConnectListener.onConnected(); } } catch (RemoteException e) { e.printStackTrace(); } isConnected = true; }
@Override public void onConnected() { try { // We can construct a media controller from the session's token MediaSessionCompat.Token token = mMediaBrowser.getSessionToken(); mMediaController = new MediaControllerCompat(MainActivity.this, token); // Listing 17-9: Keeping your UI in sync with playback state and metadata changes mMediaController.registerCallback(new MediaControllerCompat.Callback() { @Override public void onPlaybackStateChanged(PlaybackStateCompat state) { // Update the UI based on playback state change. } @Override public void onMetadataChanged(MediaMetadataCompat metadata) { // Update the UI based on Media Metadata change. } }); } catch (RemoteException e) { Log.e(TAG, "Error creating controller", e); } }
@Test public void mediaBrowser_subscribe() { mediaBrowser.subscribe(ROOT_ID, mediaSubscriptionCallback); assertThat(mediaSubscriptionCallback.getResults()).isEqualTo(Collections.singletonList(child)); mediaBrowser.subscribe(CHILD_ID, mediaSubscriptionCallback); assertThat(mediaSubscriptionCallback.getResults()).isEmpty(); mediaBrowser.subscribe("fake_id", mediaSubscriptionCallback); assertThat(mediaSubscriptionCallback.getResults()).isEmpty(); }
@Test public void mediaBrowserConnection_isConnected() { assertThat(mediaBrowser.isConnected()).isTrue(); }
/** * 断开连接 */ public void disconnect() { if (mediaController != null) { mediaController.unregisterCallback(mMediaControllerCallback); } mediaBrowser.disconnect(); }
@Override public void onStart() { super.onStart(); EventBus.getDefault().register(this); if (mMediaBrowser != null) { mMediaBrowser.connect(); } }
mMediaBrowser = new MediaBrowserCompat(this, new ComponentName(this, PlaybackService.class), mConnectionCallback, null);
@Override public void onConnected() { Log.d(TAG, "MediaBrowser connected"); try { MediaControllerCompat mediaController = new MediaControllerCompat( TomahawkMainActivity.this, mMediaBrowser.getSessionToken()); setSupportMediaController(mediaController); mediaController.registerCallback(mMediaCallback); mPlaybackPanel.setMediaController(mediaController); mMediaCallback.onPlaybackStateChanged(mediaController.getPlaybackState()); ContentHeaderFragment.MediaControllerConnectedEvent event = new ContentHeaderFragment.MediaControllerConnectedEvent(); EventBus.getDefault().post(event); } catch (RemoteException e) { Log.e(TAG, "Could not connect media controller: ", e); } } };
public void subscribe(String parentId, MediaBrowserCompat.SubscriptionCallback callback) { mediaBrowser.subscribe(parentId, callback); }
public void onStart() { if (mMediaBrowser == null) { mMediaBrowser = new MediaBrowserCompat( mContext, new ComponentName(mContext, mMediaBrowserServiceClass), mMediaBrowserConnectionCallback, null); mMediaBrowser.connect(); } Log.d(TAG, "onStart: Creating MediaBrowser, and connecting"); }
public void onStop() { if (mMediaController != null) { mMediaController.unregisterCallback(mMediaControllerCallback); mMediaController = null; } if (mMediaBrowser != null && mMediaBrowser.isConnected()) { mMediaBrowser.disconnect(); mMediaBrowser = null; } resetState(); Log.d(TAG, "onStop: Releasing MediaController, Disconnecting from MediaBrowser"); }
@Override public void onStop() { EventBus.getDefault().unregister(this); if (mMediaBrowser != null) { mMediaBrowser.disconnect(); } if (getSupportMediaController() != null) { getSupportMediaController().unregisterCallback(mMediaCallback); } super.onStop(); }
mMediaBrowser = new MediaBrowserCompat( this, new ComponentName(this, MediaPlaybackService.class), mMediaBrowser.connect();