gpt4 book ai didi

java - 将 Android 事件绑定(bind)到 Qt 应用程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:53:59 24 4
gpt4 key购买 nike

我检查了自动生成的 QtActivity.javaQtApplication.java,找到了框架和实际实现以及它们遵循的简单格式。然而,从这两个来源我只能走到 QtApplication 中的 m_delegateObject 对象,这是在从 android 接收事件时调用方法的对象。

但是我还是不明白委托(delegate)对象是从哪里来的。有 public static void setQtActivityDelegate(Object listener) 但我对它最终被调用的位置一无所知。由于在委托(delegate)上使用了反射,我逻辑上假设它确实是另一个 java 对象,而不是实际 native 应用程序的委托(delegate)。

我的问题是如何到达实际的 C++ 应用程序并将自定义事件转发给它,使用什么机制(Qt 元、JNI...?)。

最佳答案

没有完全按照您的要求进行操作,但是如果您在 java 中收到通知,那么您可以从 java 调用 C++ 代码:

  • 在 Java 中,您必须声明 native 函数

package com.test.util; ... private static native void CallCpp(String tag,int prm1,int prm2,int prm3,String prmString);

并在C++端注册原生fn

    JNINativeMethod methods[] {{"CallCpp","(Ljava/lang/String;IIILjava/lang/String;)V", reinterpret_cast<void> *>(CallCpp)},
};


QAndroidJniObject javaClass("com/tests/util/AndroidEnv");
QAndroidJniEnvironment env;
jclass objectClass = env->GetObjectClass(javaClass.object<jobject>());
env->RegisterNatives(objectClass, methods, sizeof(methods) / sizeof(methods[0]));
env->DeleteLocalRef(objectClass);

关于java - 将 Android 事件绑定(bind)到 Qt 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23160465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com