Как найти ближайший Eddystone Beacon с Nearby API? - PullRequest
0 голосов
/ 03 мая 2018

У меня есть это приложение для Android, которое обнаруживает маяки, используя близлежащий API. Я могу обнаружить все маяки, присутствующие в этом районе. Как я могу найти ближайший маяк в этой конкретной области? Есть ли какой-нибудь Google API, который может помочь?

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Предполагая, что мы говорим об API ближайших сообщений, существует MessageListener обратные вызовы, которые дают вам доступ к оценке уровня сигнала и расстояния обнаруженных маяков:

RSSI и дистанционные обратные вызовы

public void onBleSignalChanged(final Message message, final BleSignal bleSignal) {
  Log.i(TAG, "Message: " + message + " has new BLE signal information: " + bleSignal);
}

public void onDistanceChanged(final Message message, final Distance distance) {
  Log.i(TAG, "Distance changed, message: " + message + ", new distance: " + distance);
}

Вы подписываетесь на них так же, как подписываетесь на обратные вызовы onFound и onLost.

0 голосов
/ 03 мая 2018

Хотя API-интерфейс Nearby не дает никаких сведений о том, какой маяк находится ближе, для этой цели вы можете использовать Библиотека маяков Android . Он имеет Ranging API, который сообщает вам как примерное расстояние до каждого сканируемого маяка, так и RSSI (мощность сигнала) этого маяка. Вы можете просто отсортировать по всем видимым маякам, чтобы найти ближайший.

        public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
            for (Beacon beacon : beacons) {
                Log.i(TAG, "I see a beacon that is about "+beacon.getDistance()+" meters away.");        
            }
        }
...