// using System; // using UnityEngine; // using System.Collections; // using System.Net.NetworkInformation; // using System.Net; // /// // /// 跨平台网络管理器 // /// 支持 Windows、Android 等平台的网络功能 // /// // public static class CrossPlatformNetworkManager // { // #if UNITY_ANDROID && !UNITY_EDITOR // #region Android 网络实现 // private static AndroidJavaClass _unityPlayer; // private static AndroidJavaObject _currentActivity; // private static AndroidJavaObject _connectivityManager; // private static AndroidJavaObject _wifiManager; // /// // /// 初始化Android网络管理 // /// // static CrossPlatformNetworkManager() // { // try // { // _unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); // _currentActivity = _unityPlayer.GetStatic("currentActivity"); // // 获取ConnectivityManager // _connectivityManager = _currentActivity.Call("getSystemService", "connectivity"); // // 获取WifiManager // AndroidJavaObject applicationContext = _currentActivity.Call("getApplicationContext"); // _wifiManager = applicationContext.Call("getSystemService", "wifi"); // Debug.Log("Android网络管理器初始化成功"); // } // catch (Exception ex) // { // Debug.LogError($"Android网络管理器初始化失败: {ex.Message}"); // } // } // /// // /// 获取网络连接状态 // /// // public static NetworkReachability GetNetworkReachability() // { // try // { // if (_connectivityManager == null) // return NetworkReachability.NotReachable; // AndroidJavaObject activeNetwork = _connectivityManager.Call("getActiveNetworkInfo"); // if (activeNetwork == null) // return NetworkReachability.NotReachable; // bool isConnected = activeNetwork.Call("isConnected"); // if (!isConnected) // return NetworkReachability.NotReachable; // int networkType = activeNetwork.Call("getType"); // // TYPE_WIFI = 1, TYPE_MOBILE = 0 // return networkType == 1 ? NetworkReachability.ReachableViaLocalAreaNetwork // : NetworkReachability.ReachableViaCarrierDataNetwork; // } // catch (Exception ex) // { // Debug.LogError($"获取Android网络状态失败: {ex.Message}"); // return NetworkReachability.NotReachable; // } // } // /// // /// 获取WiFi信息 // /// // public static AndroidWifiInfo GetWifiInfo() // { // try // { // var wifiInfo = new AndroidWifiInfo(); // if (_wifiManager == null) // { // wifiInfo.IsConnected = false; // return wifiInfo; // } // bool isWifiEnabled = _wifiManager.Call("isWifiEnabled"); // wifiInfo.IsWifiEnabled = isWifiEnabled; // if (!isWifiEnabled) // { // wifiInfo.IsConnected = false; // return wifiInfo; // } // AndroidJavaObject connectionInfo = _wifiManager.Call("getConnectionInfo"); // if (connectionInfo != null) // { // wifiInfo.SSID = connectionInfo.Call("getSSID"); // wifiInfo.SignalStrength = connectionInfo.Call("getRssi"); // wifiInfo.LinkSpeed = connectionInfo.Call("getLinkSpeed"); // wifiInfo.IsConnected = !string.IsNullOrEmpty(wifiInfo.SSID) && !wifiInfo.SSID.Equals(""); // // 清理SSID的引号 // if (wifiInfo.SSID != null && wifiInfo.SSID.StartsWith("\"") && wifiInfo.SSID.EndsWith("\"")) // { // wifiInfo.SSID = wifiInfo.SSID.Substring(1, wifiInfo.SSID.Length - 2); // } // } // return wifiInfo; // } // catch (Exception ex) // { // Debug.LogError($"获取Android WiFi信息失败: {ex.Message}"); // return new AndroidWifiInfo { IsConnected = false }; // } // } // /// // /// 获取本地IP地址 // /// // public static string GetLocalIPAddress() // { // try // { // if (_wifiManager == null) return "未知"; // AndroidJavaObject connectionInfo = _wifiManager.Call("getConnectionInfo"); // if (connectionInfo != null) // { // int ipAddress = connectionInfo.Call("getIpAddress"); // // 转换IP地址格式 // return string.Format("{0}.{1}.{2}.{3}", // (ipAddress & 0xff), // (ipAddress >> 8 & 0xff), // (ipAddress >> 16 & 0xff), // (ipAddress >> 24 & 0xff)); // } // return "未知"; // } // catch (Exception ex) // { // Debug.LogError($"获取Android IP地址失败: {ex.Message}"); // return "未知"; // } // } // /// // /// 启用/禁用WiFi (需要权限) // /// // public static bool SetWifiEnabled(bool enabled) // { // try // { // if (_wifiManager == null) return false; // // 注意:从Android Q (API 29) 开始,应用无法直接启用/禁用WiFi // bool result = _wifiManager.Call("setWifiEnabled", enabled); // Debug.Log($"Android: WiFi {(enabled ? "启用" : "禁用")} - 结果: {result}"); // return result; // } // catch (Exception ex) // { // Debug.LogError($"Android WiFi控制失败: {ex.Message}"); // return false; // } // } // #endregion // #elif UNITY_STANDALONE_WIN && !UNITY_EDITOR // #region Windows 网络实现 // /// // /// 获取Windows网络连接状态 // /// // public static NetworkReachability GetNetworkReachability() // { // try // { // if (NetworkInterface.GetIsNetworkAvailable()) // { // // 检查是否有可用的网络接口 // NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces(); // foreach (NetworkInterface ni in interfaces) // { // if (ni.OperationalStatus == OperationalStatus.Up && // ni.NetworkInterfaceType != NetworkInterfaceType.Loopback && // ni.NetworkInterfaceType != NetworkInterfaceType.Tunnel) // { // // 简化判断:如果是以太网接口则认为是局域网,否则可能是移动网络 // if (ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet || // ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211) // { // return NetworkReachability.ReachableViaLocalAreaNetwork; // } // } // } // } // return NetworkReachability.NotReachable; // } // catch (Exception ex) // { // Debug.LogError($"获取Windows网络状态失败: {ex.Message}"); // return NetworkReachability.NotReachable; // } // } // /// // /// 获取Windows本地IP地址 // /// // public static string GetLocalIPAddress() // { // try // { // string hostName = Dns.GetHostName(); // IPHostEntry hostEntry = Dns.GetHostEntry(hostName); // foreach (IPAddress ip in hostEntry.AddressList) // { // if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) // { // return ip.ToString(); // } // } // return "未知"; // } // catch (Exception ex) // { // Debug.LogError($"获取Windows IP地址失败: {ex.Message}"); // return "未知"; // } // } // /// // /// 获取Windows WiFi信息 (简化版本) // /// // public static WindowsWifiInfo GetWifiInfo() // { // try // { // var wifiInfo = new WindowsWifiInfo(); // NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces(); // foreach (NetworkInterface ni in interfaces) // { // if (ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 && // ni.OperationalStatus == OperationalStatus.Up) // { // wifiInfo.IsConnected = true; // wifiInfo.InterfaceName = ni.Name; // wifiInfo.Speed = ni.Speed; // break; // } // } // return wifiInfo; // } // catch (Exception ex) // { // Debug.LogError($"获取Windows WiFi信息失败: {ex.Message}"); // return new WindowsWifiInfo { IsConnected = false }; // } // } // #endregion // #else // #region 模拟实现 // public static NetworkReachability GetNetworkReachability() // { // Debug.Log("[模拟] 获取网络状态"); // return NetworkReachability.ReachableViaLocalAreaNetwork; // } // public static string GetLocalIPAddress() // { // Debug.Log("[模拟] 获取IP地址"); // return "192.168.1.100"; // } // #if UNITY_ANDROID // public static AndroidWifiInfo GetWifiInfo() // { // Debug.Log("[模拟] 获取WiFi信息"); // return new AndroidWifiInfo // { // IsConnected = true, // SSID = "TestNetwork", // SignalStrength = -50, // LinkSpeed = 150 // }; // } // public static bool SetWifiEnabled(bool enabled) // { // Debug.Log($"[模拟] WiFi {(enabled ? "启用" : "禁用")}"); // return true; // } // #else // public static WindowsWifiInfo GetWifiInfo() // { // Debug.Log("[模拟] 获取WiFi信息"); // return new WindowsWifiInfo // { // IsConnected = true, // InterfaceName = "Wi-Fi", // Speed = 1000000000 // }; // } // #endif // #endregion // #endif // #region 公共方法 // /// // /// 检查是否连接到互联网 // /// // public static bool HasInternetConnection() // { // #if UNITY_ANDROID && !UNITY_EDITOR // // Android平台:返回false避免网络检查 // return false; // #else // return Application.internetReachability != NetworkReachability.NotReachable; // #endif // } // /// // /// 获取网络类型描述 // /// // public static string GetNetworkTypeDescription() // { // #if UNITY_ANDROID && !UNITY_EDITOR // // Android平台:返回静态描述避免网络检查 // return "配置模式 (跳过网络检查)"; // #else // switch (Application.internetReachability) // { // case NetworkReachability.NotReachable: // return "无网络连接"; // case NetworkReachability.ReachableViaCarrierDataNetwork: // return "移动数据网络"; // case NetworkReachability.ReachableViaLocalAreaNetwork: // return "WiFi/以太网"; // default: // return "未知网络"; // } // #endif // } // #endregion // } // /// // /// Android WiFi信息 // /// // [System.Serializable] // public class AndroidWifiInfo // { // public bool IsConnected; // public bool IsWifiEnabled; // public string SSID; // public int SignalStrength; // dBm // public int LinkSpeed; // Mbps // public override string ToString() // { // if (!IsConnected) // return "未连接WiFi"; // return $"WiFi: {SSID}, 信号: {SignalStrength}dBm, 速度: {LinkSpeed}Mbps"; // } // } // /// // /// Windows WiFi信息 // /// // [System.Serializable] // public class WindowsWifiInfo // { // public bool IsConnected; // public string InterfaceName; // public long Speed; // bps // public override string ToString() // { // if (!IsConnected) // return "未连接WiFi"; // return $"WiFi: {InterfaceName}, 速度: {Speed / 1000000}Mbps"; // } // }