在bluedroid/fluoride中关闭AVRCP CT侧的Absolute Volume

在AVRCP Profile中,有一个absolute volume功能,用于在CT侧和TG侧同步音量设置,简单概括来说,就是当手机端音量被调节时,通知耳机侧当前的音量数值,根据specification原文,其原意是为了让对侧能够显示当前音量。

在bluedroid/fluoride中,会根据收到的音量通知来调节本地的音量,但一些产品不希望本地的音量跟着对侧变,这就需要一个开关能关闭这个功能,起先我考虑的是屏蔽这个通知,但仅仅屏蔽通知是不够的,手机端仍不会调整输出音频流的增益,导致的现象就是调节手机端音量在车机侧没有任何效果。

最终我发现关闭此功能有两个关键点,第一是在AVCTP 通道创建初期的getcapabilities,bluedroid/fluoride 默认告诉对方自己的能力包含absolute volume,在这个地方加一个系统属性,在运行时通过判断该属性来决定回应的内容是否包含absolute volume,同时也不要向手机端发送注册绝对音量的通知的请求, 只有这样,手机端判定对方不支持绝对音量,才会调整自身输出音频流的增益,第二才是通过控制通知给上层(java层)的属性rc_features,根据前述系统属性的值决定是否取消BTA_AV_FEAT_CTRL这个属性,来告知上层,不支持absolute volume,这样就不会在车机端音量变化时,向下发出通知绝对音量变化的消息。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,032评论 3 119
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,865评论 1 92
  • 在我整日与那帮小子厮混在一起的那段时间,叶薰虽然不喜我身上沾染的越发油里油气的做派,但并没有因此与我划清界限,反而...
    猫儿刺阅读 250评论 6 1
  • 今天是班主任不在的第二天,我觉得我们今天的表现还算不错。 今天上的课基本上都是数学课,数学老师给我们布置了一些数学...
    嘉荣123阅读 195评论 0 1
  • 70岁的老爸早上5点起床,好不容易给老伴 挂了个号。第二天早早起床,本要抱着2岁的孙子,陪着老伴去看病。却被儿子...
    GavinYang阅读 558评论 0 48