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()); }