Android 两个手机蓝牙通信 Demo

在现代应用程序中,蓝牙通信是一项非常常见而且重要的功能。通过蓝牙,用户能够实现设备间的近距离数据传输。例如,在一个旅行中,两部手机之间可以通过蓝牙共享照片或位置等信息。这篇文章将带你了解如何在安卓手机间实现蓝牙通信,并通过一个简单的Demo示例来展示其实现过程。

1. 概述

在我们开始之前,让我们简单梳理一下实现蓝牙通信的流程。我们将需要以下步骤:

flowchart TD
    A[获取蓝牙适配器] --> B[检查蓝牙是否开启]
    B -->|是| C[开始设备发现]
    B -->|否| D[请求开启蓝牙]
    D --> C
    C --> E[与其他设备建立连接]
    E --> F[数据发送与接收]
    F --> G[关闭连接]

2. 代码示例

下面是一个简单的蓝牙通信Demo的实现,涉及到设备发现、连接及数据传输。

2.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"/>

2.2 初始化蓝牙

在主活动中,我们需要初始化蓝牙适配器并且检查蓝牙是否开启:

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (bluetoothAdapter == null) {
    // 设备不支持蓝牙
}

if (!bluetoothAdapter.isEnabled()) {
    Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}

2.3 开始设备发现

接下来,我们可以开始设备的发现:

Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBondedDevices();
if (pairedDevices.size() > 0) {
    for (BluetoothDevice device : pairedDevices) {
        // 这里可以添加设备到 UI 列表
    }
}

2.4 连接设备并发送数据

选择一个设备后,我们可以通过以下方法建立连接,并进行数据的发送和接收:

BluetoothDevice device = bluetoothAdapter.getRemoteDevice(deviceAddress);
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(MY_UUID);

try {
    socket.connect();
    OutputStream outputStream = socket.getOutputStream();
    String message = "Hello from Android!";
    outputStream.write(message.getBytes());
} catch (IOException e) {
    e.printStackTrace();
} finally {
    socket.close();
}

3. 旅行图

在进行蓝牙数据传输时,虽然部分操作相对复杂,但整体步骤还是循序渐进,带有探索性。以下是一个简单的旅行图,展示了开发者使用蓝牙通信过程中的各种阶段:

journey
    title 蓝牙通信开发之旅
    section 初步了解
      了解蓝牙通信的概念: 5: 开发者
      学习相关API: 4: 开发者
    section 开发准备
      申请权限: 3: 开发者
      环境配置: 4: 开发者
    section 实现阶段
      编写代码: 5: 开发者
      测试功能: 4: 开发者
    section 完成与优化
      解决问题: 3: 开发者
      优化用户体验: 4: 开发者

结尾

通过上述步骤和代码示例,我们了解了如何在Android设备之间实现蓝牙通信。从蓝牙的初始化、设备发现到数据传输,每一步都充满了探索与挑战。希望这篇文章能帮助你更好地理解蓝牙通信,并在你的应用中实现这一功能。不妨动手尝试一下,创建属于你的蓝牙通信Demo,带着它去探索更广阔的世界吧!