WebView 接入文档
[toc]
1. 主要功能
调用js方法
// 更换数字人 type: 方法名 data:方法参数【数字人的名称】
mWebView.evaluateJavascript("SendMsgToWebGL('{\"type\":\"ChangeCharacter\",\"data\":\"${robot.abName}\"}')") {}
// 播报声音文件地址 type: 方法名 data:方法参数【声音文件URL地址】
mWebView.evaluateJavaScript("SendMsgToWebGL('{\"type\":\"AudioBroadcast\",\"data\":\"$audioUrl\"}')") {}
// 播报文本 type: 方法名 data:方法参数【播报的文本】bodyMotion:身体动作
mWebView.evaluateJavaScript("SendMsgToWebGL('{\"type\":\"TextBroadcast\",\"data\":\"$text\",\"bodyMotion\":\"3\"}')") {}
// 问答 文字问答 type: 方法名 data:方法参数【问题的文本】bodyMotion:身体动作
mWebView.evaluateJavaScript("SendMsgToWebGL('{\"type\":\"TextAnswerMotion\",\"data\":\"$text\",\"bodyMotion\":\"3\"}')") {}
// 问答 语音问答 type: 方法名 data:方法参数【录音流的BASE64编码】
mWebView.evaluateJavaScript("SendMsgToWebGL('{\"type\":\"AudioAnswerMotion\",\"data\":\"$audioEncode\"}')") {}
// 中断数字人当前动作
mWebView.evaluateJavaScript("SendMsgToWebGL('{\"type\":\"BroadcastStop\",\"data\":\"null\"}')") {}
展示设置页面
/**
 * 展示设置页面
 */
private fun showSetting() {
    BottomDialog(this@MainActivity)
        .setResId(R.layout.dialog_bottom) { view, dialog ->
              ...    
        }
        .setOutSideCancelable(true)
        .show()
}
数字人更换
val listFragment = CharacterListFragment {
    Log.e(TAG, "character: $it")
    // 拿到数字人的地址后,调用js方法
    callJs(ChangeCharacter, it)
}
listFragment.show(supportFragmentManager, "characterFragment")
交互类型更换
/**
 * 展示交互类型更换
 */
private fun showChangType() {
    BottomDialog(this@MainActivity)
        .setResId(R.layout.dialog_type_change) { view, dialog ->
             ...
        }
        .setOutSideCancelable(true)
        .show()
}
关于示例
/**
 * 展示 关于示例
 */
private fun showExample() {
    BottomDialog(this@MainActivity)
        .setResId(R.layout.dialog_example)
        .setOutSideCancelable(true)
        .show()
}
2. 网络框架的初始化
主要作用是缓存网页中包含的图片、文件、字体等资源,在离线时也可正常使用。
setBaseUrl("http://www.xxx.com/")
setHttpClient(OkHelper.httpClient(applicationContext))
3. WebView的使用
WebView的预加载
主要作用是提前WebView的初始化,在使用时可以更快的获取WebView的实例。
WebViewManager.prepare(applicationContext)
WebView设置加载监听
mWebViewHelper.setOnPageChangedListener(object : WebViewHelper.OnPageChangedListener {
    override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
        Log.i(TAG, "onPageStarted $url")
    }
    override fun onPageFinished(view: WebView?, url: String?) {
        Log.i(TAG, "onPageFinished $url")
    }
    override fun onProgressChanged(view: WebView?, newProgress: Int) {
        Log.i(TAG, "onProgressChanged $newProgress")
    }
})
WebView加载指定网页
mWebViewHelper.loadUrl("http://www.xxx.com/")
WebView中执行js函数
mWebView.evaluateJavascript("js function")
WebView的回收
WebViewManager.recycle(mWebView)