当前位置:  开发笔记 > 编程语言 > 正文

Android的JNI JavaScript绑定是否有效地将TypedArray/ArrayBuffer作为数组传递给Java?

如何解决《Android的JNIJavaScript绑定是否有效地将TypedArray/ArrayBuffer作为数组传递给Java?》经验,为你挑选了1个好方法。

在Android JNI绑定中,您可以公开Java方法(如method(int[] intArray) {}JavaScript),将其传递给JavaScript数组,并期望绑定将该JavaScript数组转换为int[].Android是否具有相同的处理能力Uint8Array()



1> Nicole Borre..:

在Android的WebView中运行的JavaScript引擎不支持Uint8Arrays或任何其他类型的数组(从2.3.3开始).

编辑:我用模拟器做了一些更多的测试,我有混合的东西报告.

从好的方面来说,Android 3.x的WebView中的JavaScript引擎支持类型化数组,但Float64Array除外.

在负面,通过WebView.addJavascriptInterface()到Java的JNI接口根本不会转换类型.这是我用来测试它的代码:

var u8arr = new Uint8Array(4);
u8arr.set([2, 3, 5, 7]);
android.log(u8arr);

而android.log()的Java函数看起来基本上是这样的:

public void log(final int[] data) {
    final String dataInfo = (data == null) ? "NULL" : "[" + data.length + "]";
    Log.d("JsJni", "data=" + dataInfo);
    /* ... */
}

当我使用标准的Array()类型的JavaScript对象调用android.log时,我会得到人们期望的结果(数组绑定到数据,类型转换等...)当使用Uint8Array对象调用android.log时(或者任何其他类型的数组,包括Int8Array,Int16Array和Int32Array),数据为.

Android 3.0和3.2之间也是如此

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有