Сейчас я использую это репозиторий, который использует эту библиотеку для сканирования Bluetooth на Android. Вот метод сканирования здесь. В настоящее время он не собирает мои IBeacons, и в репозитории объясняется, почему это так, однако я не уверен, где отсюда, в этом методе, найти go и как заставить его сканировать мои маяки.
public static void startScanning() {
if (isScanning()) {
return;
}
final BluetoothClient instance = getInstance();
Log.d(TAG, "Starting to scan for beacons");
ScanSettings scanSettings = new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.setCallbackType(ScanSettings.CALLBACK_TYPE_ALL_MATCHES)
.build();
instance.scanningSubscription = instance.rxBleClient.scanBleDevices(scanSettings)
.subscribe(new Observer<ScanResult>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
Log.e(TAG, "Bluetooth scanning error", e);
}
@Override
public void onNext(ScanResult scanResult) {
instance.processScanResult(scanResult);
}
});
}
Это модификации, которые я сделал в этом методе.
ScanSettings scanSettings = new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.setCallbackType(ScanSettings.CALLBACK_TYPE_ALL_MATCHES)
.build();
ScanFilter scanFilter = new ScanFilter.Builder()
.setServiceUuid(UUID).build();
instance.scanningSubscription = instance.rxBleClient.scanBleDevices(scanSettings, scanFilter)
.subscribe(new Observer<ScanResult>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
Log.e(TAG, "Bluetooth scanning error", e);
}
@Override
public void onNext(ScanResult scanResult) {
instance.processScanResult(scanResult);
}
});
Как видите, я добавил ScanFilter, чтобы он мог найти UUID для моих IBeacons и получить от них рекламные данные (которые я затем отправляю методу результатов сканирования процесса). Но эта реализация не работает, так как не позволяет мне напрямую фильтровать UUID.
Я не уверен, что то, что я здесь делаю, правильно. Я прочитал файл readme для репозитория библиотеки RxAndroidBle, но go на нем не так много, и я не могу получить приложение для поиска моих спецификаций c Beacons. У меня есть 4 IBeacon, которые установлены вокруг моего дома, каждый Ibeacon, который у меня есть, имеет UUID «EBEFD083-70A2-47C8-9837-E7B5634DF524».
Как я могу заставить этот метод правильно сканировать этот конкретный c UUID или просто обернуть API IBeacon, чтобы я мог получить необходимые рекламные данные в соответствии с намерениями репо? Я не на 100% уверен, что делаю это правильно, но думаю, что у меня есть правильная идея, любая помощь будет оценена, спасибо :)