新手必看:Android蓝牙开发从入门到实战全攻略

2026-10-20 0 阅读

了解蓝牙技术

什么是蓝牙?

蓝牙(Bluetooth)是一种无线技术标准,用于短距离的数据交换。它允许电子设备之间进行无线通信,传输速率可以达到1Mbps。蓝牙广泛应用于手机、耳机、鼠标、键盘、打印机等设备。

蓝牙的发展历程

蓝牙技术自1994年诞生以来,经历了多个版本的迭代。目前,主流的蓝牙版本为5.0,具有更高的传输速率和更远的传输距离。

Android蓝牙开发环境搭建

安装Android Studio

  1. 下载并安装Android Studio。
  2. 在Android Studio中创建一个新的项目,选择“Empty Activity”。
  3. 在项目结构中,找到“app/src/main/res/values/strings.xml”文件,添加以下代码:
<string name="app_name">蓝牙示例</string>

添加蓝牙权限

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

蓝牙设备扫描与连接

扫描蓝牙设备

  1. 创建一个BluetoothAdapter对象,用于获取当前设备的蓝牙适配器。
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
  1. 创建一个BluetoothDevice对象,用于表示扫描到的蓝牙设备。
BluetoothDevice device = bluetoothAdapter.getRemoteDevice(deviceAddress);
  1. 调用BluetoothAdapter的startDiscovery()方法开始扫描蓝牙设备。
bluetoothAdapter.startDiscovery();
  1. 实现BroadcastReceiver,监听扫描结果。
public class BluetoothReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // 获取扫描到的蓝牙设备
        BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
        // 处理扫描到的蓝牙设备
    }
}
  1. 注册BroadcastReceiver。
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(new BluetoothReceiver(), filter);

连接蓝牙设备

  1. 获取BluetoothDevice对象的连接状态。
if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
    // 连接蓝牙设备
    device.createBond();
}
  1. 实现BluetoothDevice的连接回调。
public class BluetoothConnectionCallback implements BluetoothDevice.BondStateChangedCallback {
    @Override
    public void onBondStateChanged(BluetoothDevice device, int bondState) {
        // 处理连接状态变化
    }
}
  1. 注册连接回调。
device.setBondStateChangedCallback(new BluetoothConnectionCallback());

蓝牙数据传输

发送数据

  1. 获取BluetoothSocket对象。
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
  1. 连接蓝牙设备。
socket.connect();
  1. 发送数据。
OutputStream outputStream = socket.getOutputStream();
outputStream.write(data);

接收数据

  1. 获取BluetoothSocket对象。
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
  1. 连接蓝牙设备。
socket.connect();
  1. 接收数据。
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int length = inputStream.read(buffer);
String data = new String(buffer, 0, length);

总结

本文从蓝牙技术的基本概念、Android蓝牙开发环境搭建、蓝牙设备扫描与连接、蓝牙数据传输等方面,详细介绍了Android蓝牙开发的全过程。希望本文能帮助您快速入门Android蓝牙开发,并在实际项目中应用。

分享到: