我正在开发一个android (和IOS)应用程序,该应用程序播放音频消息没有问题。我的问题如下:如果手机已经连接到蓝牙(蓝牙启用和连接),如果然后我启动我的应用程序并播放音频文件,在这种情况下,我在电话和蓝牙扬声器上都听不到任何声音。
但是,如果我启动我的应用程序,然后激活蓝牙,然后播放音频文件,没有问题,声音在我的蓝牙扬声器上播放得很好。
我现在使用的解决方案是,当我启动我的应用程序时,我完全禁用蓝牙,然后我在onDeviceready上重新启动它(使用cordova插件),它的工作原理是这样的,但它不是理想的解决方案,这是非常恼人的用户,蓝牙断开连接和重新连接,特别是当它是汽车的蓝牙。
有没有人有同样的问题,你能帮我找到另一个解决方案吗?
我使用的是最新版本的Cordova (7.0.1),android (6.2.3) ...我使用plugova cordova-plugin-bluetoothle重启蓝牙(在应用程序启动后禁用然后启用)
有什么想法吗?
发布于 2017-11-16 19:40:14
这里有完全相同的问题!我正在为安卓(6.4.0)和iOS (4.5.3)开发一个音乐iOS应用,它是用Cordova (7.1.0)构建的。我使用webaudio API来播放声音。除了这个特殊的例子之外,所有的东西在每个平台上都工作得很好:
如果在启动应用程序之前启用并连接了蓝牙,则根本不会播放任何声音。只有在Android上才会出现这个问题。在一些型号/类型的Android设备上,它可以工作,在其他一些设备上,它不能...示例:
不幸的是,我还没有找到任何“干净”的解决方案。我做的和你的一样(BT=bluetooth):
我在测试过程中发现的唯一提示是关于AudioContext对象的一个属性。AudioContext对象有一个名为baseLatency.的属性official DOC对此并不是很清楚:
这表示AudioContext将音频从AudioDestinationNode传递到音频子系统所产生的处理延迟的秒数……
我所理解的是,这个属性为您提供了AudioContext将声音带到目的地所需的时间/延迟的估计(以秒为单位)……
在代码中初始化AudioContext之后,您可以请求此baseLatency (只读属性):
var context = new AudioContext();
console.log(context.baseLatency);// 0.008 for example我在测试过程中注意到,每次出现问题时,这个baseLatency总是高于0.2。
蓝牙DISabled示例
// baseLatency on computer = 0.008
// baseLatency on iOS devices = 0.05
// baseLatency on Android devices = 0.05蓝牙ENabled示例
// baseLatency on computer = 0.008 (same)
// baseLatency on iOS devices = 0.05 (same)
// baseLatency on (some) Android devices = 0.2 (HIGHER)嗯,我做了几百次这个测试,每次都有相同的结果。如果在一些安卓设备上启动应用程序之前启用了BT,baseLatency将高于0.2,这意味着AudioContext将无法在您的应用程序中播放任何声音。这不是一个我知道的解决方案,但它可以让你确定应用程序是否会播放声音,这会有一点帮助。
我试图重新初始化AudioContext对象,但这根本不起作用...即使重新构造AudioContext对象,baseLatency也保持不变。
我希望这个小小的提示能帮助我们找到解决方案!
https://stackoverflow.com/questions/46649095
复制相似问题