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)

Demo代码下载: https://github.com/Motionverse/MotionVerseWeb_Android

results matching ""

    No results matching ""