我正在使用 Moodstocks SDK 集成图像识别应用程序,要在moodstocks 中启动扫描仪,我必须使用surfaceview(相机),当我在eclipse 中执行此操作时一切正常,但我想使用unity3D,因为我正在制作它在某种游戏中,
所以我将我的eclipse项目作为JAR并将其导入统一,我试图从统一脚本调用我的java类中的方法并将camera.Main传递给它
所以如果你能给我任何指导
谢谢,
我正在使用 Moodstocks SDK 集成图像识别应用程序,要在moodstocks 中启动扫描仪,我必须使用surfaceview(相机),当我在eclipse 中执行此操作时一切正常,但我想使用unity3D,因为我正在制作它在某种游戏中,
所以我将我的eclipse项目作为JAR并将其导入统一,我试图从统一脚本调用我的java类中的方法并将camera.Main传递给它
所以如果你能给我任何指导
谢谢,
免责声明:我为 Moodstocks 工作。
ScannerSession
Moodstocks SDK for Android 中的对象被设计成一个高级的、易于使用的包装器,在经典的 Java 应用程序的上下文中,它自己解决了许多“技术”难题。特别是,它会为您初始化相机,在提供的预览中进行预览,SurfaceView
并将相机帧发送到 Moodstocks SDK。
我自己从未使用过 Unity,因此无法深入了解细节,但我认为在您的上下文中,鉴于 Unity 有自己的初始化和使用相机的方式,您将不得不绕过此ScannerSession
对象并点击 Moodstocks SDK 的底层函数。了解如何使用 Unity 获取相机帧,并将它们手动提供给 Moodstocks SDKScanner
对象。您可以从 中所做的事情中获得灵感,ScannerSession
看看如何做到这一点!
希望这可以帮助!如果您正在寻找更多建议,您可以在Moodstocks 帮助中心向我们提问
有几种方法可以创建 Java 插件,但每种情况的结果都是您最终得到一个 .jar 文件,其中包含插件的 .class 文件。一种方法是下载 JDK,然后使用 javac 从命令行编译您的 .java 文件。这将创建 .class 文件,然后您可以使用 jar 命令行工具将其打包成 .jar。另一种选择是将 Eclipse IDE 与 ADT 一起使用。
构建 Java 插件 (.jar) 后,您应该将其复制到Assets->Plugins->Android
Unity 项目中的文件夹中。Unity 会将您的 .class 文件与其余的 Java 代码打包在一起,然后使用 Java 本机接口 (JNI) 访问代码。从 Java 调用本机代码以及从本机代码与 Java(或 JavaVM)交互时都使用 JNI。
要从本机端查找 Java 代码,您需要访问 Java VM。幸运的是,可以通过在 C/C++ 代码中添加这样的函数来轻松获得该访问权限:
jint JNI_OnLoad(JavaVM* vm, void* reserved) {
JNIEnv* jni_env = 0;
vm->AttachCurrentThread(&jni_env, 0);
}
这就是从 C/C++ 开始使用 Java 所需的全部内容。完全解释 JNI 超出了本文档的范围。但是,使用它通常涉及查找类定义、解析构造函数 () 方法和创建新的对象实例,如下例所示:-
jobject createJavaObject(JNIEnv* jni_env) {
// find class definition
jclass cls_JavaClass = jni_env->FindClass("com/your/java/Class");
// find constructor method
jmethodID mid_JavaClass = jni_env->GetMethodID (cls_JavaClass, "<init>", "()V");
// create object instance
jobject obj_JavaClass = jni_env->NewObject(cls_JavaClass, mid_JavaClass);
// return object with a global reference
return jni_env->NewGlobalRef(obj_JavaClass);
}