android - Qt for Android - 未定义对 ANativeWindow_fromSurface 的引用

标签 android c++ qt gstreamer-1.0

我是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'

我已经添加了 QT += androidextras在 .pro 和
#include<android/native_window.h>
#include<android/native_window_jni.h>
在 .cpp 文件中,我不知道我还应该做什么。

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

最佳答案

我在 *.pro 文件中添加了 LIBS += -landroid。所以,它有效。

关于android - Qt for Android - 未定义对 ANativeWindow_fromSurface 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43624819/

相关文章:

java - 如何在android中为不同的设备和方向创建不同的布局

c++ - 如何使用一些 MPI 命令(或组合命令)在两个处理器之间交换存储在二维数组中的数据?

c++数组,如何在同一数组中添加新的一行值?

c++ - 使用 QProcess 将 EndOfText (Ctrl-C) 发送到交互式 shell

android - 移动应用程序的数据库替代品

java - 如何使用响应式 android 和 Retrofit 发出多个请求

java - 应用程序的布局和 View 可见性

c++ - XCode 和 _bittest 函数

c++ - 链接器在 Windows 上的 qtcreator 中忽略/openmp

user-interface - 在 QT 中可视化大数据集的最佳方法是什么