MessageListener.onDistanceChanged не вызывается

#android #google-nearby

#Android #google-поблизости

Вопрос:

Я публикую и подписываюсь на сообщения с помощью Google Поблизости и получаю onFound и onLost должным образом, но не получаю никаких обратных вызовов на onDistanceChanged или onBleSignalChanged. Я знаю, что изменение сигнала BLE основано на использовании BLE для обнаружения, но существует ли аналогичное ограничение для onDistanceChanged? В документах, похоже, не указано, что есть. Вот мой прослушиватель сообщений ниже, спасибо за любые предложения!

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

        @Override
        public void onDistanceChanged(Message message, Distance distance) {
            super.onDistanceChanged(message, distance);
            Log.d(TAG, "New distance " distance.getMeters() " to message: "   new String(message.getContent()));
        }

        @Override
        public void onBleSignalChanged(Message message, BleSignal bleSignal) {
            super.onBleSignalChanged(message, bleSignal);
            Log.d(TAG, "New ble signal "   bleSignal.getRssi()   " to message: "   new String(message.getContent()));
        }

    };
  

Ответ №1:

Есть две причины, по которым вы можете не получить этот обратный вызов:

  1. К сожалению, обратный вызов на расстоянии в настоящее время работает только для сообщений BLE beacon. Мы исправили это в документах, но они не будут обновляться в Интернете до следующего выпуска Google Play Services SDK (через пару недель). Мы надеемся заставить его работать для большего количества сообщений в будущем.
  2. Обратные вызовы сигнала BLE и расстояния не вызываются для PendingIntent версии subscribe().

Комментарии:

1. Я не уверен точно, как определить, какой метод используется для обнаружения близлежащих устройств, но я определенно не использую BLE-маяк, поэтому я предполагаю, что это проблема. Просто примечание, но мне бы хотелось, чтобы способ общения был только с устройствами, находящимися в непосредственной близости. Похоже, что Google Поблизости предназначен для сопряжения с близлежащими устройствами, но затем сопряжение сохраняется, даже если расстояние между ними увеличивается, так что они больше не находятся поблизости.