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

OSCHINA-MIRROR/HarmonyOS-tpc-FastBle

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

FastBle

Ohos Bluetooth Low Energy — быстрый фреймворк для разработки на Bluetooth.

OpenHarmony OS позволяет легко выполнять поиск, подключение, чтение и запись данных по Bluetooth, а также получать обратную связь в реальном времени.

Preview

Usage

Скачайте DevEco studio 2.0+ и SDK Native версии 2.0+.

Способ 1: интегрируйте в entry Gradle:

  • Если используете har, поместите har в libs.
  • Измените implementation fileTree(dir: 'libs', include: ['.jar','.har']) и добавьте *.har.

Способ 2:

allprojects{
    repositories{
        mavenCentral()
    }
}
implementation 'io.openharmony.tpc.thirdlib:fastblelib:1.0.4'
  • Инициализация и создание объекта операции: Все последующие методы используют созданный объект BleManager.
          BleManager.getInstance().init(this);
          BleManager.getInstance()
                  .enableLog(true)
                  .setReConnectCount(1, 5000)
                  .setConnectOverTime(20000)
                  .setOperateTimeout(5000);
  • Проверка поддержки BLE на текущем устройстве:
boolean isSupportBle()
  • Включение или отключение Bluetooth:
void enableBluetooth()
void disableBluetooth()
  • Просмотр текущего состояния Bluetooth или состояния подключения:
boolean isBlueEnable()
boolean isInScanning()
boolean isConnectingOrConnected()
boolean isConnected()
boolean isServiceDiscovered()
  • Печать информации об исключениях:
void handleException(BleException exception)

Пример использования:

bleManager.handleException(exception);
  • ListScanCallback (long timeoutMillis): Обычный обратный вызов сканирования.

Параметры:

  • long timeoutMillis: время сканирования в текущей сессии.
  • void onScanning (ScanResult result): текущий статус сканирования и обнаружение внешнего устройства.
  • void onScanComplete (ScanResult[] results): завершение сканирования по истечении времени или при ручном прерывании.

Возвращаемые значения:

  • ScanResult: объект с результатами сканирования.
  • BluetoothDevice getDevice(): объект устройства Bluetooth.
  • byte[] getScanRecord(): широковещательные данные.
  • int getRssi(): уровень сигнала.
  • BleGattCallback: Обратный вызов сканирования и подключения.

Методы:

  • void onFoundDevice (ScanResult scanResult): обнаружение устройства.
  • void onConnecting (BluetoothGatt gatt, int status): текущее состояние подключения.
  • void onConnectError (BleException exception): ошибка подключения, причина определяется анализом BleException.
  • void onConnectSuccess (BluetoothGatt gatt, int status): успешное подключение.
  • void onServicesDiscovered (BluetoothGatt gatt, int status): обнаруженные сервисы.
  • void onDisConnected (BluetoothGatt gatt, int status, BleException exception): разрыв соединения после успешного подключения.
  • BleCharacterCallback: Обратный вызов операций с характеристиками.

Методы:

  • void onSuccess (BluetoothGattCharacteristic characteristic): передача данных успешно завершена.
  • void onFailure (BleException exception): сбой операции или передачи данных.
  • void onInitiatedResult (boolean result): результат операции.
  • BleRssiCallback: Обратный вызов операции чтения RSSI.

Методы:

  • void onSuccess (int rssi): получение данных RSSI успешно завершено.
  • void onFailure (BleException exception): сбой операции или передачи данных.
  • void onInitiatedResult (boolean result): результат операции.
  • BleException: Содержит информацию об исключении.

Свойства:

  • int getCode(): код исключения.
  • String getDescription(): описание исключения.

Коды исключений:

  • 100: тайм-аут.
  • 101: исключение подключения.
  • 102: другое (дополнительную информацию можно получить из описания исключения, обычно это ошибки в промежуточных шагах процесса разработки).
  • 103: устройство не найдено.
  • 104: Bluetooth не включен.
  • 105: ошибка запуска сканирования.
  • Сканирование всех устройств: Можно получить массив объектов устройств Bluetooth в окружении.

Метод:

boolean scanDevice(ListScanCallback callback)

Возвращает значение, указывающее на успешность операции сканирования, результаты сканирования отображаются в обратном вызове ListScanCallback.

Пример использования:

bleManager.scanDevice(new ListScanCallback(TIME_OUT) {
            @Override
            public void onScanning(ScanResult result) {

            }

            @Override
            public void onScanComplete(ScanResult[] results) {

            }
        });
  • Подключение к устройству: После поиска устройств в окружении можно выбрать одно из них и подключиться.

Метод:

