Android 蓝牙HFP通话源码分析 --- HFP协议的连接(一)

同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦。​​​​​​​

该文章基于Android 12

一、HFP简单介绍

HFP (Hands-free Profile),让蓝牙设备(如蓝牙耳机)可以控制电话,如接听、挂断、拒接、语音拨号等,拒接、语音拨号要看蓝牙耳机及电话是否支持。

HFP定义了音频网关(AG)和免提组件(HF)两个角色:
音频网关(AG) – 该设备为音频(特别是手机)的输入/输出网关。
免提组件(HF) – 该设备作为音频网关的远程音频输入/输出机制,并可提供若干遥控功能。

二、HFP协议的连接

当在手机上setting中点击hfp连接时,调用到packages/apps/Settings/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java 的onPreferenceClick()

    @Override
    public boolean onPreferenceClick(Preference preference) {
        ......
        SwitchPreference profilePref = (SwitchPreference) preference;
        if (prof
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
蓝牙耳机配置文件(HFP)的初始化主要通过四个模块实现:btif(Bluetooth Interface)、bta(Bluetooth Application)、btm(Bluetooth Manager)和hci(HCI,Host Controller Interface)。 首先,通过Bluetooth Interface(btif)模块接收用户指定启用蓝牙耳机以及设备之间的蓝牙连接请求。btif模块负责处理蓝牙事件,例如应用层指令和连接状态通知。在HFP初始化过程中,btif模块会与bta模块进行通信。 接下来,Bluetooth Application(bta)模块会根据用户指定的蓝牙连接请求进行相关设置和初始化。bta模块主要负责蓝牙连接请求的建立、管理和通信。在HFP初始化过程中,bta模块会与Bluetooth Manager(btm)模块进行通信。 在Bluetooth Manager(btm)模块中,会首先进行蓝牙适配器的初始化,包括蓝牙管理器和底层蓝牙适配器。然后,通过btm模块与Host Controller Interface(hci)模块进行通信。HCI模块用于和蓝牙芯片进行通信,完成蓝牙连接的建立。HCI模块与蓝牙芯片之间的通信协议包括命令和事件。 最后,在HCI模块的基础上,通过蓝牙芯片实现蓝牙连接,即通过无线通信方式与蓝牙耳机进行音频传输。这样,Android设备就成功地初始化了蓝牙耳机HFP配置。 整个过程可以总结为:用户启用蓝牙耳机后,系统通过btif模块接收到蓝牙连接请求,然后通过bta模块进行处理,进一步与btm模块和hci模块通信,最终通过hci模块与蓝牙芯片建立蓝牙连接。通过这些步骤,Android设备与蓝牙耳机实现了HFP初始化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

知识分享小达人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值