0

我正在使用 Moodstocks SDK 集成图像识别应用程序,要在moodstocks 中启动扫描仪,我必须使用surfaceview(相机),当我在eclipse 中执行此操作时一切正常,但我想使用unity3D,因为我正在制作它在某种游戏中,

所以我将我的eclipse项目作为JAR并将其导入统一,我试图从统一脚本调用我的java类中的方法并将camera.Main传递给它

所以如果你能给我任何指导

谢谢,

4

2 回答 2

0

免责声明:我为 Moodstocks 工作。

ScannerSessionMoodstocks SDK for Android 中的对象被设计成一个高级的、易于使用的包装器,在经典的 Java 应用程序的上下文中,它自己解决了许多“技术”难题。特别是,它会为您初始化相机,在提供的预览中进行预览,SurfaceView并将相机帧发送到 Moodstocks SDK。

我自己从未使用过 Unity,因此无法深入了解细节,但我认为在您的上下文中,鉴于 Unity 有自己的初始化和使用相机的方式,您将不得不绕过此ScannerSession对象并点击 Moodstocks SDK 的底层函数。了解如何使用 Unity 获取相机帧,并将它们手动提供给 Moodstocks SDKScanner对象。您可以从 中所做的事情中获得灵感,ScannerSession看看如何做到这一点!

希望这可以帮助!如果您正在寻找更多建议,您可以在Moodstocks 帮助中心向我们提问

于 2013-04-08T10:34:34.593 回答
0

有几种方法可以创建 Java 插件,但每种情况的结果都是您最终得到一个 .jar 文件,其中包含插件的 .class 文件。一种方法是下载 JDK,然后使用 javac 从命令行编译您的 .java 文件。这将创建 .class 文件,然后您可以使用 jar 命令行工具将其打包成 .jar。另一种选择是将 Eclipse IDE 与 ADT 一起使用。

构建 Java 插件 (.jar) 后,您应该将其复制到Assets->Plugins->AndroidUnity 项目中的文件夹中。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);                      
} 

这个解释来自这个信息页面,其中也写了一些例子。你应该看看这里!可能也值得一读。

于 2013-04-08T07:09:37.830 回答