HarmonyOS JNI方法改napi方法?

一个定义的jni方法,接受一个jbyteArray类型的参数,然后通过env-\>GetByteArrayElements(jbaData, JNI\_FALSE) 获取指针并赋值给新的变量,jbyte *pData = env-\>GetByteArrayElements(jbaData, JNI\_FALSE), jbaData是jbyteArray类型,这种改编成NAPI应该是什么样的?

阅读 452
1 个回答

在NAPI中,可以通过napi\_create\_arraybuffer创建对应的数据类型。

参考demo:

static napi_value TestArray(napi_env env, napi_callback_info info)
{
  napi_value result = nullptr;
  char *buf = nullptr;
  // 创建ArrayBuffer
  napi_create_arraybuffer(env, 100, (void**)&buf, &result);
  // 赋值ArrayBuffer
  for (int i = 0; i < 100; i++) {
  buf[i] = i + 2;
}
  return result;
}

在ArkTS中作访问,片段代码如下:

let arr = testNapi.testArray();
let int8Arr = new Int8Array(arr);
for (let index = 0; index < int8Arr.byteLength; index++) {
  hilog.info(0x0000, ‘testTag’, ‘int8Arr[%{public}d] = %{public}d’, index, int8Arr[index]);
}

Index.d.ts中定义接口:

export const testArray: () => ArrayBuffer;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进