void connectDevice(ScanResult scanResult,
``` **Подключение к устройству**

boolean autoConnect,
BleGattCallback callback) {
bleManager.connectDevice(scanResult, true, new BleGattCallback() {
    @Override
    public void onConnecting(BluetoothGatt gatt, int status) {

    }

    @Override
    public void onConnectError(BleException exception) {

    }

    @Override
    public void onConnectSuccess(BluetoothGatt gatt, int status) {

    }

    @Override
    public void onServicesDiscovered(BluetoothGatt gatt, int status) {

    }

    @Override
    public void onDisConnected(BluetoothGatt gatt, int status, BleException exception) {

    }});

**Остановка сканирования**

void cancelScan() {
bleManager.cancelScan();
}

**Подписка на уведомления notify**

boolean notify(String uuid_service,
String uuid_notify,
BleCharacterCallback callback) {
Возвращаемое значение указывает на успешность операции notify. Значение BleCharacterCallback() в onInitiatedResult также указывает на успех текущей операции. Функции совпадают, что удобно для разных сценариев использования.
bleManager.notify(
UUID_SERVICE,
UUID_NOTIFY,
new BleCharacterCallback() {
@Override
public void onSuccess(BluetoothGattharacteristic characteristic) {

}

@Override
public void onFailure(BleException exception) {

}

@Override
public void onInitiatedResult(boolean result) {

}});

**Отмена подписки на уведомления notify и удаление прослушивателя обратного вызова**

boolean stopNotify(String uuid_service, String uuid_notify) {
Возвращаемое значение указывает на успешность операции stopNotify. Значение BleCharacterCallback() в onInitiatedResult также указывает на успех текущей операции. Функции совпадают, что удобно для разных сценариев использования.
bleManager.stopNotify(UUID_SERVICE, UUID_NOTIFY);
}

**Подписка на уведомления indicate**

boolean indicate(String uuid_service,
String uuid_indicate,
BleCharacterCallback callback) {
Возвращаемое значение указывает на успешность операции indicate. Значение BleCharacterCallback() в onInitiatedResult также указывает на успех текущей операции. Функции совпадают, что удобно для разных сценариев использования.
bleManager.indicate(
UUID_SERVICE,
UUID_INDICATE,
new BleCharacterCallback() {
@Override
public void onSuccess(BluetoothGattharacteristic characteristic) {

}

@Override
public void onFailure(BleException exception) {

}

@Override
public void onInitiatedResult(boolean result) {

}});

**Отмена подписки на уведомления indicate и удаление прослушивателя обратного вызова**

boolean stopIndicate(String uuid_service, String uuid_notify) {
Возвращаемое значение указывает на успешность операции stopIndicate. Значение BleCharacterCallback() в onInitiatedResult также указывает на успех текущей операции. Функции совпадают, что удобно для разных сценариев использования.
bleManager.stopIndicate(UUID_SERVICE, UUID_INDICATE);
}

**Запись данных**

boolean writeDevice(String uuid_service,
String uuid_write,
byte[] data,
BleCharacterCallback callback) {
Возвращаемое значение указывает на успешность операции записи. Значение BleCharacterCallback() в onInitiatedResult также указывает на успех текущей операции. Функции совпадают, что удобно для разных сценариев использования.
bleManager.writeDevice(
UUID_SERVICE,
UUID_WRITE,
HexUtil.hexStringToBytes(SAMPLE_WRITE_DATA),
new BleCharacterCallback() {
@Override
public void onSuccess(BluetoothGattharacteristic characteristic) {

}

@Override
public void onFailure(BleException exception) {

}

@Override
public void onInitiatedResult(boolean result) {

}});

**Чтение данных**

boolean readDevice(String uuid_service,
String uuid_read,
BleCharacterCallback callback). **Возвращение значений, обозначающих успешность операций чтения**

Значения, возвращаемые операциями чтения, обозначают успешность выполнения этих операций. Функции BleCharacterCallback() и onInitiatedResult() также используются для обозначения успешности операции. Это обеспечивает удобство использования в различных ситуациях.

    bleManager.readDevice(
            UUID_SERVICE,
            UUID_READ,
            new BleCharacterCallback() {
                @Override
                public void onSuccess(BluetoothGattCharacteristic characteristic) {

                }

                @Override
                public void onFailure(BleException exception) {

                }

                @Override
                public void onInitiatedResult(boolean result) {

                }
            });

- **Чтение RSSI внешнего устройства**

   boolean readRssi(BleRssiCallback callback)

   Значения, возвращаемые функцией readRssi(), обозначают успешность операции чтения RSSI. Функции BleCharacterCallback() и onInitiatedResult() также используются для обозначения успешности операции. Это обеспечивает удобство использования в различных ситуациях.

       bleManager.readRssi(new BleRssiCallback() {
           @Override
           public void onSuccess(int rssi) {

           }

           @Override
           public void onFailure(BleException exception) {

           }

           @Override
           public void onInitiatedResult(boolean result) {

           }
       });

**Остановка прослушивания данных с помощью функции обратного вызова**

void stopListenCharacterCallback(String uuid)

Функция stopListenCharacterCallback() останавливает прослушивание данных для указанного UUID. Она используется для удаления функций notify, indicate, write и read, соответствующих функции обратного вызова.

     bleManager.stopListenCharacterCallback(uuid_sample);

**Сброс (разрыв текущего соединения Bluetooth и удаление всех функций обратного вызова)**

void closeBluetoothGatt()

Функция closeBluetoothGatt() разрывает текущее соединение Bluetooth и удаляет все функции обратного вызова.

     bleManager.closeBluetoothGatt();

**Добавление обычного сканирования Bluetooth API**

В BleManager добавлен обычный API сканирования Bluetooth: blueToothScan, cancelBlueToothScan, unSubscribeBlueTooth и другие.

BleManager.getInstance().bluetToothScan(blueToothScanCallback); /**

  • blutTooth 普通蓝牙扫描 ,,因为ble在hmos太多坑,所以还写了普通蓝牙扫描 */ private BlueToothScanCallback blueToothScanCallback = new BlueToothScanCallback() { @Override public void notifyDiscoveryState(boolean isStarted) { // 扫描状态改变 if (isStarted) { progressBar.setVisibility(Component.VISIBLE); } else { progressBar.setVisibility(Component.HIDE); } }

         @Override
         public void notifyBluetoothStatusChanged() {
             // 蓝牙状态改变
             if (BleManager.getInstance().getBluetoothManager().getBtState() == STATE_OFF
                     || BleManager.getInstance().getBluetoothManager().getBtState() == STATE_TURNING_OFF) {
                 aSwitch.setChecked(false);
             } else {
                 aSwitch.setChecked(true);
             }
         }
    
         @Override
         public void updateAvailableDevices(BluetoothRemoteDevice btRemoteDevice) {
             // 扫描到的有效蓝牙
             //              toast(btRemoteDevice.getDeviceAddr()+"");
             BluetoothDevice device = new BluetoothDevice();
             device.setAddress(btRemoteDevice.getDeviceAddr());
             device.setBlueRemoteDevice(btRemoteDevice);
    
             Optional<String> optName = btRemoteDevice.getDeviceName();
             String name = optName.orElse(btRemoteDevice.getDeviceAddr());
             device.setName(name);
    
             simpleBlueToothDevices.add(device);
    
             simpleBlueToothProvider.notifyDataChanged();
         }
    
         @Override
         public void updatePairedDevices(BluetoothRemoteDevice btRemoteDevice) {
             // 扫描到已配对的蓝牙
    
         }
    
         @Override
         public void updateFinishScanResult(List<BluetoothRemoteDevice> blueToothDevices) {
             // 扫描完成后扫描结果
             for (BluetoothRemoteDevice btRemoteDevice : blueToothDevices) {
                 BluetoothDevice device = new BluetoothDevice();
                 device.setAddress(btRemoteDevice.getDeviceAddr());
                 device.setBlueRemoteDevice(btRemoteDevice);

Optional optName = btRemoteDevice.getDeviceName(); String name = optName.orElse(btRemoteDevice.getDeviceAddr());

device.setName(name); simpleBlueToothDevices.add(device); } simpleBlueToothProvider.notifyDataChanged();

showProgressBar(false); }```

Issue

  • В версии 1.0 сканирование и подключение BLE, Notify (временно не поддерживается ОС), Indicate (временно не поддерживается ОС). Временно в SDK ОС не выставлены такие свойства, как mac, deviceName и т. д. Требуется обновление до версии 3.0 SDK ОС.

Требования к запуску Entry Необходимо использовать DevEco studio и загрузить SDK. В файле build.gradle в зависимостях → classpath необходимо изменить версию на соответствующую версию (то есть версию, используемую в вашем новом проекте IDE).

License

Copyright 2016 chenlijian

Licensed under the Apache License, Version 2.0 («Лицензия»); вы не можете использовать этот файл, кроме как в соответствии с Лицензией. Вы можете получить копию Лицензии по адресу:

http://www.apache.org/licenses/LICENSE-2.0

Если это не требуется применимым законодательством или не согласовано в письменной форме, программное обеспечение, распространяемое по Лицензии, распространяется на условиях «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ ЛЮБОГО РОДА, явных или подразумеваемых. См. Лицензию для конкретного языка, регулирующего разрешения и ограничения в рамках Лицензии.

Комментарии ( 0 )

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

Введение

Описание недоступно Расширить Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/HarmonyOS-tpc-FastBle.git
git@gitlife.ru:oschina-mirror/HarmonyOS-tpc-FastBle.git
oschina-mirror
HarmonyOS-tpc-FastBle
HarmonyOS-tpc-FastBle
master