我可以使用Play Services 9.2扫描iBeacons吗?

时间:2016-08-16 15:07:01

标签: android google-play-services google-nearby

在Google Play服务的9.2发行说明中,我发现了以下内容:

  

附近

     

此版本消除了客户端使用Proximity Beacon API管理其信标的要求。附近现在将直接返回已解析的BLE广告,允许客户使用他们自己的解决方案来解释这些广告。

这听起来对我来说,好像我应该能够使用Strategy.BLE_ONLY订阅附近的消息,并获取有关BLE信标(包括iBeacons)的信息,而无需"拥有" /注册信标vie Proximity Beacon API。

我理解正确吗?是否有人可以获得有助于实现此功能的示例或其他资源的有用链接?

2 个答案:

答案 0 :(得分:1)

使用includeIBeaconIds

的MessageFilter订阅

代码看起来像:

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 threadthis 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);
        }
    }
}