stay in the jni directory, do a ndk-build (see the ndk link about for instructions on building if it is not clear)
Now we are ready to open this in Eclipse
Open eclipse and import the project, ignore any build warnings/errors
Untick Project -> Build Automatically (This is personal choice, since the JNI build process is heavy I dont like it building all the time)
Project -> Properties -> Builders
Select SWIG -> Edit -> for Working Directory, select Browse Workspace and pick the jni directory, In the Refresh tab, select The folder containing the selected resource, in Build Options, untick Specify working set of relevant resources (This option may be
hidden in the dialog, if you dont see it, maximize the Configuration window).
Select NDK build -> Edit -> Set the correct location for ndk-build, select the correct Working directory (Browse workspace and then select the jni directory). In the Refresh tab, select The project containing the selected resource, in Build Options, untick
Specify working set of relevant resources (This option may be hidden in the dialog, if you dont see it, maximize the Configuration window).
Project -> Build Project. If you see any errors, check that step 4 and 5 are carried out correctly. The project should build without error. A console may appear with red texts, just confirm that they are warning messages from building the c code and you should
We should now have a built Android application ready for testing
In the emulator (or phone), create under primary storage (whatever is returned by the getExternalStorageDirectory). For example if you have a sdcard this would be /mnt/sdcard
If using the emulator, call adb shell from a console window, and use mkdir command for the step below (to create directories on the emulator)
Copy pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k/* into the emulator/phone
Copy pocketsphinx/model/lm/en_US/* into emulator/phone
In eclipse, open the RecognizerTask.java file, look for c.setString(“-lm”
Make sure the files loaded in the code around step 6 exists (especially the .dict file may have a different name)
Now we can run the application!
If the app crashes for any reason, go to sdcard/Android/edu.cmu.pocketsphinx and there should be a log file (pocketsphinx.log) from the native library.
On my machine (OpenSuSE 11.3) the swig directory was empty after make. Go into swig directory and call make, the errors will be displayed (for me it was because I didn’t have swig installed)
By default make install installs to /usr/local/lib which can cause problems on some systems. If you get errors with any of the sphinx stuff saying some library is not found, use the ldd and strace commands to see where they are looking for the libs, and symlink
them. Alternatively supply another install location to make install
While working in eclipse, if you see any errors along the lines of “Refresh scope invalid”, check step 4 and 5 are carried out from the Eclipse section above.
Files required **Before downloading these archives, try using the latest build from the official website first**: