예제 #1
0
 /// <summary>
 /// Constructor
 /// </summary>
 public NetworkController()
 {
     wifiManager         = (WifiManager)MainActivity.Context.GetSystemService(MainActivity.Wifi);
     connectivityManager = (ConnectivityManager)MainActivity.Context.GetSystemService(MainActivity.Connectivity);
     wifiLock            = wifiManager.CreateWifiLock(WifiMode.Full, "Wifi lock");
     RefreshNetworkInfo();
 }
예제 #2
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();
 }
예제 #3
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();
 }
예제 #5
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();
        }
예제 #6
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();
        }
예제 #7
0
    public bool AquireLock(string lock_type = "screenDim")
    {
        lock (wakeLocks)
        {
            if (wakeLocks.ContainsKey(lock_type))
            {
                return(false);
            }
            switch (lock_type)
            {
            case "screenDim":
                PowerManager pm      = (PowerManager)Android.App.Application.Context.GetSystemService(Context.PowerService);
                var          pm_lock = pm.NewWakeLock(WakeLockFlags.ScreenDim, "Spixi");
                pm_lock.Acquire();
                wakeLocks.Add(lock_type, pm_lock);
                return(true);

            case "partial":
                pm      = (PowerManager)Android.App.Application.Context.GetSystemService(Context.PowerService);
                pm_lock = pm.NewWakeLock(WakeLockFlags.Partial, "Spixi");
                pm_lock.Acquire();
                wakeLocks.Add(lock_type, pm_lock);
                return(true);

            case "proximityScreenOff":
                if (Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Lollipop)
                {
                    pm = (PowerManager)Android.App.Application.Context.GetSystemService(Context.PowerService);
                    if (pm.IsWakeLockLevelSupported((int)WakeLockFlags.ProximityScreenOff))
                    {
                        pm_lock = pm.NewWakeLock(WakeLockFlags.ProximityScreenOff, "Spixi");
                        pm_lock.Acquire();
                        wakeLocks.Add(lock_type, pm_lock);
                        return(true);
                    }
                }
                break;

            case "wifi":
                WifiManager wm      = (WifiManager)Android.App.Application.Context.GetSystemService(Context.WifiService);
                var         wm_lock = wm.CreateWifiLock(Android.Net.WifiMode.FullHighPerf, "Spixi");
                wm_lock.Acquire();
                wakeLocks.Add(lock_type, wm_lock);
                return(true);
            }
            return(false);
        }
    }
        protected override void OnCreate(Bundle bundle)
        {
            Log.Info(TAG, "OnCreate");

            base.OnCreate(bundle);

            SetContentView(Resource.Layout.serial_console);

            usbManager    = GetSystemService(Context.UsbService) as UsbManager;
            titleTextView = FindViewById <TextView>(Resource.Id.demoTitle);
            dumpTextView  = FindViewById <TextView>(Resource.Id.consoleText);
            scrollView    = FindViewById <ScrollView>(Resource.Id.demoScroller);
            wifi          = (WifiManager)GetSystemService(WifiService);
            wifilock      = wifi.CreateWifiLock(WifiMode.FullHighPerf, "wifi keep On");
            pm            = (PowerManager)GetSystemService(Context.PowerService);       //new line
            wake          = pm.NewWakeLock(WakeLockFlags.Partial, "stay awake gently"); //new line
            activateSleep = true;                                                       //new line
        }
예제 #9
0
    public bool AquireLock(string lock_type = "screenDim")
    {
        switch (lock_type)
        {
        case "screenDim":
            if (wakeLocks.ContainsKey(lock_type))
            {
                return(false);
            }
            PowerManager pm      = (PowerManager)Android.App.Application.Context.GetSystemService(Context.PowerService);
            var          pm_lock = pm.NewWakeLock(WakeLockFlags.ScreenDim, "Spixi");
            pm_lock.Acquire();
            wakeLocks.Add(lock_type, pm_lock);
            return(true);

        case "partial":
            if (wakeLocks.ContainsKey(lock_type))
            {
                return(false);
            }
            pm      = (PowerManager)Android.App.Application.Context.GetSystemService(Context.PowerService);
            pm_lock = pm.NewWakeLock(WakeLockFlags.ScreenDim, "Spixi");
            pm_lock.Acquire();
            wakeLocks.Add(lock_type, pm_lock);
            return(true);

        case "wifi":
            if (wakeLocks.ContainsKey(lock_type))
            {
                return(false);
            }
            WifiManager wm      = (WifiManager)Android.App.Application.Context.GetSystemService(Context.WifiService);
            var         wm_lock = wm.CreateWifiLock(Android.Net.WifiMode.FullHighPerf, "Spixi");
            wm_lock.Acquire();
            wakeLocks.Add(lock_type, wm_lock);
            return(true);
        }
        return(false);
    }
예제 #10
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();
            }
        }
예제 #11
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);
            }));
        }
예제 #12
0
 /// <summary>
 /// Constructor
 /// </summary>
 public NetworkController()
 {
     wifiManager         = (WifiManager)Application.Context.GetSystemService(Android.Content.Context.WifiService);
     connectivityManager = (ConnectivityManager)Application.Context.GetSystemService(Android.Content.Context.ConnectivityService);
     wifiLock            = wifiManager.CreateWifiLock(WifiMode.Full, "Wifi lock");
 }
예제 #13
0
        private void _Start(string host, int port, EBroadcastMode broadcastMode)
        {
            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;
                m_BroadcastMode = broadcastMode;

                // actually connect here and start audio loop
                AudioPlaybackCaptureConfiguration config = new AudioPlaybackCaptureConfiguration.Builder(m_MediaProjection)
                                                           .AddMatchingUsage(AudioUsageKind.Media)
                                                           .Build();

                AudioFormat audioFormat = new AudioFormat.Builder()
                                          .SetEncoding(Encoding.Pcm16bit)
                                          .SetSampleRate(48000)
                                          .SetChannelMask(ChannelOut.Stereo).Build();

                AudioRecord.Builder builder = new AudioRecord.Builder()
                                              .SetAudioFormat(audioFormat)
                                              .SetBufferSizeInBytes(2048);

                if (m_BroadcastMode == EBroadcastMode.Media)
                {
                    builder.SetAudioPlaybackCaptureConfig(config);
                }

                if (m_BroadcastMode == EBroadcastMode.Microphone)
                {
                    builder.SetAudioSource(AudioSource.Mic);
                }

                m_AudioRecord = builder.Build();


                m_ConnectionThread = new Thread(() =>
                {
                    m_ClientConnection              = new ClientConnection(m_Host, m_Port);
                    m_ClientConnection.OnConnected += _OnClientConnectionConnected;
                    m_ClientConnection.Connect();
                });

                m_ConnectionThread.Start();


                m_Running = true;
                if (m_SnapclientListener != null)
                {
                    m_SnapclientListener.OnBroadcastStateChanged(this);
                }
            }
            catch (Exception e)
            {
                e.PrintStackTrace();
                if (m_SnapclientListener != null)
                {
                    m_SnapclientListener.OnError(this, e.Message, e);
                }
                _Stop();
            }
        }