2014-04-18 3 views
2

자동 생성 된 QtActivity.javaQtApplication.java을 살펴본 결과 골격과 실제 구현 및 따르는 간단한 형식을 발견했습니다. 그러나이 두 소스에서 나는 m_delegateObject 객체 인 QtApplication까지만 이동할 수 있습니다.이 객체는 안드로이드에서 이벤트를 받으면 메소드가 호출되는 객체입니다.Android 이벤트를 Qt 애플리케이션에 바인딩

그러나 위임 객체가 어디서 왔는지 아직도 이해할 수 없습니다. public static void setQtActivityDelegate(Object listener)이 있지만이 부분이 호출되는 곳은 제로입니다. 그리고 대리자에서 리플렉션이 사용되기 때문에 필자는 논리적으로 실제로는 다른 Java 객체이고 실제 네이티브 응용 프로그램에 대한 대리자가 아니라고 가정합니다.

제 질문은 실제 C++ 응용 프로그램에 도달하여 어떤 메커니즘 (Qt meta, JNI ...?)을 사용하여 사용자 정의 이벤트를 전달하는 방법입니다.

답변

0

정확히 물어하지만 당신은 자바 통지를받은 경우 다음 자바에서 C++ 코드를 호출 할 수있는 일을하지 않았나요 : 당신은 기본 기능

을 선언해야 자바에서

  • package com.test.util; ... private static native void CallCpp (String 태그, int prm1, int prm2, int prm3, 문자열 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); 
관련 문제