掌握Android蓝牙编程,从入门到实战:轻松实现设备配对与数据传输

2026-10-30 0 阅读

在移动设备的世界里,蓝牙技术是一种非常实用的短距离无线通信技术。它广泛应用于各种设备之间,如智能手机、平板电脑、耳机、健康监测设备等。对于Android开发者来说,掌握蓝牙编程技能是必不可少的。本文将带领你从入门到实战,轻松实现Android设备的配对与数据传输。

一、蓝牙基础知识

1.1 蓝牙技术简介

蓝牙(Bluetooth)是一种无线技术标准,旨在实现固定和移动设备之间的短距离通信。它使用2.4GHz的ISM频段,并采用跳频扩频技术,有效降低干扰。

1.2 蓝牙设备分类

蓝牙设备主要分为三类:主设备(Master)、从设备(Slave)和模拟设备(Simulated)。在Android开发中,我们通常关注主设备和从设备之间的通信。

1.3 蓝牙通信模式

蓝牙通信模式主要有两种:串行通信和广播通信。串行通信适用于点对点通信,而广播通信适用于点对多通信。

二、Android蓝牙编程入门

2.1 蓝牙API简介

Android系统提供了丰富的蓝牙API,包括BluetoothAdapter、BluetoothDevice、BluetoothSocket等。这些API可以帮助开发者实现蓝牙设备的搜索、配对、连接和数据传输等功能。

2.2 蓝牙设备搜索与配对

要实现蓝牙设备的搜索与配对,首先需要获取BluetoothAdapter实例,然后调用其startDiscovery()方法开始搜索附近的蓝牙设备。搜索到设备后,可以通过调用createBond()方法与设备建立连接。

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
bluetoothAdapter.startDiscovery();
// 搜索到设备后
BluetoothDevice device = ...;
BluetoothDevice bondDevice = bluetoothAdapter.getBondedDevices().iterator().next();
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(BluetoothUUID);
socket.connect();

2.3 蓝牙数据传输

建立连接后,可以通过BluetoothSocket进行数据传输。以下是一个简单的数据发送和接收示例:

// 发送数据
OutputStream outputStream = socket.getOutputStream();
outputStream.write("Hello, Bluetooth!".getBytes());
outputStream.flush();

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

三、实战案例:实现Android设备间文件传输

以下是一个简单的Android设备间文件传输实战案例:

  1. 在发送端,创建一个Service,用于接收来自接收端的连接请求,并实现文件发送功能。
  2. 在接收端,创建一个Activity,用于搜索附近的蓝牙设备,并与发送端建立连接,实现文件接收功能。

3.1 发送端Service

public class FileTransferService extends Service {
    // ... 初始化代码 ...

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

    private final IBinder mBinder = new IFileTransferService.Stub() {
        @Override
        public void sendFile(String filePath) throws IOException {
            FileInputStream fileInputStream = new FileInputStream(filePath);
            OutputStream outputStream = socket.getOutputStream();
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = fileInputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }
            fileInputStream.close();
            outputStream.close();
        }
    };
}

3.2 接收端Activity

public class FileTransferActivity extends AppCompatActivity {
    // ... 初始化代码 ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_file_transfer);
        // ... 搜索蓝牙设备、建立连接等代码 ...
    }

    private void receiveFile(BluetoothSocket socket) {
        InputStream inputStream = socket.getInputStream();
        FileOutputStream fileOutputStream = new FileOutputStream("received_file.txt");
        byte[] buffer = new byte[1024];
        int bytesRead;
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            fileOutputStream.write(buffer, 0, bytesRead);
        }
        fileOutputStream.close();
        inputStream.close();
    }
}

四、总结

通过本文的学习,相信你已经掌握了Android蓝牙编程的基本知识和实战技巧。在实际开发过程中,你可以根据需求调整和优化代码,实现更多有趣的蓝牙应用。希望本文能对你有所帮助!

分享到: