如何在Unity3D HoloLens应用程序中检测BLE信标?

时间:2017-10-06 14:09:30

标签: c# unity3d bluetooth-lowenergy beacon hololens

我在Unity3D中构建了一个应用程序,它应该能够在Microsoft HoloLens上检测蓝牙低能耗信标。这是我用来完成这项工作的Unity C#脚本代码。

using UnityEngine;
using Windows.Devices.Bluetooth.Advertisement;

public class BeaconDetector : MonoBehaviour
{

    private BluetoothLEAdvertisementWatcher _watcher;

    void Start()
    {
        _watcher = new BluetoothLEAdvertisementWatcher();
        _watcher.Received += WatcherOnReceived;
        _watcher.Start();
    }

    //This method should be called when a beacon is detected
    void WatcherOnReceived(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs args)
    {
        //Just a simple check if this method is even called
        Debug.Log("Beacon detected!");
    }

}

该应用程序很好地构建并运行在HoloLens上,但是(即使等了几分钟后)我的调试日志中也没有得到所需的输出行。这对我来说意味着永远不会调用WatcherOnReceived()方法,最终意味着没有检测到信标

我使用了一些 Sensoro SmartBeacon-4AA ,可以传输iBeacon和Eddystone信号。

我现在已经尝试了几个星期,沿途做了几个教程,但我仍然无法弄清楚为什么这对我不起作用。

为了您的信息,我做了tutorial(以及其他),并且还遇到了Andreas Jakl的Universal Beacon Library。

1 个答案:

答案 0 :(得分:3)

毕竟这是一个许可问题。可以在Unity(预构建)和Visual Studio(构建后)中解决此问题。以下是两种解决方案:

解决方案A:在Unity中

  1. 前往编辑>项目设置>播放器即可。
  2. 检查器中,打开选项卡发布设置
  3. 功能部分下,确保蓝牙已启用
  4. enter image description here 单击.gif以展开

    解决方案B:在Visual Studio(2017)

    1. 解决方案资源管理器(Ctrl + Alt + L)中展开您的项目。
    2. 双击 Package.appxmanifest
    3. 转到功能标签。
    4. 再次确保蓝牙已启用
    5. enter image description here 单击.gif以展开

      这将使您的应用程序有权在HoloLens上使用蓝牙。