2016-04-26 47 views
0

我正在使用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。

有沒有人遇到過這個問題?任何想法都會有用!

在此先感謝。

回答

0

最後我找到了解決這個問題的方法。我在另一個進程中聲明瞭該服務(在Android Manifest文件中指定了android:process屬性)。兩個服務之間的通信必須使用帶有Messenger的IPC(Android Interprocess Communication)來完成。

相關問題