天天看點

Android中Webview播放音頻,點選Home鍵想保持音頻繼續播放概述問題

概述

這裡記錄一個問題,比較小。由于新app中有音頻直播和點播功能,但是頁面确實用H5做的,音頻的播放也是。這就涉及到java和js的互動,在這其中java調用js的過程中有需要注意的地方(涉及到音頻播放的時候)。

問題

webview中播放音頻,點選home鍵,音頻會停止播放。這時候想要音頻繼續播放需要監聽Activity的onStop回調方法并調用js,使音頻繼續在背景播放。

這時候如果利用如下代碼會有問題(測試手機都是6.0系統的)。

private void continuePlay() {
   if (webView != null){
        if (android.os.Build.VERSION.SDK_INT >= 19) {
            Mlog.e("evaluateJavascript");
            webView.evaluateJavascript("startFn()", new ValueCallback<String>() {
                @Override
                public void onReceiveValue(String value) {
                    Mlog.e("onReceiveValue=="+value);
                }
            });
        } else {
            Mlog.e("webView.loadUrl(\"javascript");
            webView.loadUrl("javascript:startFn()");
        }
    }
}
           

由于系統是6.0的,也就大于19。調用evaluateJavascript的時候檢視Logcat中log會發現,MediaPlayer是完成了建立和設定資源步驟的但是會在之後做出release的動作,造成音頻無法在背景正常播放。

Android中Webview播放音頻,點選Home鍵想保持音頻繼續播放概述問題

隻能利用之前的webView.loadUrl的方式來實作。如下

private void continuePlay() {
        if (webView != null){
            webView.loadUrl("javascript:startFn()");
        }
    }
           

繼續閱讀