PeerFinder.SupportedDiscoveryTypes在WinRT蓝牙应用程序中不返回任何值

本文关键字:返回 任何值 应用程序 SupportedDiscoveryTypes WinRT PeerFinder | 更新日期: 2023-09-27 18:22:20

我正在尝试通过蓝牙在我的Windows应用商店应用程序和我的Windows Phone之间建立连接。我正在使用MSDN蓝牙示例之一。

然而,当我运行该应用程序时,我收到一条错误消息,上面写着"不支持浏览同行"。所以我甚至无法对配对的蓝牙设备进行扫描。我在代码中找到了这个:

    public PeerFinderScenario()
    {
        this.InitializeComponent();
        this.Loaded += OnLoaded;
        _socketHelper.RaiseSocketErrorEvent += SocketErrorHandler;
        _socketHelper.RaiseMessageEvent += MessageHandler;
        // Scenario 1 init
        _triggeredConnectSupported = (PeerFinder.SupportedDiscoveryTypes & PeerDiscoveryTypes.Triggered) ==
                                     PeerDiscoveryTypes.Triggered;
        _browseConnectSupported = (PeerFinder.SupportedDiscoveryTypes & PeerDiscoveryTypes.Browse) ==
                                  PeerDiscoveryTypes.Browse;
        Window.Current.SizeChanged += Current_SizeChanged;
    }

在进行此初始化调用的运行时,由于PeerFinder对象返回的内容,_browseConnectSupported被设置为FALSE。具体来说,PeerFinder.SupportedDiscoveryTypes等于"无"。为什么会发生这种情况?我需要做些什么才能在SupportedDiscoveryTypes中获得正确的值?这是舱单问题吗?PC范围内的蓝牙设置问题?

我确实有一个功能正常的蓝牙加密狗。我知道这一点是因为我能够正确地与我的Windows Phone配对。此外,在我的清单功能部分,我请求了"InternetClientServer"answers"近程"功能,并添加了蓝牙串行端口的声明:

<Capabilities>
  <Capability Name="internetClientServer" />
  <DeviceCapability Name="proximity" />
  <!-- Added Bluetooth serial port capability manually -->
  <m2:DeviceCapability Name="bluetooth.rfcomm">
    <m2:Device Id="any">
      <m2:Function Type="name:serialPort" />
    </m2:Device>
  </m2:DeviceCapability>
</Capabilities>

PeerFinder.SupportedDiscoveryTypes在WinRT蓝牙应用程序中不返回任何值

使用WinRt(Phone 8.1和Windows 8.1)和蓝牙时可能会很棘手,因为您需要手动添加功能。将此添加到8.1应用程序的AppManifest:

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

在手机上,如果你使用8.0,你只需要勾选"近程和网络"。

此外,请注意,这两个BT设备必须之前已配对,否则将无法被发现。