菜鸟教程小白 发表于 2022-12-11 18:56:58

android - Cordova 蓝牙音箱没有声音


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

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

<p>我现在使用的解决方案是,当我启动我的应用程序时,我完全禁用了蓝牙,然后我在 onDeviceready 上重新启动它(使用插件cordova)它可以正常工作,但它作为解决方案并不理想,它是蓝牙断开并重新连接的用户非常烦人,尤其是当它是汽车的蓝牙时。</p>

<p>有没有人有同样的问题,你能帮我找到另一个解决方案吗?</p>

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

<p>有什么想法吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这里完全相同的问题!我正在开发一个使用 Cordova (7.1.0) 构建的适用于 Android (6.4.0) 和 iOS (4.5.3) 的音乐网络应用程序。我使用 webaudio API 来播放声音。除此特定情况外,所有平台上的一切都运行良好:</p>

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

<ul>
<li>Samsung J3 (Android v5.1.1) = 没有声音播放</li>
<li>LENOVO TB2 (Android v5.1.1) = 没有声音播放</li>
<li>HUAWEI VTR (Android v7.0) = 没有声音播放</li>
<li>LG G6 (Android v7.0) = 它就像一个魅力!</li>
</ul>

<p>不幸的是,我还没有找到任何“干净”的解决方案。我做的和你一样(BT=蓝牙):</p>

<ol>
<li>如果此连接已连接,则强制禁用 BT,</li>
<li>重新加载整个页面,</li>
<li>重新连接 BT。</li>
</ol>

<p>我在测试中发现的唯一提示是关于 AudioContext 对象的属性。 AudioContext 对象有一个名为 <strong>baseLatency</strong> 的属性。 <a href="https://webaudio.github.io/web-audio-api/#attributes-0" rel="noreferrer noopener nofollow">official DOC</a>不是很清楚:</p>

<blockquote>
<p>This represents the number of seconds of processing latency incurred by the AudioContext passing the audio from the AudioDestinationNode to the audio subsystem [...]</p>
</blockquote>

<p>我的理解是,这个属性给你一个估计(以秒为单位)AudioContext 将声音带到他的目的地所需的时间/延迟......</p>

<p>在您的代码中初始化 AudioContext 之后,您可以请求此 <strong>baseLatency</strong>(只读属性):</p>

<pre><code>var context = new AudioContext();
console.log(context.baseLatency);// 0.008 for example
</code></pre>

<p>我在测试期间注意到,每次出现问题时,baseLatency<strong>总是</strong>高于 0.2。</p>

<p>蓝牙示例<strong>禁用</strong>:</p>

<pre><code>// baseLatency on computer = 0.008
// baseLatency on iOS devices = 0.05
// baseLatency on Android devices = 0.05
</code></pre>

<p>蓝牙示例<strong>启用</strong>:</p>

<pre><code>// baseLatency on computer = 0.008 (same)
// baseLatency on iOS devices = 0.05 (same)
// baseLatency on (some) Android devices = 0.2 (HIGHER)
</code></pre>

<p>嗯,我做了数百次这个测试,每次都是相同的结果。如果在 <strong>一些</strong> Android 设备上启动应用程序之前启用了 BT,<strong>baseLatency</strong> 将高于 0.2,这意味着 AudioContext 将无法在您的应用程序中播放任何声音.这不是我知道的解决方案,但可以让您确定应用程序是否会播放声音,这会有所帮助。</p>

<p>我尝试重新初始化 AudioContext 对象,但这根本不起作用...即使您重建 AudioContext 对象,baseLatency 也保持不变。</p>

<p>我希望这个小提示可以帮助我们找到解决方案!</p></p>
                                   
                                                <p style="font-size: 20px;">关于android -Cordova 蓝牙音箱没有声音,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/46649095/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/46649095/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: android - Cordova 蓝牙音箱没有声音