为PocketSphinxAndroidDemo创建和使用Java Bindings库

时间:2014-03-31 15:27:28

标签: android xamarin.android xamarin

我想为Xamarin的PocketSphinx Android Demo project创建一个Java Bindings库,然后我可以在我的Android应用程序中使用它。我做了以下事情:

  • 下载了PocketSphinxAndroidDemo项目,并使用Eclipse在我的Android设备上安装并运行它,没有任何问题 - 本机java代码运行良好。
  • 在Visual Studio中创建了一个Java Bindings库,其中的pocketsphinx-android-0.8-nolib.jar文件标记为EmbeddedJar,并始终标记为Copy to output directory,并使其编译正常。我正在使用下载的演示项目中的jar。
  • 在我的Visual Studio解决方案中添加了一个android应用程序项目,并添加了对我的绑定库的引用。
  • 将lib / armeabi / libpocketsphinx_jni.so添加到我的应用程序项目(也是armeabi-v7a)(使用演示项目中的文件),并将* .so文件标记为AndroidNativeLibrary,并将Copy to Output目录设置为Copy Always。 / LI>

无论我做什么,我都无法运行C#代码

var config = Decoder.DefaultConfig();

我总是得到Java.Lang.UnsatisfiedLinkError例外(as described in my forum post here)。我试图运行这行代码,因为演示项目有这行java:

Config config = defaultConfig();

我的问题是,我需要在这里使用DllImport吗?或许Java.Lang.JavaSystem.LoadLibrary?这是一个应该使用ndk-build构建项目的场景吗?

我已经尝试过DllImport和LoadLibrary都没有成功。任何领导或事情都值得赞赏!

提前致谢,

大卫

1 个答案:

答案 0 :(得分:3)

根据我在this forum thread收到的回复,我得知我需要致电

Java.Lang.JavaSystem.LoadLibrary("pocketsphinx_jni");

在调用DefaultConfig方法之前,在我的类的OnCreate方法中