Windows 10 開發者預覽的新功能 (What’s new in Windows 10 Developer Preview)

Gallo blog 1 v2

如果您有開發過 Windows Store 或 Windows Phone App 的經驗,以下幫您整理了 Windows 10 Developer Preview (開發者預覽版本) 之新增功能

當然,若要親自嘗試這些新功能:

  1. 請加入 Windows Insider Program,取得並安裝 Windows 10 Developer Preview.
  2. 取得並安裝 Visual Studio 2015 CTP. (目前版本為 CTP6)
  3. 新專案中即會出現 Windows 10 Universal App 的範本。

同時:

1. 若您在測試過程中遇到問題:

  1. 請先檢視 release notes 以及 known issues with Visual Studio 2015 CTP6,查看是否為已知問題。
  2. 請繼續使用 Windows Store 及 Windows Phone Apps 論壇詢問。
  3. 若您發現的確是個 bug,可透過 Windows 10 內建的 Feedback App 來回報協助。

2. 若您對 API 有任何新功能的需求,則可透過 Windows platform developer UserVoice site 來建議,這網站會在 BUILD 2015 前持續更新,反應最新的 API 功能。

以下即重貼來自 Windows 10 開發者預覽的新功能

應用程式模型

檔案總管

新的 Windows.System.Launcher.LaunchFolderAsync 方法可讓您啟動 [檔案總管] 並顯示您指定的資料夾內容。

共用存放裝置

新的 Windows.ApplicationModel.DataTransfer.SharedStorageAccessManager 類別與其方法,可讓您在使用 URI 啟用啟動其他應用程式時,透過傳遞共用權杖來與另一個應用程式共用檔案。目標應用程式會兌換權杖,以取得來源應用程式共用的檔案。

設定

搭配 LaunchUriAsync 方法使用 ms-settings 通訊協定,顯示內建設定頁面。例如,下列程式碼會顯示 Wi-Fi 設定的頁面。

bool result = await Launcher.LaunchUriAsync(new Uri("ms-settings://network/wifi"));

如需您可以顯示之設定頁面的清單,請參閱如何使用 ms-settings 通訊協定顯示內建設定頁面

控制項

WebView 更新

數個完整支援 HTML WebView 控制項的新 API 與事件,包含:

· MSWebViewUnviewableContentIdentified 事件的 MediaType 屬性

· MSWebViewUnsupportedUriSchemeIdentified 事件

· MSWebViewNewWindowRequested 事件

· MSWebViewPermissionRequested 事件,適用於嘗試取得使用者同意以存取地理位置服務的WebView 內容。

使用者輸入的用戶端資料驗證

新的 XAML 控制項屬性可讓您收集和顯示資料驗證錯誤。您可以新增、移除或清除控制項上的ValidationErrors 集合。當 ValidationErrors 計數變成非零,唯讀 ValidationState 屬性就會變更,且控制項會顯示驗證錯誤指示器。

使用預設的指示器樣式,或透過以自訂樣式覆寫 ValidationIndicatorStyle 屬性的方式自訂資料驗證指示器。或者,您可以設定 IsValidationIndicatorEnabled 屬性來啟用或停用指示器。

Windows 核心文字 API

新的 Windows.UI.Text.Core 命名空間提供一個可將鍵盤輸入處理程序集中至單一伺服器的主從式系統。

您可以使用它來管理您自訂文字輸入控制項的編輯緩衝區。文字輸入伺服器可透過應用程式和伺服器之間的非同步通訊通道,確保您的文字輸入控制項內容與其編輯緩衝區的內容一律保持同步。

輸入更新

有了 InkCanvas 控制項與基礎 DirectInk 類別之後,現在可以更容易地使用採用 C++、C# 或 Visual Basic 的 Windows 執行階段應用程式中強大的筆跡功能。

InkCanvas 控制項定義了一個用於繪圖及轉譯筆跡筆觸的重疊區域。這個控制項的功能 (輸入、處理和轉譯) 來自 InkPresenterInkStrokeInkRecognizerInkSynchronizer 類別。

重要 使用 JavaScript 的 Windows 應用程式不支援這些類別。

地圖

已經更新地圖控制項類別,以支援 Windows 10 Technical Preview 通用應用程式。這些 API 現在已屬於通用裝置系列。

裝置

位置

Windows 10 Technical Preview 導入了新方法 RequestAccessAsync,可以詢問使用者是否可存取其位置。

使用者可以利用 [設定] 應用程式中的 [位置隱私權設定],來設定其位置資料的隱私權。您的應用程式只有在下列情況下,才可以存取使用者的位置或位置歷程記錄:

