设备配对

本主题介绍如何使用 Windows.Devices.Enumeration 命名空间对设备进行配对。

重要的 API

自动配对

有时你想要在应用程序中使用设备,但并不在乎设备是否已配对。 你只想能够使用与设备关联的功能。 例如,如果你的应用只想从网络摄像头捕获图像,则你不一定对设备本身感兴趣,而只是图像捕获。 如果有可供你感兴趣的设备使用的设备 API,此方案将属于自动配对。

在这种情况下,只需使用与设备关联的 API,根据需要进行调用并信任系统来处理可能必要的任何配对。 某些设备无需配对即可使用其功能。 如果需要配对设备,则设备 API 将处理后台的配对操作,因此无需将该功能集成到应用中。 你的应用将不知道给定设备是配对还是需要配对,但你仍然可以访问该设备并使用其功能。

基本配对

基本配对是在应用程序使用 Windows.Devices.Enumeration API 来尝试配对设备时。 在此方案中,你将让 Windows 尝试配对过程并处理它。 如果需要任何用户交互,Windows 将对其进行处理。 如果需要与设备配对,并且没有相关设备 API 将尝试自动配对,则可以使用基本配对。 你只想能够使用该设备,并首先需要与之配对。

若要尝试基本配对,首先需要获取 你感兴趣的设备的 DeviceInformation 对象。 收到该对象后,你将与 DeviceInformation.Pairing 属性进行交互,该属性是 DeviceInformationPairing 对象。 若要尝试配对,只需调用 DeviceInformationPairing.PairAsync 你需要 等待 结果,以便让应用有时间尝试完成配对操作。 将返回配对操作的结果,只要未返回任何错误,设备就会配对。

如果使用基本配对,则还可以访问有关设备配对状态的其他信息。 例如,你知道配对状态(IsPaired)以及设备是否可以配对(CanPair)。 这两个都是 DeviceInformationPairing 对象的属性 如果使用自动配对,则可能无法访问此信息,除非获得相关的 DeviceInformation 对象。

自定义配对

自定义配对使应用能够参与配对过程。 这样,应用就可以指定配对过程支持的 DevicePairingKinds 你还将负责创建自己的用户界面,以便根据需要与用户交互。 如果希望应用对配对过程如何继续或显示自己的配对用户界面产生更大的影响,请使用自定义配对。

若要实现自定义配对,需要获取 你感兴趣的设备的 DeviceInformation 对象,就像基本配对一样。 但是,你感兴趣的特定属性是 DeviceInformation.Pairing.Custom 这将为你提供 DeviceInformationCustomPairing 对象。 所有 DeviceInformationCustomPairing.PairAsync 方法都需要包含 DevicePairingKinds 参数。 这表示用户为了尝试配对设备而需要执行的操作。 有关不同类型的以及用户需要执行的操作的详细信息,请参阅 DevicePairingKinds 参考页。 与基本配对一样,你需要 等待 结果,以便让应用有时间尝试完成配对操作。 将返回配对操作的结果,只要未返回任何错误,设备就会配对。

若要支持自定义配对,需要为 PairingRequested 事件创建处理程序。 此处理程序需要确保考虑到可能在自定义配对方案中使用的所有不同 DevicePairingKinds 。 要采取的相应操作将取决于 作为事件参数的一部分提供的 DevicePairingKinds

请务必注意,自定义配对始终是系统级操作。 因此,当你在桌面或 Windows Phone 上运行时,在配对时,系统对话框将始终向用户显示。 这是因为这两个平台都提供需要用户同意的用户体验。 由于该对话是自动生成的,因此当你在这些平台上运行时选择 DevicePairingKinds for ConfirmOnly 时,无需创建自己的对话。 对于其他 DevicePairingKinds,需要根据特定的 DevicePairingKinds 值执行一些特殊处理。 有关如何处理不同 DevicePairingKinds 值的自定义配对的示例,请参阅示例。

从 Windows 10 版本 1903 开始,支持新的 DevicePairingKinds,即 ProvidePasswordCredential。 此值意味着应用必须向用户请求用户名和密码才能通过配对设备进行身份验证。 若要处理这种情况,请调用 PairingRequested 事件处理程序的事件参数的 AcceptWithPasswordCredential 方法来接受配对。 传入将用户名和密码封装为参数的 PasswordCredential 对象。 请注意,远程设备的用户名和密码与本地登录用户的凭据不重复且通常不同。

取消配对

取消配对设备仅适用于上述基本或自定义配对方案。 如果使用自动配对,你的应用将不了解设备的配对状态,无需取消配对。 如果选择取消配对设备,则无论实现基本配对还是自定义配对,该过程都是相同的。 这是因为无需在取消配对过程中提供其他信息或进行交互。

取消配对设备的第一步是获取 要取消配对的设备的 DeviceInformation 对象。 然后,需要检索 DeviceInformation.Pairing 属性并调用 DeviceInformationPairing.UnpairAsync 就像配对一样,你想要 等待 结果。 将返回取消配对操作的结果,并且只要未返回任何错误,设备就会取消配对。

示例

有关工作示例,请参阅 GitHub 上的设备枚举和配对示例