我试图通过NativeActivity中的ARCore C库创建AR会话。 但是,功能" ArSession_create()"始终返回错误代码 AR_ERROR_FATAL(-2),但没有崩溃表明未创建AR会话。以下是代码段:
import random
class Calculate():
def HI_1(x, y):
return x + y
def HI_2(x, y):
return x - y
def HI_3(x, y):
return x * y
def HI_4(x, y):
return x/y
a = random.randint(1, 4)
b = 'HI_' + str(a)
p = Calculate.b(15, 7)
print(p)
Android Logcat错误消息:
// Get the Android activity by a global variable, which is recorded
// in the NDK glue library function "void ANativeActivity_onCreate()"
// by the function's first passed-in parameter
ANativeActivity* activity = _global_android_activity;
//Get the JNI Env for the current thread
JNIEnv* env = NULL;
JavaVM* vm = activity->vm;
int r = vm->AttachCurrentThread(&env, NULL);
//Create AR session
ArSession* arSession = nullptr;
ArStatus status = ArSession_create(env, activity->clazz, &arSession);
if (status != ArStatus::AR_SUCCESS)
CONSOLE_PRINTF(L"@@@@@@@@@@@@@@@ Failed to create AR session!, Result = %d", status);
else
CONSOLE_PRINTF(L"@@@@@@@@@@@@@@@ Succeeded to create AR session!");
我已确认我在AndroidManifest.xml文件中为我的Android原生应用启用了AR:
我也确认我的设备(Google Pixel XL)能够运行ARCore示例应用" hello_ar_c" (来自ARCode SDK,由Android Studio构建)。
所以问题是:为什么函数 ArSession_create()会失败? 有没有人成功使用带有NativeActivity的ARCode C库?感谢您的任何建议。
答案 0 :(得分:1)
最后我明白了,所以我想自己回答这个问题。
为了在Android应用中手动使用ARCore与其他IDE而不是Android Studio,我们需要做以下事情:
我做了1和2但忘了3,因此我在运行时遇到了class-not-found错误。
出现了更多错误,但至少我解决了这个问题。 似乎使用Android Studio进行ARCore应用程序开发是目前唯一的舒适方式。
答案 1 :(得分:1)
在将arore-android-sdk/samples/hello_ar_c样本嵌入到{{3} android-ndk/native-activity示例框架(使用Android Studio时)。
这种情况下的问题是NativeActivity sample adds中的AndroidManifest.xml中的android:hasCode =“ false”指令。即使在基于NativeActivity的应用程序中没有任何Java代码,ARCore中的链接也确实添加了Java代码,因此在这种情况下,需要删除android:hasCode =“ false”指令。