Example #1
0
        protected virtual void PrepareMediaSession()
        {
            MediaSession = new MediaSessionCompat(this, nameof(MediaBrowserService));
            MediaSession.SetSessionActivity(SessionActivityPendingIntent);
            MediaSession.Active = true;

            SessionToken = MediaSession.SessionToken;

            MediaSession.SetFlags(MediaSessionCompat.FlagHandlesMediaButtons |
                                  MediaSessionCompat.FlagHandlesTransportControls);
        }
Example #2
0
        public override void OnCreate()
        {
            base.OnCreate();
            Shared = this;
            NativeAudioPlayer.NativeInit(this);
            PlaybackManager.Shared.Init();
            Session      = new MediaSessionCompat(this, "MusicService");
            SessionToken = Session.SessionToken;
            Session.SetCallback(sessionCallback = new MediaSessionCallback());
            Session.SetFlags(MediaSessionCompat.FlagHandlesMediaButtons |
                             MediaSessionCompat.FlagHandlesTransportControls);
            var context = ApplicationContext;
            var intent  = new Intent(ApplicationContext, typeof(NowPlayingActivity));
            var pi      = PendingIntent.GetActivity(context, 99, intent, PendingIntentFlags.UpdateCurrent);

            Session.SetSessionActivity(pi);

            sessionExtras = new Bundle();

            //		CarHelper.setSlotReservationFlags(mSessionExtras, true, true, true);
            //        WearHelper.setSlotReservationFlags(mSessionExtras, true, true);
            //        WearHelper.setUseBackgroundFromTheme(mSessionExtras, true);

            Session.SetExtras(sessionExtras);


            try
            {
                MediaNotificationManager = new MediaNotificationManager(this);
            }
            catch (Exception ex)
            {
                LogManager.Shared.Report(ex);
                throw ex;
            }

            //VideoCastManager.getInstance().addVideoCastConsumer(mCastConsumer);
            mediaRouter = Android.Support.V7.Media.MediaRouter.GetInstance(ApplicationContext);

            //registerCarConnectionReceiver();
            Managers.NotificationManager.Shared.PlaybackStateChanged += PlaybackStateChanged;
        }
Example #3
0
        public override void OnCreate()
        {
            base.OnCreate();
            LogHelper.Debug(Tag, "onCreate");

            musicProvider = new MusicProvider();

            var context = ApplicationContext;

            var hasReadExternalStoragePermission = ActivityCompat.CheckSelfPermission(context, Manifest.Permission.ReadExternalStorage);

            if (hasReadExternalStoragePermission == Permission.Granted)
            {
                musicProvider.RetrieveMediaAsync(context, null);
            }
            else
            {
                var msg = Resources.GetString(Resource.String.permission_denied_msg, "READ_EXTERNAL_STORAGE");
                Toast.MakeText(context, msg, ToastLength.Short).Show();
            }

            packageValidator = new PackageValidator(this);

            lightOrganProcessor = new LightOrganProcessor();
            lightOrganProcessor.LightOrganDataUpdated += (s, e) =>
            {
                OnLightOrganDataUpdated(e.Data);
            };

            var queueManager = new QueueManager(musicProvider, Resources,
                                                new QueueManager.MetadataUpdateListener
            {
                OnMetadataChanged = (metadata) =>
                {
                    session.SetMetadata(metadata);
                },

                OnMetadataRetrieveError = () =>
                {
                    playbackManager.UpdatePlaybackState(Resources.GetString(Resource.String.no_metadata_msg));
                },

                OnCurrentQueueIndexUpdated = (queueIndex) =>
                {
                    playbackManager.HandlePlayRequest();
                },

                OnQueueUpdated = (title, newQueue) =>
                {
                    session.SetQueue(newQueue);
                    session.SetQueueTitle(title);
                }
            });

            var hasRecordAudioPermission = ActivityCompat.CheckSelfPermission(context, Manifest.Permission.RecordAudio);

            if (hasRecordAudioPermission != Permission.Granted)
            {
                var msg = Resources.GetString(Resource.String.permission_denied_msg, "RECORD_AUDIO");
                Toast.MakeText(context, msg, ToastLength.Short).Show();
            }

            var playback = new LocalPlayback(this, musicProvider, hasRecordAudioPermission == Permission.Granted);

            playbackManager = new PlaybackManager(this, Resources, musicProvider, queueManager, playback);

            // Start a new MediaSession
            session      = new MediaSessionCompat(this, "MusicService");
            SessionToken = session.SessionToken;
            session.SetCallback(playbackManager.GetMediaSessionCallback());
            session.SetFlags(MediaSessionCompat.FlagHandlesMediaButtons |
                             MediaSessionCompat.FlagHandlesTransportControls);

            var intent = new Intent(context, typeof(MainActivity));
            var pi     = PendingIntent.GetActivity(context, 99 /*request code*/,
                                                   intent, PendingIntentFlags.UpdateCurrent);

            session.SetSessionActivity(pi);

            playbackManager.UpdatePlaybackState(null);

            try
            {
                mediaNotificationManager = new MediaNotificationManager(this);
            }
            catch (Exception e)
            {
                throw new Exception("Could not create a MediaNotificationManager", e);
            }
        }