Примеры ранжирования AltBeacon никогда не возвращают результат

Я в настоящее время работаю над android-приложением, которое обнаруживает поблизости маяки, я использую API AltBeacon, я попробовал измененную версию кода примера ранжирования, приведенного здесь .

Вот мой код

public class MainActivity extends Activity implements BeaconConsumer {

    protected static final String TAG = "RangingActivity";
    private BeaconManager beaconManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        BeaconManager.setsManifestCheckingDisabled(true);

        beaconManager = BeaconManager.getInstanceForApplication(this);

        beaconManager.getBeaconParsers().add(new BeaconParser().
                setBeaconLayout("m:3-4=0215,i:4-19,i:20-21,i:22-23,p:24-24"));

        beaconManager.bind(this);
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        beaconManager.unbind(this);
    }
    @Override
    public void onBeaconServiceConnect() {
        beaconManager.setRangeNotifier(new RangeNotifier() {
            @Override
            public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
                if (beacons.size() > 0) {
                    Log.i(TAG, "The first beacon I see is about "+beacons.iterator().next().getDistance()+" meters away.");
                }
            }
        });

        try {
            beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null));
        } catch (RemoteException e) {    }
    }
}

я добавил эту строку

BeaconManager.setsManifestCheckingDisabled(true);

потому что в противном случае приложение аварийно завершает работу при запуске. ref

и я добавил beaconParser для разбора моих маяков (iBeacon layout)

beaconManager.getBeaconParsers().add(new BeaconParser().
                setBeaconLayout("m:3-4=0215,i:4-19,i:20-21,i:22-23,p:24-24"));

Проблема в том, что я не могу получить никакого ответа в терминале logcat, это как если бы он не мог обнаружить мои маяки.

Я использую motorola Moto G (3-го поколения) с Android 6.0, и я дал необходимые разрешения

<uses-permission android_name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android_name="android.permission.BLUETOOTH"/>
<uses-permission android_name="android.permission.BLUETOOTH_ADMIN"/>

есть идеи, что может вызвать проблему ?

1 ответ

  1. Вы не можете обнаружить маяки до тех пор, пока у вас есть сбой «исправлен», поставив в строкуBeaconManager.setsManifestCheckingDisabled(true);, что линия является обходным путем для автоматических тестовых ситуаций, где фактические обнаружения маяка не нужны. Таким образом, вы должны удалить эту линию и решить сбой другим способом.

    При использовании Eclipse необходимо включить слияние манифестов (см. ту же ссылку, на которую вы указали выше), чтобы это работало. При использовании Android Studio или другой IDE, это может быть вопрос о том, как вы ссылаетесь на библиотеку. Если это так, пожалуйста, покажите, как вы связываете его с вашим проектом.