3

我有一些用于通过蓝牙 LE 进行通信的自定义信标。目前我正在执行 LE 扫描并检查任何找到的 BLE 设备的 MAC 地址是否是我的设备之一。

如果我的一个信标在范围内而不是我自己实现整个东西,我想使用 Google Awareness Fence API 来触发。但是,如果我想创建这样的AwarenessFence,我只能定义属性

  • 命名空间,
  • 类型

使用类型过滤器时:

final BeaconState.TypeFilter typeFilter = BeaconState.TypeFilter.with("abc", "def");
    final AwarenessFence beaconFence = BeaconFence.found(typeFilter);
    Awareness.FenceApi.updateFences(
            client,
            new FenceUpdateRequest.Builder()
                    .addFence(BEACON_FENCE, beaconFence, pi)
                    .build())
            .setResultCallback(new ResultCallback<Status>() {
                @Override
                public void onResult(@NonNull Status status) {
                    if (status.isSuccess()) {
                        Log.i(TAG, "Fence was successfully registered.");
                    } else {
                        Log.e(TAG, "Fence could not be registered: " + status);
                    }
                }
            });

问题:

  1. 命名空间和类型是什么意思?这些属性是否已赋予所有 BLE 设备,我可以从我的信标中以某种方式读取它们吗?或者这是否是 Eddystone 特有的?

  2. 我可以将 Awareness API 与我的信标的 MAC 地址一起使用吗?

4

1 回答 1

4

1)遇到同样的问题并解决了。

https://developers.google.com/beacons/proximity/attachments你会得到一个带有“namespaceType”字段的附件上下文。您所要做的就是将 FenceState.TypeFilter 的孔字符串从“命名空间/类型”拆分为“命名空间”和“类型”。命名空间应该是您在 GoogleDevConsole 中的项目 ID。

要设置您的信标,请从 GooglePlayStore 获取“信标工具”(Google Inc.)并找到您的信标,您可以在其中添加附件。


2)据我所知:触发栅栏时,您只会获得栅栏键。所以答案是否定的。但是您可以发出一个 getBeaconState() 请求,以查看哪些信标在您附近。

于 2016-07-22T10:17:34.163 回答