gpt4 book ai didi

android - 如何在不使用 android_app* 的情况下获取 ANativeActivity 指针 un Cpp

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:02:31 25 4
gpt4 key购买 nike

在 Android 中,在我的 Java 应用程序中使用 JNI,我需要 ANativeActivity 来管理资源。我的问题是我没有:

void android_main(struct android_app* state)

因为我只是使用 JNI 调用一些函数。通常人们使用_

void android_main(struct android_app* app) 
{
struct engine engine;
ANativeActivity* activity = app->activity;
std::string mApkWorkspacePath = activity->internalDataPath;
AAssetManager* mApkAssetManager = activity->assetManager;
}

从结构中获取值。我怎样才能手动获得 ANativeActivity?

最佳答案

这个线程有点旧,但我最近一直在尝试解决同样的问题,有一些我正在刷新的旧 NDK 代码,并且发现所有 NDK 示例对我来说都没有多大用处,因为他们使用这些新结构。我想我应该在这里传递我的发现,因为文档中的内容并不清楚,对于从这个角度处理问题的人来说。

NDK 现在具有一系列帮助程序类(名为“NativeActivity”)以简化 NDK 开发 - 我怀疑我们都在做与这些帮助程序相同的事情,在我们自己的旧代码中。

“ANativeActivity”C++ 结构指的是 SDK 这一部分的新结构。它在 Java 对象“NativeActivity”中定义并返回引用,该对象是您的 Activity 派生自使用新的(至少从 2015 年开始)辅助函数和类的类。

因此,无法使用“原始”NDK 调用获取此对象:对于不使用 NDK 的那部分的应用程序,它不存在。但是,您可以查看源代码(参见“NativeActivity.java”和“android_app_NativeActivity.cpp”)并使用原始 NDK 调用复制它的功能,或者您可以改用辅助应用程序模型。

关于android - 如何在不使用 android_app* 的情况下获取 ANativeActivity 指针 un Cpp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33122522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com