手机蓝牙连接不求人,从零开始学Android蓝牙开发全攻略

2026-09-04 0 阅读

蓝牙技术简介

蓝牙技术是一种短距离的无线通信技术,它允许设备之间在近距离内进行数据交换。在Android开发中,蓝牙是一种常用的通信方式,可以用于设备间的数据传输、远程控制等多种应用场景。

开发环境准备

1. 安装Android Studio

首先,你需要安装Android Studio,这是官方推荐的Android开发环境。下载并安装最新版本的Android Studio后,通过SDK Manager安装相应的SDK和工具。

2. 创建新项目

打开Android Studio,创建一个新的Android项目。选择合适的API级别,这个级别应该支持你的目标设备所使用的蓝牙版本。

蓝牙基础知识

1. 蓝牙设备分类

蓝牙设备主要分为两类:中央设备(Central)和外围设备(Peripheral)。中央设备用于连接并控制外围设备,而外围设备则被中央设备控制。

2. 蓝牙连接流程

蓝牙连接通常包括以下几个步骤:

  • 搜索外围设备
  • 连接到外围设备
  • 配对设备
  • 传输数据

Android蓝牙开发步骤

1. 添加蓝牙权限

在你的AndroidManifest.xml文件中添加以下权限:

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

2. 获取蓝牙适配器

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

3. 搜索设备

List<BluetoothDevice> devices = bluetoothAdapter.getBondedDevices();

4. 连接到设备

BluetoothDevice device = devices.get(0); // 假设我们连接第一个设备
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(BluetoothService.UUID); // 使用UUID进行匹配
socket.connect();

5. 传输数据

通过BluetoothSocket发送和接收数据:

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

// 发送数据
outputStream.write("Hello Bluetooth".getBytes());

// 接收数据
byte[] buffer = new byte[1024];
int bytesRead = inputStream.read(buffer);
String receivedMessage = new String(buffer, 0, bytesRead);

6. 断开连接

socket.close();

高级技巧

1. 使用BluetoothGatt

对于低功耗蓝牙(BLE)应用,推荐使用BluetoothGatt接口。这个接口提供了更加细粒度的控制,允许你读取和写入服务中的特征值。

BluetoothGatt gatt = device.connectGatt(context, false, gattCallback);

2. 多线程处理

由于蓝牙操作可能涉及阻塞,建议在后台线程中执行蓝牙连接和数据传输操作。

实战案例

以下是一个简单的示例,展示如何通过蓝牙发送和接收数据:

public class BluetoothService extends Service {
    public static final UUID UUID = UUID.fromString("your-uuid-here");

    private final IBinder binder = new LocalBinder();
    private BluetoothSocket socket;
    private InputStream inputStream;
    private OutputStream outputStream;

    public class LocalBinder extends Binder {
        BluetoothService getService() {
            return BluetoothService.this;
        }
    }

    @Override
    public IBinder onBind(Intent intent) {
        return binder;
    }

    public boolean connect(BluetoothDevice device) {
        try {
            socket = device.createRfcommSocketToServiceRecord(UUID);
            socket.connect();
            inputStream = socket.getInputStream();
            outputStream = socket.getOutputStream();
            return true;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
    }

    public void sendData(String data) {
        try {
            outputStream.write(data.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public String receiveData() {
        try {
            byte[] buffer = new byte[1024];
            int bytesRead = inputStream.read(buffer);
            return new String(buffer, 0, bytesRead);
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

    public void disconnect() {
        try {
            if (socket != null) {
                socket.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

总结

通过以上步骤,你可以开始你的Android蓝牙开发之旅。记住,蓝牙开发可能需要处理各种异常情况,因此良好的错误处理机制是非常重要的。不断实践和探索,你将能够开发出更加复杂和功能丰富的蓝牙应用。

分享到: