只能在尝试获得配对蓝牙设备时检索所有服务

本文关键字:检索 服务 | 更新日期: 2023-09-27 18:18:24

我正在编写一个带有SPP的Windows/Windows Phone 8.1蓝牙应用程序,最终用户需要选择要使用的配对蓝牙设备。

问题# 1:

我在试图获得与我的设备配对的蓝牙设备时遇到了麻烦。设备上只能获得所有服务。

注意:我使用的是Windows Phone 8.1设备蓝牙配对到Windows 7笔记本电脑

DeviceInformationCollection CollectionOfDeviceInfo;
PeerFinder.AlternateIdentities["Bluetooth:Paried"] = ""; 
//CollectionOfDeviceInfo = await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort)); 
CollectionOfDeviceInfo = await DeviceInformation.FindAllAsync();

FindAllAsync()给了我手机上的所有服务,包括配对的蓝牙和所有这些服务。

问题# 2:

我不知道我需要蓝牙为SPP提供哪些服务,如果我知道我需要蓝牙提供哪些服务,我就会从庞大的服务列表中过滤它。

我一直在看BluetoothRfcommChat和从MSDN的蓝牙通信样本,但它没有帮助。

只能在尝试获得配对蓝牙设备时检索所有服务

哈,我得到RfcommServiceId。SerialPort工作。需要添加

<Capabilities>
  <m2:DeviceCapability Name="bluetooth.rfcomm">
    <m2:Device Id="any">
      <m2:Function Type="name.serialPort"/>
    </m2:Device>
  </m2:DeviceCapability>
</Capabilities>

到我的包。appxmanifest(提示:右键点击->查看代码)

Then my line

CollectionOfDeviceInfo = await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort));

伟大的工作。

为了解决这个问题,我让BluetoothRfcommChat在Windows 8.1笔记本电脑和我的Windows Phone 8.1设备上工作。我确实需要在配对后重新启动笔记本电脑,并从启动栏运行应用程序,而不是从调试中运行。手机端我不需要重启,可以从调试中运行。