Android蓝牙的配对流程


前言

本文主要结合源码研究蓝牙的配对过程


一、蓝牙配对的原理

1.蓝牙工作模式

蓝牙有两种主要的工作模式:

  • 主设备模式(Master):控制连接的设备,通常是手机或电脑。
  • 从设备模式(Slave):被连接的设备,如耳机或蓝牙音箱。

2. 设备扫描

当主设备需要发现附近的蓝牙设备时,它会进入扫描模式。这个过程通常包括以下步骤:

  • 发送探测请求(Inquiry):主设备发送探测请求,询问附近的蓝牙设备是否在线。
  • 响应(Response):任何接收到探测请求的从设备会发送响应,返回其设备名称和地址。

3. 广播机制

蓝牙设备可以在不同的时间段内广播自己的可见性信息。具体原理如下:

  • 广播信号:从设备在其周围的范围内定期发送广播信号,包含设备信息,如设备名称和地址。这些广播信号是短时间内的,并且可以被附近的主设备接收。
  • 周期性广播:从设备可以配置为在特定的时间间隔内发送广播信号,以提高被发现的概率。

4. 接收与处理

主设备接收到从设备的广播后,会执行以下操作:

  • 解析设备信息:从广播信号中提取设备名称、地址等信息。
  • 更新设备列表:将新发现的设备信息添加到列表中,以供用户选择。

5. 配对和连接

发现设备后,主设备可以选择与某个设备配对。配对过程通常涉及身份验证(如 PIN 码确认),并建立连接以进行数据传输。

二、配对步骤

以下是一个配对流程的简要代码示例:

// 初始化蓝牙适配器
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

// 开始发现设备
bluetoothAdapter.startDiscovery();

// 注册接收广播以接收配对请求和配对状态变化
BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (BluetoothDevice.ACTION_FOUND.equals(action)) {
            // 发现了一个设备
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            // 发起配对
            device.createBond();
        } else if (BluetoothDevice.ACTION_PAIRING_REQUEST.equals(action)) {
            // 处理配对请求
        } else if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(action)) {
            // 检查配对状态
            int bondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, BluetoothDevice.BOND_NONE);
            if (bondState == BluetoothDevice.BOND_BONDED) {
                // 配对成功
            } else if (bondState == BluetoothDevice.BOND_NONE) {
                // 配对失败
            }
        }
    }
};

// 注册广播
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
filter.addAction(BluetoothDevice.ACTION_PAIRING_REQUEST);
filter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
context.registerReceiver(receiver, filter);

发现设备的源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七饭与安生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值