HarmonyOS Demo BLE: Explained with Code Examples

Introduction

In this article, we will explore the HarmonyOS Demo BLE feature. BLE stands for Bluetooth Low Energy, which is a wireless communication technology used for short-range communication between devices. HarmonyOS provides a powerful and easy-to-use API for developing BLE-enabled applications. We will walk through the steps required to use BLE in a HarmonyOS application, along with code examples.

Prerequisites

Before we dive into the code examples, make sure you have the following prerequisites:

  • A computer with the HarmonyOS IDE installed.
  • HarmonyOS SDK configured properly.
  • Basic knowledge of HarmonyOS application development.

Code Examples

Let's start by creating a new HarmonyOS application project and adding the necessary permissions and dependencies in the config.json file. Once that is done, we can proceed with the following code examples.

Example 1: Initializing BLE

import ohos.bluetooth.BluetoothHost;
import ohos.eventhandler.EventHandler;
import ohos.eventhandler.EventRunner;

public class BLEManager {
    private BluetoothHost bluetoothHost;

    public BLEManager() {
        EventRunner runner = EventRunner.create(true);
        EventHandler eventHandler = new EventHandler(runner);
        bluetoothHost = BluetoothHost.getDefaultHost(appContext, eventHandler);
    }
}

In the above code, we initialize the BluetoothHost object required for BLE operations. We create an EventRunner and EventHandler to handle events related to BLE.

Example 2: Scanning for BLE Devices

import ohos.bluetooth.BluetoothHost;
import ohos.bluetooth.BluetoothHostCallback;
import ohos.bluetooth.BluetoothRemoteDevice;

public class BLEManager {
    private BluetoothHost bluetoothHost;

    public BLEManager() {
        // Initialization code

        bluetoothHost.startBleScan(BluetoothHostCallback callback);
    }

    private BluetoothHostCallback callback = new BluetoothHostCallback() {
        @Override
        public void onRemoteDeviceFound(BluetoothRemoteDevice bluetoothRemoteDevice) {
            // Handle the found Bluetooth remote device
        }

        @Override
        public void onScanFailed(int errorCode) {
            // Handle scan failure
        }
    };
}

In this code snippet, we start scanning for BLE devices using the startBleScan method. We provide a BluetoothHostCallback to handle the found devices and scan failures.

Example 3: Connecting to a BLE Device

import ohos.bluetooth.BluetoothHost;
import ohos.bluetooth.BluetoothHostCallback;
import ohos.bluetooth.BluetoothRemoteDevice;

public class BLEManager {
    private BluetoothHost bluetoothHost;

    public BLEManager() {
        // Initialization code

        BluetoothRemoteDevice remoteDevice = null; // Bluetooth remote device to connect

        bluetoothHost.connectRemoteDevice(remoteDevice, BluetoothHostCallback callback);
    }

    private BluetoothHostCallback callback = new BluetoothHostCallback() {
        @Override
        public void onConnectionStateChanged(BluetoothRemoteDevice bluetoothRemoteDevice, int state) {
            if (state == BluetoothHost.STATE_CONNECTED) {
                // Connection successful
            } else if (state == BluetoothHost.STATE_DISCONNECTED) {
                // Connection disconnected
            }
        }

        @Override
        public void onServiceSearchComplete(int status) {
            // Service search complete
        }
    };
}

Here, we connect to a specific BLE device using the connectRemoteDevice method. We provide a BluetoothHostCallback to handle the connection state changes and service search completion.

State Diagram

The following state diagram illustrates the different states and transitions involved in the BLE connection process.

stateDiagram
    [*] --> Disconnected
    Disconnected --> Connecting: connectRemoteDevice()
    Connecting --> Connected: onConnectionStateChanged(STATE_CONNECTED)
    Connected --> Disconnected: onConnectionStateChanged(STATE_DISCONNECTED)

Journey Diagram

The journey diagram below depicts the steps involved in a typical BLE connection process.

journey
    title BLE Connection Journey
    section Scanning
        App -> BLEManager: Start BLE scan
        BLEManager -> BLE Device: Scan for devices
        BLE Device --> BLEManager: Found device
    section Connection
        App -> BLEManager: Connect to device
        BLEManager -> BLE Device: Connection request
        BLE Device --> BLEManager: Connection accepted
        BLE Device --> BLEManager: Service search complete
    section Data Transfer
        App -> BLEManager: Transfer data
        BLEManager -> BLE Device: Send data
        BLE Device --> BLEManager: Data received

Conclusion

In this article, we explored the HarmonyOS Demo BLE feature and provided code examples to demonstrate its usage. We learned how to initialize BLE, scan for devices, and connect to a specific device. Additionally, we included a state diagram and journey diagram to illustrate the different states and steps involved in the BLE connection process. With the powerful and easy-to-use API provided by HarmonyOS, developers can easily incorporate BLE functionality into their applications. Happy coding!