ZBLOG

JNIEXPORT void JNICALL Java_com_iroad_yuedong_station_yolo_RknnWrapper_registerFaceRecogCallback(JNIEnv *env, jclass, ...

在这段代码中,lambda表达式被用作回调函数。在lambda表达式内部,可以使用捕获列表来访问方法中的局部变量。在这个例子中,捕获列表为空,所以没有需要传递给lambda表达式的额外参数。

要将lambda表达式传递给Java层的方法,需要首先获取callbackObj对象的类和方法ID。然后,在lambda表达式内部可以使用envmethodID来调用Java层的回调方法。

具体做法是,在定义lambda表达式时,将需要使用到的envmethodID作为参数传递进去,并在lambda表达式内部使用它们进行回调方法的调用。例如:

FaceRecogCallbackFunc callback = [=](int location, const char *userId){
    jstring jUserId = env->NewStringUTF(userId);
    env->CallVoidMethod(faceRecogCallbackJobj, methodID, location, jUserId); // 调用Java层的回调方法
    env->DeleteLocalRef(jUserId);
};

RKNNHandle_.SetFaceRecogCallbackFunc(callback);

这样就能够在lambda表达式内部使用到envmethodID了,并将其传递给Java层进行相应操作。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=17487

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?