Android 蓝牙通讯入门
在Android开发中,蓝牙通讯是实现设备间信息交换的重要手段。特别是在物联网(IoT)应用中,蓝牙通讯显得尤为重要。本文将为刚入行的小白详细解说如何实现两个Android设备之间的蓝牙通讯。
蓝牙通讯流程
下面是实现两个蓝牙设备通讯的概述流程:
步骤 | 描述 |
---|---|
1 | 初始化蓝牙适配器 |
2 | 开设蓝牙设备可见性 |
3 | 搜索可用蓝牙设备 |
4 | 选择设备并建立连接 |
5 | 进行数据传输 |
6 | 断开连接 |
步骤详细说明
下面我们逐步实现上述流程。每一步都提供相关的代码示例和注释。
1. 初始化蓝牙适配器
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
// 检查设备是否支持蓝牙
if (bluetoothAdapter == null) {
// 当前设备不支持蓝牙
Log.e("Bluetooth", "This device does not support Bluetooth");
}
- 解释:
BluetoothAdapter
是蓝牙的入口点。在这里我们检查设备是否支持蓝牙。
2. 开设蓝牙设备可见性
Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300); // 300秒可见性
startActivity(discoverableIntent);
- 解释: 这段代码请求用户允许设备在300秒内对其他蓝牙设备可见。
3. 搜索可用蓝牙设备
Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBondedDevices();
if (pairedDevices.size() > 0) {
for (BluetoothDevice device : pairedDevices) {
Log.d("Bluetooth", "Paired device: " + device.getName() + " - " + device.getAddress());
}
}
- 解释: 获取已配对的设备并打印其名称和地址。在实际应用中,你可能会显示这些设备供用户选择。
4. 选择设备并建立连接
BluetoothDevice device = bluetoothAdapter.getRemoteDevice(deviceAddress);
BluetoothSocket bluetoothSocket = device.createRfcommSocketToServiceRecord(MY_UUID);
bluetoothSocket.connect(); // 连接设备
- 解释:
createRfcommSocketToServiceRecord
用于创建一个连接通道,MY_UUID
是服务的UUID,必须是唯一的。在此处,deviceAddress
为目标设备的MAC地址。
5. 进行数据传输
OutputStream outputStream = bluetoothSocket.getOutputStream();
InputStream inputStream = bluetoothSocket.getInputStream();
// 发送数据
String message = "Hello Device!";
outputStream.write(message.getBytes());
// 接收数据
byte[] buffer = new byte[1024];
int bytesRead = inputStream.read(buffer);
String receivedMessage = new String(buffer, 0, bytesRead);
Log.d("Bluetooth", "Received: " + receivedMessage);
- 解释: 通过输出流发送数据,并通过输入流接收数据。在这里,我们使用字节数组来处理数据。
6. 断开连接
bluetoothSocket.close();
- 解释: 最后要记得关闭蓝牙套接字以释放资源。
饼状图:蓝牙通讯流程
pie
title 蓝牙通讯流程
"初始化蓝牙适配器": 15
"开设可见性": 15
"搜索设备": 20
"建立连接": 25
"数据传输": 15
"断开连接": 10
状态图:蓝牙通讯状态
stateDiagram
[*] --> 未初始化
未初始化 --> 指定蓝牙适配器 : 初始化
指定蓝牙适配器 --> 可见性状态 : 请求可见性
可见性状态 --> 搜索状态
搜索状态 --> 选择设备 : 找到设备
选择设备 --> 建立连接
建立连接 --> 数据传输 : 连接成功
数据传输 --> 断开连接 : 完成数据传输
断开连接 --> [*]
结尾
通过以上六个步骤,我们可以实现两个Android设备之间的蓝牙通讯。在实际开发中,你还需要处理各种异常情况,例如连接失败、数据传输错误等。希望这篇文章能够为你的开发旅程提供帮助。未来,你可以进一步探索蓝牙低能耗(BLE)等高级功能,扩展你的应用能力。祝你编程愉快!