学会Android蓝牙开发:轻松实现设备配对与数据传输攻略

2026-10-12 0 阅读

蓝牙技术简介

蓝牙技术是一种无线通信技术,允许电子设备在短距离内(通常在10米以内)进行数据交换。它广泛应用于手机、电脑、耳机、智能手表等多种设备中。在Android开发中,蓝牙技术是实现设备间通信的重要手段之一。

Android蓝牙开发基础

1. 蓝牙设备搜索与配对

要实现设备配对,首先需要搜索到可用的蓝牙设备。以下是一个简单的搜索和配对示例代码:

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
Set<BluetoothDevice> devices = bluetoothAdapter.getBondedDevices();

for (BluetoothDevice device : devices) {
    Log.d("Bluetooth", "已配对的设备:" + device.getName());
}

// 搜索新的蓝牙设备
bluetoothAdapter.startDiscovery();

// 搜索结果回调
bluetoothAdapter.setOnDiscoveryListener(new BluetoothAdapter.OnDiscoveryListener() {
    @Override
    public void onDiscoveryStarted() {
        Log.d("Bluetooth", "开始搜索蓝牙设备");
    }

    @Override
    public void onDiscoveryFinished() {
        Log.d("Bluetooth", "搜索结束");
    }

    @Override
    public void onDeviceFound(BluetoothDevice device, int rssi, byte[] scanRecord) {
        Log.d("Bluetooth", "发现新设备:" + device.getName());
        // 这里可以进行配对操作
    }
});

2. 蓝牙数据传输

设备配对成功后,就可以进行数据传输了。Android蓝牙数据传输主要有两种方式:SPP(串口通信)和GATT(低功耗蓝牙)。

SPP(串口通信)

SPP是一种较老的技术,常用于蓝牙打印机和调制解调器等设备。以下是一个使用SPP进行数据传输的示例代码:

BluetoothSocket socket = device.createRfcommSocketToServiceRecord(BluetoothServiceClass.BT_SERVICE_CLASS_SERIAL_PORT);
socket.connect();

// 发送数据
OutputStream outputStream = socket.getOutputStream();
outputStream.write("Hello, Bluetooth!".getBytes());

// 接收数据
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int bytesRead = inputStream.read(buffer);
String receivedData = new String(buffer, 0, bytesRead);

// 关闭连接
socket.close();

GATT(低功耗蓝牙)

GATT是一种较新的技术,适用于低功耗蓝牙设备。以下是一个使用GATT进行数据传输的示例代码:

BluetoothGatt gatt = device.connectGatt(context, false, new BluetoothGattCallback() {
    @Override
    public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
        if (newState == BluetoothProfile.STATE_CONNECTED) {
            Log.d("Bluetooth", "连接成功");
            // 获取服务
            BluetoothGattService service = gatt.getService(UUID.fromString("your-service-uuid"));
            if (service != null) {
                // 获取特征
                BluetoothGattCharacteristic characteristic = service.getCharacteristic(UUID.fromString("your-characteristic-uuid"));
                if (characteristic != null) {
                    // 写入数据
                    characteristic.setValue("Hello, Bluetooth!");
                    gatt.writeCharacteristic(characteristic);
                    // 读取数据
                    gatt.readCharacteristic(characteristic);
                }
            }
        } else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
            Log.d("Bluetooth", "连接断开");
        }
    }

    @Override
    public void onServicesDiscovered(BluetoothGatt gatt, int status) {
        // 获取服务
        BluetoothGattService service = gatt.getService(UUID.fromString("your-service-uuid"));
        if (service != null) {
            // 获取特征
            BluetoothGattCharacteristic characteristic = service.getCharacteristic(UUID.fromString("your-characteristic-uuid"));
            if (characteristic != null) {
                // 写入数据
                characteristic.setValue("Hello, Bluetooth!");
                gatt.writeCharacteristic(characteristic);
                // 读取数据
                gatt.readCharacteristic(characteristic);
            }
        }
    }

    // 其他回调方法...
});

总结

通过以上介绍,相信你已经对Android蓝牙开发有了初步的了解。在实际开发过程中,还需要根据具体需求进行功能扩展和优化。希望本文能帮助你轻松实现设备配对与数据传输。

分享到: