我正在使用Youtube的IFrame API播放Youtube視頻的浮動WebView的Android應用程序。浮動視圖是作爲一個服務實現的,當用戶瀏覽應用程序的不同活動時,浮動視圖總是打開的,當應用程序被最小化時,浮動視圖也浮動。音頻滯後或口吃在基於Chromium的浮動WebView中播放Youtube視頻
現在的問題是,當視圖組件在活動中呈現時,視頻的聲音是滯後還是斷斷續續。這是我做的故障排除:
我做了兩個簡單的活動,沒有網絡工作背後,只是在他們的佈局一堆按鈕。當您導航到這些活動或返回時,聲音會被剪切一秒或更長時間。
我已經在我的應用程序和WebView上設置了硬件加速屬性。這些都是我用web視圖添加到窗口管理
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);
我已經設置了setLayerType到的WebView爲LAYER_TYPE_HARDWARE的PARAMS。以下是對的WebView
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); }
我也試着關閉硬件加速應用程序的安裝程序代碼,但需要的WebView它播放視頻。
我已經加載了一個Youtube視頻,而不使用他們的IFrame API,並且我遇到了同樣的問題。
這是intestering,如果我加載Vimeo視頻,問題不會發生。
該問題發生在Nexus 5(Android版本6.0.1)中,但不會發生在Samsung Galaxy S3 mini(Android版本4.2.2)中。這讓我認爲這個問題與Chromium有關,因爲WebView在所有4.4之前的設備上使用WebKit,並且不使用Chromium。
有沒有人遇到過這個問題?任何想法都會有用!
在此先感謝。