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

问题描述

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

解决方法

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

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.");
}
,

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

要使设备可被发现,应用程序需要调用 RfcommServiceProvider.StartAdvertising,并将 radioDicoverable 设置为 true。 RFCOMM 聊天示例在前台服务器中执行此操作,并且在前台服务器运行时可发现,但在后台服务器中无法发现,因此仅在后台服务器运行时无法发现。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...