rendered paste body06-02 13:35:26.867: DEBUG/dalvikvm(211): Trying to load lib /data/data/com.example/lib/libexample-class-jni.so 0x44c06878
06-02 13:35:26.907: DEBUG/dalvikvm(211): Added shared lib /data/data/com.example/lib/libexample-class-jni.so 0x44c06878
06-02 13:35:26.907: DEBUG/dalvikvm(211): No JNI_OnLoad found in /data/data/com.example/lib/libexample-class-jni.so 0x44c06878
06-02 13:35:27.047: DEBUG/dalvikvm(96): GC freed 639 objects / 37376 bytes in 288ms
06-02 13:35:27.087: DEBUG/dalvikvm(211): +++ not scanning '/system/lib/libwebcore.so' for 'generate' (wrong CL)
06-02 13:35:27.107: DEBUG/dalvikvm(211): +++ not scanning '/system/lib/libmedia_jni.so' for 'generate' (wrong CL)
06-02 13:35:27.107: DEBUG/dalvikvm(211): +++ not scanning '/system/lib/libexif.so' for 'generate' (wrong CL)
06-02 13:35:27.107: DEBUG/dalvikvm(211): +++ not scanning '/system/lib/libsrec_jni.so' for 'generate' (wrong CL)
06-02 13:35:27.107: WARN/dalvikvm(211): No implementation found for native Lcom/example/ExampleClass;.generate ([SI)I
06-02 13:35:27.107: WARN/dalvikvm(211): threadid=15: thread exiting with uncaught exception (group=0x4001b188)
06-02 13:35:27.107: ERROR/AndroidRuntime(211): Uncaught handler: thread thread1 exiting due to uncaught exception
06-02 13:35:27.126: ERROR/AndroidRuntime(211): java.lang.UnsatisfiedLinkError: generate
06-02 13:35:27.126: ERROR/AndroidRuntime(211): at com.example.ExampleClass.generateTone(Native Method)
06-02 13:35:27.126: ERROR/AndroidRuntime(211): at com.example.ExampleClass.run(ExampleClass.java:27)
06-02 13:35:27.126: ERROR/AndroidRuntime(211): at java.lang.Thread.run(Thread.java:1096)
06-02 13:35:27.238: DEBUG/dalvikvm(51): GC freed 6464 objects / 342984 bytes in 852ms
06-02 13:35:27.607: INFO/Process(51): Sending signal. PID: 211 SIG: 3
package com.example;
import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioTrack;
public class ExampleClass implements Runnable {
static private final int mBufferSize = 8000;
private AudioTrack mTrack;
private short mBuffer[] = new short[mBufferSize];
private int mSample;
public ExampleClass() {
mTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, mBufferSize * 2, AudioTrack.MODE_STREAM);
mSample = 0;
}
public void run() {
mTrack.play();
while(true) {
// fill the buffer
generateTone(mBuffer, mBufferSize);
mTrack.write(mBuffer, 0, mBufferSize);
}
}
static {
System.loadLibrary("example-class-jni");
}
public native int generate(short [] data, int size);
}
Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := example-class-jni
LOCAL_SRC_FILES := example-class-jni.cpp
# for logging
LOCAL_LDLIBS += -llog
include $(BUILD_SHARED_LIBRARY)
example=class-jni.cpp:
#include <assert.h>
#include <jni.h>
#include <string.h>
#include <android/log.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// for native asset manager
#include <sys/types.h>
#define SUCCESS 1
extern "C" {
JNIEXPORT jint JNICALL Java_com_example_ExampleClass_generate(JNIEnv *env, jobject thiz, jshortArray data, jint size);
}
JNIEXPORT jint JNICALL Java_com_example_ExampleClass_generate(JNIEnv *env, jobject thiz, jshortArray data, jint size)
{
return SUCCESS;
}