Слияние кода завершено, страница обновится автоматически
Инициализация EasyBLE
.setScanConfiguration(scanConfig)
.setScannerType(ScannerType.LE)
.setExecutorService(executorService)
.setDeviceCreator(creator)
.setObserveAnnotationRequired(false)
.setMethodDefaultThreadMode(ThreadMode.MAIN)
.build();
ble.initialize(this);```
**Уничтожение SDK**
Если необходимо изменить конфигурацию и повторно инициализировать, вызовите этот метод для повторного создания экземпляра EasyBLE:
```EasyBLE.getInstance().destroy();```
**Управление выводом логов**
Включите вывод логов:
```EasyBLE.getInstance().setLogEnabled(true);```
**Поиск Bluetooth-устройств**
1. Определите слушателя поиска:
- Для поиска на Android 6.0 и выше требуется как минимум разрешение на приблизительное местоположение, а если targetSdkVersion установлен на 29 или выше, требуется точное местоположение. Разрешение должно быть запрошено динамически.
```private ScanListener scanListener = new ScanListener() {
@Override
public void onScanStart() {
// Начало поиска
}
@Override
public void onScanStop() {
// Окончание поиска
}
/**
* Обнаружено Bluetooth-устройство
*
* @param device Обнаруженное устройство
* @param isConnectedBySys Устройство уже подключено системой Bluetooth
*/
@Override
public void onScanResult(@NonNull Device device, boolean isConnectedBySys) {
// Результат поиска
}
@Override
public void onScanError(int errorCode, @NotNull String errorMsg) {
switch (errorCode) {
case ScanListener.ERROR_LACK_LOCATION_PERMISSION: // Отсутствие разрешения на определение местоположения
break;
case ScanListener.ERROR_LOCATION_SERVICE_CLOSED: // Местоположение не включено
break;
case ScanListener.ERROR_LACK_SCAN_PERMISSION://targetSdkVersion больше или равно Android12, отсутствует разрешение на поиск (обнаружение соседних устройств)
break;
case ScanListener.ERROR_LACK_CONNECT_PERMISSION://targetSdkVersion больше или равно Android12, отсутствует разрешение на подключение
break;
case ScanListener.ERROR_SCAN_FAILED: // Поиск не удался
break;
}
}
};```
2. Добавьте слушателя:
```EasyBLE.getInstance().addScanListener(scanListener);```
3. Начните поиск:
```EasyBLE.getInstance().startScan();```
4. Остановите поиск:
```EasyBLE.getInstance().stopScan();```
5. Удалите слушателя:
```EasyBLE.getInstance().removeScanListener(scanListener);```
**Наблюдение за данными и событиями в режиме наблюдателя**
1. Создайте наблюдателя. Просто реализуйте интерфейс EventObserver:
```public class MainActivity extends AppCompatActivity implements EventObserver {
/**
* Используйте {@link Observe}, чтобы определить, какие сообщения вы хотите получать, {@link RunOn} для выполнения метода в основном потоке и {@link Tag} для предотвращения конфликтов при поиске методов
*/
@Tag("onConnectionStateChanged")
@Observe
@RunOn(ThreadMode.MAIN)
@Override
public void onConnectionStateChanged(@NonNull Device device) {
switch (device.getConnectionState()) {
case SCANNING_FOR_RECONNECTION:
break;
case CONNECTING:
break;
case DISCONNECTED:
break;
case SERVICE_DISCOVERED:
break;
}
}
/**
* Используйте {@link Observe} для определения сообщений, которые вы хотите получить, и метод будет выполняться в потоке, указанном в {@link EasyBLEBuilder#setMethodDefaultThreadMode(ThreadMode)}
*/
@Observe
@Override
public void onNotificationChanged(@NonNull Request request, boolean isEnabled) {
if (request.getType() == RequestType.SET_NOTIFICATION) {
if (isEnabled) {
Log.d("EasyBLE", "Уведомление включено");
} else {
Log.d("EasyBLE", "Уведомление отключено");
}
} else {
if (isEnabled) {
Log.d("EasyBLE", "Indication включено");
} else {
Log.d("EasyBLE", "Indication отключено");
}
}
}
/**
* Если {@link EasyBLEBuilder#setObserveAnnotationRequired(boolean)} установлено в false, вы будете получать сообщения независимо от того, используете ли вы аннотацию {@link Observe}. По умолчанию используется значение false, и методы выполняются в потоке, заданном в {@link EasyBLEBuilder#setMethodDefaultThreadMode(ThreadMode)}.
*/
@Override
public void ...
}```
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )