Windows Phone 7擷取使用者資訊和裝置資訊

來源:互聯網
上載者:User

      在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,很多都一樣,就沒有都列出來,截個圖供大家參考吧:

是我在模擬器上啟動並執行結果,無法綁定LiveID,所以使用者資訊一項取不到,為空白。其它都正常。

我在真機上測試都可以取到相關資訊。:)

為了方便大家使用,我把擷取使用者和裝置資訊的代碼封裝到了一個類中,都是Public的靜態方法,直接就可以用了。

下載Demo

如果發現什麼問題,請各位及時通知我,謝謝。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.