2017-04-26 2 views
3

Qt의 초보자입니다.
Qt를 사용하여 Android 애플리케이션을 만들려고했는데 RTSP를 통해 비디오를 스트리밍하기 위해 Gstreamer (QtGStreamer 아님)를 사용했습니다.
하지만이 ANativeWindow를 얻을 수 Android 용 Qt - ANativeWindow_fromSurface에 대한 정의되지 않은 참조

QPlatformNativeInterface *nativeInterface = QApplication::platformNativeInterface(); 
jobject activity = (jobject)nativeInterface->nativeResourceForIntegration("QtActivity"); 
QAndroidJniEnvironment * qjniEnv; 
JNIEnv * jniEnv; 
JavaVM * jvm = qjniEnv->javaVM(); 
jvm->GetEnv(reinterpret_cast<void**>(&qjniEnv), JNI_VERSION_1_6); 
jvm->AttachCurrentThread(&jniEnv,NULL); 

jint r_id_content = QAndroidJniObject::getStaticField<jint>("android/R$id", "content"); 

QAndroidJniObject view = ((QAndroidJniObject) activity).callObjectMethod("findViewById", "(I)Landroid/view/View;", r_id_content); 
if (view.isValid()) { 
    QAndroidJniObject child1 = view.callObjectMethod("getChildAt", "(I)Landroid/view/View;", 0); 
    QAndroidJniObject child2 = child1.callObjectMethod("getChildAt", "(I)Landroid/view/View;", 0); 
    if (child2.isValid()) { 
     QAndroidJniObject sHolder = child2.callObjectMethod("getHolder","()Landroid/view/SurfaceHolder;"); 
     if (sHolder.isValid()) { 
      QAndroidJniObject theSurface = sHolder.callObjectMethod("getSurface","()Landroid/view/Surface;"); 
      if (theSurface.isValid()) { 
       ANativeWindow* awindow = ANativeWindow_fromSurface(jniEnv, theSurface.object()); 
       qDebug() << "This is a ANativeWindow " << awindow; 
      } 
     } 
    } else { 
     qDebug() << "Views are not loaded yet or you are not in the Qt UI Thread"; 
    } 
} 

를 사용하는 경우,
그것은 오류가있어 : 나는 .cpp 파일에 .PRO에서 QT += androidextras
#include<android/native_window.h>
#include<android/native_window_jni.h>
을 추가 한 undefined reference to 'ANativeWindow_fromSurface'

을 , 내가 뭘해야하는지 모르겠다.

이 문제를 해결하는 데 도움을 줄 수있는 사람이 있습니까?
감사합니다.

답변

0

* .pro 파일에 LIBS += -landroid을 추가했습니다. 그래서, 그것은 작동합니다.

관련 문제