我正在使用带有 float WebView的Android应用程序,该WebView使用Youtube的IFrame API播放Youtube视频。 float View 是作为服务实现的,在用户浏览应用程序的不同 Activity 时,它始终处于打开状态;当应用程序最小化时,它也 float 。
现在存在的问题是,在 Activity 中渲染 View 组件时,视频声音滞后或停滞。这是我已经完成的故障排除:
int flags = WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED | WindowManager.LayoutParams.FLAG_FULLSCREEN |
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
flags,
PixelFormat.TRANSLUCENT);
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);
settings.setDatabaseEnabled(true);
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
AndroidInterface javascriptInterface = new AndroidInterface(this);
webView.addJavascriptInterface(javascriptInterface, "AndroidFunction");
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.setVerticalScrollBarEnabled(false);
webView.setHorizontalScrollBarEnabled(false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
} else {
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
有人遇到过这个问题吗?任何想法都会有用!
提前致谢。
最佳答案
最后,我找到了解决此问题的方法。我在另一个进程中声明了服务(在Android Manifest文件中指定了android:process属性)。这两个服务之间的通信必须使用带有Messenger的IPC(Android进程间通信)来完成。
关于android - 在基于Chromium的 float WebView中播放YouTube视频时出现音频滞后或断断续续的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36858738/