从零开始学Android蓝牙编程:一步步实现设备配对与数据传输

2026-11-15 0 阅读

引言

在移动设备的世界里,蓝牙技术是一种广泛使用的短距离无线通信技术。Android系统作为全球最受欢迎的移动操作系统之一,内置了蓝牙功能,使得开发者可以轻松地为其应用添加蓝牙通信功能。本文将带你从零开始学习Android蓝牙编程,一步步实现设备配对与数据传输。

一、准备工作

1. 环境搭建

首先,确保你的开发环境中已经安装了Android Studio。Android Studio是Google官方推荐的Android开发工具,它集成了Android SDK、模拟器、代码编辑器等功能。

2. 创建新项目

打开Android Studio,创建一个新的Android项目。选择合适的API级别,通常选择最低支持的API级别。

3. 添加权限

在AndroidManifest.xml文件中添加必要的权限:

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

二、设备扫描与配对

1. 扫描设备

在MainActivity中,首先需要获取BluetoothAdapter实例,然后调用startDiscovery()方法开始扫描附近的蓝牙设备。

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (bluetoothAdapter != null) {
    if (!bluetoothAdapter.isEnabled()) {
        Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
    } else {
        scanLeDevice(true);
    }
}

2. 处理扫描结果

在BluetoothAdapter的onDeviceDiscovered回调中,可以获取到扫描到的设备信息。然后,可以根据需要选择要配对的设备。

private void scanLeDevice(final boolean enable) {
    if (enable) {
        bluetoothAdapter.startLeScan(mLeScanCallback);
    } else {
        bluetoothAdapter.stopLeScan(mLeScanCallback);
    }
}

private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() {
    @Override
    public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {
        // 处理扫描结果
    }
};

3. 配对设备

获取到要配对的设备后,调用createBond()方法开始配对。

BluetoothDevice device = ...; // 获取要配对的设备
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    BluetoothDevice device = ...;
    if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
        device.createBond();
    }
}

三、数据传输

1. 建立连接

在配对成功后,可以获取到BluetoothSocket实例,然后通过connect()方法建立连接。

BluetoothSocket socket = device.connect();

2. 数据发送与接收

通过BluetoothSocket的OutputStream和InputStream进行数据的发送和接收。

DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream());
DataInputStream inputStream = new DataInputStream(socket.getInputStream());

// 发送数据
outputStream.writeBytes("Hello, Bluetooth!");

// 接收数据
String receivedData = inputStream.readUTF();

四、注意事项

  1. 蓝牙通信需要确保设备之间处于同一网络环境中。
  2. 蓝牙通信的传输速率相对较慢,适用于小量数据的传输。
  3. 蓝牙通信的安全性较低,需要注意保护传输数据的安全性。

结语

通过本文的学习,相信你已经掌握了从零开始学Android蓝牙编程的方法。在实际开发过程中,可以根据需求对蓝牙通信进行优化和扩展。祝你编程愉快!

分享到: