2013-04-06 18 views
0

我正在使用Moodstocks SDK集成圖像識別應用程序 以啓動掃描儀在moodstocks中我必須使用surfaceview(Camera),所有工作都很好,當我在日食,但我想使用unity3D因爲我在一種遊戲,將Unity3D中的Camera.MAIN傳遞到android java方法

所以我做了我的eclipse項目作爲JAR和導入它在統一,我想調用我的方法在Java從團結腳本類和camera.Main傳遞給它

所以如果你能給我有關

牛逼任何指引hank,

回答

0

有幾種方法可以創建Java插件,但每種情況下的結果是最終會生成一個包含插件的.class文件的.jar文件。一種方法是下載JDK,然後使用javac從命令行編譯.java文件。這將創建.class文件,然後您可以使用jar命令行工具打包成.jar文件。另一種選擇是將Eclipse IDE與ADT一起使用。

一旦你建立你的Java插件(.jar),你應該將它複製到Unity項目中的Assets->Plugins->Android文件夾中。 Unity會將您的.class文件與其餘的Java代碼一起打包,然後使用Java Native Interface(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); 
} 

這++開始使用Java從C/C所有需要。完全解釋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);      
} 

這解釋來自this information page,其中的幾個例子被寫入以及。你應該看看這裏! This也值得一讀。

0

聲明:我爲Moodstocks工作。

ScannerSession對象在Moodstocks SDK爲Android的設計是一個高層次的,易於使用的包裝,其本身需要照顧很多「技術」難題,在一個典型的,Java應用程序的情況下。特別是,它爲您初始化相機,在提供的SurfaceView上預覽相機並將相機幀發送到Moodstocks SDK。

我從來沒有用過Unity,所以我不能深入細節,但我認爲在你的上下文中,鑑於Unity有自己的初始化和使用相機的方式,你必須繞過這個ScannerSession對象並擊中Moodstocks SDK的低級函數。查找如何使用Unity獲取相機框架,並將它們手動送入Moodstocks SDK Scanner對象。您可以從ScannerSession中的工作中獲得靈感,瞭解如何做到這一點!

希望這會有所幫助!如果您正在尋找更多建議,您可以向我們提問Moodstocks Help Center