在适用于 HoloLens2 的 UWP 应用程序中设置蓝牙可发现性

Set Bluetooth discoverability in UWP App for HoloLens2

我编写了一个在 HoloLens 2 上提供蓝牙 RFCOMM 服务的应用程序。在不使用设置应用程序的情况下,我能否使 HoloLens2 可被任何正在寻找该服务的设备发现?我不想强迫用户使用设置应用程序来配对设备。我一直无法找到任何可以让我使用自己的应用程序控制设备可发现性的东西。这在 UWP 中甚至可能吗?

您的 HoloLens 2 无需先配对即可被发现。您可以 运行 RFCOMM 聊天示例 (Bluetooth RFCOMM chat sample) 的客户端部分并查看是否枚举了您的 HoloLens 2 设备吗?

要使设备可被发现,应用需要调用 RfcommServiceProvider.StartAdvertising 并将 radioDicoverable 设置为 true。 RFCOMM 聊天示例在前台服务器中执行此操作,并且在 运行ning 时可被发现,但在后台服务器中不可见,因此仅在后台服务器 运行s.[=12= 时不可发现]

可以通过调用以下方式启动可发现模式:

rfcommServiceProvider.StartAdvertising(streamSocketListener, true);

可以在 Microsoft 提供的 RFCOMM 示例中找到一个工作示例。 Sample

完整代码:

var rfcommServiceProvider = await RfcommServiceProvider.CreateAsync(RfcommServiceId.FromUuid(Constants.RfcommServiceUuid));
//
//Initialize SDP Attributes here
//
var listener = new StreamSocketListener();
var rfcommID = rfcommServiceProvider.ServiceId.AsString();
await listener.BindServiceNameAsync(rfcommID, SocketProtectionLevel.BluetoothEncryptionAllowNullAuthentication);
try
{
    rfcommServiceProvider.StartAdvertising(listener, true);
    listener.ConnectionReceived += Listener_ConnectionReceived;
    Debug.WriteLine("Now Discoverable");
}
catch
{
    Debug.WriteLine("Failed to set Discoverability.");
}