蓝牙配对(2)Passkey Entry 模型(输入方)
文章目录1. 触发条件(何时充当输入方)2. BlueZ Agent API 的核心方法:`RequestPasskey`3. 输入方的完整工作流程图4. 输入方的核心工程细节(必看避坑点)① 前导零(Leading Zeros)的惊天大坑② 错误输入与重试机制③ Cancel(取消)的超时处理④ 输入过程中的进度反馈(与显示方无关)5. 与 Numeric Comparison 的本质区别(高频面试点)总结一句话Passkey Entry 模型(输入方)是蓝牙 SSP 中与“显示方”完全对应的角色。它的核心职责极其简单直接:用户看着对方设备屏幕上的 6 位数字,然后在本设备的键盘上完整敲出这串数字,系统自动发送给协议栈进行校验。如果说显示方是“ATM 机(自动取款机)”,那么输入方就是“手持银行卡和密码的用户”——输入方拥有唯一的“裁决权”,因为数字是否敲对,直接决定了配对能否成功。结合 BlueZ 的 Agent API,我为你深度拆解输入方的底层实现、交互逻辑及核心避坑点:1. 触发条件(何时充当输入方)协议栈根据 I/O 能力自动分配角色。如果你的设备注册的 Capability 为KeyboardOnly,且对端注册为DisplayOnly或KeyboardDisplay,则你的设备被定为输入方。典型场景:蓝牙键盘连接电脑:电脑屏幕(显示方)显示123456,用户在键盘(输入方)上敲击数字并回车。车载蓝牙连接手机:车机屏幕(显示方)显示数字,用户在车机物理旋钮/触控板(输入方)上输入。智能门锁连接手机 App:门锁