QueueFragment() { connectionCallback.OnConnectedImpl = () => { LogHelper.Debug(Tag, "onConnected: session token ", mediaBrowser.SessionToken); if (mediaBrowser.SessionToken == null) { throw new InvalidOperationException("No Session token"); } mediaController = new Android.Media.Session.MediaController(Activity, mediaBrowser.SessionToken); transportControls = mediaController.GetTransportControls(); mediaController.RegisterCallback(sessionCallback); Activity.MediaController = mediaController; playbackState = mediaController.PlaybackState; var queue = (JavaList)mediaController.Queue; if (queue != null) { queueAdapter.Clear(); queueAdapter.NotifyDataSetInvalidated(); queueAdapter.AddAll(queue.ToArray()); queueAdapter.NotifyDataSetChanged(); } OnPlaybackStateChanged(playbackState); }; connectionCallback.OnConnectionFailedImpl = () => LogHelper.Debug(Tag, "onConnectionFailed"); connectionCallback.OnConnectionSuspendedImpl = () => { LogHelper.Debug(Tag, "onConnectionSuspended"); mediaController.UnregisterCallback(sessionCallback); transportControls = null; mediaController = null; Activity.MediaController = null; }; sessionCallback.OnSessionDestroyedImpl = () => LogHelper.Debug(Tag, "Session destroyed. Need to fetch a new Media Session"); sessionCallback.OnPlaybackStateChangedImpl = state => { if (state == null) { return; } LogHelper.Debug(Tag, "Received playback state change to state ", state.State); playbackState = state; OnPlaybackStateChanged(state); }; sessionCallback.OnQueueChangedImpl = queue => { LogHelper.Debug(Tag, "onQueueChanged ", queue); if (queue != null) { queueAdapter.Clear(); queueAdapter.NotifyDataSetInvalidated(); queueAdapter.AddAll(queue.ToArray()); queueAdapter.NotifyDataSetChanged(); } }; }
QueueFragment() { connectionCallback.OnConnectedImpl = () => { LogHelper.Debug(Tag, "onConnected: session token ", mediaBrowser.SessionToken); if (mediaBrowser.SessionToken == null) { throw new InvalidOperationException("No Session token"); } mediaController = new Android.Media.Session.MediaController(Activity, mediaBrowser.SessionToken); transportControls = mediaController.GetTransportControls(); mediaController.RegisterCallback(sessionCallback); Activity.MediaController = mediaController; playbackState = mediaController.PlaybackState; var queue = (JavaList)mediaController.Queue; if (queue != null) { queueAdapter.Clear(); queueAdapter.NotifyDataSetInvalidated(); queueAdapter.AddAll(queue.ToArray()); queueAdapter.NotifyDataSetChanged(); } OnPlaybackStateChanged(playbackState); }; connectionCallback.OnConnectionFailedImpl = () => LogHelper.Debug(Tag, "onConnectionFailed"); connectionCallback.OnConnectionSuspendedImpl = () => { LogHelper.Debug(Tag, "onConnectionSuspended"); mediaController.UnregisterCallback(sessionCallback); transportControls = null; mediaController = null; Activity.MediaController = null; }; sessionCallback.OnSessionDestroyedImpl = () => LogHelper.Debug(Tag, "Session destroyed. Need to fetch a new Media Session"); sessionCallback.OnPlaybackStateChangedImpl = state => { if (state == null) { return; } LogHelper.Debug(Tag, "Received playback state change to state ", state.State); playbackState = state; OnPlaybackStateChanged(state); }; sessionCallback.OnQueueChangedImpl = queue => { LogHelper.Debug(Tag, "onQueueChanged ", queue); if (queue != null) { queueAdapter.Clear(); queueAdapter.NotifyDataSetInvalidated(); queueAdapter.AddAll(queue.ToArray()); queueAdapter.NotifyDataSetChanged(); } }; buttonListener.OnClickImpl = v => { var state = playbackState == null ? PlaybackStateCode.None : playbackState.State; switch (v.Id) { case Resource.Id.play_pause: LogHelper.Debug(Tag, "Play button pressed, in state " + state); if (state == PlaybackStateCode.Paused || state == PlaybackStateCode.Stopped || state == PlaybackStateCode.None) { PlayMedia(); } else if (state == PlaybackStateCode.Playing) { PauseMedia(); } break; case Resource.Id.skip_previous: LogHelper.Debug(Tag, "Start button pressed, in state " + state); SkipToPrevious(); break; case Resource.Id.skip_next: SkipToNext(); break; } }; }