using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Net.NetworkInformation; using System; using System.Net; using System.Net.Sockets; using System.IO; using System.Text.RegularExpressions; #if UNITY_IOS using UnityEngine.iOS; #endif public class DeviceUtility { static string mac = string.Empty; public static string GetMac() { if (string.IsNullOrEmpty(mac)) { try { var netInterfaces = NetworkInterface.GetAllNetworkInterfaces(); if (netInterfaces != null && netInterfaces.Length > 0) { mac = netInterfaces[0].GetPhysicalAddress().ToString(); } } catch (Exception ex) { DebugEx.Log(ex); } } return mac; } static string ipPattern = "[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}"; static string ip = string.Empty; public static string GetIp() { try { if (string.IsNullOrEmpty(ip)) { string url = "http://pv.sohu.com/cityjson"; WebRequest wRequest = WebRequest.Create(url); wRequest.Method = "GET"; wRequest.ContentType = "text/html;charset=UTF-8"; WebResponse wResponse = wRequest.GetResponse(); Stream stream = wResponse.GetResponseStream(); StreamReader reader = new StreamReader(stream, System.Text.Encoding.Default); string str = reader.ReadToEnd(); reader.Close(); wResponse.Close(); var match = Regex.Match(str, ipPattern); if (match != null) { ip = match.Value; } } } catch (Exception ex) { Debug.Log(ex); } return ip; } public static string GetDeviceUniquenessIdentify() { #if UNITY_IOS return UnityEngine.iOS.Device.advertisingIdentifier; #else return SystemInfo.deviceUniqueIdentifier; #endif } public static string GetDeviceOSLevel() { #if UNITY_IOS return UnityEngine.iOS.Device.systemVersion; #else return SystemInfo.operatingSystem; #endif } public static string GetDeviceName() { #if UNITY_IOS return UnityEngine.iOS.Device.generation.ToString(); #else return SystemInfo.deviceName; #endif } public static string GetDeviceModel() { #if UNITY_IOS return UnityEngine.iOS.Device.generation.ToString(); #else return SystemInfo.deviceModel; #endif } public static bool IsLowMemory() { #if UNITY_IOS if (Application.platform == RuntimePlatform.IPhonePlayer) { switch (Device.generation) { case DeviceGeneration.iPadMini2Gen: case DeviceGeneration.iPhone5S: case DeviceGeneration.iPhone6: case DeviceGeneration.iPhone6Plus: return true; default: return false; } } else { return false; } #endif return false; } public static int cpu = 2; public static int memory = 2 * 1024; public static void GetCpuAndMemory(out int _cpu, out int _memory)//内存单位是MB { try { _cpu = Environment.ProcessorCount; switch (Application.platform) { case RuntimePlatform.Android: _memory = ynmbxxjUtil.Instance.Device.totalMemory; break; case RuntimePlatform.IPhonePlayer: _memory = IsLowMemory() ? 1 : 2 * 1024; break; default: _memory = 4 * 1024; break; } cpu = _cpu; memory = _memory; } catch (Exception ex) { Debug.Log(ex); _cpu = 2; _memory = 2 * 1024; } } }