首页  ·  知识 ·  移动开发
WindowsPhone7获取用户和设备信息
网友   http://hi.baidu.com/2hill/  Wphone  编辑:dezai   图片来源:网络
在Windows Phone 7中如何获取用户信息和设备信息呢?只需要使用Microsoft.Phone.Info命名空间下的UserExtendedProperties/strong
在Windows Phone 7中如何获取用户信息和设备信息呢?只需要使用Microsoft.Phone.Info命名空间下的UserExtendedProperties类和DeviceExtendedProperties类对应的成员函数就可以了。具体怎样操作?请看正文。

获取用户信息

使用UserExtendedProperties类的GetValueTryGetValue方法即可。目前这两个函数的入参,都只支持“ANID”。

GetValue用法如下:

 
1 string anid = UserExtendedProperties.GetValue("ANID") as string;
2 string anonymousUserId = anid.Substring(2, 32);

TryGetValue用法如下:

 
1     object anid = new object();
2     string anonymousUserId = "";
3     if (UserExtendedProperties.TryGetValue("ANID", out anid))
4     {
5       anonymousUserId = anid as string;
6       anonymousUserId = anonymousUserId.Substring(2, 32);
7     }

需要注意的是,如果你的WP7手机没有绑定Live ID,GetValue返回的字符串为null,TryGetValue返回的对象也为null。因此在项目中要注意对返回字符串和对象的非空判断。

获取设备信息

与获取用户信息相似,使用DeviceExtendedProperties类的GetValueTryGetValue方法,这两个方法的使用方式也与上面相同,不同的是入参。Windows Phone 7可以获取的设备信息如下:

属性名称 值类型 描述 补充说明

DeviceManufacturer

字符串
(最大长度256)
设备的生产厂商。该字符串没有标准格式。微软建议同一个厂商生产的手机使用相同的字符串,但这不是强制的。 注意,该值也可能为空
DeviceName 字符串
(最大长度256)
设备名称。该字符串没有标准格式。 注意,该值也可能为空

DeviceUniqueId

长度为20的byte数组 设备的唯一标识。该值是唯一不变的,即使系统升级。 注意,不要使用该值来标识用户,因为用户可能可以更换手机,同一手机也有可能被不同用户使用
DeviceFirmwareVersion 一个字符串 当前设备运行的固件版本。如果安装了新版本的固件,该值将会增长。 注意,该值也可能为空

DeviceHardwareVersion

一个字符串 当前设备的硬件版本。 注意,该值也可能为空

DeviceTotalMemory

长整型 设备物理内存的大小(单位是Byte) 该值通常小于实际的RAM大小略小,因此可以用它来判断RAM是否够用。

ApplicationCurrentMemoryUsage

长整型 当前应用程序使用的内存(单位是Byte) 可以用它来观察当前应用程序消耗内存的情况

ApplicationPeakMemoryUsage

长整型 当前应用程序使用内存的峰值(单位是Byte) 可以用它来观察当前应用程序内存最大使用的情况

先来看看获取设备厂商的方法:

 
1 string strDeviceManufacturer = DeviceExtendedProperties.GetValue("DeviceManufacturer").ToString();

 

其它的设备信息获取都与设备厂商一样,把GetValue或TryGetValue的参数换一下就可以了。

有一个有点不同,就是DeviceUniqueID。有时候我们就需要保存一个字符串来标识设别的唯一性就好了,用Byte数组有点麻烦,我在这里遍历了该数组,把它转为了一个长度为60的字符串,代码如下:

 
01     byte[] byteArray = DeviceExtendedProperties.GetValue("DeviceUniqueId") as byte[];
02     string strTemp = "";
03     string strDeviceUniqueID = "";
04     foreach (byte b in byteArray)
05     {
06       strTemp = b.ToString();
07       if (1 == strTemp.Length)
08       {
09         strTemp = "00" + strTemp;
10       }
11       else if (2 == strTemp.Length)
12       {
13         strTemp = "0" + strTemp;
14       }
15       strDeviceUniqueID += strTemp;
16     }
本文作者:网友 来源:网络 http://hi.baidu.com/2hill/
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读