从零开始学Android蓝牙开发:实战教程,轻松掌握连接、数据传输与调试技巧

2026-08-24 0 阅读

在移动设备领域,蓝牙技术一直是一种重要的无线通信方式。它广泛应用于智能家居、医疗设备、车载系统等多个领域。Android系统作为全球最流行的操作系统之一,也内置了对蓝牙的支持。本教程将从零开始,带你深入了解Android蓝牙开发,学会如何实现设备的连接、数据传输与调试。

了解蓝牙技术

蓝牙(Bluetooth)是一种无线技术标准,旨在实现固定设备、移动设备和微型计算设备之间的短距离数据交换。它使用2.4GHz的工业、科学和医疗(ISM)频段,提供点对点或点对多点的通信。

蓝牙版本

  • 蓝牙1.0/1.1:原始版本,数据传输速率较低。
  • 蓝牙2.0+EDR:增加了增强数据速率(EDR)技术,提高传输速率。
  • 蓝牙3.0+HS:支持高速USB传输,最高理论速度可达24Mbps。
  • 蓝牙4.0/4.1:引入低功耗技术(BLE),适用于传感器和物联网设备。
  • 蓝牙5.0:提高传输范围、速度和稳定性。

Android蓝牙开发环境搭建

在开始Android蓝牙开发之前,我们需要搭建开发环境。

1. 安装Android Studio

  • 访问Android Studio官网,下载并安装最新版本的Android Studio。
  • 安装完成后,运行Android Studio,创建一个新的项目。

2. 添加蓝牙权限

在AndroidManifest.xml文件中,添加以下权限:

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

3. 添加依赖库

在build.gradle文件中,添加以下依赖库:

dependencies {
    implementation 'androidx.bluetooth:bluetooth:1.1.0'
}

蓝牙设备扫描与连接

1. 扫描设备

使用BluetoothAdapter.getScanResults()方法获取当前范围内的蓝牙设备列表。

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
List<BluetoothDevice> devices = bluetoothAdapter.getScanResults();

2. 连接设备

使用BluetoothDevice.connectGatt()方法连接到指定设备。

BluetoothDevice device = devices.get(0);
BluetoothGatt gatt = device.connectGatt(context, false, gattCallback);

3. 设置回调

实现BluetoothGattCallback接口,重写相关方法,获取设备连接、服务发现、读取、写入等事件。

BluetoothGattCallback gattCallback = new BluetoothGattCallback() {
    @Override
    public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
        if (newState == BluetoothProfile.STATE_CONNECTED) {
            Log.d("BluetoothGatt", "Connected to device");
            gatt.discoverServices(); // 发现服务
        } else {
            Log.d("BluetoothGatt", "Disconnected from device");
        }
    }

    @Override
    public void onServicesDiscovered(BluetoothGatt gatt, int status) {
        if (status == BluetoothGatt.GATT_SUCCESS) {
            Log.d("BluetoothGatt", "Services discovered");
            BluetoothGattService service = gatt.getService(UUID.fromString("your-service-uuid"));
            BluetoothGattCharacteristic characteristic = service.getCharacteristic(UUID.fromString("your-characteristic-uuid"));
            gatt.readCharacteristic(characteristic); // 读取特征值
        } else {
            Log.d("BluetoothGatt", "Services not discovered");
        }
    }

    @Override
    public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
        if (status == BluetoothGatt.GATT_SUCCESS) {
            Log.d("BluetoothGatt", "Characteristic read: " + characteristic.getValue());
        } else {
            Log.d("BluetoothGatt", "Characteristic read failed");
        }
    }

    @Override
    public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
        if (status == BluetoothGatt.GATT_SUCCESS) {
            Log.d("BluetoothGatt", "Characteristic written: " + characteristic.getValue());
        } else {
            Log.d("BluetoothGatt", "Characteristic write failed");
        }
    }
};

蓝牙数据传输

1. 读取数据

使用BluetoothGatt.readCharacteristic()方法读取特征值。

BluetoothGattCharacteristic characteristic = service.getCharacteristic(UUID.fromString("your-characteristic-uuid"));
gatt.readCharacteristic(characteristic);

2. 写入数据

使用BluetoothGatt.writeCharacteristic()方法写入特征值。

BluetoothGattCharacteristic characteristic = service.getCharacteristic(UUID.fromString("your-characteristic-uuid"));
characteristic.setValue(byteArray);
gatt.writeCharacteristic(characteristic);

蓝牙调试技巧

1. 使用Logcat

Logcat是Android开发中常用的日志工具,可以查看蓝牙设备的连接状态、服务发现、特征值读写等信息。

2. 使用调试工具

使用蓝牙调试工具,如BlueTerm、Bluetooth Terminal等,可以更方便地进行数据读写操作。

3. 使用模拟器

在Android Studio中,可以使用蓝牙模拟器进行开发调试。

总结

通过本文的学习,相信你已经对Android蓝牙开发有了初步的了解。在实际开发过程中,需要根据具体需求,不断调整和优化代码。希望本文能帮助你快速掌握蓝牙开发技能,为你的项目增添更多精彩功能。

分享到: