# 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)

  • 功能:

  • 参数:

    • 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接口为试验性接口,请勿随意调用

Last Updated: 2/1/2024, 7:06:47 AM