zoukankan      html  css  js  c++  java
  • Windows Phone 7获取用户信息和设备信息

          在Windows Phone 7中如何获取用户信息和设备信息呢?只需要使用Microsoft.Phone.Info命名空间下的UserExtendedProperties类和DeviceExtendedProperties类对应的成员函数就可以了。具体怎样操作?请看正文。

    获取用户信息

          使用UserExtendedProperties类的GetValueTryGetValue方法即可。目前这两个函数的入参,都只支持“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。因此在项目中要注意对返回字符串和对象的非空判断。

    获取设备信息

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

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

    DeviceManufacturer

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

    DeviceUniqueId

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

    DeviceHardwareVersion

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

    DeviceTotalMemory

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

    ApplicationCurrentMemoryUsage

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

    ApplicationPeakMemoryUsage

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

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

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

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

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

        byte[] byteArray = DeviceExtendedProperties.GetValue("DeviceUniqueId") as byte[];
        string strTemp = "";
        string strDeviceUniqueID = "";
        foreach (byte b in byteArray)
        {
          strTemp = b.ToString();
          if (1 == strTemp.Length)
          {
            strTemp = "00" + strTemp;
          }
          else if (2 == strTemp.Length)
          {
            strTemp = "0" + strTemp;
          }
          strDeviceUniqueID += strTemp;
        }

    我在Demo中的界面只放置了几个获取设备信息的Button和TextBlock,很多都一样,就没有都列出来,截个图供大家参考吧:

    image

    上图是我在模拟器上运行的结果,无法绑定LiveID,所以用户信息一项取不到,为空。其它都正常。

    我在真机上测试都可以取到相关信息。:)

    为了方便大家使用,我把获取用户和设备信息的代码封装到了一个类中,都是Public的静态方法,直接就可以用了。

    下载Demo

    如果发现什么问题,请各位及时通知我,谢谢。

  • 相关阅读:
    点对点风格软件架构模式
    《XXX重大技术需求征集系统》的可用性和可修改性战术分析
    淘宝网应用场景分析
    《架构漫谈》读后感
    《软件需求模式》阅读笔记06
    hdfs会出现的一些问题
    经常使用的架构模式之一——客户端-服务器模式
    阅读《大型网站技术架构》
    以《淘宝网》为例分析质量属性
    架构漫谈读后感
  • 原文地址:https://www.cnblogs.com/jiangyongtao/p/1943546.html
Copyright © 2011-2022 走看看