Android 蓝牙发送接收数据实现步骤
1. 确认设备是否支持蓝牙功能
在开始实现蓝牙发送和接收数据之前,首先需要确认设备是否支持蓝牙功能。可以通过以下代码来判断:
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (bluetoothAdapter == null) {
// 设备不支持蓝牙
} else {
// 设备支持蓝牙
}
2. 打开蓝牙
在确认设备支持蓝牙功能后,需要打开蓝牙以便进行数据的发送和接收。可以通过以下代码来打开蓝牙:
if (!bluetoothAdapter.isEnabled()) {
Intent enableBluetoothIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBluetoothIntent, REQUEST_ENABLE_BT);
}
这段代码会弹出一个系统对话框,让用户选择是否打开蓝牙。如果用户选择打开蓝牙,会回调 onActivityResult 方法,并且 requestCode 为 REQUEST_ENABLE_BT。
3. 搜索蓝牙设备
在蓝牙打开成功后,需要搜索附近的蓝牙设备以便进行连接。可以通过以下代码来搜索蓝牙设备:
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
bluetoothAdapter.startDiscovery();
这段代码会开启一个异步的搜索过程,并且会通过广播的方式传递搜索到的蓝牙设备信息。可以通过注册一个 BroadcastReceiver 来接收搜索到的蓝牙设备信息。
4. 连接蓝牙设备
当搜索到蓝牙设备后,需要选择一个设备进行连接。可以通过以下代码来连接蓝牙设备:
BluetoothDevice device = ...; // 获取到要连接的蓝牙设备
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(MY_UUID);
socket.connect();
其中,MY_UUID 是一个唯一标识符,用于识别服务端的蓝牙设备。可以使用 UUID.fromString(String) 方法来将字符串转换为 UUID。
5. 发送数据
在成功连接蓝牙设备后,可以通过 BluetoothSocket 的 OutputStream 来发送数据。可以通过以下代码来发送数据:
BluetoothSocket socket = ...; // 已连接的蓝牙设备
OutputStream outputStream = socket.getOutputStream();
String message = "Hello, Bluetooth!";
outputStream.write(message.getBytes());
这段代码将会将字符串 "Hello, Bluetooth!" 转换为字节数组,并通过 OutputStream 发送出去。
6. 接收数据
在成功连接蓝牙设备后,可以通过 BluetoothSocket 的 InputStream 来接收数据。可以通过以下代码来接收数据:
BluetoothSocket socket = ...; // 已连接的蓝牙设备
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int length = inputStream.read(buffer);
String message = new String(buffer, 0, length);
这段代码会从 InputStream 中读取数据,并将其转换为字符串。
7. 关闭连接
当数据发送和接收完成后,需要关闭蓝牙连接以释放资源。可以通过以下代码来关闭连接:
BluetoothSocket socket = ...; // 已连接的蓝牙设备
socket.close();
这段代码会关闭蓝牙连接。
以上就是实现 Android 蓝牙发送接收数据的流程和每一步需要做的事情。接下来,让我们来看一下相关的类图和甘特图。
类图
classDiagram
class BluetoothAdapter
class BluetoothDevice
class BluetoothSocket
class OutputStream
class InputStream
BluetoothAdapter --> "*" BluetoothDevice
BluetoothDevice --> "*" BluetoothSocket
BluetoothSocket --> OutputStream
BluetoothSocket --> InputStream
以上是相关类之间的关系示意图,BluetoothAdapter 是蓝牙适配器类,用于管理蓝牙功能;BluetoothDevice 是蓝牙设备类,用于表示一个蓝牙设备;BluetoothSocket 是蓝牙连接的套接字;OutputStream 和 InputStream 分别用于发送和接收数据。
甘特图
gantt
title Android 蓝牙发送接收数据实现甘