Я использую библиотеку altbeacon 2.15+, но для версии oreo и nougat не сканирует маяк? - PullRequest
0 голосов
/ 03 января 2019

Метод ServiceConnect onBeacon предназначен для обнаружения маяка. Для версии леденца на палочке обнаружение для нуги и маяка версии oreo не обнаруживает: public void onBeaconServiceConnect () {

    RangeNotifier rangeNotifier = new RangeNotifier() {
        @Override
        public void didRangeBeaconsInRegion(Collection<Beacon> beacons, org.altbeacon.beacon.Region region) {
            Log.d(TAG, "in didRangeBeaconsInRegion " + beacons.size());
            if (beacons.size() > 0) {
                Log.d(TAG, "didRangeBeaconsInRegion called with beacon count:  " + beacons.size());
                for (Iterator<Beacon> iterator = beacons.iterator();
                     iterator.hasNext(); ) {
                    Beacon beacon = iterator.next();

                    if (beaconlist.size() > 0) {
                        Log.d(TAG, "List Size :" + beaconlist.size());
                        for (int i = 0; i < beaconlist.size(); i++) {
                            Log.d("BeaconList ", beaconlist.get(i));
                        }
                    }

                    if (!beaconlist.contains(beacon.getId1().toString())) {
                        Log.d(TAG,"In get APi");
                        getApi(beacon.getId1().toString());
                        beaconlist.add(beacon.getId1().toString());
                        Log.d(TAG, "Notify in dead state");
                        Log.d("Notify in dead state", beacon.getId1().toString());
                    }
                }
            }
        }
    };
    try {
        Log.d(TAG, "I am in startRangingBeaconsInRegion");
        beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null));
        beaconManager.addRangeNotifier(rangeNotifier);
    } catch (RemoteException e) {
        e.printStackTrace();
    }
}

Это мой код, любой может дать решение этой проблемы.

1 Ответ

0 голосов
/ 03 января 2019

Две вещи для проверки:

  1. Вы добавили разрешение COARSE_LOCATION в свой AndroidManifest.xml и добавили код для успешного получения этого разрешения от пользователя динамически во время выполнения?

  2. Вы успешно сконструировали BeaconManager, вызвали bind (...) и подтвердили, что получили обратный вызов на onBeaconServiceConnect() перед началом ранжирования? Если вы этого не сделаете, вы получите RemoteException при попытке начать ранжирование. Хорошей идеей будет записать это исключение в LogCat с Log.e(TAG, "Not bound to beacon scanning service")

...