world studio ndk kit how hello example ejemplos development java android java-native-interface lame

java - studio - Invocar funciones JNI en el nombre del paquete de Android que contiene un guión bajo



jni java ejemplos (2)

Debe seguir el guión bajo con el número 1. Entonces, si el nombre de su paquete contiene ing_simmons, su JNI se formará de esta manera.

void Java_co_uk_ing_1simmons_aberdeensoundsites_Record_initEncoder

Esto también es cierto si tiene guiones bajos en cualquier otra parte de la llamada, como el nombre de la clase o el nombre del método en el archivo Java.

Estoy tratando de implementar la codificación MP3 en Android usando la biblioteca LAME siguiendo estas guías: Lame MP3 Encoder compile para Android http://developer.samsung.com/android/technical-docs/Porting-and-using-LAME-MP3-on-Android-with-JNI

Sin embargo, estoy obteniendo un java.lang.UnsatisfiedLinkError que creo que podría deberse al hecho de que el nombre de mi paquete contiene un guión bajo que interpreta como un punto final.

Mirar mi código a continuación es probable que sea este problema y cómo lo soluciono. ¿O hay algo más que causa esto? Gracias de antemano por cualquier ayuda.

Record.java :

package co.uk.ing_simmons.aberdeensoundsites; public class Record extends Activity implements OnClickListener { static { System.loadLibrary("mp3lame"); } private native void initEncoder(int numChannels, int sampleRate, int bitRate, int mode, int quality); private native void destroyEncoder(); private native int encodeFile(String sourcePath, String targetPath); [.....] }

wrapper.c :

void Java_co_uk_ing_simmons_aberdeensoundsites_Record_initEncoder(JNIEnv *env, jobject jobj, jint in_num_channels, jint in_samplerate, jint in_brate, jint in_mode, jint in_quality) { [....]

Error de registro completo del gato :

04-17 20:58:36.009: E/AndroidRuntime(26768): FATAL EXCEPTION: main 04-17 20:58:36.009: E/AndroidRuntime(26768): java.lang.UnsatisfiedLinkError: initEncoder 04-17 20:58:36.009: E/AndroidRuntime(26768): at co.uk.ing_simmons.aberdeensoundsites.Record.initEncoder(Native Method) 04-17 20:58:36.009: E/AndroidRuntime(26768): at co.uk.ing_simmons.aberdeensoundsites.Record.onCreate(Record.java:79) 04-17 20:58:36.009: E/AndroidRuntime(26768): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 04-17 20:58:36.009: E/AndroidRuntime(26768): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 04-17 20:58:36.009: E/AndroidRuntime(26768): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 04-17 20:58:36.009: E/AndroidRuntime(26768): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 04-17 20:58:36.009: E/AndroidRuntime(26768): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 04-17 20:58:36.009: E/AndroidRuntime(26768): at android.os.Handler.dispatchMessage(Handler.java:99) 04-17 20:58:36.009: E/AndroidRuntime(26768): at android.os.Looper.loop(Looper.java:123) 04-17 20:58:36.009: E/AndroidRuntime(26768): at android.app.ActivityThread.main(ActivityThread.java:3687) 04-17 20:58:36.009: E/AndroidRuntime(26768): at java.lang.reflect.Method.invokeNative(Native Method) 04-17 20:58:36.009: E/AndroidRuntime(26768): at java.lang.reflect.Method.invoke(Method.java:507) 04-17 20:58:36.009: E/AndroidRuntime(26768): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 04-17 20:58:36.009: E/AndroidRuntime(26768): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 04-17 20:58:36.009: E/AndroidRuntime(26768): at dalvik.system.NativeStart.main(Native Method)