# JsView句柄的Java API
# requestSdk
public static void requestSdk(Context context, int debugPort)
功能:
沟通JsViewService,请求并加载JsView引擎。注意,若JsView引擎有更新时,新版本在第二次启动才生效。
参数:
Context: 一般为android的Activity
int: 调试端口号,用于devtools连接时输入的端口号
# addJavascriptInterface
public void addJavascriptInterface(Object object, String name)
功能:
同WebView的addJavascriptInterface,将Java的类注册给JsView,javascript中就可以通过参数2 name所命名的对象来穿透调用到java的方法中,实现js -> java的穿透。
* 注意:
1. 此接口注册的url需要在loadUrl之前调用才有效,否则只有在reload或者下一次loadUrl后才生效
2. 一次性注册后,为JsView全局所有,即使进行二次loadUrl变更地址,注册内容仍然有效
参数:
Object: 供js访问的java对象(实例),可供js访问的接口和目前支持的回调方法另行介绍
String: 命名js端的对象
# dynamicAddJavascriptInterface
public void dynamicAddJavaScriptInterface(Object object, String name)
功能:
将Java的类注册给Js,功能同上面的 addJavascriptInterface接口,不同的是,该接口需要再loadUrl之后调用,调用后立刻生效。在reload或再次loadUrl后会自动失效。
参数:
Object: 供js访问的java对象(实例),可供js访问的接口和目前支持的回调方法另行介绍
String: 命名js端的对象
# evaluateJavascript
public void evaluateJavascript(String script)
功能:
在JsView的js线程中,执行给定的script命令行
参数:
String: 需要执行的js语句。注意: 执行语句中只能访问到js的window实例中挂载的对象
# screenShot
public void screenShot(ScreenShotCallback listener)
功能:
获取当前JsView当前的显示内容的截屏的IntBuffer,int对应格式为ARGB_8888
参数:
ScreenShotCallback: 截图完成后的回调,返回intBuffer和图案尺寸
# loadUrl(即将废弃的接口)
public void loadUrl(String url)
功能:
指定需要加载的js的url,支持网络文件 http:// 和本地文件[file://绝对路径](file://绝对路径)。
参数:
String: url地址
# loadUrl2
public void loadUrl2(String js_engine_url, String url)
功能:
指定需要加载的js的url,支持网络文件 http:// 和本地文件[file://绝对路径](file://绝对路径)。
参数:
String: JS引擎地址
String: url地址
# reload
public void reload()
功能:
重新加载js
参数:
无
# emitEvent
public void emitEvent(String event_name, EventPack event)
功能:
向Js端发送消息,Js端通过window.JsView.addEventListener(String event_name, Function callback)接口,订阅事件。
参数:
String: 事件名称,与Js端的window.JsView.addEventListener的第一个参数匹配
EventPack: 事件包,内存结构类似于JSON,通过put接口添加key,value,可以EventPack嵌套。在Js端可收到同样Key/Value树状结构的Js对象
# setCanvasViewMode
public void setCanvasViewMode(String mode)
功能:
设置JsView页面展示使用的View的模式,分为SurfaceView和TextureView两种模式。
参数:
String: mode 模式,"surface"表示SurfaceView,"texture"表示TextureView
# enableFpsDisplay
public void enableFpsDisplay(boolean enable)
功能:
启用和关闭左上角的FPS显示,同时开启adb log数据中的fps信息打印,TAG为FpsDisplay
参数:
boolean: 开启/关闭该功能
# enableAntiAliasing
public void enableAntiAliasing(boolean enable)
功能:
启动/关闭描画抗锯齿功能(主要影响角度不太大的斜线的展现效果,但会导致性能略微降低,如果界面没有小角度旋转的内容的话,不需要开启),默认抗锯齿功能是关闭的,需要再loadUrl前调用。
参数:
boolean: 开启和关闭抗锯齿功能
# changeCoreUpdateUrl
public void changeCoreUpdateUrl(String update_url)
功能:
将JsViewCore的新版本获取地址切换成设定的update_url,当启动参数设定的JsViewCore版本本地未存在时,会通过这个给定的update_url获取版本信息进行下载和使用。
参数:
String: update_url 新版本查询地址
# prepareAppConfig/getAppConfig
public void prepareAppConfig(Runnable task)
public void getAppConfig(Bundle output_bundle)
功能:
获取当前运行的js的APP信息。流程为: 在loadUrl2调用之后可立即调用(不需要等待js加载完成)prepareAppConfig,在task回调中通过getAppConfig的output_bundle容器,将APP信息拿取出来。获取的APP信息在Bundle中对应的key为:
JsView.AppConfig.APP_NAME 应用名称
JsView.AppConfig.APP_TITLE 应用显示名(可为中文)
JsView.AppConfig.APP_VERSION 应用版本
JsView.AppConfig.SIGNATURE 应用的签名信息(编译时的PublicKey), 返回ArrayList<String>
JsView.AppConfig.SIGNATURE_MD5 应用签名信息的md5值(为了缩短比对的签名内容), 返回ArrayList<String>
特别注意: getAppConfig只有在回调task中进行调用才能保证获得信息,所以,最后每次获取信息都写成prepareAppConfig + getAppConfig的组合调用的方式。例如:
JsViewInstance.prepareAppConfig(()->{ Bundle output_bundle; JsViewInstance.getAppConfig(output_bundle); });
1
2
3
4
5
6
7
参数:
Runnable task: APP信息准备完成后的回调
Bundle output_bundle: 放置APP信息的容器
# listenerToAckEvent
public AckEventListener listenerToAckEvent( int category, int type, String: id, AckEventListener.AckEventCallback callback)
功能:
监听JsView内部的定制事件,例如页面reload消息,NativeSharedView标签在界面上的位置发生变化。当前可使用的事件为
链接:JsView.listenerToAckEvent 事件列表
参数:
int category: 事件分类,参照事件列表内容
int type: 事件子分类,参照事件列表内容
String id: 监听者标识,同一个事件可以有多个监听者,在回调中,用这个id来区分监听者
AckEventListener.AckEventCallback callback: 回调,当事件发生时,其void onEvent(Bundle event_data)会被回调,event_data内容为约定内容。
返回值:
AckEventListener: 监听器的句柄,提供过的recycle方法用于释放监听者资源。监听者目前不会因为JsView的释放而释放,需要手动调用recycle进行释放。
# toggleViewVisible
public void toggleViewVisible(int visibility)
功能:
调整JsView的可视性,通过此接口,可以将JsView内部由SurfaceView生成的JS显示图层和视频播放图层一同进行显示和隐藏控制。
参数:
int visibility: 是否显示,值为 android 标准定义的 View.GONE / View.HIDDEN / View.VISIBLE
# addFont
public static void addFont(String name, Typeface tf)
功能:
为JsView加入APK包含的字库文件,提供给js页面使用。
参数:
String name: 字库的fontFamily名称,js页面的style中填写和此对应的名字来使用此字库
Typeface tf: Android 字库文件的句柄,例如: Typeface tf = Typeface.createFromFile(字体文件路径)
# 其余接口
代码中看到的未出现在本文档中说明的public接口为试验性接口,请勿随意调用