예제 #1
0
 /// <summary>
 /// Lock the wifi so we can still stream under lock screen
 /// </summary>
 public void AquireWifiLock()
 {
     if (!wifiLock.IsHeld)
     {
         wifiLock.Acquire();
     }
 }
예제 #2
0
        public void Play(MediaSession.QueueItem item)
        {
            var mediaHasChanged = InitPlayerStates(item.Description.MediaId);

            if (MusicPlayerState == PlaybackStateCode.Paused && !mediaHasChanged && _mediaPlayer != null)
            {
                ConfigMediaPlayerState();
            }
            else
            {
                MusicPlayerState = PlaybackStateCode.Stopped;
                CleanUp(false);
                MediaMetadata track = _musicProvider.GetMusic(
                    HierarchyHelper.ExtractMusicIDFromMediaID(item.Description.MediaId));

                string source = track.GetString(MusicProvider.PodcastSource);

                try
                {
                    _mediaPlayer.Reset();
                    MusicPlayerState = PlaybackStateCode.Buffering;
                    _mediaPlayer.SetAudioStreamType(Android.Media.Stream.Music);
                    _mediaPlayer.SetDataSource(source);
                    _mediaPlayer.PrepareAsync();
                    _wifiLock.Acquire();
                    _musicService.OnPlaybackStatusChanged(MusicPlayerState);
                }
                catch (Exception ex)
                {
                    Logger.Error(ex, "Error playing song");
                    _musicService.OnError(ex.Message);
                }
            }
        }
예제 #3
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource   = Resource.Layout.Toolbar;

            MessagingCenter.Subscribe <ViewModels.StreamPageViewModel>(this, "landscape", sender =>
            {
                LockRotation(Orientation.Horizontal);
            });

            MessagingCenter.Subscribe <ViewModels.StreamPageViewModel>(this, "portrait", sender =>
            {
                LockRotation(Orientation.Vertical);
            });

            Popup.Init(this, savedInstanceState);

            Forms.Init(this, savedInstanceState);
            AuthenticationConfiguration.Init(this, savedInstanceState);

            if (ApplicationContext.GetSystemService(WifiService) is WifiManager wifiManager)
            {
                WifiLock = wifiManager.CreateWifiLock(WifiMode.FullHighPerf, WifiTag);
                WifiLock.SetReferenceCounted(false);
                WifiLock.Acquire();
            }

            LoadApplication(new App());
        }
예제 #4
0
 /// <summary>
 /// Lock the wifi so we can still stream under lock screen
 /// </summary>
 private void AquireWifiLock()
 {
     if (_wifiLock == null)
     {
         _wifiLock = _wifiManager.CreateWifiLock(WifiMode.Full, "xamarin_wifi_lock");
     }
     _wifiLock.Acquire();
 }
예제 #5
0
 /// <summary>
 /// Lock the wifi so we can still stream under lock screen
 /// </summary>
 public void AquireWifiLock()
 {
     if (wifiLock == null)
     {
         wifiLock = wifiManager.CreateWifiLock(WifiMode.Full, "xamarin_wifi_lock");
     }
     wifiLock.Acquire();
 }
 private void AquireWifiLock()
 {
     if (wifiLock == null)
     {
         wifiLock = wifiManager.CreateWifiLock(WifiMode.Full, "wifi_lock");
     }
     wifiLock.Acquire();
 }
예제 #7
0
        /// <summary>
        /// Lock the wifi so we can still stream under lock screen
        /// </summary>
        private void AquireWifiLock()
        {
            if (wifiLock == null)
            {
                wifiLock = wifiManager.CreateWifiLock(global::Android.Net.WifiMode.Full, nameof(AudioPlayer));
            }

            wifiLock.Acquire();
        }
예제 #8
0
 void Start()
 {
     Toast.MakeText(ApplicationContext, "Stream Playing", ToastLength.Short).Show();
     player.Start();
     am.RequestAudioFocus(this, Stream.Music, AudioFocus.Gain);
     wifiLock.Acquire();
     StartForeground();              //makes the service stay alive.
     currentState = MediaStates.Started;
 }
예제 #9
0
        public RadioStationServiceLock(Context context)
        {
            _wifiManager  = (WifiManager)context.GetSystemService(Context.WifiService);
            _powerManager = (PowerManager)context.GetSystemService(Context.PowerService);

            _wifiLock = _wifiManager.CreateWifiLock(WifiMode.Full, "wzxv.app");
            _wifiLock.Acquire();

            _powerWakeLock = _powerManager.NewWakeLock(WakeLockFlags.Partial, "wzxv.app");
            _powerWakeLock.Acquire();
        }
예제 #10
0
        public void PlayResumePlayer()
        {
            if (MediaPlayerState == MediaPlayerState.Stopped || MediaPlayerState == MediaPlayerState.None)
            {
                PlaySong(AudioPlayerHelper.CurrentQueueSong);
                return;
            }

            try
            {
                if (!_wifiLock.IsHeld)
                {
                    _wifiLock.Acquire();
                }
                _player.Start();
                MediaPlayerState = MediaPlayerState.Playing;
            }
            catch
            {
                MediaPlayerState = MediaPlayerState.None;
            }
        }