· 定位已開啟 (不適用於 Windows 10 Technical Preview 手機版)

· [讓 Windows 與您選擇的應用程式使用您的位置與位置歷程記錄] 設定已 [開啟]

· 在 [選擇可以使用您的位置的應用程式] 底下,您的應用程式已設定為 [開啟]

請務必先呼叫 RequestAccessAsync,才能存取使用者的位置。此時,您的應用程式必須在前景且RequestAccessAsync 必須從 UI 執行緒呼叫。在使用者授與您的應用程式存取其位置的權限之前,您的應用程式無法存取位置資料。

AllJoyn

Windows.Devices.AllJoyn Windows 執行階段命名空間引進了 Microsoft 的 AllJoyn 開放原始碼軟體架構和服務的實作。這些 API 讓您的通用 Windows 裝置應用程式參與 AllJoyn 驅動、物聯網 (IoT) 案例中的其他裝置得以實現。如需關於 AllJoyn C API 的詳細資料,請下載位於 AllSeen 聯盟的文件。

使用此版本中包含的 AllJoynCodeGen 工具,以產生可用來啟用您裝置應用程式中 AllJoyn 案例的 Windows 元件。

電池

Windows.Devices.Power 命名空間中的電池 API,可以讓應用程式深入了解執行您應用程式之裝置所連接的任何電池。

· 建立電池物件以代表個別的電池控制器,或是所有電池控制器的彙總 (當由 FromIdAsyncAggregateBattery 個別建立時)。

· 使用 GetReport 方法傳回指示相對應電池的充電、容量及狀態的 BatteryReport 物件。

MIDI 裝置

新的 Windows.Devices.Midi 命名空間可讓您建立:

· 可以與外部 MIDI 裝置通訊的應用程式。

· 與 Microsoft GS MIDI 軟體合成器直接通訊的應用程式和外部裝置。

· 多個用戶端同時存取單一 MIDI 連接埠的案例。

自訂的感應器支援

Windows.Devices.Sensors.Custom 命名空間可讓硬體開發人員定義新的自訂感應器類型,例如 CO2 感應器。

圖形和遊戲

DirectX

Windows 10 Technical Preview 中的 DirectX 12 引進了下一版的 Microsoft Direct3D,也就是 DirectX 核心的 3D 圖形 API。Direct3D 12 圖形提高了低階、主控台式 API 的效率和效能。Direct3D 12 比以往更快更有效率。支援更豐富的場景、更多的物件、更複雜的效果,且能夠更有效地使用現代化圖形硬體。

媒體

HTTP 即時串流處理

您可以使用新的 AdaptiveMediaSource 類別,將彈性視訊串流功能新增到您的應用程式。物件已透過將它指向串流處理的資訊清單檔案來初始化。支援的資訊清單格式包含 Http 即時資料流 (HLS)、Dynamic Adaptive Streaming over HTTP (DASH) 與 Smooth Streaming。一旦物件繫結至 XAML 媒體元素,就會開始彈性播放。您可以查詢,並在適當時設定資料流屬性,例如可用、最小與最大位元速率。

適用於 Media Foundation Transforms (MFTs) 的 Media Foundation Transcode Video Processor (XVP) 支援

使用 Media Foundation Transforms (MFTs) 的 Windows 應用程式現在可以使用 Media Foundation Transcode Video Processor (XVP) 轉換、縮放及轉變原始影片資料:

· 新的 MF_XVP_CALLER_ALLOCATES_OUTPUT 屬性支援對呼叫端配置紋理的輸出 (即使在 Microsoft DirectX 視訊加速 (DXVA) 模式中)。

· 新的 IMFVideoProcessorControl2 介面可讓您的應用程式啟用硬體效果、查詢支援的硬體效果,以及覆寫視訊處理器所執行的旋轉作業。

轉碼

新的 MediaProcessingTrigger API 可讓您的應用程式在背景工作中執行媒體轉碼,因此即使終止前景應用程式,轉碼作業仍然可以繼續執行。

MediaElement

在 Windows 10 上,MediaElement 可播放包含多個串流的內容,即使其中一個串流發生解碼錯誤,只要媒體內容包含至少一個有效串流,便可繼續播放。例如,如果內容中的視訊串流包含音訊,而視訊串流失敗,則 MediaElement 仍然會播放音訊串流。PartialMediaFailureDetected 會通知您無法解碼串流中的一個串流。它也會讓您知道失敗串流的類型,以便在 UI 中反映該資訊。如果媒體串流中的所有串流皆失敗,就會引發 MediaFailed 事件。

傳統型應用程式的媒體傳輸控制項

ISystemMediaTransportControls 介面和相關的 API 可讓傳統型應用程式與內建系統媒體傳輸控制項互動。這包括使用傳輸控制項按鈕回應使用者互動,以及更新傳輸控制項顯示,以顯示目前播放媒體內容的中繼資料。

隨機存取 JPEG 編碼和解碼

新的 WIC 方法 IWICJpegFrameEncodeIWICJpegFrameDecode 可編碼和解碼 JPEG 影像。您現在也可以為影像資料編製索引,以提高大型影像隨機存取的效率,但是會耗用較多記憶體。

媒體組合的重疊

新的 MediaOverlayMediaOverlayLayer API 可以讓您輕鬆地將多層靜態或動態媒體內容新增到媒體組合。每層可各自調整不透明度、位置和時間,您甚至可以為輸入層自行實作自訂的組合器。

新的效果架構

Windows.Media.Effects 命名空間提供簡單且直覺的架構,可為音訊和視訊串流新增效果。此架構包含基本的介面,可實作以建立自訂的音訊和視訊效果,並將之插入媒體管線。

網路功能

通訊端

通訊端更新包括:

· 通訊端代理程式。通訊端代理程式可以代表處於應用程式週期中任何狀態的應用程式來建立及關閉通訊端連線。這可以讓應用程式和應用程式提供的服務更容易被找到。例如,透過通訊端代理程式,Win32 服務甚至在未執行時仍可接受連入通訊端連線。

· 改進輸送量。通訊端輸送量已針對使用 Windows.Networking.Sockets 命名空間的應用程式最佳化。

背景傳輸後續處理工作

Windows.Networking.BackgroundTransfer 命名空間中新的 API 可讓您註冊後續處理工作的群組。因此,即使您的應用程式不在前景,也可在背景傳輸成功或失敗時立即採取動作,而不是等到下次使用者繼續執行應用程式時才採取動作。

廣告的藍牙支援

有了 Windows.Devices.Bluetooth.Advertisement 命名空間,您的應用程式可以透過藍牙 LE 連線傳送、接收與篩選廣告。

Wi-Fi Direct API 更新

裝置代理程式已更新,可在不離開應用程式的情況下啟用裝置配對功能。Windows.Devices.WiFiDirect 命名空間的新增項目可讓裝置成為可供其他裝置搜尋的裝置,並讓裝置接聽連入連線通知。

注意 此版本中,Wi-Fi Direct 增強功能並未內建到 UX 中,且它們只支援一鍵配對。此外,此版本只支援一個使用中的連線。

JSON 支援改良功能

Windows.Data.Json 命名空間現在在偵錯工作階段期間轉換 JSON 物件時,對於現有的標準定義和開發人員體驗提供較好的支援。

安全性

ECC 加密

Windows.Security.Cryptography 命名空間中新的 API 支援了橢圓曲線加密法 (ECC),這是以有限體上橢圓曲線為基礎的公開金鑰密碼編譯實作。ECC 演算方式比 RSA 更複雜,提供較小的金鑰大小、減少記憶體耗用量,並改善效能。它提供了 Microsoft 服務與客戶一種 RSA 金鑰和 NIST 核准曲線參數的替代方法。

系統服務

電源

現在在執行或停止執行省電模式時,會通知您的 Windows 傳統型應用程式。藉由回應電源條件變更,您的應用程式有機會可以協助延長電池使用時間。

· GUID_POWER_SAVING_STATUS: 使用這個新的 GUID 與 PowerSettingRegisterNotification 函式,即可在執行或停止執行省電模式時收到通知。

· SYSTEM_POWER_STATUS: 這個結構已經更新,以支援省電模式。第四個成員 SystemStatusFlag(先前稱為 Reserved1) 現在可指示省電模式是否已經執行。使用 GetSystemPowerStatus 函式來抓取這個結構的指標。

版本

您可以使用 Version Helper 函式判斷作業系統版本。針對 Windows 10,這些 Helper 函式包含新的函式IsWindows10OrGreater。當您想要判斷系統版本時,您應該使用 Helper 函式,而不是已過時的GetVersionExGetVersion 函式。如需如何取得系統版本的相關詳細資訊,請參閱取得系統版本

