UWP 设备应用的自动播放
设备制造商可以将其 UWP 设备应用指定为其设备的自动播放处理程序。 还可以让其他 UWP 应用充当其设备的自动播放处理程序。 本主题介绍如何使用设备元数据创作向导来启用自动播放。 它还介绍了如何在应用中处理自动播放激活。 有关设备应用的详细信息,请参阅初识 UWP 设备应用。
注意
无需对所有类型的自动播放使用设备元数据。 在没有设备元数据的情况下,自动播放功能可在用户将设备连接到电脑时将应用作为选项提供。 这包括相机或媒体播放器等非容量设备,或 U 盘、SD 卡或 DVD 等容量设备。 当用户在两台机器之间使用临近感应(点击)共享文件时,自动播放功能还可让你将自己的应用注册为一个选项。 但是,你的应用无法在没有设备元数据的情况下自动安装。 有关在不需要设备元数据时使用自动播放的详细信息,请参阅使用自动播放自动启动。
自动播放概述
根据应用的版本,可以通过以下方式启用自动播放:
只有 UWP 设备应用才能处理设备的自动播放激活(在 Windows 8、Windows 8.1 中受支持)。
其他 UWP 应用可以处理设备的自动播放激活(仅在 Windows 8.1 中受支持)。
UWP 设备应用和其他 UWP 应用可以处理设备的自动播放激活(仅在 Windows 8.1 中受支持)。
此示例显示了名为 Contoso Dashboard 的应用的自动播放对话框,该应用已注册为 Contoso Pedometer 设备的自动播放处理程序:
在应用中使用设备元数据时,自动播放支持以下设备类型:
设备分类 | 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 文件扩展名。)
(可选。)如果手头没有设备应用包名称、发布者名称和应用 ID,请单击“应用信息”查看 UWP 设备应用的程序包信息。
单击 Windows 信息以指定自动播放详细信息。
如果要将应用指定为设备的默认自动播放处理程序,请选择 使用 UWP 设备应用。 你可以选择任何 UWP 应用或 UWP 设备应用,但该应用必须处理设备的自动播放激活,并在应用包清单中指定相应的体验 ID(如下一过程所述)。
包名称:在应用包清单中,这是 Identity 元素的 Name 属性。
发布者名称:在应用包清单中,这是 Identity 元素的 Publisher 属性。
应用 ID:在应用包清单中,这是 Application 元素的 ID 属性。
谓词:这是自动播放激活的标识符。 你的应用将使用它来确定激活是否来自你的设备。 可以为“谓词”设置使用任何值(但保留的 open 除外)。
自动播放事件类型:将此保留为设备。 在设备元数据中,向导会自动指定与 UWP 设备应用关联的体验 ID。
如果要让其他应用充当设备的自动播放处理程序,请选择“为已注册的应用启用自动播放”。
完成后,单击“下一步”。
看到“完成”页时,记下“体验 ID”。 在下一个过程中,当你在应用中处理自动播放激活时会用到它。
验证“保存信息”,然击“保存“以更新设备元数据包。
处理自动播放激活
要在应用中处理自动播放激活,需要windows.autoPlayDevice
在应用程序包清单中注册扩展,然后在应用程序对象中处理该事件OnActivated
。 请注意,你的应用可以注册为多个设备的自动播放处理程序。
将应用注册为自动播放处理程序
要将应用注册为设备的自动播放处理程序,需要指定与 UWP 设备应用关联的体验 ID 以及将用于激活应用的自动播放 Verb 和 ActionDisplayName。
在 Microsoft Visual Studio 中打开应用的项目。
在“解决方案资源管理器”中,右键单击 Package.appxmanifest 文件并选择“查看代码”。 这将在 XML(文本)编辑器中显示应用包清单。
在
VisualElements
元素下方的Application
元素中,将以下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>
将此示例中的“自动播放”值替换为应用的实际值:
Verb
:这是自动播放激活的标识符。 你的应用将使用它来确定激活是否来自你的设备。 如果应用被指定为设备的默认自动播放处理程序,则此值应与你在设备元数据中指定的谓词匹配。 如果你的应用未被指定为设备的默认自动播放处理程序,你可以使用任何值来设置谓词,但打开除外,该值为保留值。ActionDisplayName
:自动播放为应用显示的字符串。Experience ID
:将应用与设备关联的体验 ID GUID。 这是你在上一过程中记下的值。
处理自动播放激活
当设备触发自动播放激活时,激活类型将为 Windows.ApplicationModel.Activation.ActivationKind.device
。 使用 OnActivated
传递的 eventObj
对象检查应用的激活方式。 如果它来自自动播放,则可以使用 eventObj
来确定是哪个设备 ID 和自动播放谓词导致了激活。
在此示例中,激活事件参数 (eventObj) 包含设备的 ID 以及激活谓词。
<!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>