android - 蓝牙音频不会立即恢复

标签 android audio bluetooth

想象一下通过蓝牙连接到扬声器(或任何蓝牙音频设备)的 Android 设备(可能是任何制造商的任何设备)......并且有“相当长”的时间没有播放音频从设备。

当音频从该设备恢复播放时,通常会出现“扬声器正在慢慢唤醒”阶段,此时听不到任何音频,而且音频很晚才变得可听。

当音频以恒定的音频“保持活跃”,或者只是短暂的沉默时,这不太明显,但是如果您的应用程序在不可预测的时间发出非常短且断断续续的声音……就像使用传感器测量环境条件的警报?

我不确定:

A) 这种行为是输出设备的某种节能功能,我们无法控制它,只能在我们想要的声音之前播放某种假音频/静音……或者有一个低- 持续循环的音量/白噪声……以抢先/防止“预热”。

B) 它是蓝牙协议(protocol)/标准/定义的一部分

C) 它在软件中是可控的(在 Android 上):

bluetooth.setMode(BluetoothMode.NO_NAPPING_ALLOWED);

我希望情况是 (C),如果是,那么正确的代码是什么?

我敢肯定那里有一个类似的问题,但我找不到它,而且我已经搜索了 AudioManager 的文档,虽然很多地方都提到了蓝牙,但我可以'找到这个功能。

最佳答案

为了好玩,我访问了手机上的开发人员选项,并选择了让设备保持唤醒状态的选项。我还尝试禁用任何电池优化。

我的 SONY XB-900 耳机在静默几分钟后关闭,我的便宜的 Monster 耳机没有关闭,还有一个便宜的蓝牙音箱没有关闭。

我在 Windows 上重复了同样的事情,结果完全一样。

然后我在一些论坛上搜索,使用关键字“蓝牙”“防止”“唤醒”“省电”“待机”“断开连接”“烦人”“静音”。

这位评论者讲述了一些有趣的事情:

I read that sony SRS-X1 bluetooth speaker doesn't cut off bluetooth audio connection after a period of inactivity. It just enters standby mode which it takes about 0.1 second to exit when audio signals arrive. So, you can lose 0.1 second of audio when audio is played after a period of inactivity. However, you can prevent it from entering standby mode by playing 20Hz noise continuously. Speakers cannot react to 20Hz noise, so 20Hz noise is silent.

这让我相信这是一个纯粹的播放设备端实现,操作系统和蓝牙与它没有任何关系。您没有找到任何有关它的文档这一事实支持了该理论。看起来解决方案就是您已经提到的那个:循环播放非常低或非常高的频率以保持设备唤醒。

关于android - 蓝牙音频不会立即恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72134314/

相关文章:

Android 通过蓝牙将文件/数据从应用程序发送到 PC/打印机/扫描仪/其他设备

android - Android 支持的蓝牙配置文件有哪些?

android - android list 中的 intent-filter 下可以包含多少方案和主机标签

java - 错误 :Execution failed for task ':app:transformClassesWithDexForDebug'

javascript - 如何多次播放一个音频文件

语音通话服务商

android - 将蓝牙配对对话带到前面

java - API 21 new DatePicker Show Week Number 崩溃

javascript - 如何在所有主要移动浏览器中使用 javascript 使视频播放器在按钮单击时全屏显示

Android 5.0 Lollipop 通知全音不播放