鎖定的螢幕背景

綜述

在以前的 Windows Phone 作業系統版本,螢幕鎖定畫面裡包含了幾個內建的通知:如新郵件和文字訊息的數量。在 Windows Phone 8,使用者可以自己選擇用任何第三方的 App 來自訂螢幕鎖定畫面。做為開發人員,你可以讓開發的 App 擁有被加入到螢幕鎖定畫面的功能,並顯示快速訪問的資訊。

每當手機螢幕關閉後重開就會顯示螢幕鎖定畫面,並在畫面上提供使用者關於手機及 App 一目了然的訊息。App 會提供以下四種資訊在螢幕鎖定畫面上:

  • 背景圖片

  • App 圖示

  • App 數量

  • App 內文

註:App 圖示、數量、內文會直接從 App 的主要動態磚拉出並顯示在螢幕鎖定畫面的通知訊息區,關於動態磚的更多詳細資料將在探討動態磚的章節深入討論。


圖 1
Windows Phone 8 的螢幕鎖定畫面

Windows Phone App - ContosoCookbook 可以讓使用者找到並顯示想要的食譜及食譜類型,在這個討論裡,當使用者釘選了最愛食譜動態磚到首頁時,我們將把螢幕鎖定畫面上的背景改換成使用者最愛食譜的圖片。

Windows Phone 8 螢幕鎖定畫面可任由使用者在「設定」項目裡自由變換。要更改螢幕鎖定畫面時,App 必須得到使用者授權,且一次只有一個 App 可以擁有權限將畫面顯示在螢幕鎖定畫面。這一個實習中,我們將展示如何要求明確的用戶權限,以及測試如何更改螢幕鎖定畫面。

原始版本的 ContosoCookbook App 存放在實驗安裝資料夾 Sources\Begin 下方。在實驗完成後,App 的功能會與存放在 Sources\End 中的版本相同。

目標

這個實驗將達成以下目標:

  • 以編程方式更改螢幕鎖定畫面

  • 測試以 App 更改螢幕鎖定畫面

系統需求

您必須符合以下系統需求:

  • Microsoft Visual Studio 2012 或 Microsoft Visual Studio 2012 Express for Windows Phone

  • 之前的 Windows phone 開發經驗

實驗架構

這個實驗包含了一個單一練習及以下任務:

  1. 更新應用程式清單文件

  2. 新增代碼以變更螢幕鎖定畫面

  3. 測試 App

預計完成時間

預計可完成時間為 : 30 分鐘

練習 1

在本練習中,我們修改了的 Contoso Cookbook App,以便當使用者選擇了一個最喜愛的食譜時,可以改變手機預設的螢幕鎖定畫面。

任務 1– 更改應用程式清單文件

首先,我們需要更新應用程式清單文件中的聲明,以授權 App 為螢幕鎖定畫面提供者。只有註冊過的螢幕鎖定畫面提供者可以更改螢幕鎖定畫面。

  1. 瀏覽到實驗安裝資料夾下方的 Source\Begin 文件夾,使用 Visual Studio 打開 ContosoCookbook.sln. 方案檔

  2. 執行並檢查 App。

    ContosoCookbook App 幫助使用者查找食譜並顯示材料及烹飪步驟。實作在 MainPage.xaml 的主頁提供美食類別的挑選,使用者”選擇”的動作將觸發瀏覽到美食類別頁面 (位於 GroupDetailPage.xaml),此頁面使用有兩個 PivotItem 的 Pivot 控制項來顯示美食類別的詳細資訊 (包含美食類別介紹及符合需求的食譜資料)。食譜也可以透過 App 內購買機制(將在”購買”章節中描述)購買。

    當使用者挑選一則食譜,實作在 RecipeDetailPage.xaml 的食譜頁面就會陳列出食譜的詳細資料,包括烹飪步驟及所需材料等。食譜頁上可以用應用程式列 (Application Bar) 將食譜設定為最愛或釘選食譜到首頁-這也是可以觸發將食譜圖片設定為螢幕鎖定畫面的地方。

  3. 切換到 Properties 資料夾中的 Visual Studio 方案總管,選擇 WMAppManifest.xml 項目。

  4. 按右鍵點擊 WMAppManifest.xml,並選擇“Open with”。


    圖 2
    打開應用程式清單

  5. 選擇 “XML (text) Editor”,並點選 OK

  6. 在應用程式清單中的選項 <Extensions> 新增一個新的 <Extension> 元素,這個元素用來宣告 App 為螢幕鎖定畫面的供應者。如果應用程式清單中沒有出現 <Extensions> 元素,在檔案中貼上下方全部代碼。

     XML
    <Extensions>
    <Extension
    ExtensionName="LockScreen_Background"
    ConsumerID="{111DFF24-AA15-4A96-8006-2BFF8122084F}"
    TaskID="_default" />
    </Extensions>

    註 : <Extensions> 元素必須放在 <Tokens> 元素下方。

