轻松上手Android蓝牙开发:从入门到实战,学会连接、传输与控制

2026-10-15 0 阅读

在移动互联网时代,Android作为最流行的操作系统之一,拥有庞大的用户群体。而蓝牙作为一种短距离无线通信技术,在智能家居、健康监测等领域有着广泛的应用。今天,我们就来聊聊如何轻松上手Android蓝牙开发,学会连接、传输与控制。

蓝牙基础概念

1. 蓝牙技术简介

蓝牙(Bluetooth)是一种短距离的无线通信技术,允许电子设备之间进行数据交换。它基于IEEE 802.15.1标准,工作在2.4GHz的ISM频段,最大传输速率可达1Mbps。

2. 蓝牙设备类型

蓝牙设备主要分为两类:主设备(Master)和从设备(Slave)。主设备负责发起通信,从设备被动接受通信。

3. 蓝牙服务与特征

蓝牙服务(Service)是设备之间进行通信的桥梁,而特征(Characteristic)是服务中提供的数据交换接口。例如,一个智能手环的服务可能包括心率检测、步数统计等特征。

Android蓝牙开发环境搭建

1. 开发工具

  • Android Studio:Android官方集成开发环境,支持蓝牙开发。
  • 蓝牙串口工具:用于模拟蓝牙设备,方便调试。

2. 开发库

  • Bluetooth SDK:Android官方提供的蓝牙开发库。
  • 第三方库:如Xposed Framework等,提供更多功能。

蓝牙连接

1. 扫描设备

使用BluetoothAdapter类扫描周围的蓝牙设备,获取设备列表。

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBondedDevices();
List<BluetoothDevice> scanResult = bluetoothAdapter.startDiscovery();

2. 连接设备

选择目标设备,使用BluetoothDevice类连接。

BluetoothDevice device = scanResult.get(0);
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(device.getUUID());
socket.connect();

3. 读取与写入数据

使用InputStream和OutputStream进行数据传输。

InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();

// 读取数据
byte[] buffer = new byte[1024];
int length = inputStream.read(buffer);

// 写入数据
outputStream.write("Hello Bluetooth".getBytes());

蓝牙传输与控制

1. 蓝牙服务与特征

创建蓝牙服务,定义特征,并实现特征回调函数。

public class MyService extends BluetoothService {
    private BluetoothGattServer gattServer;
    private BluetoothGattService service;

    @Override
    public void onCreate() {
        super.onCreate();
        gattServer = new BluetoothGattServer(this, BluetoothGatt.GATT_SERVERSecure);
        service = new BluetoothGattService(...);
        // 添加特征
        service.addCharacteristic(...);
        gattServer.addService(service);
    }

    @Override
    public boolean onClientConnect(BluetoothDevice device, BluetoothSocket socket, BluetoothDevice device1, BluetoothGatt gatt) {
        // 客户端连接回调
        return super.onClientConnect(device, socket, device1, gatt);
    }

    @Override
    public boolean onClientDisconnect(BluetoothDevice device, BluetoothGatt gatt, int status) {
        // 客户端断开连接回调
        return super.onClientDisconnect(device, gatt, status);
    }

    @Override
    public void onCharacteristicReadRequest(BluetoothDevice device, BluetoothGattRequest request) {
        // 特征读取请求回调
        super.onCharacteristicReadRequest(device, request);
    }

    @Override
    public void onCharacteristicWriteRequest(BluetoothDevice device, BluetoothGattRequest request) {
        // 特征写入请求回调
        super.onCharacteristicWriteRequest(device, request);
    }
}

2. 数据传输

通过特征读取和写入函数,实现数据传输。

public void onCharacteristicReadRequest(BluetoothDevice device, BluetoothGattRequest request) {
    BluetoothGattCharacteristic characteristic = request.getCharacteristic();
    // 读取特征值
    byte[] value = characteristic.getValue();
    // 回复客户端
    BluetoothGattServerResponse response = new BluetoothGattServerResponse(...);
    gattServer.sendResponse(response);
}

public void onCharacteristicWriteRequest(BluetoothDevice device, BluetoothGattRequest request) {
    BluetoothGattCharacteristic characteristic = request.getCharacteristic();
    // 获取写入值
    byte[] value = characteristic.getValue();
    // 处理写入数据
    // ...
}

总结

通过本文的介绍,相信你已经对Android蓝牙开发有了初步的了解。接下来,你可以结合实际项目进行实践,不断提升自己的蓝牙开发能力。祝你学习顺利!

分享到: