使用Android Nearby API检测Beacon(Eddystone)

Tsu*_*aze 5 java android

我正试图检测我周围的信标,但使用Nearby API,我似乎无法找到它们.

我正在使用此方法来检测附近的设备:

public void startDiscovery(String serviceId, final OnDiscoveryListener l) {

    Nearby.Connections.startDiscovery(googleApiClient, serviceId, Connections.DURATION_INDEFINITE, new Connections.EndpointDiscoveryListener() {
        @Override
        public void onEndpointFound(String endpointId, String deviceId, String serviceId, String endpointName) {
            if (l != null) {
                l.onEndpointFound(endpointId, deviceId, serviceId, endpointName);
            }

        }

        @Override
        public void onEndpointLost(String s) {
            if (l != null) {
                l.onEndpointLost(s);
            }
        }
    })
            .setResultCallback(new ResultCallback<Status>() {
                @Override
                public void onResult(Status status) {
                    if (l != null) {
                        l.onResult(status);
                    }
                }
            });
}
Run Code Online (Sandbox Code Playgroud)

听众看起来像这样:

public interface OnDiscoveryListener {
    public void onResult(Status status);

    public void onEndpointFound(String endpointId, String deviceId, String serviceId, String endpointName);

    public void onEndpointLost(String s);
}
Run Code Online (Sandbox Code Playgroud)

但我无法发现任何东西

Ben*_* M. 2

尽管 Google 宣传使用 Nearby API 来检测我们周围的信标:

适用于 Android 和 iOS 的 Nearby API 使应用程序可以更轻松地查找附近的设备和信标并与之通信

来源:http ://android-developers.blogspot.be/2015/07/lighting-way-with-ble-beacons.html

我无法使用附近的 API 来检测 Eddystone 信标。我将在下面描述我在研究过程中收集的所有信息,希望这可以节省一些人的时间。

我设置了与您检测 Estimote 信标相同的代码,但我无法找到要提供的服务 ID 来使其Nearby.Connections.startDiscovery()检测我的信标(我尝试使用信标 UUID 和一些变体,但没有成功)。

我在 Estimote 的网站上发现,您需要更新信标固件才能将其配置为 Eddystone 信标:http://developer.estimote.com/eddystone/#configure-estimote-beacons-to-broadcast-eddystone。我的不是,所以我就这么做了。

尽管如此,这并没有解决我的问题,我仍然无法使用附近的 API 检测到信标。我尝试将其设置为 Eddystone-UID 和 Eddystone-URL,并尝试了多种组合(基于 Estimote 应用程序提供的信息)作为服务 ID,但均未成功。

更深入地研究附近 API 的文档表明,Google 在其附近 API 文档 ( https://developers.google.com/nearby/connections/overview ) 中没有提及任何有关信标或 Eddystone 的内容,并且 Google 关于信标的示例也没有提及。完全使用附近的API:https ://github.com/google/beacon-platform/tree/master/samples/android

然而,他们确实提到“附近的消息”将允许丰富的交互,例如“协作编辑、组建小组、投票或广播资源”,并且即将推出:

即将推出:Nearby Messages API 将在 Google Play 服务 7.8 中提供。当新版本可用时,本网站将使用完整的 API 文档进行更新。

来源: https: //developers.google.com/nearby/

我的理解是,Google Play Services 7.8 将提供对信标的支持,因为信标是广播资源。

同时,如果您仍然希望能够检测周围的 Eddystone 信标,您可以使用 Estimote 的 Android SDK: https: //github.com/estimote/android-sdk#quick-start-for-eddystone 或实现相同的代码为 Google 的 Beacon Proximity 示例: https ://github.com/google/beacon-platform/tree/master/samples/android

  • 它是实时的:https://developers.google.com/nearby/messages/android/get-beacon-messages (2认同)