任務 2 – 新增代碼更改螢幕鎖定畫面

  • 要更改螢幕鎖定畫面,App 必須呼叫 API 去要求取得使用者權限。在 ContosoCookbook App 中,當使用者挑選了一個最愛的食譜並釘選到首頁時,才會觸發更改螢幕鎖定畫面的功能。

    註 : 在 ContosoCookbook App 中,更改螢幕鎖定畫面的功能是由使用者操作觸發的。其 他 App 可能需要螢幕鎖定畫面週期性的更改,這可以利用背景代理程式做到。可以參考說明文件中“Windows Phone 背景代理程式” 章節。

    我們將更改應用程式列 (Application Bar) 中的“Favorite”按鍵,當使用者點擊“Favorite”時可以更新螢幕鎖定畫面。


    圖 3
    “最愛的食譜”按鍵

    1. 找到 RecipeDetailPage.xaml.cs 檔案並打開它

    2. 找到 btnPinToStart_Click 方法

    3. 新增下方代碼到 “Setup lock screen” comment 下方 :

      C#
      // Setup lock screen.
      if (!LockScreenManager.IsProvidedByCurrentApplication)
      {
      //If you're not the provider, this call will prompt the user for permission.
      //Calling RequestAccessAsync from a background agent is not allowed.
      await LockScreenManager.RequestAccessAsync();
      }

      if (LockScreenManager.IsProvidedByCurrentApplication)
      {
      Uri imageUri = new Uri("ms-appx://" + item.ImagePath.LocalPath,
      UriKind.RelativeOrAbsolute);
      LockScreen.SetImageUri(imageUri);
      }

      方法的程式碼處理兩種不同的情況:設定次級動態磚 (原始代碼中提供的) 及更改螢幕鎖定畫面 (我們剛新增的)。

      代碼執行分成兩種不同的狀況;釘選一個次級動態磚到首頁及移除先前釘選的動態磚。當使用者釘選動態磚到首頁時,我們應該只更改螢幕鎖定背景。

      LockScreenManager.IsProvidedByCurrentApplication 屬性確認使用者是否設定了該 App 作為螢幕鎖定背景供應者,如果該 App 目前非供應者,則請求使用者使用 LockScreenManager.RequestAccessAsync 方法鎖定。

      最後,LockScreen.SetImageUri 方法更改螢幕鎖定畫面

      註 : 只有當你的 App 不是目前螢幕鎖定畫面的供應者時,你應該呼叫 RequestAccessAsync 方法。使用者可以利用手機內的設定功能更改螢幕鎖定畫面的供應者。

任務 3 – 從 App 測試解鎖畫面

整合 Visual Studio的Windows Phone 模擬器提供了 Simulation Dashboard 工具,可以在App中測試螢幕鎖定背景相關的功能。在這個任務中,我們要測試在先前任務中新加入的代碼,並且驗證 App 是否成功地擁有進入螢幕鎖定畫面功能的權限並更改螢幕鎖定畫面。

  1. 在 Visual Studio 中,打開 Tools 選單。

  2. 在 Tools 選單中,選擇 Simulation Dashboard. 對話框跳出如下。


    圖 4
    Simulation Dashboard 工具選單對話框

    Simulation Dashboard 工具能夠模擬不同的網絡速度和信號強度、螢幕鎖定及螢幕解鎖、以及觸發提醒。使用“鎖定”(“Locked”)和“解鎖”(“Unlocked”)選項可以測試我們的 App 螢幕鎖定背景功能。

  3. 執行 ContosoCookbook App

  4. 選擇一個食譜。

  5. 在應用程式列裡,點選“Favorite” (心型) 按鍵:


    圖 5
    應用程式列 (Application Bar) 裡的最愛 (心型) 按鍵

  6. 出現提示詢問訊息時,允許 App 更改螢幕鎖定畫面。


    圖 6
    螢幕鎖定背景的供應商授權訊息

  7. 回到 Visual Studio 中的 Simulation Dashboard。

  8. 點擊 Locked 按鍵並回到模擬器,鎖定螢幕的背景就可以更改了。


    圖 7
    由 Contoso Cookbook 提供的螢幕鎖定畫面

總結

上面的內容討論了從 App 更改螢幕鎖定畫面所需要的步驟:

為了實行這些關聯,你在應用程式清單中註冊關聯,實行 URI 對應器類別篩選及處理啟動 App 的功能,並增加從檔案下載資料或從 URI 檢索參數的功能。

現在,你擁有可以建立自己的應用程式並使用 URI 格式名稱和文件關聯與其他應用程式進行溝通,並擴充程式間互操作性選項的能力。

  • 在應用程式清單內聲明擴充螢幕鎖定功能

  • 確認 App 是否為螢幕鎖定畫面的授權供應者

  • 要求使用者的同意以更改螢幕鎖定畫面

  • 以編程方式更改螢幕鎖定畫面

當使用者已經授權你的 App 為螢幕鎖定畫面的供應者,你可能會發現用背景代理程式定期更改畫面非常好用。例如:氣象 App 可以利用來更改螢幕鎖定畫面反映天氣 (例如下雪天、晚上、雨天、晴天或者陰天),若需要更多關於背景代理程式的資料可以參考說明文件。

你現在可以建立自己的 App 並更改螢幕鎖定背景了。

繼續下一個實驗