3

我在 android webview 中使用 HTML5 音频播放器。我想静音音频,我正在使用这样的代码

        this.mute = function()
        {
            console.debug("Muted");
            if(_audioHtml.muted == undefined) {
                alert("Doesn't exist");
            }
            else {
                if(_audioHtml.muted === true) {
                    alert("Muted");
                }
                else if (_audioHtml.muted === false) {
                    alert("Non Muted");
                }
                else {
                    alert("None of them");   
                }
            }
            _audioHtml.muted = true;
        };

每次通话后,我都可以看到 muted 的值发生了变化。但它不会对设备产生任何影响。它总是以设定的音量产生声音。我怎么能在android中做到这一点。我使用的是安卓 4.0.4。

谢谢。

4

3 回答 3

1

假设像这样的音频标签<audio id="player" src="something.mp3" />,您应该muted使用 Javascript 切换标签本身的属性......类似

$('#player').muted = true;
于 2012-11-13T21:24:08.567 回答
1

如果您以这种方式设置音频,它将起作用:(html5 标记将被静音)在您的 JAVA 活动中:

wv.loadUrl("file:///android_asset/index.html");     
 wv.addJavascriptInterface(this, "jInterface");

在您的 html 文件中:静音:

<script>
jInterface.mute();
</script>

现在回到你的 java 活动:

public void mute()
        {
             audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0);
        }
于 2012-12-31T18:10:10.747 回答
0

我还没有找到适用于我的 MotoX 4.2 设备的解决方案,但这在大多数情况下都可以正常工作,基本上你在视频开始播放后就暂停了

这里需要注意的是,我的三星 4.3 设备过早地触发“播放”,它应该在视频实际开始播放时触发,但在视频开始加载时触发

if (sdkVersion < 4.4) {
    player.addEventListener("timeupdate", pauseIfPlaying); // check player.currentTime > 0
} else {
    player.addEventListener("playing", function () {
        player.muted = true;
    });
}
于 2015-09-23T01:30:50.777 回答