为啥我无法使用 C# 检测到蓝牙 Estimote 信标,但 Windows 操作系统可以找到它们?

Posted

技术标签:

【中文标题】为啥我无法使用 C# 检测到蓝牙 Estimote 信标,但 Windows 操作系统可以找到它们?【英文标题】:Why can't I detect the Bluetooth Estimote beacon using C# but the Windows OS can find them?为什么我无法使用 C# 检测到蓝牙 Estimote 信标,但 Windows 操作系统可以找到它们? 【发布时间】:2014-09-08 16:18:25 【问题描述】:

我最近拥有了几个Estimote devices,对目前还没有 Windows SDK 感到有点沮丧。所以我试着自己寻找设备,因为它们只是低功耗蓝牙设备。

我发现,我的 WPF 测试(使用精彩的 32feet.NET 或仅代码)和 Windows Phone 8.1 设备(设置屏幕和代码)都无法看到这些信标。

但它们可以在 Windows 8 的桌面操作系统设置屏幕下看到。当我在附近有 Estimote 并尝试检测蓝牙设备时,这是我在 Windows 8 下看到的:

有谁知道为什么 Windows 桌面操作系统能够看到它们,但我在 C#.NET 中发现的任何东西都无法检测到这些信标?有没有人有任何解决方法让我在 Windows Phone 下检测信标?我现在真的不需要和他们说话,只是想知道附近有哪个信标。

【问题讨论】:

我很确定您在 Windows 中运行的 .NET 应用程序无法扫描任何设备。因此,如果您要开发基于 BLE 的 Windows 应用程序,您只能在使用 Windows 中的蓝牙设置连接到远程设备时执行操作。我不知道你的 Windows Phone。如果您使用实体手机进行测试并且手机是否支持蓝牙 4.0,它应该能够发现设备 【参考方案1】:

我在自己搜索类似答案时发现了这一点。目前看来,Windows Store 8.1 和 Windows Phone 8.1 应用程序不支持蓝牙智能/BLE 设备的无配对特性,即顺便拿起它们,而不是必须手动与它们配对(不是你想要在被包围时做的事情)信标)。它们仅在您尝试手动配对时出现。

http://vincenth.net/blog/archive/2014/04/24/building-cross-platform-ibeacon-apps-for-ios-android-and-windows-with-c-and-xamarin.aspx 这个链接在这里确认: “Bluetooth Classic 和 Bluetooth Smart 设备必须首先通过 Windows 8.1 PC 设置 UI(PC & devices>Bluetooth)被发现并配对,然后才能通过 Windows Runtime APIs for Bluetooth 进行访问”

真令人沮丧。

【讨论】:

这也是我发现的,这实际上让我们放弃了 Windows Phone 作为我们客户项目之一的平台。微软以这种方式实施规范确实令人失望。【参考方案2】:

关于标题中的问题:WinBeacon 是一个托管的 C# 库,它能够检测 iBeacons,也可以充当信标。非常适合测试。

很遗憾,这仅适用于 Windows 操作系统,不适用于 Windows Phone 变体。

【讨论】:

遗憾的是,这取决于连接到 PC 的特定硬件。如果有办法使用PC原生蓝牙就好了 @fabriciorissetto 从 Windows 10 开始,您可以使用本机 BT 堆栈

以上是关于为啥我无法使用 C# 检测到蓝牙 Estimote 信标,但 Windows 操作系统可以找到它们?的主要内容,如果未能解决你的问题,请参考以下文章

Ionic 应用程序未在 iOS 上检测到 iBeacons (cordova-plugin-estimote)

为啥 C# 没有检测到 1970/1/1 在 BST 下?

ESTBeaconConnection 使 Estimote 信标无法被发现

为啥在 C# 的字符串中未检测到“空白”?

Estimote iBeacons 监控无法在 iOS 9.0.2 上运行

PC 无法发现 J2ME 蓝牙服务