Ohos Bluetooth Low Energy — быстрый фреймворк для разработки на Bluetooth.
OpenHarmony OS позволяет легко выполнять поиск, подключение, чтение и запись данных по Bluetooth, а также получать обратную связь в реальном времени.
Скачайте DevEco studio 2.0+ и SDK Native версии 2.0+.
Способ 1: интегрируйте в entry Gradle:
Способ 2:
allprojects{
repositories{
mavenCentral()
}
}
implementation 'io.openharmony.tpc.thirdlib:fastblelib:1.0.4'
BleManager.getInstance().init(this);
BleManager.getInstance()
.enableLog(true)
.setReConnectCount(1, 5000)
.setConnectOverTime(20000)
.setOperateTimeout(5000);
boolean isSupportBle()
void enableBluetooth()
void disableBluetooth()
boolean isBlueEnable()
boolean isInScanning()
boolean isConnectingOrConnected()
boolean isConnected()
boolean isServiceDiscovered()
void handleException(BleException exception)
Пример использования:
bleManager.handleException(exception);
Параметры:
Возвращаемые значения:
Методы:
Методы:
Методы:
Свойства:
Коды исключений:
Метод:
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
Требования к запуску 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 )