1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fszeng-easyble-x

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 6.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 08:30 d08933b

Инициализация 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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/fszeng-easyble-x.git
git@api.gitlife.ru:oschina-mirror/fszeng-easyble-x.git
oschina-mirror
fszeng-easyble-x
fszeng-easyble-x
master