在进行Windows Phone开发的过程中,我们会需要获取手机的一些相关信息,如下列出如何获取手机的一些常用信息和用户信息。
只需要使用Microsoft.Phone.Info命名空间下的UserExtendedProperties类和DeviceExtendedProperties类对应的成员函数就可以了。
一.设备屏幕信息
double width = Application.Current.Host.Content.ActualWidth; double heigth = Application.Current.Host.Content.ActualHeight;
二.设备信息相关(Microsoft.Phone.Info)
1.设备厂商
string DeviceManufacturer = DeviceStatus.DeviceManufacturer;
2.设备名称
string DeviceName = DeviceStatus.DeviceName;
3.设备ID
byte[] result = null; object uniqueId; if (DeviceExtendedProperties.TryGetValue("DeviceUniqueId", out uniqueId)) { result = (byte[])uniqueId; }
//转换设备ID为字符串
string DeviceUniqueId = Convert.ToBase64String(result);
4.固件版本
string DeviceFirmwareVersion = DeviceStatus.DeviceFirmwareVersion;
5.硬件版本
string DeviceHardwareVersion = DeviceStatus.DeviceHardwareVersion;
6.总内存
long DeviceTotalMemory = DeviceStatus.DeviceTotalMemory;
7.应用程序当前使用内存
long ApplicationCurrentMemoryUsage = DeviceStatus.ApplicationCurrentMemoryUsage;
8.应用程序使用内存峰值
long ApplicationPeakMemoryUsage = DeviceStatus.ApplicationPeakMemoryUsage;
9.操作系统版本
String osversion= System.Environment.OSVersion.Version.ToString();
可用属性
ApplicationCurrentMemoryUsage | |
一个长整型值。 |
当前应用程序的内存使用量,以字节为单位。 此属性已被弃用。请改用 ApplicationCurrentMemoryUsage 属性。 |
ApplicationPeakMemoryUsage | |
一个长整型值。 |
当前应用程序的高峰内存使用量,以字节为单位。 此属性已被弃用。请改用 ApplicationPeakMemoryUsage 属性。 |
ApplicationWorkingSetLimit | |
一个长整型值。 |
工作集限制(以字节为单位)。 此属性应用于 Windows Phone OS 7.1 及更高版本。 |
DeviceFirmwareVersion | |
一个字符串。 |
设备上运行的固件版本。该版本与可使用 System.Environment 检索的操作系统版本不同。建议该值为可以以 System.Version 结构的形式进行分析的字符串,并且当安装新固件时,该字符串按逻辑方式递增,但这不是必需的。该值可以为空。 此属性已被弃用。请改用 DeviceFirmwareVersion 属性。 |
DeviceHardwareVersion | |
一个字符串。 |
设备上运行的硬件版本。该版本与可使用 System.Environment 检索的操作系统版本不同。建议该值为可以以 System.Version 结构的形式进行分析的字符串,并且当发布新硬件时,该字符串按逻辑方式递增,但这不是必需的。该值可以为空。 此属性已被弃用。请改用 DeviceHardwareVersion 属性。 |
DeviceManufacturer | |
一个字符串。最多 256 个字符。 |
设备制造商的名称。该字符串没有标准格式。建议对同一制造商的设备使用相同的值,但不强制这样做。该值可以为空。 此属性已被弃用。请改用 DeviceManufacturer 属性。 |
DeviceName | |
一个字符串。最多 256 个字符。 |
设备的名称。该字符串没有标准格式。该值可以为空。 此属性已被弃用。请改用 DeviceName 属性。 |
DeviceTotalMemory | |
一个长整型值。 |
设备的物理 RAM 大小,以字节为单位。该值将小于设备内存的实际数量,但可以用于确定内存占用要求。 此属性已被弃用。请改用 DeviceTotalMemory 属性。 |
DeviceUniqueId | |
字节数组。长度为 20 个字节。 |
设备的唯一哈希。对于所有应用程序,该值都将保持不变,并且如果用新版本的操作系统更新手机也不会更改。应用程序不应使用该值来标识用户,因为即使设备的所有权发生了转移,设备 ID 也将保持不变。 |
IsApplicationPreinstalled | |
布尔值。 |
指示该应用是否与设备图像一起进行预安装。从 Windows Phone 商店 下载的应用将总是返回值 false。 |
OriginalMobileOperatorName | |
一个字符串。 |
一个字符串代表移动运营商的名称。 |
三.用户信息
使用UserExtendedProperties类的GetValue和TryGetValue方法即可。目前这两个函数的入参,都只支持“ANID”。
GetValue用法如下:
string anid = UserExtendedProperties.GetValue("ANID") as string; string anonymousUserId = anid.Substring(2, 32);
TryGetValue用法如下:
object anid = new object(); string anonymousUserId = ""; if (UserExtendedProperties.TryGetValue("ANID", out anid)) { anonymousUserId = anid as string; anonymousUserId = anonymousUserId.Substring(2, 32); }
需要注意的是,如果你的WP7手机没有绑定Live ID,GetValue返回的字符串为null,TryGetValue返回的对象也为null。因此在项目中要注意对返回字符串和对象的非空判断。
四.网络状态
1. 获取网络是否可用
bool flag = Microsoft.Phone.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();
2. 获取当前手机联网类型
Microsoft.Phone.Net.NetworkInformation.NetworkInterface.NetworkInterfaceType
Wireless80211是wifi
None是没有网络连接
MobileBroadbandGsm是gsm 2g网络连接
MobileBroadbandCdma 是CDMA 联通3g
Ethernet – 连接到电脑上网
3. 获取当前是否开启网络连接
bool flag = Microsoft.Phone.Net.NetworkInformation.DeviceNetworkInformation.IsNetworkAvailable;
4. 获取是否开启wifi
bool flag = Microsoft.Phone.Net.NetworkInformation.DeviceNetworkInformation.IsWiFiEnabled;
老妈:这个“I don’t know.”是什么意思?我说:“我不知道”老妈:送你上大学上了几年,你怎么什么都不知道!!我说:不是!就是“我不知道”吗!!老妈:还嘴硬!!!!$@%!#$^&%#$%@$%@#$%!^%^!^%$^#&.(一顿爆揍)老妈:你再给我说说这个,“I know.”什么意思你该知道吧,给我说说。 我说:是“我知道”老妈:知道就快说。我说:就是“我知道”老妈:找茬呀你?刚才收拾你收拾的轻了是不?我说:就是我知道呀!老妈:知道你还不说!!不懂不要装懂!&*$%^@$#!%$@^%#*$^^^##$%(又一顿爆揍)老妈:你给我小心点,花那么多钱送你上大学,搞的现在什么都不会,会那么一丁点东西还跟老娘摆谱,再问你最后一个,你给我好好解释一下,说不出来我再收拾你,你给我翻译一下“I know but I don’t want to tell you.”是什么意思?我晕倒,拿起枕头往头上爆砸三十几下,用头撞墙四十多下,双手轮番抽自己嘴巴五十多下,用腿踢桌子角六十多下,血肉模糊之时,我问老妈:这下你满意吧。这不她老人家又来问我了:“儿啊,I’m very annoyance,don`t tuouble me”是什么意思啊~?我说:“我很烦,别烦我”老妈:“找打,跟**这么说话”(于是被扁)老妈又问:“I hear nothing,repeat. 是what意思啊?我说:“我没听清,再说一次”老妈又说了一遍:I hear nothing,repeat“我说:“我没听清,再说一次”结果被扁 老妈再问:“what do you say ”又怎么解释呢?我说:“你说什么“(再次被扁)老妈再问:“look up in the dictionary”是何意啊?我说:“查字典”“查字典我还问你做甚”(被扁)老妈又问:you had better ask some body.怎么翻呢?我说:“你最好问别人”“你是我儿子,我问别人干吗,又找打,我再问你:“use you head,then think it over”,又是什么意思啊!我说:“动动脑子,再仔细想想”“臭小子,还敢耍我”接着又要动手。我连忙说:“是世上只有妈妈好的意思”“嗯,这还差不多,一会我给你做好吃的,明天再问你”转吧!让大家开心一下啦招女友