您的位置:

Android BLE编程详解

Android BLE(Bluetooth Low Energy)是一种低功耗无线连接技术,它允许设备间进行短距离数据交换,能够在可接受的耗电量下实现长达数月甚至数年的电池寿命。在Android中,使用BLE API可以很方便地实现与BLE设备的交互。

一、Androidble修改连接参数

在BLE设备连接的过程中,我们可以通过修改连接参数来控制连接速度和功耗。Android BLE API提供了多种参数设置方法,可以根据具体需求进行选择。

1、在Gatt连接后使用setPreferredPhy方法可以设置设备的连接参数和PHY类型。


BluetoothGatt bluetoothGatt;
bluetoothGatt.setPreferredPhy(
                BluetoothDevice.PHY_LE_2M,
                BluetoothDevice.PHY_OPTION_NO_PREFERRED,
                BluetoothDevice.PHY_OPTION_NO_PREFERRED);

2、使用requestConnectionPriority方法可以在连接过程中调整连接优先级。


bluetoothGatt.requestConnectionPriority(BluetoothGatt.CONNECTION_PRIORITY_HIGH);

二、Androidble修改连接间隔

连接间隔是指BLE设备之间交换数据的时间间隔,该参数设置越小,则连接速度越快,但功耗也会相应地增加。在某些应用场景,需要通过修改连接间隔来控制Android设备与BLE设备之间的通信速度。

1、在Gatt连接后,使用requestMtu方法来设置BLE设备间的最大传输单位(MTU)。


bluetoothGatt.requestMtu(512);

2、使用requestConnectionPriority方法可以同时修改连接间隔和连接优先级。

bluetoothGatt.requestConnectionPriority(BluetoothGatt.CONNECTION_PRIORITY_HIGH);

三、Androidble蓝牙搜索 搜不到苹果

AndroidBLE API在进行搜索BLE设备时,需要确定搜索范围,这个范围由搜索条件和搜索时间两个变量控制。如果搜索范围内没有BLE设备,则需要检查这两个变量设置是否正确。以下是一些常见的搜索BLE设备的方法。

1、在BluetoothAdapter中设置UUID来搜索指定的BLE设备。


bluetoothAdapter.startLeScan(uuids, mLeScanCallback);

2、使用startScan方法开始BLE设备扫描,当发现BLE设备时回调onScanResult方法。


bluetoothLeScanner.startScan(scanCallback);

3、在进行BLE搜索时,需要注意两个变量的值:搜索条件和搜索持续时间。


bluetoothLeScanner.startScan(scanCallback);

四、Androidble从理论到实战 代码

接下来我们通过一个简单的实例,来介绍如何在Android BLE应用中进行设备连接和数据交换。

1、连接BLE设备


BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {
    @Override
    public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
        super.onConnectionStateChange(gatt, status, newState);
        if (newState == BluetoothProfile.STATE_CONNECTED) {
            //连接成功
        } else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
            //连接断开
        }
    }
};

BluetoothDevice device;
BluetoothGatt gatt = device.connectGatt(context, false, mGattCallback);

2、向BLE设备写入数据


BluetoothGattCharacteristic characteristic = ...
byte[] data = ...
characteristic.setValue(data);
gatt.writeCharacteristic(characteristic);

3、读取BLE设备的数据


BluetoothGattCharacteristic characteristic = ...
gatt.readCharacteristic(characteristic);
byte[] data = characteristic.getValue();

4、BLE设备数据通知


BluetoothGattCharacteristic characteristic = ...
gatt.setCharacteristicNotification(characteristic, true);

以上实例只是介绍了BLE设备连接、数据交换的基本流程。在实际应用中,需要根据具体需求进行相应的功能开发和硬件设备开发。

五、Android Ble 从机广播选取

在BLE设备开发中,可以通过设定广播数据和广播间隔来实现BLE设备被Android设备搜索到的功能。以下是一些常见的BLE从机广播选取方法。

1、指定广播数据,对外发送BLE设备的标题、厂商信息等设备信息。


byte[] oldData = ...;
byte[] newData = "New Data".getBytes();
System.arraycopy(newData, 0, oldData, 0, newData.length);
advertisingBuilder.setIncludeDeviceName(true);
advertisingBuilder.setManufacturerData(0x0590, newData);
bluetoothLeAdvertiser.startAdvertising(settings, advertisingBuilder.build(), advertisingCallback);

2、指定广播间隔。


advertisingBuilder.setTimeout(500);
bluetoothLeAdvertiser.startAdvertising(settings, advertisingBuilder.build(), advertisingCallback);

以上是BLE从机广播的常见选取方法,可以根据实际需求进行设置。