聽師傅說作這個得懂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
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 }
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 }
打包注意:按照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&¤tPower<=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 }