Android 蓝牙串口协议传输教程

作为一名经验丰富的开发者,我将向你介绍如何在 Android 设备上实现蓝牙串口协议传输。在开始之前,请确保你已具备基本的 Android 开发知识和了解蓝牙通信的基本概念。

整个流程可以分为以下几个步骤:

  1. 初始化蓝牙适配器和权限检查
  2. 搜索并配对蓝牙设备
  3. 建立蓝牙串口通信
  4. 读取和写入数据
  5. 关闭蓝牙连接

下面我将逐步引导你完成每个步骤的实现,并提供相应的代码示例。

1. 初始化蓝牙适配器和权限检查

在开始之前,我们需要初始化蓝牙适配器并检查是否有蓝牙权限。首先,在 AndroidManifest.xml 文件中添加以下权限:

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

然后,在你的 Activity 或 Fragment 中添加以下代码:

// 初始化蓝牙适配器
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

// 检查是否支持蓝牙
if (bluetoothAdapter == null) {
    // 设备不支持蓝牙
    return;
}

// 检查蓝牙权限
if (!bluetoothAdapter.isEnabled()) {
    Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}

2. 搜索并配对蓝牙设备

一旦蓝牙适配器已初始化并且蓝牙权限已被授予,我们可以开始搜索并配对蓝牙设备。

// 创建一个 BroadcastReceiver 以接收蓝牙设备搜索结果
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
    
        // 当发现设备时
        if (BluetoothDevice.ACTION_FOUND.equals(action)) {
            // 从 Intent 中获取发现的设备
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            // TODO: 处理设备
        }
    }
};

// 开始搜索设备
bluetoothAdapter.startDiscovery();

3. 建立蓝牙串口通信

一旦我们找到要连接的蓝牙设备,我们需要建立与该设备的串口通信。

// 根据蓝牙设备的地址获取 BluetoothDevice 对象
BluetoothDevice device = bluetoothAdapter.getRemoteDevice(deviceAddress);

// 创建一个 BluetoothSocket 对象来建立与设备的连接
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(MY_UUID);

// 连接到设备
socket.connect();

4. 读取和写入数据

一旦蓝牙串口通信已建立,我们可以开始读取和写入数据。

// 获取输入输出流
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();

// 读取数据
byte[] buffer = new byte[1024];
int numBytes;
while ((numBytes = inputStream.read(buffer)) != -1) {
    String receivedData = new String(buffer, 0, numBytes);
    // TODO: 处理接收到的数据
}

// 写入数据
String sendData = "Hello, Bluetooth!";
outputStream.write(sendData.getBytes());

5. 关闭蓝牙连接

最后,在你不再需要蓝牙连接时,请确保关闭连接以释放资源。

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

通过以上步骤,你已经完成了 Android 蓝牙串口协议传输的实现。当然,这只是一个简单的示例,你可以根据自己的需求进行扩展和优化。

希望这篇文章能对你有所帮助,祝你在 Android 蓝牙开发中取得成功!