UWP 裝置應用程式的自動播放
裝置製造商可以將其 UWP 裝置應用程式指定為其裝置的自動播放處理程式。 他們也可以讓其他 UWP 應用程式做為其裝置的自動播放處理程式。 本主題描述如何使用裝置元數據撰寫精靈來啟用自動播放。 它也會說明如何處理應用程式中的自動播放啟用。 如需裝置應用程式的詳細資訊,請參閱 滿足 UWP 裝置應用程式。
注意
您不需要針對所有類型的自動播放使用裝置元數據。 如果沒有裝置元數據,AutoPlay 可讓您在使用者將裝置連線到計算機時,提供您的應用程式作為選項。 這包括非磁碟區裝置,例如相機或媒體播放機,或USB拇指磁碟驅動器、SD 記憶卡或 DVD 等磁碟區裝置。 自動播放也可讓使用者使用近接式 (點選) 在兩部計算機之間共用檔案時,將您的應用程式註冊為選項。 但您的應用程式無法在沒有裝置元數據的情況下自動安裝。 如需在不需要裝置元數據時使用自動播放的詳細資訊,請參閱 使用自動播放自動啟動。
自動播放概觀
視您的應用程式版本而定,您可以透過下列方式啟用自動播放:
只有您的 UWP 裝置應用程式可以處理裝置的自動播放啟用(Windows 8、Windows 8.1 支援)。
其他UWP app可以處理裝置的自動播放啟用(僅限 Windows 8.1 支援)。
您的 UWP 裝置應用程式和其他 UWP app 可以處理裝置的自動播放啟用(僅限 Windows 8.1 支援)。
此範例會顯示名為 Contoso 儀錶板之應用程式的自動播放對話框,其已註冊為 Contoso Pedometer 裝置的 AutoPlay 處理程式:
搭配您的應用程式使用裝置元數據時,AutoPlay 支援下列裝置類型:
Device 類別 | Windows 8 中支援的自動播放 | Windows 8.1 中支持的自動播放 |
---|---|---|
數位靜止相機 | ||
數字視訊攝影機 | ||
可攜式媒體播放機 | ||
手機 | ||
行動寬頻 | ||
網路攝影機 | ||
人類介面裝置 (HID) | ||
印表機、掃描器、傳真 | ||
電腦 | ||
智慧卡 | ||
一般埠 | ||
藍牙裝置 |
開始之前
請確定您有裝置元數據撰寫精靈。 您將需要它才能啟用自動播放。 在此版本中,此精靈隨附於 Microsoft Visual Studio Professional 和 Microsoft Visual Studio Ultimate。 但是,如果您有 Microsoft Visual Studio Express for Windows,則需要下載 適用於 Windows 8.1 的獨立 SDK 以取得精靈。
將您的應用程式與 Microsoft Store 產生關聯。 您將需要應用程式的套件資訊,才能啟用自動播放。 如需詳細資訊,請參閱步驟 1:建立 UWP 裝置應用程式的<將您的應用程式與 Microsoft Store 建立關聯>一節。
建立裝置元數據。 如果您尚未啟動,請參閱建置 UWP 裝置應用程式逐步指南中的步驟 2:建立裝置元數據。
啟用自動播放
[ 裝置元數據撰寫精靈 ] 可讓您將 UWP 應用程式宣告為裝置的預設自動播放處理程式。 您也可以讓其他 UWP 應用程式做為裝置的自動播放處理程式。 您可以選擇這些選項或這兩個選項。
若要使用裝置元數據撰寫精靈啟用自動播放**
按兩下 [DeviceMetadataWizard.exe],從 %ProgramFiles(x86)%\Windows Kits\8.1\bin\x86 啟動 [裝置元數據撰寫精靈]。
按兩下 [ 編輯裝置元數據]。 這可讓您編輯現有的裝置元數據套件。
在 [ 開啟 ] 對話框中,找出與您的 UWP 裝置應用程式相關聯的裝置元數據套件。 (它有 devicemetadata-ms 擴展名。)
(選擇性。)如果您沒有裝置應用程式的套件名稱、發行者名稱和應用程式識別碼,請按兩下 [應用程式資訊 ] 來檢視 UWP 裝置應用程式的封裝資訊。
按兩下 [Windows 資訊] 以指定 [自動播放詳細資料]。
如果您想要將應用程式指定為裝置的預設自動播放處理程式,請選取 [使用 UWP 裝置應用程式]。 您可以選取任何 UWP 應用程式或 UWP 裝置應用程式,但該應用程式必須處理裝置的自動播放啟用,並在應用程式套件指令清單中指定對應的體驗識別碼(如下一個程式所指定)。
套件名稱:在應用程式套件指令清單中,這是 Identity 元素的 Name 屬性。
發行者名稱:在應用程式套件指令清單中,這是 Identity 元素的 Publisher 屬性。
應用程式標識碼:在應用程式套件指令清單中,這是 Application 元素的 ID 屬性。
動詞:這是自動播放啟用的標識碼。 您的應用程式會使用它來判斷啟用是否來自您的裝置。 您可以使用 Verb 設定的任何值,但 已保留的 open 除外。
自動播放事件類型:將此保留為 [裝置]。 在裝置元數據中,精靈會自動指定與您的 UWP 裝置應用程式相關聯的體驗標識碼。
如果您想要讓其他應用程式作為裝置的自動播放處理程式,請選取 [為已註冊的應用程式啟用自動播放]。
完成時,請按 [ 下一步]。
當您看到 [ 完成] 頁面時,記下 [體驗標識符]。 當您在應用程式中處理自動播放啟用時,在下一個程式中需要用到它。
確認您的 儲存資訊 ,然後按兩下 [ 儲存 ] 以更新您的裝置元數據套件。
處理自動播放啟用
若要處理應用程式中的自動播放啟用,您必須在應用程式套件指令清單中註冊 windows.autoPlayDevice
擴充功能,然後在 Application 物件事件中 OnActivated
處理該事件。 請注意,您的應用程式可以註冊為多個裝置的自動播放處理程式。
將您的應用程式註冊為自動播放處理程式
若要將您的應用程式註冊為裝置的自動播放處理程式,您必須指定與您的 UWP 裝置應用程式相關聯的體驗標識碼,以及將用來啟動應用程式的 AutoPlay Verb 和 ActionDisplayName 。
在 Microsoft Visual Studio 中開啟應用程式的專案。
在 方案總管 中,以滑鼠右鍵按兩下 Package.appxmanifest 檔案,然後選取 [檢視程序代碼]。 這會在 XML (文字) 編輯器中顯示應用程式套件指令清單。
在 元素下方
Application
的 元素中VisualElements
,將下列Extensions
元素貼到套件指令清單檔案中。<Extensions> <Extension Category="windows.autoPlayDevice"> <AutoPlayDevice> <LaunchAction Verb="showDevice1" ActionDisplayName="Launch App for Device 1" DeviceEvent="ExperienceID:{00000000-ABCD-EF00-0000-000000000000}"/> </AutoPlayDevice> </Extension> </Extensions>
以您應用程式的實際值取代此範例中的 AutoPlay 值:
Verb
:這是自動播放啟用的識別碼。 您的應用程式會使用它來判斷啟用是否來自您的裝置。 如果您的應用程式已指定為裝置的預設自動播放處理程式,此值應該符合 您在裝置元數據中指定的 Verb 。 如果您的應用程式未指定為裝置的預設自動播放處理程式,您可以使用 [動詞] 設定的任何值,但已保留的 [開啟] 除外。ActionDisplayName
:自動播放針對您的應用程式顯示的字串。Experience ID
:將您的應用程式與裝置建立關聯的體驗標識元 GUID。 這是您在上一個程式中記下的值。
處理自動播放啟用
當您的裝置觸發自動播放啟用時,啟用種類會是 Windows.ApplicationModel.Activation.ActivationKind.device
。 eventObj
使用 傳遞OnActivated
的物件來檢查您的應用程式啟動方式。 如果它來自 AutoPlay,您可以使用 eventObj
來判斷哪個裝置識別碼和自動播放動詞造成啟用。
在此範例中,啟用事件參數 (eventObj) 會攜帶裝置的標識碼,以及啟用的動詞。
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function OnActivated(eventObj) {
if (eventObj.kind == Windows.ApplicationModel.Activation.ActivationKind.launch) {
// Activated by the user.
}
else if (eventObj.kind == Windows.ApplicationModel.Activation.ActivationKind.device) {
// Activated by a device, for AutoPlay.
// Device path = eventObj.deviceInformationId;
// verb ("showDevice1") = eventObj.verb;
}
}
Windows.UI.WebUI.WebUIApplication.addEventListener("activated", OnActivated, false);
</script>
</head>
<body>
...
...
...
</body>
</html>