在Windows Phone 7中如何获取用户信息和设备信息呢?只需要使用Microsoft.Phone.Info命名空间下的
UserExtendedProperties类和
DeviceExtendedProperties类对应的成员函数就可以了。具体怎样操作?请看正文。
获取用户信息
使用UserExtendedProperties类的GetValue和TryGetValue方法即可。目前这两个函数的入参,都只支持“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)) |
5 |
anonymousUserId = anid as string ; |
6 |
anonymousUserId = anonymousUserId.Substring(2, 32); |
需要注意的是,如果你的WP7手机没有绑定Live ID,GetValue返回的字符串为null,TryGetValue返回的对象也为null。因此在项目中要注意对返回字符串和对象的非空判断。
获取设备信息
与获取用户信息相似,使用DeviceExtendedProperties类的GetValue和TryGetValue方法,这两个方法的使用方式也与上面相同,不同的是入参。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 []; |
03 |
string strDeviceUniqueID = "" ; |
04 |
foreach ( byte b in byteArray) |
06 |
strTemp = b.ToString(); |
07 |
if (1 == strTemp.Length) |
09 |
strTemp = "00" + strTemp; |
11 |
else if (2 == strTemp.Length) |
13 |
strTemp = "0" + strTemp; |
15 |
strDeviceUniqueID += strTemp; |
本文作者:网友 来源:网络 http://hi.baidu.com/2hill/
CIO之家 www.ciozj.com 微信公众号:imciow