在Google Play服务的9.2发行说明中,我发现了以下内容:
附近
此版本消除了客户端使用Proximity Beacon API管理其信标的要求。附近现在将直接返回已解析的BLE广告,允许客户使用他们自己的解决方案来解释这些广告。
这听起来对我来说,好像我应该能够使用Strategy.BLE_ONLY订阅附近的消息,并获取有关BLE信标(包括iBeacons)的信息,而无需"拥有" /注册信标vie Proximity Beacon API。
我理解正确吗?是否有人可以获得有助于实现此功能的示例或其他资源的有用链接?
答案 0 :(得分:1)
代码看起来像:
MessageFilter filter = new MessageFilter.Builder()
.includeIBeaconIds(MY_IBEACON_PROXIMITY_UUID, null, null)
.build();
SubscribeOptions options = new SubscribeOptions.Builder()
.setFilter(filter)
.setStrategy(Strategy.BLE_ONLY)
.build();
MessageListener listener = new MessageListener() {
@Override
public void onFound(Message message) {
IBeaconId beaconId = IBeaconId.from(message);
Log.i("Test", "Saw iBeacon " + beaconId);
}
};
Nearby.Messages.subscribe(apiClient, messageListener, options);
答案 1 :(得分:0)
是否有人可以获得有助于实施此功能的示例或其他资源的有用链接?
可以在此SO thread和this too中确认,从Android设备收听iBeacon。 您可以使用AltBeacon/android-beacon-library。
它允许Android设备使用信标,就像iOS设备一样。一个 当一个或多个信标出现时,应用可以请求获取通知 或消失。应用程序还可以请求从一个版本获取测距更新 或频率约为1Hz的信标。
不要忘记从Google文档中了解Getting Beacon Messages。
这是在前台订阅时的代码段:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
mMessageListener = new MessageListener() {
@Override
public void onFound(Message message) {
String messageAsString = new String(message.getContent());
Log.d(TAG, "Found message: " + messageAsString);
}
@Override
public void onLost(Message message) {
String messageAsString = new String(message.getContent());
Log.d(TAG, "Lost sight of message: " + messageAsString);
}
}
}