Android 蓝牙扬声器上没有声音

Android 蓝牙扬声器上没有声音,android,ios,cordova,bluetooth,Android,Ios,Cordova,Bluetooth,我正在开发一个android(和IOS)应用程序,该应用程序可以毫无问题地播放音频消息。我的问题如下: 如果手机已经连接到蓝牙(蓝牙已启用并已连接),如果我启动应用程序并播放音频文件,在这种情况下,我听不到telephine或蓝牙扬声器上的任何声音 但是,如果我启动我的应用程序,然后激活蓝牙,然后播放音频文件,没有问题,声音在我的蓝牙扬声器上很好地发出 我现在使用的解决方案是,当我启动我的应用程序时,我完全禁用蓝牙,然后在onDeviceready上重新启动它(使用插件cordova),它的工作

我正在开发一个android(和IOS)应用程序,该应用程序可以毫无问题地播放音频消息。我的问题如下: 如果手机已经连接到蓝牙(蓝牙已启用并已连接),如果我启动应用程序并播放音频文件,在这种情况下,我听不到telephine或蓝牙扬声器上的任何声音

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

我现在使用的解决方案是,当我启动我的应用程序时,我完全禁用蓝牙,然后在onDeviceready上重新启动它(使用插件cordova),它的工作原理是这样的,但它不是理想的解决方案,蓝牙断开和重新连接对用户来说非常烦人,尤其是当它是汽车的蓝牙时

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

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


有什么想法吗?

这里也有同样的问题!我正在为Android(6.4.0)和iOS(4.5.3)开发一个音乐webapp,它是用Cordova(7.1.0)构建的。我使用webaudio API播放声音。除此之外,任何平台上的一切都非常好:

如果在我启动应用程序之前启用并连接了蓝牙,则根本不会播放任何声音。此问题仅在Android上发生。在某些型号/类型的Android设备上,它可以工作,而在其他一些设备上,它不工作。。。例如:

  • 三星J3(安卓v5.1.1)=无声音播放
  • 联想TB2(Android v5.1.1)=无声音播放
  • 华为VTR(安卓v7.0)=无声音播放
  • LG G6(安卓v7.0)=它就像一个魅力
不幸的是,我还没有找到任何“干净”的解决方案。我做的和你的一样(BT=蓝牙):

  • 如果此BT已连接,则强制禁用BT
  • 重新加载整个页面
  • 重新连接BT
  • 我在测试中发现的唯一提示是关于AudioContext对象的属性。AudioContext对象有一个名为baseLatency的属性。问题并不是很清楚:

    这表示AudioContext将音频从AudioDestinationNode传递到音频子系统所产生的处理延迟秒数[…]

    我所理解的是,这个属性为您提供了AudioContext将声音带到目的地所需的时间/延迟的估计值(以秒为单位)

    在代码中初始化AudioContext之后,您可以立即请求此baseLatency(只读属性):

    我在测试中注意到,每次出现问题时,这个baseLatency总是高于0.2

    禁用蓝牙的示例:

    // baseLatency on computer = 0.008
    // baseLatency on iOS devices = 0.05
    // baseLatency on Android devices = 0.05
    
    // baseLatency on computer = 0.008 (same)
    // baseLatency on iOS devices = 0.05 (same)
    // baseLatency on (some) Android devices = 0.2 (HIGHER)
    
    启用蓝牙的示例:

    // baseLatency on computer = 0.008
    // baseLatency on iOS devices = 0.05
    // baseLatency on Android devices = 0.05
    
    // 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也保持不变


    我希望这个小小的提示能帮助我们找到解决办法

    任何想法都将受到欢迎……不幸的是,还没有。我发现解决这个问题的唯一方法是在应用程序启动时检测设备是否已经在蓝牙中配对。如果是的话,我会强制关闭蓝牙,强制刷新页面,然后告诉用户他可以重新连接蓝牙设备。。。不是很干净的解决方案。。。如果您发现任何解决方案/想法,请在此页面上分享!看起来像是Chrome Android的相关bug: