如何为蓝牙指定设备功能
Windows 10 注释,请参阅 Windows 10 中的 不同。
包清单是一个 XML 文档,其中包含系统部署、显示或更新 Windows 运行时应用应用所需的信息。 此信息包括包标识、包依赖项、所需功能、视觉元素和扩展点。 每个应用包都必须包含一个包清单。
有关包清单的详细信息,请参阅 如何手动创建包清单。
访问蓝牙设备的 Windows 运行时应用(通过 Rfcomm 或 Gatt API)必须在其清单的 功能 节点中包含特定的 DeviceCapability 数据。 此数据标识设备及其用途(或函数)。 请注意,某些设备可能具有多个功能。
设备 ID 元素对应于设备标识符。 此元素可以指定 供应商 ID(vid)和 产品 ID 的组合(pid):或者,它可以指定 制造商 和 模型的组合;或者,它可以指定泛型字符串(“any”)。 此外,如果 设备 ID 指定 供应商 ID(vid)和 产品 ID(pid),则它可能包含可选的提供程序字符串“usb”或“bluetooth”。
函数类型 元素指定设备函数。 此元素可以指定蓝牙 服务名称(名称)或 服务 ID(serviceId)。
蓝牙 DeviceCapability 用法
蓝牙应用必须在其 应用包清单中包含某些设备功能, 指定有关设备的密钥信息。 以下是分层顺序的必需元素:
<DeviceCapability>:名称 属性必须是“bluetooth.rfcomm”才能访问蓝牙 RFCOMM 设备或用于访问蓝牙 GATT 设备的“bluetooth.genericAttributeProfile”。
<设备>:ID 属性必须指定供应商/产品 ID 或制造商/型号,也可以是“any”,以允许访问与函数类型匹配的任何设备。
<函数>:类型 属性可以指定服务名称或服务 ID。
注意 无法在 Microsoft Visual Studio 中修改蓝牙设备功能。 必须在解决方案资源管理器 中右键单击 Package.appxmanifest 文件,然后选择 打开方式...,然后 XML(文本)编辑器。 该文件以纯 XML 打开。
定义 Rfcomm DeviceCapabilities
使用以下布局描述应用的蓝牙 RFCOMM 功能:
<m2:DeviceCapability Name="bluetooth.rfcomm">
<m2:Device Id="vidpid:xxxx xxxx bluetooth">
<m2:Function Type="serviceId:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"/>
<m2:Function Type="name:xxxxx"/>
</m2:Device>
<m2:/DeviceCapability>
定义 GenericAttributeProfile DeviceCapabilities
使用以下布局描述应用的蓝牙 GATT 功能:
<m2:DeviceCapability Name="bluetooth.genericAttributeProfile">
<m2:Device Id="model:xxxx;xxxx">
<m2:Function Type="serviceId:xxxxxxxx"/>
<m2:Function Type="name:xxxxx"/>
<m2:/Device>
<m2:/DeviceCapability>
如何指定 DeviceCapabilities 示例
以下条目演示了为蓝牙设备定义 DeviceCapabilities 的不同方法。
以下代码片段使用 供应商 ID 和 产品 ID 组合以及可选提供程序标识蓝牙 RFCOMM 设备的 DeviceCapabilities:
<m2:DeviceCapability Name="bluetooth.rfcomm">
<m2:Device Id="vidpid:0006 0001 bluetooth">
<m2:Function Type="name:obexObjectPush"/>
</m2:Device>
</m2:DeviceCapability>
或者,以下代码片段使用其完整 ID 标识蓝牙 RFCOMM 设备的 DeviceCapabilities。
<m2:DeviceCapability Name="bluetooth.rfcomm">
<m2:Device Id="any">
<m2:Function Type="name:AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE" />
</m2:Device>
</m2:DeviceCapability>
以下代码片段使用 制造商 和 型号 组合标识蓝牙 GATT 设备的 DeviceCapabilities:
<m2:DeviceCapability Name="bluetooth.genericAttributeProfile">
<m2:Device Id="any">
<m2:Function Type="name:heartRate" />
</m2:Device>
</m2:DeviceCapability>
支持蓝牙 RFCOMM 服务
通过 名称 值支持以下 RFCOMM 服务:
- name:serialPort
- name:obexObjectPush
- name:obexFileTransfer
- name:phoneBookAccessPce
- name:phoneBookAccessPse
- name:genericFileTransfer
不支持以下 RFCOMM 服务:
- 服务发现(0x1000)
- 浏览组描述符(0x1001)
- 使用 PPP 的 LAN 访问(0x1102)
- 耳机 (0x1108, 0x1112)
- 无绳电话(0x1109)
- 音频源(0x110A)和接收器(0x110B)
- Intercom (0x1110)
- 传真(0x1111)
- WAP (0x1113,0x1114)
- NAP (0x1116)
- GN (0x1117)
- HCR 打印(0x1126)和扫描(0x1127)
- 常见的 ISDN 访问(0x1128)
- SIM 访问(0x112D)
- 头戴显示设备 - HS (0x1131)
- GNSS 服务器 (0x1136)
- PnP 信息 (0x1200)
- 通用网络(0x1201)
- 通用音频(0x1203)
- 通用电话(0x1204)
- UPnP (0x1205,0x1206)
- ESDP UPnP IP(0x1300、0x1301、0x1302)
- 视频源(0x1303)和接收器(0x1304)
- HDP 源(0x1401)和接收器(0x1402)
支持蓝牙 GATT 服务
可通过 名称 值支持以下 GATT 服务:
- name:battery
- name:bloodPressure
- name:cyclingSpeedAndCadence
- name:genericAccess
- name:genericAttribute
- name:glucose
- name:healthThermometer
- name:heartRate
- name:runningSpeedAndCadence
不支持以下 GATT 服务:
- 人机接口设备(0x1812)