有人使用 Necessitas (Qt for Android) 进行编程吗?

发布于 2024-11-06 02:11:20 字数 482 浏览 3 评论 0原文

我正在与 Necessitas (Qt for Android) 合作。一切都运行良好。

现在,我尝试连接到 Dalvik JVM 以使用一些 Android API(例如 GPS)。为此,我尝试使用 JNI 获取 Java 环境:

JNIEnv *currEnv;
currEnv = 0;
if (m_javaVM->GetEnv((void**)&currEnv,JNI_VERSION_1_4) == JNI_OK)
{
    qDebug() << "GetEnv passed";
}
else
{
    qDebug() << "GetEnv failed";
}

m_javaVM 是指向 Necessitas 使用的虚拟机的指针。

问题是当我在 android 虚拟设备中运行应用程序时,我总是遇到 GetEnv 失败的情况。

非常感谢任何帮助!

I am working with Necessitas (Qt for Android). All run fine.

Now, I am trying to connect to the Dalvik JVM to use some of the Android API (GPS for example). To do this I'm trying to get the Java environment using JNI:

JNIEnv *currEnv;
currEnv = 0;
if (m_javaVM->GetEnv((void**)&currEnv,JNI_VERSION_1_4) == JNI_OK)
{
    qDebug() << "GetEnv passed";
}
else
{
    qDebug() << "GetEnv failed";
}

m_javaVM is the pointer to the virtual machine used by Necessitas.

The problem is that I always get GetEnv failed when I run the application in the android virtual device.

Any help is much appreciated!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

む无字情书 2024-11-13 02:11:20

我正在回答我的问题:

发生这种情况是因为 getEnv 获取当前环境。虽然我需要获得一个新的环境,例如:

if (currVM->AttachCurrentThread((void **)&currEnv, NULL)<0)
        {
            emit error("Cannot attach the current thread to the VM");
        }

I am answering my ow question:

This happens because getEnv gets the current env. While what i need to to get a new env with something like:

if (currVM->AttachCurrentThread((void **)&currEnv, NULL)<0)
        {
            emit error("Cannot attach the current thread to the VM");
        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文