internal void InitMediaSession(string packageName, MediaServiceBinder binder)
        {
            try
            {
                if (mediaSessionCompat == null)
                {
                    Intent        nIntent = new Intent(applicationContext, typeof(MediaPlayer));
                    PendingIntent pIntent = PendingIntent.GetActivity(applicationContext, 0, nIntent, 0);

                    RemoteComponentName   = new ComponentName(packageName, new RemoteControlBroadcastReceiver().ComponentName);
                    mediaSessionCompat    = new MediaSessionCompat(applicationContext, "XamarinStreamingAudio", RemoteComponentName, pIntent);
                    mediaControllerCompat = new MediaControllerCompat(applicationContext, mediaSessionCompat.SessionToken);
                    NotificationManager   = new MediaNotificationManagerImplementation(applicationContext, CurrentSession.SessionToken, _serviceType);
                }
                mediaSessionCompat.Active = true;
                MediaServiceBase            mediaServiceBase = binder.GetMediaPlayerService <MediaServiceBase>();
                MediaSessionCompat.Callback remoteCallback   = mediaServiceBase.AlternateRemoteCallback;
                if (remoteCallback == null)
                {
                    remoteCallback = new MediaSessionCallback(this);
                }
                try
                {
                    mediaSessionCompat.SetCallback(remoteCallback);
                }
                catch (Exception ex2)
                {
                    Console.WriteLine(ex2);
                }
                mediaSessionCompat?.SetFlags(MediaSessionCompat.FlagHandlesMediaButtons | MediaSessionCompat.FlagHandlesTransportControls);
                _packageName = packageName;
                _binder      = binder;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
 /// <summary>Creates service definition that can be registered with a server</summary>
 /// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
 public static grpc::ServerServiceDefinition BindService(MediaServiceBase serviceImpl)
 {
     return(grpc::ServerServiceDefinition.CreateBuilder()
            .AddMethod(__Method_UploadImage, serviceImpl.UploadImage)
            .AddMethod(__Method_DownloadImage, serviceImpl.DownloadImage).Build());
 }