机器人NDK数据保存/加载(android ndk data save/load)

2019-09-22 17:42发布

我正在移植PC OpenGL应用程序的Android上。 我选择使用NDK android_native_app_glue框架的东西。 我的理解,这将允许我留在C ++写甚至没有单一的Java代码行。 它听起来前途。

首先不清楚的事情对我来说,数据的保存/载入。 我的应用程序的数据格式是二进制和我原来的PC相关的代码使用普通的“stdio.h中”文件操作:FOPEN,FREAD,FWRITE等创建,写和从“mygame.bin”文件中读取。 我该如何将它移植到Android的?

已经GOOGLE了它,我发现我必须存储,然后使用“Java环境”变量:

JNIEnv *g_jniEnv = 0;
void android_main(struct android_app* state) {
    g_jniEnv = state->activity->env;
}

不过,我还是不知道如何使用此g_jniEnv进行文件操作。

更新:好吧,我发现,在Java中,数据保存可进行如下:

String string = "hello world!";
FileOutputStream fos = openFileOutput("mygame.bin", Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();

所以我的问题是:给出一个指向JNIEnv的,我怎么重写C ++这段代码?

Answer 1:

您仍然可以在NDK项目中使用stdio.h中。 #包括和英镑走。

唯一的诀窍是让路径到您的应用程序的私有数据文件夹。 它可以作为state->activity->internalDataPathandroid_main 。 这条道路之外,应用程序还没有文件系统权限。

你可能会需要你JNIEnv最终这种或那种方式。 的Java API的整体未镜像对天然子系统; 因此要坚持到env 。 不过,本地文件I / O就在那里。



文章来源: android ndk data save/load