如何为蓝牙指定设备功能
注意有关 Windows 10,请参阅Windows 10 的不同之处。
包清单是一个 XML 文档,其中包含系统部署、显示或更新 Windows 运行时应用应用程序所需的信息。 此信息包括包标识、包依赖项、所需功能、可视元素和扩展点。 每个应用包都必须包含一个包清单。
有关包清单的详细信息,请参阅 如何手动创建包清单。
通过 Rfcomm 或 Gatt api 访问 (蓝牙设备的 Windows 运行时应用) 必须在其清单的 "功能" 节点中包含特定DeviceCapability数据。 此数据标识设备及其目的 (或函数) 。 请注意,某些设备可能有多个功能。
设备 Id元素对应于设备标识符。 此元素可以指定 (vid) 和产品 Id的组合供应商 id (pid) ;或者,它可能指定制造商和型号的组合;或者,它可以指定泛型字符串 ( "any" ) 。 此外,如果 设备 id 指定 供应商 id (vid) 和产品 (Id) ,则它可能包含可选的提供程序字符串 "usb" 或 "蓝牙"。
函数 Type元素指定设备函数。 此元素可以指定蓝牙服务名称 (名称) 或 (serviceId) 的服务 Id 。
蓝牙 DeviceCapability 用法
蓝牙应用必须在其应用程序包清单中包含某些设备功能,以指定有关设备的关键信息。 下面是按层次顺序排列的必需元素:
< DeviceCapability >: Name属性必须是 "rfcomm",以便访问蓝牙 rfcomm 设备,或使用 "" 访问蓝牙 GATT 设备。
< 设备 >: Id属性必须指定供应商/产品 Id 或制造商/型号,或者可以为 "任何",以允许访问与该功能类型匹配的任何设备。
< 函数 >: Type特性可以指定服务名称或服务 Id。
注意无法在 Microsoft Visual Studio 中修改蓝牙设备功能。 必须右键单击解决方案资源管理器中的 appxmanifest.xml 文件,然后选择 "打开方式 ...",然后选择 " 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>
定义 Bluetooth.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
- 名称: obexObjectPush
- 名称: obexFileTransfer
- 名称: phoneBookAccessPce
- 名称: phoneBookAccessPse
- 名称: genericFileTransfer
不支持以下 RFCOMM 服务:
- 服务发现 (0x1000)
- 浏览组描述符 (0x1001)
- 使用 PPP (0x1102 的 LAN 访问)
- (0x1103) 的拨号网络
- 耳机 (0x1108,0x1112)
- 无线电话 (0x1109)
- 音频源 (0x110A) 和接收器 (0x110B)
- A/V Remote Control (0x110C,0x110E,0x110F)
- 对讲机 (0x1110)
- 传真 (0x1111)
- WAP (0x1113,0x1114)
- PANU (0x1115)
- NAP (0x1116)
- GN (0x1117)
- Handsfree (0x111E,0x111F)
- 人体学接口设备 (0x1124)
- HCR 打印 (0x1126) 和扫描 (0x1127)
- 常见 ISDN 访问 (0x1128)
- SIM 访问 (0x112D)
- 耳机– HS (0x1131)
- GNSS Server (0x1136)
- PnP 信息 (0x1200)
- 通用网络 (0x1201)
- 一般音频 (0x1203)
- 通用电话 (0x1204)
- UPnP (0x1205,0x1206)
- ESDP UPnP IP (0x1300、0x1301、0x1302)
- 视频源 (0x1303) 和接收器 (0x1304)
- 视频分发 (0x1305)
- HDP Source (0x1401) 和接收器 (0x1402)
支持蓝牙 GATT 服务
以下 GATT 服务是通过 name 值支持的:
- 名称:电池
- 名称: bloodPressure
- 名称: cyclingSpeedAndCadence
- 名称: genericAccess
- 名称: genericAttribute
- 名称:血糖
- 名称: healthThermometer
- 名称: heartRate
- 名称: runningSpeedAndCadence
不支持以下 GATT 服务:
- 人体学接口设备 (0x1812)
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