当蓝牙耳机配对成功后,会发送一个BONDING_STATE_CHANGE的消息,在BondStateMachine状态机里会对这个消息进行处理,调用setProfilePriorty(dev)函数对当前的耳机进行优先级的设置,

把以前的设置优先级顺序Hid、A2DP、Headset改为Headset、A2DP、Hid,请看这个函数修改后的具体code:

private void setProfilePriorty(BluetoothDevice device){

HidService hidService = HidService.getHidService();

A2dpService a2dpService = A2dpService.getA2dpService();

HeadsetService headsetService = HeadsetService.getHeadsetService();

if ((headsetService != null) &&

(headsetService.getPriority(device)== BluetoothProfile.PRIORITY_UNDEFINED)){

headsetService.setPriority(device,BluetoothProfile.PRIORITY_ON);

}

if ((a2dpService != null) &&

(a2dpService.getPriority(device) ==BluetoothProfile.PRIORITY_UNDEFINED)){

a2dpService.setPriority(device,BluetoothProfile.PRIORITY_ON);

}

if((hidService != null) &&

(hidService.getPriority(device) ==BluetoothProfile.PRIORITY_UNDEFINED)){

hidService.setPriority(device,BluetoothProfile.PRIORITY_ON);

}

}

会把当前耳机的Headset Profile 和A2DP Profile的优先级设置为PRIORITY_ON。

当蓝牙耳机连接成功时,processProfileStateChanged函数会调用 setProfileAutoConnectionPriority(device,profileId)函数设置优先级,看修改后这个函数的具体code:

void setProfileAutoConnectionPriority(BluetoothDevice device, int profileId){

HeadsetService  hsService = HeadsetService.getHeadsetService();

A2dpService a2dpService =A2dpService.getA2dpService();

if ((hsService != null) &&

(BluetoothProfile.PRIORITY_AUTO_CONNECT !=hsService.getPriority(device))){

adjustOtherHeadsetPriorities(hsService,device);

hsService.setPriority(device,BluetoothProfile.PRIORITY_AUTO_CONNECT);

}

if ((a2dpService != null)&&

(BluetoothProfile.PRIORITY_AUTO_CONNECT != a2dpService.getPriority(device))){

adjustOtherSinkPriorities(a2dpService, device);

a2dpService.setPriority(device,BluetoothProfile.PRIORITY_AUTO_CONNECT);

}

}

会把当前耳机的Headset和A2DP的Profile优先级都设置为PRIORITY_AUTO_CONNECT,同时会把其他的耳机设备的优先级设为PRIORITY_ON,保证耳机自动连接优先级的设备只有一个。

蓝牙耳机自动连接过程:

当蓝牙打开时,如果有配对的蓝牙耳机存在,就会根据它的优先级,判断是否进行自动连接。如果优先级为PRIORITY_AUTO_CONNECT,该耳机就会自动进行连接。
--------------------- 
版权声明:本文为CSDN博主「就爱吃鲜橙」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/OswinWang/article/details/60871463

