含静音自动播放视频的WebView导致其他音频暂停的解决问询
解决WebView静音自动播放视频打断后台音频的问题
好问题!这个困扰其实完全可以通过配置WebView来解决,不用等Google修复Chrome WebView~ 下面给你详细说下具体的方案:
针对Android平台的配置方案
1. 适配Android 8.0(API 26)及以上设备
从Android 8.0开始,WebView提供了直接控制音频焦点的配置项。你只需要给WebSettings设置AUDIOFOCUS_NONE,这样WebView播放静音视频时就不会去抢音频焦点,后台的Spotify这类应用就能继续播放了。
代码示例:
WebSettings webSettings = yourWebView.getSettings(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { webSettings.setAudioFocusType(WebSettings.AUDIOFOCUS_NONE); }
2. 适配Android 8.0以下设备
低版本系统没有直接的WebSettings配置项,但一般来说,静音自动播放的视频不会主动抢占音频焦点。如果遇到个别设备出现问题,可以试试通过注入JavaScript手动触发静音播放,确保视频始终保持静音状态,避免触发音频焦点请求:
yourWebView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); // 注入JS确保视频静音并启动播放 view.evaluateJavascript("const video = document.querySelector('video'); video.muted = true; video.play();", null); } });
验证效果
配置完成后,你可以先打开Spotify播放音频,再加载包含静音自动播放视频的WebView,确认后台音频不会被暂停。当用户主动点击视频开启音频时,WebView会正常请求音频焦点,此时后台音频暂停,这是符合用户预期的行为。
关于官方修复的说明
目前Chrome WebView的默认行为确实会让静音自动播放视频请求音频焦点,但通过上面的配置已经完全可以规避这个问题,不需要等官方修复。后续如果官方优化了这个默认行为,这些配置也能兼容新的逻辑。
内容的提问来源于stack exchange,提问作者Nilzor
相关产品推荐
相关产品推荐