예제 #11
0
        public override void OnCreate()
        {
            base.OnCreate();
            Log.Debug(logTag, "OnCreate called in the Location Service");

            var pm = (PowerManager)GetSystemService(Context.PowerService);

            _mWakeLock = pm.NewWakeLock(WakeLockFlags.Partial, "PartialWakeLockTag");
            _mWakeLock.Acquire();

            var wf = (WifiManager)GetSystemService(Context.WifiService);

            _wifiLock = wf.CreateWifiLock(Android.Net.WifiMode.Full, "WifiLockTag");
            _wifiLock.Acquire();
        }
예제 #12
0
        public void Play(QueueItem item)
        {
            playOnFocusGain = true;
            TryToGetAudioFocus();
            RegisterAudioNoisyReceiver();
            string mediaId         = item.Description.MediaId;
            bool   mediaHasChanged = mediaId != CurrentMediaId;

            if (mediaHasChanged)
            {
                currentPosition = 0;
                CurrentMediaId  = mediaId;
            }

            if (State == PlaybackStateCompat.StatePaused && !mediaHasChanged && mediaPlayer != null)
            {
                ConfigMediaPlayerState();
            }
            else
            {
                State = PlaybackStateCompat.StateStopped;
                RelaxResources(false);
                MediaMetadataCompat track = musicProvider.GetMusic(item.Description.MediaId);

                string source = track.GetString(MusicProvider.CustomMetadataTrackSource);

                try
                {
                    CreateMediaPlayerIfNeeded();

                    State = PlaybackStateCompat.StateBuffering;

                    mediaPlayer.SetAudioStreamType(Android.Media.Stream.Music);
                    mediaPlayer.SetDataSource(source);

                    mediaPlayer.PrepareAsync();

                    wifiLock.Acquire();

                    Callback?.OnPlaybackStatusChanged(State);
                }
                catch (IOException ex)
                {
                    LogHelper.Error(Tag, ex, "Exception playing song");
                    Callback?.OnError(ex.Message);
                }
            }
        }
예제 #13
0
        private void _Start(string host, int port)
        {
            try
            {
                if (m_Running)
                {
                    return;
                }

                Android.OS.Process.SetThreadPriority(ThreadPriority.UrgentAudio);

                PowerManager powerManager = (PowerManager)GetSystemService(PowerService);
                m_WakeLock =
                    powerManager.NewWakeLock(WakeLockFlags.Partial,
                                             "snapdotnet:SnapcastPartialWakeLock");
                m_WakeLock.Acquire();

                WifiManager wifiManager = (WifiManager)GetSystemService(WifiService);
                m_WifiLock = wifiManager.CreateWifiLock(WifiMode.FullHighPerf, "snapdotnet:SnapcastWifiWakeLock");
                m_WifiLock.Acquire();

                m_Host = host;
                m_Port = port;

                _StartProcess();
            }
            catch (Exception e)
            {
                e.PrintStackTrace();
                if (m_SnapclientListener != null)
                {
                    m_SnapclientListener.OnError(this, e.Message, e);
                }
                _Stop();
            }
        }
예제 #14
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            AppCenter.Start("b17f9c9d-e90c-488f-8c4b-92ef3e305c0d", typeof(Analytics), typeof(Distribute));

            var versionInfo = Application.Context.ApplicationContext?.PackageManager?.GetPackageInfo(Application.Context.ApplicationContext.PackageName, 0);

            //var username = System.Security.Principal.WindowsIdentity.GetCurrent();

            SentryXamarin.Init(o =>
            {
                o.AddXamarinFormsIntegration();
                o.Dsn         = "https://[email protected]/5390642";
                o.Release     = $"TacControl@{versionInfo?.VersionName}:{versionInfo?.LongVersionCode}";
                o.Environment = //username == "Dedmen-PC\\dedmen" ? "Dev" :
                                "Alpha";
            });


            WifiManager wifiMgr = (WifiManager)ApplicationContext.GetSystemService(Context.WifiService);

            wifiLock = wifiMgr.CreateWifiLock(WifiMode.Full, "TacControl-udp");
            wifiLock.SetReferenceCounted(true);
            wifiLock.Acquire();
            castLock = wifiMgr.CreateMulticastLock("TacControl-udp");
            castLock.SetReferenceCounted(true);
            castLock.Acquire();


            ConnectivityManager conMgr = (ConnectivityManager)ApplicationContext.GetSystemService(Context.ConnectivityService);
            var stuff   = conMgr.GetAllNetworks();
            var wifiNet = stuff.FirstOrDefault(x => conMgr.GetNetworkInfo(x).Type == ConnectivityType.Wifi);

            if (wifiNet != null)
            {
                var res  = conMgr.BindProcessToNetwork(wifiNet);
                var info = conMgr.GetNetworkInfo(wifiNet);

                var connInfo = wifiMgr.ConnectionInfo;
            }


            //Networking.ConnectionInfo

            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource   = Resource.Layout.Toolbar;

            base.OnCreate(savedInstanceState);

            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);

            Android.Views.Window window = Window;
            window.AddFlags(WindowManagerFlags.KeepScreenOn);
            window.AddFlags(WindowManagerFlags.Fullscreen);

            LoadApplication(new App((action) =>
            {
                TaskCompletionSource <object> tcs = new TaskCompletionSource <object>();
                bool isMain = MainThread.IsMainThread;

                RunOnUiThread(() =>
                {
                    try
                    {
                        action();
                        tcs.SetResult(null);
                    }
                    catch (Exception ex)
                    {
                        tcs.SetException(ex);
                    }
                });

                return(tcs.Task);
            }));
        }