zoukankan      html  css  js  c++  java
  • 整理UWP中网络和设备信息获取的帮助类,需要的拿走。

    网络(运营商信息,网络类型)

    public static class NetworkInfo
        {
            /// <summary>
            /// 网络是否可用
            /// </summary>
            public static bool IsNetworkAvailable
            {
                get
                {
                    ConnectionProfile profile = NetworkInformation.GetInternetConnectionProfile();
                    return (profile?.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess);
                }
            }
    
            /// <summary>
            /// 获取IP地址
            /// </summary>
            /// <returns>IP地址</returns>
            public static string GetIpAddress()
            {
                Guid? networkAdapterId = NetworkInformation.GetInternetConnectionProfile()?.NetworkAdapter?.NetworkAdapterId;
                return (networkAdapterId.HasValue ? NetworkInformation.GetHostNames().FirstOrDefault(hn => hn?.IPInformation?.NetworkAdapter.NetworkAdapterId == networkAdapterId)?.CanonicalName : null);
            }
    
            /// <summary>
            /// 获取网络运营商信息
            /// </summary>
            /// <returns></returns>
            public static string GetNetworkName()
            {
                try
                {
                    ConnectionProfile profile = NetworkInformation.GetInternetConnectionProfile();
                    if (profile != null)
                    {
                        if (profile.IsWwanConnectionProfile)
                        {
                            var homeProviderId = profile.WwanConnectionProfileDetails.HomeProviderId;
                            //4600是我手机测试出来的。
                            if (homeProviderId == "46000" || homeProviderId == "46002" || homeProviderId == "4600")
                            {
                                return "中国移动";
                            }
                            //已验证
                            else if (homeProviderId == "46001")
                            {
                                return "中国联通";
                            }
                            //貌似还没win10 电信手机。。待验证
                            else if (homeProviderId == "46003")
                            {
                                return "中国电信";
                            }
                        }
                        else
                        {
                            return "其他";
                        }
                        //也可以用下面的方法,已验证移动和联通
                        //var name = profile.GetNetworkNames().FirstOrDefault();
                        //if (name != null)
                        //{
                        //    name = name.ToUpper();
                        //    if (name == "CMCC")
                        //    {
                        //        return "中国移动";
                        //    }
                        //    else if (name == "UNICOM")
                        //    {
                        //        return "中国联通";
                        //    }
                        //    else if (name == "TELECOM")
                        //    {
                        //        return "中国电信";
                        //    }
                        //}
                        //return "其他";
                    }
    
                    return "其他";
                }
                catch (Exception)
                {
    
                    return "其他";
                }
    
            }
    
    
            /// <summary>
            /// 获取网络连接类型
            /// </summary>
            /// <returns></returns>
            public static string GetNetWorkType()
            {
                try
                {
                    ConnectionProfile profile = NetworkInformation.GetInternetConnectionProfile();
                    if (profile == null)
                    {
                        return "未知";
                    }
                    if (profile.IsWwanConnectionProfile)
                    {
                        WwanDataClass connectionClass = profile.WwanConnectionProfileDetails.GetCurrentDataClass();
                        switch (connectionClass)
                        {
                            //2G-equivalent
                            case WwanDataClass.Edge:
                            case WwanDataClass.Gprs:
                                return "2G";
                            //3G-equivalent
                            case WwanDataClass.Cdma1xEvdo:
                            case WwanDataClass.Cdma1xEvdoRevA:
                            case WwanDataClass.Cdma1xEvdoRevB:
                            case WwanDataClass.Cdma1xEvdv:
                            case WwanDataClass.Cdma1xRtt:
                            case WwanDataClass.Cdma3xRtt:
                            case WwanDataClass.CdmaUmb:
                            case WwanDataClass.Umts:
                            case WwanDataClass.Hsdpa:
                            case WwanDataClass.Hsupa:
                                return "3G";
                            //4G-equivalent
                            case WwanDataClass.LteAdvanced:
                                return "4G";
    
                            //not connected
                            case WwanDataClass.None:
                                return "未连接";
    
                            //unknown
                            case WwanDataClass.Custom:
                            default:
                                return "未知";
                        }
                    }
                    else if (profile.IsWlanConnectionProfile)
                    {
                        return "WIFI";
                    }
                    return "未知";
                }
                catch (Exception)
                {
                    return "未知"; //as default
                }
    
            }
        }
    View Code

    设备信息(分辨率,设备类型(PC,平板,手机,Xbox))

    /// <summary>
        /// 设备信息
        /// </summary>
        public static class DeviceInfo
        {
            /// <summary>
            /// 设备ID
            /// </summary>
            public static readonly string DeviceId;
    
            /// <summary>
            /// 用户代理
            /// </summary>
            public static readonly string UserAgent;
    
            /// <summary>
            /// 操作系统版本
            /// </summary>
            public static readonly string OsVersion;
    
            /// <summary>
            /// 设备分辨率
            /// </summary>
            public static readonly Size DeviceResolution;
    
            /// <summary>
            /// 设备时区名字
            /// </summary>
            public static readonly string Timezone;
    
            /// <summary>
            /// 设备语言
            /// </summary>
            public static readonly string Language;
    
            /// <summary>
            /// 设备类型
            /// </summary>
            public static readonly string DeviceType;
    
            static DeviceInfo()
            {
                DeviceId = GetDeviceId();
                UserAgent = GetUserAgent();
                OsVersion = GetOsVersion();
                DeviceResolution = GetDeviceResolution();
                Timezone = GetTimezone();
                Language = GetLanguage();
                DeviceType = GetDeviceType();
            }
    
            private static string GetDeviceType()
            {
                var deviceFamily = AnalyticsInfo.VersionInfo.DeviceFamily;
    
                if (deviceFamily == "Windows.Desktop")
                {
                    if (UIViewSettings.GetForCurrentView().UserInteractionMode == UserInteractionMode.Mouse)
                    {
                        return "WINDESKTOP";
                    }
                    else
                    {
                        return "WINPAD";
                    }
                }
                else if (deviceFamily == "Windows.Mobile")
                {
                    return "WINPHONE";
                }
                else if (deviceFamily == "Windows.Xbox")
                {
                    return "XBOX";
                }
                else if (deviceFamily == "Windows.IoT")
                {
                    return "IOT";
                }
                else
                {
                    return deviceFamily.ToUpper();
                }
            }
    
            /// <summary>
            /// 获取设备语言
            /// </summary>
            /// <returns>设备语言</returns>
            private static string GetLanguage()
            {
                var Languages = Windows.System.UserProfile.GlobalizationPreferences.Languages;
                if (Languages.Count > 0)
                {
                    return Languages[0];
                }
                return Windows.Globalization.Language.CurrentInputMethodLanguageTag;
            }
    
            /// <summary>
            /// 获取设备时区名字
            /// </summary>
            /// <returns>设备时区名字</returns>
            private static string GetTimezone()
            {
                return TimeZoneInfo.Local.DisplayName;
            }
    
            /// <summary>
            /// 获取设备分辨率
            /// </summary>
            /// <returns>设备分辨率</returns>
            private static Size GetDeviceResolution()
            {
                Size resolution = Size.Empty;
                var rawPixelsPerViewPixel = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;
                foreach (var item in PointerDevice.GetPointerDevices())
                {
                    resolution.Width = item.ScreenRect.Width * rawPixelsPerViewPixel;
                    resolution.Height = item.ScreenRect.Height * rawPixelsPerViewPixel;
                    break;
                }
                return resolution;
            }
    
            /// <summary>
            /// 获取设备ID
            /// </summary>
            /// <returns>设备ID</returns>
            private static string GetDeviceId()
            {
                HardwareToken token = HardwareIdentification.GetPackageSpecificToken(null);
                return CryptographyHelper.Md5Encrypt(token.Id);
            }
    
            /// <summary>
            /// 获取用户代理
            /// </summary>
            /// <returns>用户代理</returns>
            private static string GetUserAgent()
            {
                var Info = new EasClientDeviceInformation();
                return $"{Info.SystemManufacturer} {Info.SystemProductName}";
            }
    
            /// <summary>
            /// 获取操作系统版本
            /// </summary>
            /// <returns>操作系统版本</returns>
            private static string GetOsVersion()
            {
                ulong version = Convert.ToUInt64(AnalyticsInfo.VersionInfo.DeviceFamilyVersion);
                return $"{version >> 48 & 0xFFFF}.{version >> 32 & 0xFFFF}.{version >> 16 & 0xFFFF}.{version & 0xFFFF}";
            }
    
        }
    
    
     /// <summary>
        /// 加密帮助类
        /// </summary>
        public static class CryptographyHelper
        {
            public static string DesEncrypt(string key, string plaintext)
            {
                SymmetricKeyAlgorithmProvider des = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.DesEcbPkcs7);
                IBuffer keyMaterial = CryptographicBuffer.ConvertStringToBinary(key, BinaryStringEncoding.Utf8);
                CryptographicKey symmetricKey = des.CreateSymmetricKey(keyMaterial);
    
                IBuffer plainBuffer = CryptographicBuffer.ConvertStringToBinary(plaintext, BinaryStringEncoding.Utf8);
    
                IBuffer cipherBuffer = CryptographicEngine.Encrypt(symmetricKey, plainBuffer, null);
                return CryptographicBuffer.EncodeToHexString(cipherBuffer);
            }
    
            public static string TripleDesDecrypt(string key, string ciphertext)
            {
                SymmetricKeyAlgorithmProvider tripleDes = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.TripleDesEcb);
                IBuffer keyMaterial = CryptographicBuffer.ConvertStringToBinary(key, BinaryStringEncoding.Utf8);
                CryptographicKey symmetricKey = tripleDes.CreateSymmetricKey(keyMaterial);
    
                IBuffer cipherBuffer = CryptographicBuffer.DecodeFromHexString(ciphertext);
    
                IBuffer plainBuffer = CryptographicEngine.Decrypt(symmetricKey, cipherBuffer, null);
                return CryptographicBuffer.ConvertBinaryToString(BinaryStringEncoding.Utf8, plainBuffer);
            }
    
            public static string Md5Encrypt(string value)
            {
                IBuffer data = CryptographicBuffer.ConvertStringToBinary(value, BinaryStringEncoding.Utf8);
                return Md5Encrypt(data);
            }
    
            public static string Md5Encrypt(IBuffer data)
            {
                HashAlgorithmProvider md5 = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Md5);
                IBuffer hashedData = md5.HashData(data);
                return CryptographicBuffer.EncodeToHexString(hashedData);
            }
    
            public static string EncodeToBase64String(string value)
            {
                IBuffer buffer = CryptographicBuffer.ConvertStringToBinary(value, BinaryStringEncoding.Utf8);
                return CryptographicBuffer.EncodeToBase64String(buffer);
            }
    
            public static string DecodeFromBase64String(string value)
            {
                IBuffer buffer = CryptographicBuffer.DecodeFromBase64String(value);
                return CryptographicBuffer.ConvertBinaryToString(BinaryStringEncoding.Utf8, buffer);
            }
        }
    View Code
  • 相关阅读:
    02-自定义CALayer
    01-CALayer的基本操作
    抽屉效果
    手势识别
    事件响应
    寻找最合适的view
    hitTest方法与PointInside方法
    02-事件的产生与传递
    OC图标+启动图
    OC多线程操作
  • 原文地址:https://www.cnblogs.com/FaDeKongJian/p/5546075.html
Copyright © 2011-2022 走看看