如果您是使用已過時的 GetVersionExGetVersion 函式來取得 OSVERSIONINFOEXOSVERSIONINFO結構中的版本資訊,請注意這些結構包含的版本號碼會從 6.3 (適用於 Windows 8.1 與 Windows Server 2012 R2) 增加到 10.0 (適用於 Windows 10 Technical Preview)。如需作業系統版本號碼的相關詳細資訊,請參閱作業系統版本

在您的應用程式中,您也需要特別以 Windows 8.1 或 Windows 10 為目標,以取得這些利用 GetVersionExGetVersion 函式取得之版本的正確版本資訊。如需如何將您的應用程式以這些 Windows 版本為目標的相關資訊,請參閱將您的應用程式以 Windows 為目標

儲存空間

可供 Windows Phone 使用的檔案搜尋 API

身為應用程式發行者,您可以新增延伸項目至應用程式資訊清單,以便註冊應用程式將儲存資料夾與您發行的其他應用程式共用。然後呼叫 Windows.Storage.ApplicationData.GetPublisherCacheFolder 方法取得共用的儲存位置。

Windows 執行階段應用程式的增強式安全性模型通常會防止應用程式彼此之間分享資料。但是,對於來自相同發行者的應用程式,在以每個使用者為基礎的方式下共用檔案和設定而言很有用。

工具與效能

屬性變更通知

Windows.UI.Xaml 命名空間現在定義了數個支援變更通知的 API,以控制識別為 DependencyObject 的屬性。

通知的運作方式類似於事件,但實際上會公開為回呼。回呼會像事件處理常式一樣接受傳送者引數,但不接受事件引數。相反地,只會傳遞屬性識別碼來指示屬性。您的應用程式可以利用此項資訊,為多個屬性通知定義單一處理常式。如需詳細資訊,請參閱 RegisterPropertyChangedCallback

追蹤記錄

追蹤記錄是適用於使用者模式應用程式與核心模式驅動程式的新事件追蹤 API;它是建置在 Windows 事件追蹤 (ETW) 上。這個 API 提供簡化的方式來檢測程式碼,並包括含有事件的結構化資料,而不需要個別的檢測資訊清單 XML 檔案。

WinRT、.NET 與 C/C++ TraceLogging API 可用來為不同的開發人員對象提供服務。

使用者經驗

清單捲動虛擬化

XAML ListViewGridView 控制項具有新的 ListViewBase.ChooseItemContainer 事件,可在資料集合中發生變更時,改善控制項的效能。

相對於執行清單的完整重設 (這會重播進入動畫),系統現在會保持目前檢視中的項目,以及焦點和選取的狀態;檢視區中新的項目和移除的項目會以動畫流暢地顯示進出。在資料集合中 (其中的容器未受到破壞) 進行變更後,應用程式可以快速地將任何「舊」項目與先前的容器比對,並跳過容器週期覆寫方法的進一步處理。只有「新」項目會被處理,並與回收的或新的容器產生關聯。

不同的應用程式平台之間的拖放功能

新的 Windows.ApplicationModel.DataTransfer.DragDrop 命名空間將拖放功能帶入 Windows 執行階段應用程式。目前來說,一般的傳統型程式拖放案例 (例如將資料夾中的文件拖曳到 Outlook 電子郵件訊息中以附加檔案) 在 Windows 執行階段應用程式是不可能的。使用這些新的 API,您的應用程式可讓使用者輕易地在不同的 Windows 執行階段應用程式和桌面之間移動資料。這絕對是比以往更好且更直覺化的應用程式經驗。

按鍵輸入瀏覽鍵盤快速鍵的支援

新的 Windows.UI.Xaml.KeyAccelerator 類別可讓您為您的 XAML 標記頁面宣告鍵盤快速鍵。鍵盤快速鍵會在按下特定按鍵 (以及選用的輔助按鍵) 時叫用指定的事件處理常式。您也可以使用 x:Uid 屬性與您的KeyAccelerator 來進行當地語系化。

網頁

Internet Explorer

Internet Explorer 引進了「邊緣」模式:一種新的動態文件模式,針對搭配其他現代化瀏覽器和網頁內容最大互通性所設計。這個實驗模式已透過漸進方式提供給一組隨機選取的 Windows 開發人員預覽使用者。您可以透過新的 IE about:flags 機制手動啟用或停用邊緣模式。如需詳細資訊,請參閱:

· 使用邊緣 – 我們協助網路運作的下一步是正確的

· Windows 10 的 Internet Explorer 開發人員指南

 

延伸閱讀:

1. Windows 10 對於開發者的意義在哪?

2. 初窺 Windows 10 的通用應用程式平台 (Universal App Platform)