/// <summary> /// Updates the state of the player. /// </summary> /// <param name="state">The state.</param> /// <param name="position"></param> public void UpdatePlaybackState(int state, int position = 0) { if (CurrentSession == null && (_binder?.IsBinderAlive).GetValueOrDefault(false) && !string.IsNullOrWhiteSpace(_packageName)) { InitMediaSession(_packageName, _binder); } PlaybackStateCompat.Builder stateBuilder = new PlaybackStateCompat.Builder() .SetActions(PlaybackStateCompat.ActionPlay | PlaybackStateCompat.ActionPlayPause | PlaybackStateCompat.ActionPause | PlaybackStateCompat.ActionSkipToNext | PlaybackStateCompat.ActionSkipToPrevious | PlaybackStateCompat.ActionStop); stateBuilder.SetState(state, position, 0, SystemClock.ElapsedRealtime()); CurrentSession?.SetPlaybackState(stateBuilder.Build()); OnStatusChanged?.Invoke(CurrentSession, state); //Used for backwards compatibility if ((Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop) && (CurrentSession?.RemoteControlClient == null || (bool)!CurrentSession?.RemoteControlClient.Equals(typeof(RemoteControlClient)))) { return; } RemoteControlClient remoteControlClient = (RemoteControlClient)CurrentSession?.RemoteControlClient; RemoteControlFlags flags = RemoteControlFlags.Play | RemoteControlFlags.Pause | RemoteControlFlags.PlayPause; remoteControlClient?.SetTransportControlFlags(flags); }
private void UpdatePlaybackState(int state) { if (mediaSessionCompat == null || mediaPlayer == null) { return; } try { PlaybackStateCompat.Builder stateBuilder = new PlaybackStateCompat.Builder() .SetActions( PlaybackStateCompat.ActionPause | PlaybackStateCompat.ActionPlay | PlaybackStateCompat.ActionPlayPause | PlaybackStateCompat.ActionSkipToNext | PlaybackStateCompat.ActionSkipToPrevious | PlaybackStateCompat.ActionStop ) .SetState(state, Position, 1.0f, SystemClock.ElapsedRealtime()); mediaSessionCompat.SetPlaybackState(stateBuilder.Build()); //Used for backwards compatibility if (Build.VERSION.SdkInt < BuildVersionCodes.Lollipop) { if (mediaSessionCompat.RemoteControlClient != null && mediaSessionCompat.RemoteControlClient.Equals(typeof(RemoteControlClient))) { RemoteControlClient remoteControlClient = (RemoteControlClient)mediaSessionCompat.RemoteControlClient; RemoteControlFlags flags = RemoteControlFlags.Play | RemoteControlFlags.Pause | RemoteControlFlags.PlayPause | RemoteControlFlags.Previous | RemoteControlFlags.Next | RemoteControlFlags.Stop; remoteControlClient.SetTransportControlFlags(flags); } } OnStatusChanged(EventArgs.Empty); if (state == PlaybackStateCompat.StatePlaying || state == PlaybackStateCompat.StatePaused) { StartNotification(); } } catch (Exception ex) { Console.WriteLine(ex); } }
public void OnClientTransportControlUpdate([GeneratedEnum] RemoteControlFlags transportControlFlags) { Log.Info("Livedisplay", "TransportControl update" + transportControlFlags); }