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

在HoloLens2的UWP应用程序中设置蓝牙可发现性,uwp,bluetooth,hololens,rfcomm,Uwp,Bluetooth,Hololens,Rfcomm,我写了一个应用程序,在Hololens2上提供蓝牙RFCOMM服务。在不使用设置应用程序的情况下,我是否可以使HoloLens2对任何寻找该服务的设备都可发现?我不想强迫用户使用设置应用程序来配对设备。我一直无法找到任何可以让我使用自己的应用程序控制设备可发现性的东西。这在UWP中是可能的吗?您的全息透镜2应该是可以发现的,而无需首先配对。您能否运行RFCOMM聊天示例()的客户端部分,并查看是否已枚举HoloLens 2设备 要使设备可发现,应用程序需要在radioDicoverable设置为

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

您的全息透镜2应该是可以发现的,而无需首先配对。您能否运行RFCOMM聊天示例()的客户端部分,并查看是否已枚举HoloLens 2设备


要使设备可发现,应用程序需要在radioDicoverable设置为true的情况下调用。RFCOMM聊天示例在前台服务器中执行此操作,并且在前台服务器运行时可发现,但在后台服务器中不可发现,因此仅在后台服务器运行时不可发现。

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

rfcommServiceProvider.StartAdvertising(streamSocketListener, true);
可以在Microsoft提供的RFCOMM示例中找到一个工作示例

完整代码:

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

我刚刚尝试了RFCOMM聊天示例。仅当全息透镜设置应用程序打开时,才会枚举全息透镜2。如果HoloLens上未打开设置应用程序,则即使使用Arya Ding提供的代码打开蓝牙,也找不到该应用程序。我不完全确定样本中应该包含什么,因为这似乎是一个基本问题。可通过以下方式进行测试:-打开全息透镜蓝牙。-关闭全息镜头设置应用程序。-确保设备尚未配对。-试着用另一台设备找到HoloLens。嗨,Chris,我最初经历了与你描述的相同的行为,所以我与蓝牙开发人员进行了讨论。他们说,调用RfcommServiceProvider.startAvertising并将radioDicoverable设置为true是使设备可发现所需的全部。这正是设置中的设备页面所做的。我再次查看了RfComm聊天示例,发现只有前台聊天服务器调用StartAvertising。显然,我只是在测试后台聊天服务器,因为前台聊天服务器可以工作。你好,卡洛斯,谢谢你深入了解这个问题。后台服务器也有这样做的方法吗?嗨,克里斯,为了让设备可以被发现,你仍然需要调用RfcommServiceProvider.StartAdvertising。