將 Windows Runtime 8.x 移植到適用於 I/O、裝置和 app 模型的 UWP
上一個主題是移植 XAML 和 UI。
與裝置本身及其感應器整合的程式碼涉及使用者的輸入和輸出。 它還可能涉及處理數據。 但是,此程式碼通常不會視為 UI 層或資料層。 此程式碼包括與振動控制器、加速計、陀螺儀、麥克風和喇叭 (與語音識別和合成交集) 、 (地理) 位置和輸入方式 (觸控、滑鼠、鍵盤和手寫筆等) 的整合。
應用程式生命週期 (程序生命週期管理)
對於 Universal 8.1 應用程式,在應用程式變為非使用狀態和系統引發暫停事件之間有兩秒的「反彈跳時段」。 使用此反彈跳時段作為暫停狀態的額外時間並不安全,對於通用 Windows 平台 (UWP) 應用程式來說,根本不存在反彈跳時段;一旦應用程式變為非使用狀態,就會引發暫停事件。
如需更多資訊,請參閱應用程式生命週期。
背景音訊
對於 MediaElement.AudioCategory 屬性,Windows 10 應用程式已淘汰 ForegroundOnlyMedia 和 BackgroundCapableMedia。 請改用 Windows Phone Store 應用程式模型。 如需詳細資訊,請參閱背景音訊。
偵測應用程式執行的平台
考量應用程式設計目標的方式隨 Windows 10 而有所改變。 新的概念模型是應用程式以通用 Windows 平台 (UWP) 為目標,並在所有 Windows 裝置上執行。 然後,它可以選擇點亮特定裝置系列的專屬功能。 如果需要,應用程式還可以選擇將其限制為專門面向一個或多個裝置系列。 有關裝置系列是什麼,以及如何決定面向哪個裝置系列的詳細資訊,請參閱 UWP 應用程式指南。
如果您的 Universal 8.1 應用程式中有程式碼可以偵測其執行中的作業系統,那麼您可能需要根據邏輯原因進行變更。 如果應用程式正在傳遞值,而不是對其進行操作,那麼您可能需要繼續收集作業系統資訊。
注意 建議您不要使用作業系統或裝置系列來偵測功能是否存在。 識別目前的作業系統或裝置系列通常不是判斷特定作業系統或裝置系列功能是否存在的最佳方法。 不是偵測作業系統或裝置系列 (和版本號碼),而是測試功能本身是否存在 (請參閱條件式編譯和調適型程式碼)。 如果您需要特定的作業系統或裝置系列,請務必將其作為支援的最低版本,而不是為該版本設計測試。
若要讓您的應用程式 UI 能適應不同裝置,我們推薦以下幾種技術。 繼續像往常一樣使用自動調整大小的元素和動態佈局面板。 在 XAML 標記中,繼續使用有效像素 (先前稱為檢視像素) 的大小,以便 UI 適應不同的解析度和比例因素 (請參閱有效像素、觀看距離和比例因素。)。 使用 Visual State Manager 的調適型觸發程序和設定器,讓 UI 適應視窗大小 (請參閱 UWP 應用程式指南。)。
但是,如果您遇到必須偵測裝置系列的情況,那麼您可以這樣做。 在此範例中,我們使用 AnalyticsVersionInfo 類別,在適當的情況下瀏覽至為行動裝置系列自訂的頁面,否則我們就會退回到預設頁面。
if (Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Mobile")
rootFrame.Navigate(typeof(MainPageMobile), e.Arguments);
else
rootFrame.Navigate(typeof(MainPage), e.Arguments);
您的應用程式還可以根據有效的資源選擇因素,來確定其執行的裝置系列。 下面的範例示範如何強制執行此操作,ResourceContext.QualifierValues 主題介紹了典型的使用案例,該類別會根據裝置系列因素載入特定裝置系列資源。
var qualifiers = Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().QualifierValues;
string deviceFamilyName;
bool isDeviceFamilyNameKnown = qualifiers.TryGetValue("DeviceFamily", out deviceFamilyName);
另請參閱條件式編譯和調適型程式碼。
Location
當在應用程式套件資訊清單中宣告位置功能的應用程式在 Windows 10 上執行時,系統將提示終端使用者同意。 無論是 Windows Phone Store 應用程式還是 Windows 10 應用程式,都是如此。 因此,如果您的應用程式顯示自己的自訂同意提示,或提供切換開關,那麼您將需要移除它,以只提示一次終端使用者。