cordova在蓝牙音箱上没有声音

我正在研究一个android(和IOS)应用程序,该应用程序播放音频消息没有问题。 我的问题如下:如果移动设备已经连接到蓝牙(蓝牙启用并连接),那么我启动我的应用程序并播放音频文件,在这种情况下我在电话机和蓝牙扬声器上都没有听到任何声音。

但是,如果我启动我的应用程序,然后我激活蓝牙,然后播放音频文件,没有问题,我的蓝牙扬声器声音很好。

我现在使用的解决方案是,当我启动我的应用程序时,我完全禁用了蓝牙,然后我在onDeviceready上重新启动它(使用插件cordova)它的工作方式就像那样但是它不是理想的解决方案,它非常烦人的蓝牙断开并重新连接的用户,特别是当它是汽车的蓝牙时。

有没有人有同样的问题,你能帮我找到另一个解决方案。

我使用最新版本的Cordova(7.0.1),android(6.2.3)……我使用plugova cordova-plugin-bluetoothle重新启动蓝牙(禁用然后在启动应用程序后启用)

有什么想法吗?

完全相同的问题在这里! 我正在开发一个用Cordova(7.1.0)构建的Android(6.4.0)和iOS(4.5.3)的音乐webapp。 我使用webaudio API播放声音。 除了在这个特定的情况下,一切都适用于每个平台:

如果在我启动应用程序之前启用并连接蓝牙,则根本没有声音播放。 仅在Android上出现此问题。 在一些型号/类型的Android设备上它可以工作,在其他一些设备上它没有…示例:

  • 三星J3(Android v5.1.1)=没有声音播放
  • LENOVO TB2(Android v5.1.1)=没有声音播放
  • HUAWEI VTR(Android v7.0)=没有声音播放
  • LG G6(Android v7.0)=它就像一个魅力!

不幸的是我还没有找到任何“干净”的解决方案。 我做的比你的(BT =蓝牙):

  1. 如果连接了BT,则强制禁用BT,
  2. 重新加载整个页面,
  3. 重新连接BT。

我在测试中发现的唯一提示是关于AudioContext对象的属性。 AudioContext对象有一个名为baseLatency的属性。 官方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) 

好吧,我做了几次这个测试,每次都是相同的结果。 如果在某些 Androids设备上启动应用程序之前启用了BT,则baseLatency将高于0.2,这意味着AudioContext将无法在您的应用程序中播放任何声音。 这不是我所知道的解决方案,但这可以帮助您确定应用程序是否会发出声音。

我试图重新初始化AudioContext对象,但这根本不起作用…即使重建AudioContext对象,baseLatency也保持不变。

我希望这个小小的提示可以帮助我们找到解决方案!