Unity+UWP+wIfi+電量

聽師傅說作這個得懂UWP,但素我不懂,不過也不要緊啦,誰叫我我有個棒棒噠師傅吶。web

參考資料:https://docs.microsoft.com/en-us/uwp/api/windows.devices.wifi.wifiavailablenetworkwindows

https://docs.microsoft.com/en-us/uwp/api/windows.system.power.powermanager.energysaverstatusapi

https://blog.csdn.net/zhhaogen/article/details/54093695

https://docs.microsoft.com/en-us/uwp/api/windows.networking.connectivity.connectionprofile.getsignalbars#Windows_Networking_Connectivity_ConnectionProfile_GetSignalBars

wifiapp

 1 using System;
 2 using System.Collections.Generic;
 3 
 4 #if (NETFX_CORE && UNITY_WSA_10_0) || (ENABLE_IL2CPP && UNITY_WSA_10_0)
 5 using Windows.Devices.WiFi;
 6 #endif
 7 
 8 namespace WindowsHelper
 9 {
10     public class WindowsWifiHelper
11     {
12         List<byte> signals = new List<byte>();
13     
14         public List<byte> GetSignals()
15         {
16             return signals;
17         }
18 
19 #if (NETFX_CORE && UNITY_WSA_10_0) || (ENABLE_IL2CPP && UNITY_WSA_10_0)
20         public async void GetWifiBarAsync()
21         {
22             var result = await WiFiAdapter.RequestAccessAsync();
23             if (result == WiFiAccessStatus.Allowed)
24             {
25                 var devicesresult = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(WiFiAdapter.GetDeviceSelector());
26                 if(devicesresult.Count > 0)
27                 {
28                    var firstAdapter = await WiFiAdapter.FromIdAsync(devicesresult[0].Id);
29                    firstAdapter.AvailableNetworksChanged += OnWifiAdapterNetworkCchanged;
30                    SetupWifiSignalBar(firstAdapter);
31                 }
32             }
33         }
34 
35         private void OnWifiAdapterNetworkCchanged(WiFiAdapter sender, object args)
36         {
37             SetupWifiSignalBar(sender);
38         }
39 
40         private void SetupWifiSignalBar(WiFiAdapter wiFiAdapter)
41         {
42             var networkCount = wiFiAdapter.NetworkReport.AvailableNetworks.Count;
43             var availableNetworks = wiFiAdapter.NetworkReport.AvailableNetworks;
44             signals.Clear();
45             for (int i = 0; i < networkCount; i++)
46             {
47                 signals.Add(availableNetworks[i].SignalBars);
48             }
49         }        
50 #endif
51 
52     }
53 }
WindowsWifiHelper
 1 using UnityEngine;
 2 using UnityEngine.UI;
 3 using WindowsHelper;
 4 
 5 public class WifiUI : MonoBehaviour {
 6 
 7     public Text wifiText;
 8     WindowsWifiHelper windowsWifiHelper;
 9     public Sprite[] CurrentWifiSprite;
10     public Image CurrentWifiImage;
11     void Start () {
12         windowsWifiHelper = new WindowsWifiHelper();
13 #if (NETFX_CORE && UNITY_WSA_10_0) || (ENABLE_IL2CPP && UNITY_WSA_10_0)
14         windowsWifiHelper.GetWifiBarAsync();
15 #endif
16     }
17 
18     void Update () {
19         //CurrentWifiImage.sprite = CurrentWifiSprite[2];
20 
21     //#if (NETFX_CORE && UNITY_WSA_10_0) || (ENABLE_IL2CPP && UNITY_WSA_10_0)
22     //                windowsWifiHelper.GetWifiBarAsync();
23     //#endif
24         if (windowsWifiHelper.GetSignals().Count >0)
25         {
26             wifiText.text = "WiFi "+windowsWifiHelper.GetSignals()[0].ToString();
27             if (windowsWifiHelper.GetSignals()[0] >0&&windowsWifiHelper.GetSignals()[0]<=CurrentWifiSprite.Length)
28             {
29                 CurrentWifiImage.sprite = CurrentWifiSprite[windowsWifiHelper.GetSignals()[0] - 1];
30                 //CurrentWifiImage.sprite = CurrentWifiSprite[0];
31             }
32         }
33         else
34         {
35             wifiText.text = "NoWifi";
36 
37         }
38     }
39 }
WifiUI

 

 打包注意:按照Unity+UWP的流程打包以後,右鍵NotePad++打開Package.appxmanifestasync

 

一樣打開UWP的包中E:\UnityProjects\unity2017.2.0Project\UWP_PowerAndWifi\UWP3\UWP_PowerAndWifi/Package.appxmanifestide

 

  <DeviceCapability Name="wiFiControl" />複製成功以後,就是打開.sln文件打包了(這裏就不作說明了,有文章寫的有)this

打包成功後就能夠識別WiFi啦。能夠同步WiFi信號強弱哦。url

資源包的位置spa

 

電量.net

代碼:

 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 using UnityEngine.Windows;
 5 using UnityEngine.UI;
 6 public class BatteryStatusUIDesign : MonoBehaviour {
 7     public BatteryStatus battery;
 8     public Text batteryLevelText;
 9     public Image batteryLevelImage;
10     private float currentPower;
11     public Sprite FullPowerSprite;
12     public Sprite OnePowerSprite;
13     public Sprite TwoPowerSprite;
14     public Sprite NullPowerSprite;
15     // Use this for initialization
16     void Start ()
17     {        
18         
19     }
20     
21     // Update is called once per frame
22     void Update ()
23     {
24         
25         currentPower = SystemInfo.batteryLevel;
26         //Debug.LogError("batteryStatus "+battery);
27         batteryLevelText.text= "Battery"+ currentPower.ToString();
28         if (currentPower>0&&currentPower<=0.15)
29         {
30             batteryLevelImage.sprite = NullPowerSprite;
31         }
32         if (currentPower > 0.15 && currentPower <= 0.35)
33         {
34             batteryLevelImage.sprite = OnePowerSprite;
35         }
36         if (currentPower > 0.35 && currentPower <= 0.7)
37         {
38             batteryLevelImage.sprite = TwoPowerSprite;
39         }
40         if (currentPower > 0.7 && currentPower <= 1)
41         {
42             batteryLevelImage.sprite = FullPowerSprite;
43         }
44         if (currentPower == -1)
45         {
46             batteryLevelImage.sprite = FullPowerSprite;
47         }
48     }
49 }
BatteryStatusUIDesign

相關文章
相關標籤/搜索