我使用最简单的WebView实例,到目前为止所需的一切都运行良好,除了播放声音外,javascript调用的声音和html5音频标签都无法通过此WebView工作。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView myWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.loadUrl("file:///android_asset/game.html");
}
}
我可以排除HTML方面的问题,因为声音在PC和手机上的常规浏览器中都能正常工作。
到目前为止,在Android 4.4和Andoroid 7.0上进行了测试,它们在常规浏览器中都有声音,但在WebView中没有声音。
最常见的答案是手机需要通过点击屏幕启动声音。这并没有解释为什么常规浏览器工作正常,而只有WebView似乎受到影响。
答案 0 :(得分:12)
尝试添加此
webSettings .setMediaPlaybackRequiresUserGesture(false)
答案 1 :(得分:0)
我遇到了同样的问题,并进行了大量搜索以查找android WebViews中的音频。我的音频文件存储在Google驱动器中。我可以使用WebViews轻松播放存储在Google驱动器以外的外部服务器中的音频文件。但是,当我想从Google驱动器中读取它时,它会在WebViews中显示该图标,但是在播放时出现错误“无法播放音频”。最终,我在网站https://www.labnol.org/internet/google-drive-mp3-embed/2232/中找到了一个令人惊讶的解决方案。他建议将网址的最后一部分更改为“预览”。例如,URL的格式为https://drive.google.com/file/d/1234ab56/view?usp=sharing,更改最后一个零件视图?usp = sharing进行预览。所以最后的URL将是 https://drive.google.com/file/d/1234ab56/preview。 现在,使用相同的代码加载它,以将嵌入式youtube视频加载到WebView中。谢谢。