我正在尝试检测身边的信标,但使用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);
}
}
});
}
听众看起来像这样:
public interface OnDiscoveryListener {
public void onResult(Status status);
public void onEndpointFound(String endpointId, String deviceId, String serviceId, String endpointName);
public void onEndpointLost(String s);
}
但是我找不到任何东西
答案 0 :(得分:4)
我在Google上使用Nearby API。上面的代码片段使用了Nearby Connections API - 它实际上适用于不同的用例。要使用Eddystone,请使用Nearby Messages API。这里an example使用附近的消息来订阅信标的存在
请注意,您需要首先使用Proximity Beacon API将消息有效负载与信标关联。
答案 1 :(得分:2)
尽管Google宣传使用Nearby API来检测我们周围的信标:
适用于Android和iOS的附近API可让应用程序更轻松地查找附近设备和信标并与之通信
来源:http://android-developers.blogspot.be/2015/07/lighting-way-with-ble-beacons.html
我无法使用Nearby API来检测Eddystone信标。我将在研究过程中描述我收集的所有信息,希望这可能会节省一些人的时间。
我设置了与您相同的代码来检测Estimote信标,但我无法找到提供给Nearby.Connections.startDiscovery()
的服务ID以使其检测到我的信标(我尝试使用信标UUID和一些变种没有成功)。
我在Estimote的网站上发现,您需要更新信标固件才能将其配置为Eddystone信标:http://developer.estimote.com/eddystone/#configure-estimote-beacons-to-broadcast-eddystone。我不是这样做的。
然而,这并没有解决我的问题,我仍然无法使用Nearby API检测到信标。我尝试将其设置为Eddystone-UID和Eddystone-URL,并尝试了几种组合(基于Estimote应用程序提供的信息)作为服务ID失败。
更深入地了解Nearby API的文档显示,Google在其附近的API文档(https://developers.google.com/nearby/connections/overview)中没有提及有关信标和Eddystone的任何内容,而Google的信标样本根本没有使用Nearby API: https://github.com/google/beacon-platform/tree/master/samples/android
然而,他们确实提到附近消息将允许丰富的互动,例如“协作编辑,组建团队,投票,<强>或广播资源”,并即将推出:
即将推出:Google Play服务7.8中将提供Nearby Messages API。当新版本可用时,将使用完整的API文档更新此站点。
我的理解是,由于信标正在广播资源,因此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
答案 2 :(得分:0)
这可能听起来很奇怪 - 但试着打开和关闭wifi。很多便宜的设备都非常糟糕,蓝牙无法连接,但出于某种原因关闭和关闭wifi已经有一段时间了。
我遇到了类似的问题 - 我的代码中的所有内容都是正确的但未检测到信标。我甚至试过制造商应用程序,他们也无法检测到信标(但他们的iPhone版本确实如此)。我关闭了我的wifi,然后重新开启,制造商应用程序也工作了,我的也是如此。
答案 3 :(得分:0)
是的,您可以使用Nearby API发现Eddystone信标。但是要检测信标,你必须使用Nearby Messages API
而不是Nearby Connections API
,正如@Andrew Bunner所提到的那样。
为了能够使用NearbyMessagesAPI
检测信标,您还必须首先使用Google注册信标,然后将其配置为与其关联的消息有效负载。
您可以在我发布的blog post或此other answer中找到所有步骤。