新手必看:Android蓝牙开发从入门到实战全教程,轻松学会!

2026-09-25 0 阅读

引言

蓝牙技术作为一种短距离无线通信技术,在智能设备中应用广泛。Android系统作为当前最流行的移动操作系统之一,自然也提供了丰富的蓝牙开发接口。对于新手来说,从零开始学习Android蓝牙开发可能感到有些困难。本文将为你提供一个全面的教程,带你轻松掌握Android蓝牙开发。

蓝牙基础知识

1. 蓝牙协议栈

蓝牙协议栈是蓝牙技术的核心,它定义了蓝牙设备之间通信的规则。Android系统中的蓝牙协议栈主要由以下几个部分组成:

  • 核心协议:包括蓝牙基本协议、逻辑链路控制与适配协议(L2CAP)、链路管理协议(LMP)等。
  • 服务发现协议:用于设备发现和查询服务。
  • 高级数据传输协议:包括对象交换协议(OBEX)、文件传输协议(FTP)等。

2. 蓝牙设备类型

蓝牙设备主要分为以下几类:

  • 蓝牙设备:指具备蓝牙功能的设备,如手机、平板电脑等。
  • 蓝牙主机:指能够控制其他蓝牙设备的设备,如智能手机。
  • 蓝牙从机:指被其他蓝牙设备控制的设备,如智能手表、蓝牙耳机等。

Android蓝牙开发环境搭建

1. 开发工具

  • Android Studio:Android官方开发工具,支持蓝牙开发。
  • JDK:Java开发工具包,用于编译Java代码。

2. 蓝牙库

  • Android SDK:Android官方提供的开发库,包含蓝牙API。
  • 第三方蓝牙库:如BluetoothSocket、BluetoothLe等。

蓝牙开发步骤

1. 获取设备信息

首先,需要获取目标设备的蓝牙地址、设备名称等信息。可以通过以下代码实现:

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
Set<BluetoothDevice> devices = bluetoothAdapter.getBondedDevices();
for (BluetoothDevice device : devices) {
    Log.d("Bluetooth", "设备名称:" + device.getName() + ",蓝牙地址:" + device.getAddress());
}

2. 连接设备

获取设备信息后,需要建立连接。以下代码演示了如何连接蓝牙设备:

BluetoothDevice device = bluetoothAdapter.getRemoteDevice(address);
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(BluetoothUuid.fromString("00001101-0000-1000-8000-00805F9B34FB"));
socket.connect();

3. 数据传输

连接成功后,可以进行数据传输。以下代码演示了如何发送和接收数据:

DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream());
outputStream.writeUTF("Hello, Bluetooth!");
outputStream.flush();

DataInputStream inputStream = new DataInputStream(socket.getInputStream());
String message = inputStream.readUTF();
Log.d("Bluetooth", "接收到的数据:" + message);

4. 断开连接

数据传输完成后,需要断开连接。以下代码演示了如何断开蓝牙连接:

socket.close();

实战案例

以下是一个简单的蓝牙通信示例,演示了如何实现手机与蓝牙耳机的连接和断开:

public class BluetoothActivity extends AppCompatActivity {
    private BluetoothAdapter bluetoothAdapter;
    private BluetoothSocket socket;
    private Handler handler = new Handler();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bluetooth);

        bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        if (bluetoothAdapter == null) {
            Toast.makeText(this, "设备不支持蓝牙", Toast.LENGTH_SHORT).show();
            finish();
        }
    }

    public void connectDevice(View view) {
        String address = "设备蓝牙地址";
        BluetoothDevice device = bluetoothAdapter.getRemoteDevice(address);
        BluetoothSocket socket = device.createRfcommSocketToServiceRecord(BluetoothUuid.fromString("00001101-0000-1000-8000-00805F9B34FB"));
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    socket.connect();
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(BluetoothActivity.this, "连接成功", Toast.LENGTH_SHORT).show();
                        }
                    });
                } catch (IOException e) {
                    e.printStackTrace();
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(BluetoothActivity.this, "连接失败", Toast.LENGTH_SHORT).show();
                        }
                    });
                }
            }
        }).start();
    }

    public void disconnectDevice(View view) {
        try {
            socket.close();
            handler.post(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(BluetoothActivity.this, "断开连接", Toast.LENGTH_SHORT).show();
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

总结

通过本文的教程,相信你已经对Android蓝牙开发有了初步的了解。在实际开发过程中,还需要不断学习和积累经验。希望本文能帮助你轻松掌握Android蓝牙开发,为你的项目带来更多可能性。

分享到: