Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android NDK摄像头路径getExternalStoragePublicDirectory(Environment.DIRECTORY\u DCIM)_Java_Android_C++_Android Ndk_Gallery - Fatal编程技术网

Java Android NDK摄像头路径getExternalStoragePublicDirectory(Environment.DIRECTORY\u DCIM)

Java Android NDK摄像头路径getExternalStoragePublicDirectory(Environment.DIRECTORY\u DCIM),java,android,c++,android-ndk,gallery,Java,Android,C++,Android Ndk,Gallery,我正在创建一个应用程序。我没有任何UI,如果有,我正在使用OpenGL。简而言之,我没有任何Java代码。我正在使用NativeActivity示例作为参考 我需要的是获取相机路径,这取决于设备。在应用程序中,如果有可用的Java活动,则如中所述 是否有任何方法可以在完全本机代码中获得相同的功能?还有别的选择吗 我真的不想添加java活动,因为我已经用OpenGL创建了一些东西。添加Java Acivity只是为了获取这个字符串,这让我在一段时间内觉得自己很傻。您可以使用本机代码中的JNI来调用

我正在创建一个应用程序。我没有任何UI,如果有,我正在使用OpenGL。简而言之,我没有任何
Java
代码。我正在使用
NativeActivity
示例作为参考

我需要的是获取相机路径,这取决于设备。在应用程序中,如果有可用的
Java活动
,则如中所述

是否有任何方法可以在完全本机代码中获得相同的功能?还有别的选择吗


我真的不想添加java活动,因为我已经用OpenGL创建了一些东西。添加Java Acivity只是为了获取这个字符串,这让我在一段时间内觉得自己很傻。

您可以使用本机代码中的JNI来调用所需的Java方法

从本机活动中尝试以下操作:

JNIEnv *env; 
state->activity->vm->AttachCurrentThread(&env, NULL); 

jclass envClass = env->FindClass("android/os/Environment");
jmethodID getExtStorageDirectoryMethod = env->GetStaticMethodID(envClass, "getExternalStorageDirectory",  "()Ljava/io/File;");
jobject extStorageFile = env->CallStaticObjectMethod(envClass, getExtStorageDirectoryMethod);

jclass fileClass = env->FindClass("java/io/File");
jmethodID getPathMethod = env->GetMethodID(fileClass, "getPath", "()Ljava/lang/String;");
jstring extStoragePath = env->CallObjectMethod(extStorageFile, getPathMethod);
const char* extStoragePathString = env->GetStringUTFChars(extStoragePath);

//use extStoragePathString

env->ReleaseStringUTFChars(extStoragePath, extStoragePathString);
state->activity->vm->DetachCurrentThread();
如果您想使用更多的Java方法,您可能需要研究从Java中对NativeActivity进行子类化并使用Java助手类,就像在NDK的茶壶示例中所做的那样