蓝牙耳机Priority设置流程
当蓝牙耳机配对成功后,会发送一个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设置流程相关推荐
- CE5.0 - eboot汇编Startup.s中MMU设置流程详细分析
CE5.0 - eboot汇编Startup.s中MMU设置流程详细分析 以下为SMDK开发板startup.s部分启动代码. ;------------------------------- ...
- sqlyog设置自动补全_sqlyog智能提示如何设置?sqlyog智能提示设置流程介绍
sqlyog智能提示如何设置?sqlyog智能提示设置流程介绍 更新时间:2019-08-12 作者:cc 最近不少朋友表示还不会设置sqlyog智能提示,使用下面小编就带来sqlyog智能提示设置的 ...
- android 勿扰模式代码,Android N Zen Mode (勿扰模式)设置流程
Android N去除了情景模式,取而代之的是勿扰模式.勿扰模式的入口有两处,下拉栏和设置声音里面.下面我们就从设置声音入口,看看勿扰模式的设置流程. 首先,勿扰模式的首页有三种选项,分别是仅允许优先 ...
- android 5.1 壁纸路径,RTFSC – Android5.1 壁纸设置流程简析 – RustFisher
Android5.1 壁纸设置流程浅析 Ubuntu14.04 Android5.1 Source Insight3 这里只是简单分析一下5.1里是如何设置壁纸的:这个流程和4.4有一些不同.但基 ...
- 天籁obd接口针脚定义_典藏 | OBD接口位置大全及部分常用手机型号语音播报设置流程...
OBD接口的位置 OBD接口的位置一般都在方向盘下方的内饰板中,靠近驾驶员膝盖附近的地方,不同车型的位置稍有区别,但基本位置都差不多. OBD接口统一采用梯形的16针DLC形式接插件,梯形接口是防误插 ...
- vim自定义语法高亮(syntax highlight)设置流程
这里用一个非常简单的例子来展示vim自定义自己的语法并高亮显示的设置流程. 所使用的实例语言是python,为了区分vim自带的python语法,我们把文件名保存为test.me,其内容如下图所示: ...
- 跑腿小程序需要服务器吗,小程序设置流程
外卖小程序设置流程总结: 1. 先添加公众号,因为小程序设置是在模块内部后台进行设置的 2. 设置平台基础设置,如下图: ![](https://img.kancloud.cn/1e/65/1e655 ...
- prometheus开机自动启动设置流程
prometheus开机自动启动设置流程 作者:蓝眼泪 原先手动重启的方式 /usr/local/Prometheus/prometheus --config.file=/usr/local/Prom ...
- Android 7.1.2 默认输入法的设置流程分析与修改
一.默认输入法的设置流程分析 设置流程分析 1. Android系统开机后,当ActivityManagerService及PackageManagerService都ready后,systemse ...
- 安移通(ARUBA)WiFi短信验证:无线上网热点短信认证设置流程
对人员流动比较频繁的局域网来说,首要的一个问题就是要进行网络的准入认证,记录用户的身份信息和上网日志.从而使网络行为有据可查,也能满足职能部门的督察需要.在提供WiFi上网服务的地方,如:公共场所.商 ...
最新文章
- mllib逻辑回归 spark_Spark架构详解——分布式流计算内存批处理迭代运算框架
- CSS中的BFC机制
- C# 中的 is 真的是越来越强大,越来越语义化
- hql中获取前一天的数据_PostgreSql 怎么获取数据库中关键系统信息(一)
- java 开发微信中回调验证一直提示 解密失败处理(Java)
- 易筋SpringBoot 2.2 | 第廿九篇:SpringBoot之RPC入门到精通
- linux挂载曙光存储,曙光I1620G30获取设备的cpu、内存、存储等参数信息。
- bat命令调用rar进行文件夹压缩
- 用Java实现【万年历】
- 更新BLE的设备后,OSX LightBlue 不会更新扫描到Service
- ARM架构及ARM指令集、Thumb指令集你了解多少?
- Unity url编码转换
- java: 找不到符号
- 公众号获取token失败_关于微信公众号开发的Token验证失败该如何解决?
- 服务器 uefi 安装win7系统,uefi模式安装win7最新教程
- 一些U盘启动盘电脑热键的对应关系
- 易班php,易班轻应用开发:PHP版
- 巴比特独家 | 区块链入选新基建,这几件事你不得不知
- Navicat 查看密码 破解保存的密码 + 密码解密
- java问卷导入excel,将Excel数据直接上传到问卷星
热门文章
- 解决ValueError: Cannot run multiple SparkContexts at once; existing SparkContext
- Win11如何优化服务?Win11优化服务的方法
- 利用计算机打字教学设计,四年级全一册信息技术教案-第1课正确的坐姿和指法--基本键打字练习 河大版...
- 保存 web.xml 卡
- LeetCode--476. 数字的补数
- Oracle的四分位数函数
- VMware虚拟机下Ubuntu18.04学校宽带拨号连接网络
- 《我这一辈子》 老舍 著
- 客户服务与工单管理系统功能大全
- 杭州电子科技大学OJACM 2049题 (必AC及其易错点)