初始化错误线程-10中的Java异常

初始化错误线程-10中的Java异常,java,android,multithreading,audio,android-ndk,Java,Android,Multithreading,Audio,Android Ndk,我正在尝试使用android的java声音调制库,即。我试图运行它的示例android应用程序,但它给了我一个异常,表示初始化错误中出现异常,我无法找出原因。下面是代码,请检查 public class SonicTest extends Activity { static Sonic sonic; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState)

我正在尝试使用android的java声音调制库,即。我试图运行它的示例android应用程序,但它给了我一个异常,表示初始化错误中出现异常,我无法找出原因。下面是代码,请检查

public class SonicTest extends Activity
{
static Sonic sonic;
@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);                      
    setContentView(R.layout.main);
}

public void play(View view)
{
    new Thread(new Runnable() 
    {
        public void run()
        {
            final EditText speedEdit = (EditText) findViewById(R.id.speed);
            final EditText pitchEdit = (EditText) findViewById(R.id.pitch);
            final EditText rateEdit = (EditText) findViewById(R.id.rate);
            float speed = Float.parseFloat(speedEdit.getText().toString());
            float pitch = Float.parseFloat(pitchEdit.getText().toString());
            float rate = Float.parseFloat(rateEdit.getText().toString());
            AndroidAudioDevice device = new AndroidAudioDevice(22050, 1);
            byte samples[] = new byte[4096];
            byte modifiedSamples[] = new byte[2048];
            InputStream soundFile = getResources().openRawResource(R.raw.talking);
            int bytesRead;
            Log.i("Hello", "HI");
             sonic = new Sonic(22050, 1);

            if(soundFile != null) {
                sonic.setSpeed(speed);
                sonic.setPitch(pitch);
                sonic.setRate(rate);
                do {
                    try {
                        bytesRead = soundFile.read(samples, 0, samples.length);
                    } catch (IOException e) {
                        e.printStackTrace();
                        return;
                    }
                    if(bytesRead > 0) {
                        sonic.putBytes(samples, bytesRead);
                    } else {
                        sonic.flush();
                    }
                    int available = sonic.availableBytes(); 
                    if(available > 0) {
                        if(modifiedSamples.length < available) {
                            modifiedSamples = new byte[available*2];
                        }
                        sonic.receiveBytes(modifiedSamples, available);
                        device.writeSamples(modifiedSamples, available);
                    }
                } while(bytesRead > 0);
                device.flush();
            }
        }
    } ).start();
}}
下面是我的日志文件

FATAL EXCEPTION: Thread-10
java.lang.ExceptionInInitializerError
at org.vinuxproject.sonic.SonicTest$1.run(SonicTest.java:50)
at java.lang.Thread.run(Thread.java:1019)
Caused by: java.lang.UnsatisfiedLinkError: Couldn't load sonic: findLibrary returned    null


您必须将libsonic.so放入项目的libs/armeabi文件夹中

您必须将libsonic.so放入项目的libs/armeabi文件夹中

您必须将jar添加到您可能已经拥有的构建路径中,因为它可以编译,并且还必须检查项目中Android下Order and Export选项卡上的库设置。

您必须将jar添加到您可能已经拥有的构建路径中,因为它可以编译,还必须在项目设置中的Android下的Order and Export选项卡上检查库。

仍然会遇到相同的错误。我在Sonic=new Sonic2050时得到错误,1;在sonicTest类中,请帮助。libs/armeabi文件夹的内容是什么?我在libs文件夹中有android-support-v4.jar、android.mk、Application.mk、sonic.c、sonic.h、sonicjni.c和sonicjni.h。为什么你的libs文件夹中有c和h文件?有很多话要说。您正在尝试导入使用c/c++编写的本机代码的项目。如果您希望构建以不使用预构建jar,那么您应该准备好您的环境以使用android NDK。我建议你阅读和其他类似的教程,你会发现同样的错误。我在Sonic=new Sonic2050时得到错误,1;在sonicTest类中,请帮助。libs/armeabi文件夹的内容是什么?我在libs文件夹中有android-support-v4.jar、android.mk、Application.mk、sonic.c、sonic.h、sonicjni.c和sonicjni.h。为什么你的libs文件夹中有c和h文件?有很多话要说。您正在尝试导入使用c/c++编写的本机代码的项目。如果您希望构建以不使用预构建jar,那么您应该准备好您的环境以使用android NDK。我建议您阅读jar文件和其他类似教程。没有包含sonic ndk示例app.Oh源代码的jar文件。我以为它是一个Java库。来自sonic站点:在ANSI C中有一个简单的sonic库,在纯Java中有一个。既然你说你想使用java声音调制库,我想你应该使用java版本。你能给我这个sonic库的纯java版本的链接吗?据我所知,它都包含在tarball中:现在,你可以随意将sonic.c和sonic.h添加到你的应用程序或sonic.java中。似乎您只需将Sonic.Java复制到您的项目中,并将其添加到build path.Java文件中。要么自己创建一个jar并将其添加到构建路径,要么添加java文件。只需将java文件添加到源文件夹,您可能需要调整包名或将其复制到正确的位置。然后它应该自动位于您的构建路径上。没有包含sonic ndk示例app.Oh源代码的jar文件。我以为它是一个Java库。来自sonic站点:在ANSI C中有一个简单的sonic库,在纯Java中有一个。既然你说你想使用java声音调制库,我想你应该使用java版本。你能给我这个sonic库的纯java版本的链接吗?据我所知,它都包含在tarball中:现在,你可以随意将sonic.c和sonic.h添加到你的应用程序或sonic.java中。似乎您只需将Sonic.Java复制到您的项目中,并将其添加到build path.Java文件中。要么自己创建一个jar并将其添加到构建路径,要么添加java文件。只需将java文件添加到源文件夹,您可能需要调整包名或将其复制到正确的位置。然后它应该自动位于构建路径上。
FATAL EXCEPTION: Thread-10
java.lang.ExceptionInInitializerError
at org.vinuxproject.sonic.SonicTest$1.run(SonicTest.java:50)
at java.lang.Thread.run(Thread.java:1019)
Caused by: java.lang.UnsatisfiedLinkError: Couldn't load sonic: findLibrary returned    null