Android 蓝牙 MAC 蓝牙传输入门指南

在这个指南中,我们将介绍如何在 Android 中实现 BLE(蓝牙低功耗)设备间的 MAC 地址传输。下面是整个流程的概述以及每个步骤的详细说明。

整体流程

以下是实现蓝牙传输的步骤分解:

步骤编号 步骤描述
1 申请蓝牙权限
2 获取蓝牙适配器
3 启动蓝牙设备扫描
4 连接到设备
5 传输数据
6 关闭连接
flowchart TD
    A[申请蓝牙权限] --> B[获取蓝牙适配器]
    B --> C[启动蓝牙设备扫描]
    C --> D[连接到设备]
    D --> E[传输数据]
    E --> F[关闭连接]

步骤详细说明

1. 申请蓝牙权限

在 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" />

说明:上述权限用于蓝牙操作及定位(BLE 需要定位权限)。

2. 获取蓝牙适配器

在 Activity 中,获取系统的蓝牙适配器:

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (bluetoothAdapter == null) {
    // 设备不支持蓝牙
    Log.e("Bluetooth", "Device doesn't support Bluetooth");
}

说明getDefaultAdapter() 返回设备的蓝牙适配器,如果返回 null,说明设备不支持蓝牙。

3. 启动蓝牙设备扫描

要扫描附近的蓝牙设备,需要设置一个广播接收器和调用 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", "Found device: " + device.getName() + " [" + device.getAddress() + "]");
        }
    }
};

// 注册广播接收器
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(receiver, filter);
bluetoothAdapter.startDiscovery();

说明:注册接收器可以接收找到设备的事件,实现设备的文件传输。

4. 连接到设备

当找到设备后,建立连接:

BluetoothDevice device = ...; // 先前找到的设备
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(MY_UUID);
socket.connect(); // 连接到设备

说明MY_UUID 是一个唯一标识符,用于区分不同的服务。

5. 传输数据

连接后,可以通过输入流和输出流传输数据:

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

String message = "Hello, Bluetooth!";
outputStream.write(message.getBytes());

说明:通过 getOutputStream()getInputStream() 方法获取与设备进行数据交换的通道。

6. 关闭连接

完成传输后,确保关闭连接以释放资源:

socket.close();

说明:使用 close() 方法可以关闭蓝牙连接。

结尾

通过以上步骤,你现在应该掌握了 Android 中如何实现蓝牙 MAC 地址的传输。在这个过程中,我们需要申请必要的权限、获取蓝牙适配器、扫描设备、连接设备、传输数据并最终关闭连接。不断练习这些步骤将帮助你在实际开发中熟练使用蓝牙功能。希望这个指南能对你有所帮助,祝你在开发的道路上越走越远!