Android13蓝牙 停用绝对音量功能

您所在的位置:网站首页 调节蓝牙耳机的音量在哪里 Android13蓝牙 停用绝对音量功能

Android13蓝牙 停用绝对音量功能

2024-07-10 03:05| 来源: 网络整理| 查看: 265

Android13蓝牙 停用绝对音量功能

文章目录 Android13蓝牙 停用绝对音量功能一、前言二、代码实现分析过程1、查看SettingsLib源码资源2、查看原生Setitntgs 相关字符(1)xml 布局文件中的显示(2) java 代码文件中的控制串口上控制: 三、总结

一、前言

Android13 Tv大屏设备出现了连接蓝牙后,蓝牙音箱声音特别大,并且调节蓝牙声音后,断开连接,再重新连接蓝牙声音还是很大。 从网上看到是可以打开设置里面的 “停用绝对音量功能” 进行规避这个问题。

看下网上对”停用绝对音量功能“的说明:

有时连接了蓝牙耳机,会出现声音突然变大的情况,这就是开启了绝对音量功能的原因。 如果“停用绝对音量功能”开启,那么蓝牙耳机的音量和手机的音量就是相互独立的。 如果“停用绝对音量功能”关闭,那么蓝牙耳机的音量和手机的音量就是相互同步的。(默认)

下面是原生Settings 中的字符串显示和图片:

在这里插入图片描述 上面的画面具体位置在开发者选项中,不过也有的手机是没有这个选项的。比如华为手机!

具体字符串:

停用绝对音量功能 停用蓝牙绝对音量功能,以防在连接到远程设备时出现音量问题(例如音量高得让人无法接受或者无法控制音量等)。

网上看了下,没几个对实现控制代码进行分析的,刚好看了一圈代码,顺便分享一下。

二、代码实现分析过程

开发者选项中是有这个选项的,但是在Settings 里面未找到 开关的字符串,不过通过SettingsLib 工程可以看到对应的字符串。

1、查看SettingsLib源码资源

文件位置和对应资源:

framework\base\packages\SettingsLib\res\values-zh-rCN\strings.xml "停用绝对音量功能" 2、查看原生Setitntgs 相关字符 (1)xml 布局文件中的显示

文件位置和对应布局文件:

packages\apps\Settings\res\xml\development_settings.xml (2) java 代码文件中的控制

Java文件位置:

packages\apps\Settings\src\com\android\settings\development\BluetoothAbsoluteVolumePreferenceController.java private static final String BLUETOOTH_DISABLE_ABSOLUTE_VOLUME_KEY = "bluetooth_disable_absolute_volume";

所以 控制“停用绝对音量功能”的代码基本可以确定是在 BluetoothAbsoluteVolumePreferenceController.java 这个类里面了。

继续查看Java文件,发现代码:

//prop字符串 static final String BLUETOOTH_DISABLE_ABSOLUTE_VOLUME_PROPERTY = "persist.bluetooth.disableabsvol"; //开关回调的地方 @Override public boolean onPreferenceChange(Preference preference, Object newValue) { final boolean isEnabled = (Boolean) newValue; SystemProperties.set(BLUETOOTH_DISABLE_ABSOLUTE_VOLUME_PROPERTY, isEnabled ? "true" : "false"); return true; }

所以啊所以,只需要设置 persist.bluetooth.disableabsvol 属性 true/false 就可以控制 “停用蓝牙绝对音量功能” !

串口上控制: setprop persist.bluetooth.disableabsvol true / false //设置 getprop persist.bluetooth.disableabsvol //获取

framework 源码中找不到关键字相关内容,在package 下找到了 !

再看看系统源码哪里做了具体事情,这里不做具体分析,需要的可以自行查阅:

android13/release/packages$ grep -nr persist.bluetooth.disableabsvol modules/Bluetooth/system/profile/avrcp/connection_handler.cc:49: osi_property_get("persist.bluetooth.disableabsvol", volume_disabled, "false"); modules/Bluetooth/system/btif/src/btif_rc.cc:5514: osi_property_get("persist.bluetooth.disableabsvol", volume_disabled, "false"); apps/Settings/src/com/android/settings/development/BluetoothAbsoluteVolumePreferenceController.java:37: "persist.bluetooth.disableabsvol";

估计就是cc文件里面做了判断和处理,并且未设置的情况默认为false ,即未开启”停用蓝牙绝对音量功能“。

三、总结

”停用蓝牙绝对音量功能“ 估计大部分开发者无法用到,但是多知道一些内容是不会吃灰的。

”停用蓝牙绝对音量功能“ 具体实现就是控制prop属性 persist.bluetooth.disableabsvol 就可进行开启和关闭。未设置的情况,默认是关闭。

就使用情况来看,似乎是记忆了蓝牙设备的音量大小,具体怎么实现的,不做分析研究。

网上也有对绝对音量和相对音量代码控制的分析(写得比较一般!): https://blog.csdn.net/cheriyou_/article/details/122681239



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3