蓝牙耳机Priority设置流程相关推荐

  1. CE5.0 - eboot汇编Startup.s中MMU设置流程详细分析

    CE5.0 - eboot汇编Startup.s中MMU设置流程详细分析   以下为SMDK开发板startup.s部分启动代码.   ;------------------------------- ...

  2. sqlyog设置自动补全_sqlyog智能提示如何设置?sqlyog智能提示设置流程介绍

    sqlyog智能提示如何设置?sqlyog智能提示设置流程介绍 更新时间:2019-08-12 作者:cc 最近不少朋友表示还不会设置sqlyog智能提示,使用下面小编就带来sqlyog智能提示设置的 ...

  3. android 勿扰模式代码,Android N Zen Mode (勿扰模式)设置流程

    Android N去除了情景模式,取而代之的是勿扰模式.勿扰模式的入口有两处,下拉栏和设置声音里面.下面我们就从设置声音入口,看看勿扰模式的设置流程. 首先,勿扰模式的首页有三种选项,分别是仅允许优先 ...

  4. android 5.1 壁纸路径,RTFSC – Android5.1 壁纸设置流程简析 – RustFisher

    Android5.1 壁纸设置流程浅析 Ubuntu14.04  Android5.1  Source Insight3 这里只是简单分析一下5.1里是如何设置壁纸的:这个流程和4.4有一些不同.但基 ...

  5. 天籁obd接口针脚定义_典藏 | OBD接口位置大全及部分常用手机型号语音播报设置流程...

    OBD接口的位置 OBD接口的位置一般都在方向盘下方的内饰板中,靠近驾驶员膝盖附近的地方,不同车型的位置稍有区别,但基本位置都差不多. OBD接口统一采用梯形的16针DLC形式接插件,梯形接口是防误插 ...

  6. vim自定义语法高亮(syntax highlight)设置流程

    这里用一个非常简单的例子来展示vim自定义自己的语法并高亮显示的设置流程. 所使用的实例语言是python,为了区分vim自带的python语法,我们把文件名保存为test.me,其内容如下图所示: ...

  7. 跑腿小程序需要服务器吗,小程序设置流程

    外卖小程序设置流程总结: 1. 先添加公众号,因为小程序设置是在模块内部后台进行设置的 2. 设置平台基础设置,如下图: ![](https://img.kancloud.cn/1e/65/1e655 ...

  8. prometheus开机自动启动设置流程

    prometheus开机自动启动设置流程 作者:蓝眼泪 原先手动重启的方式 /usr/local/Prometheus/prometheus --config.file=/usr/local/Prom ...

  9. Android 7.1.2 默认输入法的设置流程分析与修改

    一.默认输入法的设置流程分析 设置流程分析 1.  Android系统开机后,当ActivityManagerService及PackageManagerService都ready后,systemse ...

  10. 安移通(ARUBA)WiFi短信验证:无线上网热点短信认证设置流程

    对人员流动比较频繁的局域网来说,首要的一个问题就是要进行网络的准入认证,记录用户的身份信息和上网日志.从而使网络行为有据可查,也能满足职能部门的督察需要.在提供WiFi上网服务的地方,如:公共场所.商 ...

最新文章

  1. mllib逻辑回归 spark_Spark架构详解——分布式流计算内存批处理迭代运算框架
  2. CSS中的BFC机制
  3. C# 中的 is 真的是越来越强大,越来越语义化
  4. hql中获取前一天的数据_PostgreSql 怎么获取数据库中关键系统信息(一)
  5. java 开发微信中回调验证一直提示 解密失败处理(Java)
  6. 易筋SpringBoot 2.2 | 第廿九篇:SpringBoot之RPC入门到精通
  7. linux挂载曙光存储,曙光I1620G30获取设备的cpu、内存、存储等参数信息。
  8. bat命令调用rar进行文件夹压缩
  9. 用Java实现【万年历】
  10. 更新BLE的设备后,OSX LightBlue 不会更新扫描到Service
  11. ARM架构及ARM指令集、Thumb指令集你了解多少?
  12. Unity url编码转换
  13. java: 找不到符号
  14. 公众号获取token失败_关于微信公众号开发的Token验证失败该如何解决?
  15. 服务器 uefi 安装win7系统,uefi模式安装win7最新教程
  16. 一些U盘启动盘电脑热键的对应关系
  17. 易班php,易班轻应用开发:PHP版
  18. 巴比特独家 | 区块链入选新基建,这几件事你不得不知
  19. Navicat 查看密码 破解保存的密码 + 密码解密
  20. java问卷导入excel,将Excel数据直接上传到问卷星

热门文章

  1. 解决ValueError: Cannot run multiple SparkContexts at once; existing SparkContext
  2. Win11如何优化服务?Win11优化服务的方法
  3. 利用计算机打字教学设计,四年级全一册信息技术教案-第1课正确的坐姿和指法--基本键打字练习 河大版...
  4. 保存 web.xml 卡
  5. LeetCode--476. 数字的补数
  6. Oracle的四分位数函数
  7. VMware虚拟机下Ubuntu18.04学校宽带拨号连接网络
  8. 《我这一辈子》 老舍 著
  9. 客户服务与工单管理系统功能大全
  10. 杭州电子科技大学OJACM 2049题 (必AC及其易错点)