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 设备的自动播放处理程序:

example autoplay dialog for a device.

在应用中使用设备元数据时,自动播放支持以下设备类型:

设备分类 Windows 8 中支持的自动播放 Windows 8.1 中支持的自动播放
数码相机 autoplay is supported for this device class in windows 8. autoplay is supported for this device class in windows 8.1
数字视频摄像机 autoplay is supported for this device class in windows 8. autoplay is supported for this device class in windows 8.1
便携式媒体播放机 autoplay is supported for this device class in windows 8. autoplay is supported for this device class in windows 8.1
手机 autoplay is supported for this device class in windows 8. autoplay is supported for this device class in windows 8.1
移动宽带 autoplay is not supported for this device class in windows 8. autoplay is not supported for this device class in windows 8.1
网络摄像头 autoplay is not supported for this device class in windows 8. autoplay is not supported for this device class in windows 8.1
人体学接口设备 (HID) autoplay is not supported for this device class in windows 8. autoplay is supported for this device class in windows 8.1
打印机、扫描仪、传真机 autoplay is not supported for this device class in windows 8. autoplay is not supported for this device class in windows 8.1
电脑 autoplay is not supported for this device class in windows 8. autoplay is not supported for this device class in windows 8.1
智能卡 autoplay is not supported for this device class in windows 8. autoplay is supported for this device class in windows 8.1
通用端口 autoplay is not supported for this device class in windows 8. autoplay is supported for this device class in windows 8.1
蓝牙设备 autoplay is not supported for this device class in windows 8. autoplay is not supported for this device class in windows 8.1

开始之前

  • 确保具有设备元数据创作向导。 需要它才能启用自动播放。 在此版本中,此向导包含在 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 应用充当设备的自动播放处理程序。 可以选择其中一个选项,也可以同时选择两个选项。

使用设备元数据创作向导启用自动播放**

  1. 通过双击 DeviceMetadataWizard.exe,从 %ProgramFiles(x86)%\Windows Kits\8.1\bin\x86 启动设备元数据创作向导

  2. 单击“编辑设备元数据”。 这样,就可以编辑现有的设备元数据包。

  3. 在“打开”对话框中,找到与 UWP 设备应用关联的设备元数据包。 (它具有 devicemetadata-ms 文件扩展名。)

  4. (可选。)如果手头没有设备应用包名称、发布者名称和应用 ID,请单击“应用信息”查看 UWP 设备应用的程序包信息。

  5. 单击 Windows 信息以指定自动播放详细信息。

  6. 如果要将应用指定为设备的默认自动播放处理程序,请选择 使用 UWP 设备应用。 你可以选择任何 UWP 应用或 UWP 设备应用,但该应用必须处理设备的自动播放激活,并在应用包清单中指定相应的体验 ID(如下一过程所述)。

    • 包名称:在应用包清单中,这是 Identity 元素的 Name 属性。

    • 发布者名称:在应用包清单中,这是 Identity 元素的 Publisher 属性。

    • 应用 ID:在应用包清单中,这是 Application 元素的 ID 属性。

    • 谓词:这是自动播放激活的标识符。 你的应用将使用它来确定激活是否来自你的设备。 可以为“谓词”设置使用任何值(但保留的 open 除外)。

    • 自动播放事件类型:将此保留为设备。 在设备元数据中,向导会自动指定与 UWP 设备应用关联的体验 ID。

  7. 如果要让其他应用充当设备的自动播放处理程序,请选择“为已注册的应用启用自动播放”。

  8. 完成后,单击“下一步”。

  9. 看到“完成”页时,记下“体验 ID”。 在下一个过程中,当你在应用中处理自动播放激活时会用到它。

  10. 验证“保存信息”,然击“保存“以更新设备元数据包。

处理自动播放激活

要在应用中处理自动播放激活,需要windows.autoPlayDevice在应用程序包清单中注册扩展,然后在应用程序对象中处理该事件OnActivated。 请注意,你的应用可以注册为多个设备的自动播放处理程序。

将应用注册为自动播放处理程序

要将应用注册为设备的自动播放处理程序,需要指定与 UWP 设备应用关联的体验 ID 以及将用于激活应用的自动播放 VerbActionDisplayName

  1. 在 Microsoft Visual Studio 中打开应用的项目。

  2. 在“解决方案资源管理器”中,右键单击 Package.appxmanifest 文件并选择“查看代码”。 这将在 XML(文本)编辑器中显示应用包清单。

  3. 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>
    
  4. 将此示例中的“自动播放”值替换为应用的实际值:

    • 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>

初识 UWP 设备应用

分步构建 UWP 设备应用

借助自动播放功能自动启动

Launching, resuming, and multitasking