为啥我无法使用 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)
ESTBeaconConnection 使 Estimote 信标无法被发现