Android 在安卓系统中,是否可以在后台使用谷歌附近的消息发布消息?

Android 在安卓系统中,是否可以在后台使用谷歌附近的消息发布消息?,android,google-nearby,Android,Google Nearby,我正在开发一个应用程序,它使用Google Nearest messages API发布消息和订阅。文档中说因为Nearest messages API可能会影响电池寿命,所以只能在前台活动中使用(BLE background subscribe除外)。 但这仍然可能吗 使用什么策略来实现最大距离 Thx.回答您的问题 样品 谷歌解决方案 下面的代码片段演示如何处理BeaconMessageReceiver类中的意图 @Override public void onReceive(Context

我正在开发一个应用程序,它使用Google Nearest messages API发布消息和订阅。文档中说因为Nearest messages API可能会影响电池寿命,所以只能在前台活动中使用(BLE background subscribe除外)。

但这仍然可能吗

使用什么策略来实现最大距离

Thx.

回答您的问题

样品

谷歌解决方案 下面的代码片段演示如何处理BeaconMessageReceiver类中的意图

@Override
public void onReceive(Context context, Intent intent) {
    Nearby.getMessagesClient(context).handleIntent(intent, new MessageListener() {
        @Override
        public void onFound(Message message) {
            Log.i(TAG, "Found message via PendingIntent: " + message);
        }

        @Override
        public void onLost(Message message) {
            Log.i(TAG, "Lost message via PendingIntent: " + message);
        }
    });
}
当不再需要订阅时,您的应用程序应通过调用附近的.getMessagesClient(活动).unsubscribe(挂起内容)来取消订阅

使用BLE的解决方案 发表
@Override
public void onReceive(Context context, Intent intent) {
    Nearby.getMessagesClient(context).handleIntent(intent, new MessageListener() {
        @Override
        public void onFound(Message message) {
            Log.i(TAG, "Found message via PendingIntent: " + message);
        }

        @Override
        public void onLost(Message message) {
            Log.i(TAG, "Lost message via PendingIntent: " + message);
        }
    });
}
SubscribeOptions.Builder builder = new SubscribeOptions.Builder();

if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
    builder.setStrategy(Strategy.BLE_ONLY);
} else {
    builder.setStrategy(new Strategy.Builder().setDistanceType(Strategy.DISTANCE_TYPE_EARSHOT).build());
    Toast.makeText(this, "BLE NOT SUPPORTED", Toast.LENGTH_SHORT).show();
}

mOptions = builder.build();
Strategy s = new Strategy.Builder()
                    .setDistanceType(Strategy.DISTANCE_TYPE_EARSHOT)
                    .build();
PublishOptions options = new PublishOptions.Builder()
                                .setStrategy(s)
                                .build();
Nerby.getMessagesClient(this).publish(mMessageName, options);