Qt for Android - ANativeWindow_fromSurface的未定义引用错误

3

我是Qt的初学者,
我正在尝试使用Qt制作一个Android应用程序,并使用GStreamer(而不是QtGStreamer)通过RTSP流传输视频。
但当我使用时

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";
    }
}

获取ANativeWindow时出现错误:undefined reference to 'ANativeWindow_fromSurface'

我已经在.pro文件中添加了QT += androidextras,并且在.cpp文件中添加了
#include<android/native_window.h>
#include<android/native_window_jni.h>但我不知道还需要做些什么。

有人可以帮我解决这个问题吗?谢谢。

2个回答

1
我在*.pro文件中添加了LIBS += -landroid。所以,它可以正常工作。

0

我使用QtAndroid::androidActivity()以及callMethod、callObjectMethod方法。

我添加了:

android {

QT += core_private gui_private androidextras

DEFINES += Q_OS_ANDROID \ HAVE_TIME_H \ HAVE_SYS_SELECT_H \ HAVE_LRAND48 \ HAVE_NETINET_IN_H }

将以上代码添加到.pro文件中,以使其正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接