UWP 设备应用程序的自动播放功能

重要

设备元数据已弃用,并将在 Windows 的将来版本中删除。 有关替代功能的信息,请参阅驱动程序包容器元数据

设备制造商可以将其 UWP 设备应用指定为其设备的自动播放处理程序。 它们还可以让其他 UWP 应用充当其设备的自动播放处理程序。 本文介绍如何使用设备元数据创作向导启用自动播放。 它还介绍了如何在应用中处理自动播放激活。 有关设备应用的更多信息,请参阅 了解 UWP 设备应用

无需对所有类型的自动播放使用设备元数据。 如果没有设备元数据,AutoPlay 允许用户在将设备连接到电脑时提供应用作为选项。 这些设备包括相机或媒体播放器等非容量设备,或 U 盘、SD 卡或 DVD 等容量设备。 当用户使用邻近感应(点击)在两台计算机之间共享文件时,AutoPlay 还允许你将应用注册为一个选项。 但是,你的应用无法在没有设备元数据的情况下自动安装。 有关在不需要设备元数据时使用自动播放的详细信息,请参阅 使用自动播放自动启动

自动播放概述

根据应用的版本,可以通过以下方式启用自动播放:

  • 只有 UWP 设备应用可以处理设备的自动播放激活(在 Windows 8、Windows 8.1 中受支持)。
  • 其他 UWP 应用可以处理设备的自动播放激活(仅在 Windows 8.1 中受支持)。
  • UWP 设备应用和其他 UWP 应用可以处理设备的自动播放激活(仅在 Windows 8.1 中受支持)。

此示例显示了名为 Contoso Dashboard 的应用的自动播放对话框,该应用已注册为 Contoso Pedometer 设备的自动播放处理程序:

设备的自动播放对话框示例。

在将设备元数据用于应用时,AutoPlay 支持以下设备类型:

设备分类 Windows 8 中支持的自动播放 Windows 8.1 中支持的自动播放
数字静止相机 windows 8 中此设备类支持自动播放。 windows 8.1 中此设备类支持自动播放
数字视频摄像机 windows 8 中此设备类支持自动播放。 windows 8.1 中此设备类支持自动播放
可移植媒体播放器 windows 8 中此设备类支持自动播放。 windows 8.1 中此设备类支持自动播放
手机 windows 8 中此设备类支持自动播放。 windows 8.1 中此设备类支持自动播放
移动宽带 windows 8 中此设备类不支持自动播放。 windows 8.1 中此设备类不支持自动播放
摄像头 windows 8 中此设备类不支持自动播放。 windows 8.1 中此设备类不支持自动播放
人体学接口设备 (HID) windows 8 中此设备类不支持自动播放。 windows 8.1 中此设备类支持自动播放
打印机、扫描仪、传真 windows 8 中此设备类不支持自动播放。 windows 8.1 中此设备类不支持自动播放
个人电脑 windows 8 中此设备类不支持自动播放。 windows 8.1 中此设备类不支持自动播放
智能卡 windows 8 中此设备类不支持自动播放。 windows 8.1 中此设备类支持自动播放
常规端口 windows 8 中此设备类不支持自动播放。 windows 8.1 中此设备类支持自动播放
蓝牙设备 windows 8 中此设备类不支持自动播放。 windows 8.1 中此设备类不支持自动播放

在您开始之前

  • 确保您具备设备元数据创作软件向导。 需要它才能启用自动播放。 在此版本中,此向导包含在 Microsoft Visual Studio Professional 和 Microsoft Visual Studio Ultimate 中。 但是,如果您拥有 Microsoft Visual Studio Express 版,则需要下载适用于 Windows 8.1 的独立 SDK 以获取向导。

  • 将应用与 Microsoft 应用商店相关联。 您需要应用程序的包信息才能启用自动播放。 有关详细信息,请参阅步骤 1:创建 UWP 设备应用的“将应用与Microsoft应用商店”部分相关联。

  • 创建设备元数据。 有关详细信息,请参阅步骤 2:在“生成 UWP 设备应用”分步指南中创建设备元数据

启用自动播放

使用 “设备元数据创作向导” 可将 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 元素的名称属性。

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

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

    • Verb: Verb 是自动播放激活的标识符。 你的应用使用它来确定激活是否来自你的设备。 谓词设置可以使用任何值,但“打开”除外,因为它是保留项。

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

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

  8. 完成后,选择“下一步”

  9. 看到完成页面时,记下体验 ID。 在处理应用中的自动播放激活时,在下一过程中需要用到它。

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

处理自动播放激活

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

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

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

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

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

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

    • Verb:自动播放激活的标识符。 你的应用使用它来确定激活是否来自你的设备。 如果应用被指定为设备的默认自动播放处理程序,则此值应与你在设备元数据中指定的 谓词 匹配。 如果你的应用未被指定为设备的默认自动播放处理程序,你可以使用任何值来设置谓词,但打开除外,该值为保留值。

    • ActionDisplayName:AutoPlay为应用显示的字符串。

    • Experience ID:将应用与设备关联的体验 ID GUID。 这个 GUID 是你在上一过程中记下的值。

处理自动播放激活

当设备触发自动播放激活时,激活类型为 Windows.ApplicationModel.Activation.ActivationKind.device。 要检查应用程序的激活方式,请使用由 eventObj 传递的 OnActivated 对象。 如果它来自自动播放,则可以使用 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>