Android 蓝牙配对与自动连接实现指南

在Android应用开发中,蓝牙配对与自动连接是一个常见需求。本指南将帮助你了解整个流程,并提供必要的代码示例和说明。

1. 流程概述

首先,我们来看整个流程的概述,表格如下:

步骤 描述
1. 权限请求 请求蓝牙相关权限
2. 初始化蓝牙 获取BluetoothAdapter实例
3. 搜索蓝牙设备 扫描附近的蓝牙设备
4. 配对 选择设备进行配对,并处理配对请求
5. 自动连接 配对后自动连接到该设备
6. 数据传输 连接后进行数据传输

2. 实现步骤

下面是实现每一步的详细代码示例:

1. 权限请求

在AndroidManifest.xml中添加蓝牙权限:

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

在Activity中动态请求权限(适用于Android 6.0及以上):

// 请求位置权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
        != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, 
        new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
}

2. 初始化蓝牙

获取BluetoothAdapter实例:

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
// 检查蓝牙是否支持
if (bluetoothAdapter == null) {
    // 设备不支持蓝牙
    Log.e("Bluetooth", "Device does not support Bluetooth.");
}

3. 搜索蓝牙设备

开始扫描设备,并注册广播接收器接收发现的设备:

IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(receiver, filter);
bluetoothAdapter.startDiscovery();

// 广播接收器
private final BroadcastReceiver receiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (BluetoothDevice.ACTION_FOUND.equals(action)) {
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            // 处理发现的设备
            Log.d("Bluetooth", "Device found: " + device.getName() + " - " + device.getAddress());
        }
    }
};

4. 配对设备

选择设备进行配对,需要通过调用createBond()方法:

BluetoothDevice device = bluetoothAdapter.getRemoteDevice("设备地址");
device.createBond();

5. 自动连接

在配对成功后,自动连接到设备:

BluetoothSocket socket = device.createRfcommSocketToServiceRecord(MY_UUID);
socket.connect(); // 尝试连接

6. 数据传输

连接后,可以使用输入输出流进行数据传输:

OutputStream outputStream = socket.getOutputStream();
InputStream inputStream = socket.getInputStream();

// 发送数据
outputStream.write(message.getBytes());

3. 流程图与类图

以下是整个流程的流程图和类图描述:

flowchart TD
    A[请求蓝牙权限] --> B[初始化蓝牙]
    B --> C[搜索蓝牙设备]
    C --> D[设备配对]
    D --> E[自动连接]
    E --> F[数据传输]
classDiagram
    class BluetoothManager {
      +initializeBluetooth()
      +searchDevices()
      +pairDevice()
      +connectDevice()
      +transferData()
    }
    
    class BluetoothDevice {
      +createBond()
      +createRfcommSocketToServiceRecord()
    }

结尾

通过以上步骤和代码示例,你应该对实现Android蓝牙配对与自动连接有了基本的了解。在实际应用中,可能还需要处理一些异常情况,如连接失败或设备不支持等,建议在这些部分加入相应的异常处理机制。希望本指南对你有所帮助,让你能顺利完成蓝牙配对和自动连接的功能!