WebView不会播放任何声音

Gor*_*per 6 audio android webview

我使用最简单的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");
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以排除HTML方面的问题,因为声音在PC和手机上的常规浏览器中都能正常工作.

到目前为止,在Android 4.4和Andoroid 7.0上进行了测试,它们在常规浏览器中都有声音,但在WebView中没有声音.

最常见的答案是手机需要通过点击屏幕启动声音.这并不能解释为什么常规浏览器工作正常,而只有WebView似乎受到影响.

Pav*_*ley 12

尝试添加此功能

webSettings .setMediaPlaybackRequiresUserGesture(false)
Run Code Online (Sandbox Code Playgroud)

  • `if (Build.VERSION.SDK_INT > 17) { webSettings.setMediaPlaybackRequiresUserGesture(false); }` 这个函数添加到大于17的API,所以它不适用于小于17的API,你应该把它放在if条件中 (3认同)
  • 对我不起作用,但是我从我的远程服务器加载了响应应用程序(使用 create-react-app 创建)的 loadUrl。我使用 howler.js 并且我在 /public 文件夹中有一个 .mp3 文件,它不起作用的唯一方法是相同的:如果我从 android webview 使用它。(它适用于桌面、android 浏览器、ios 浏览器、ios webview)。.wav 也不起作用。但是,如果我从外部端点提供声音文件,它确实有效。我不明白为什么,在我看来,android webview 在音频方面被破坏了。 (2认同)