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从机广播的常见选取方法,可以根据实际需求进行设置。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/271597.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-16 19:22
下一篇 2024-12-16 19:22

相关推荐

  • Android ViewPager和ScrollView滑动冲突问题

    Android开发中,ViewPager和ScrollView是两个常用的控件。但是当它们同时使用时,可能会发生滑动冲突的问题。本文将从多个方面介绍解决Android ViewPa…

    编程 2025-04-28
  • Android如何点击其他区域收起软键盘

    在Android应用中,当输入框获取焦点弹出软键盘后,我们希望能够点击其他区域使软键盘消失,以提升用户体验。本篇文章将说明如何实现这一功能。 一、获取焦点并显示软键盘 在Andro…

    编程 2025-04-28
  • Android Studio HUD 实现指南

    本文将会以实例来详细阐述如何在 Android Studio 中使用 HUD 功能实现菊花等待指示器的效果。 一、引入依赖库 首先,我们需要在 build.gradle 文件中引入…

    编程 2025-04-27
  • Android和Vue3混合开发方案

    本文将介绍如何将Android和Vue3结合起来进行混合开发,以及其中的优势和注意事项。 一、环境搭建 在进行混合开发之前,需要搭建好相应的开发环境。首先需要安装 Android …

    编程 2025-04-27
  • Android Java Utils 可以如何提高你的开发效率

    Android Java Utils 是一款提供了一系列方便实用的工具类的 Java 库,可以帮助开发者更加高效地进行 Android 开发,提高开发效率。本文将从以下几个方面对 …

    编程 2025-04-27
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25

发表回复

登录后才能评论