如何以编程方式更改蓝牙编解码器?

发布于 2025-01-09 20:13:17 字数 179 浏览 1 评论 0原文

我们可以在开发者设置中更改配对设备当前的蓝牙编解码器,如下所示。

更改蓝牙编解码器

是否有任何解决方法可以通过更改系统设置来以编程方式更改此设置?

We have an option of changing the current Bluetooth codec for the paired device in the Developer Settings, as shown below.

Change bluetooth codec

Is there any workaround by changing the system settings, to programmatically change this setting?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

青春如此纠结 2025-01-16 20:13:17

不幸的是,API 的标准实现不允许这样做。

但没有人阻止我们扩展标准 API。
扩展的API可以在这里获取。

接下来,我们获取BluetoothA2dp 上课并学习新方法:
getCodecStatus、getCodecConfig、getCodecType

我们收集 BluetoothCodecConfig 并应用 setCodecConfigPreference(device, newConfig)

示例:
对象:服务监听器

            a2dp = proxy as BluetoothA2dp
            val device: BluetoothDevice = a2dp.activeDevice
            val status: BluetoothCodecStatus = a2dp.getCodecStatus(device)
            val config = status.codecConfig
            val codec = config.codecType
            val newConfig = BluetoothCodecConfig(0, 1000 * 1000, SAMPLE_RATE_44100, BITS_PER_SAMPLE_16, CHANNEL_MODE_STEREO, 32771, 49152, 0, 0)
            a2dp.setCodecConfigPreference(device, newConfig)
            val updatedStatus: BluetoothCodecStatus = a2dp.getCodecStatus(device)
            val updatedConfig = updatedStatus.codecConfig

Unfortunately, the standard implementation of the API will not allow this to be done.

But no one is stopping us from extending the standard API.
Extended APIs can be obtained HERE

Next, we get the BluetoothA2dp class and pick up new methods:
getCodecStatus, getCodecConfig, getCodecType

We collect BluetoothCodecConfig and apply setCodecConfigPreference(device, newConfig)

Example:
object : ServiceListener

            a2dp = proxy as BluetoothA2dp
            val device: BluetoothDevice = a2dp.activeDevice
            val status: BluetoothCodecStatus = a2dp.getCodecStatus(device)
            val config = status.codecConfig
            val codec = config.codecType
            val newConfig = BluetoothCodecConfig(0, 1000 * 1000, SAMPLE_RATE_44100, BITS_PER_SAMPLE_16, CHANNEL_MODE_STEREO, 32771, 49152, 0, 0)
            a2dp.setCodecConfigPreference(device, newConfig)
            val updatedStatus: BluetoothCodecStatus = a2dp.getCodecStatus(device)
            val updatedConfig = updatedStatus.codecConfig
往昔成烟 2025-01-16 20:13:17

不是作为应用程序开发人员,因为编解码器协商是蓝牙堆栈的一部分。但如果您可以更改蓝牙堆栈源,则可能是可行的。在 appuals 有一篇很好的文章介绍了如何做到这一点:
如何修改Android 上的蓝牙堆栈可大幅增强蓝牙音频质量

Not as an application developer, as the codec negotiation is part of the Bluetooth stack. But if you can change the Bluetooth stack sources, it might be possible. Over at appuals there is a nice article on how to do this:
How to Modify Bluetooth Stacks on Android for Greatly Enhanced Bluetooth Audio Quality

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文