Android-studio导入.so库问题? 财富值23

2016-10-09 07:38发布

[图]我的目录结构 一下是主activity package com.iflytek.tts; import android.app.Activity; import android.os.Bundle;...

我的目录结构

一下是主activity

package com.iflytek.tts;  import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView;  import com.iflytek.tts.TtsService.Tts;  import com.iflytek.tts.R;    public class TtsJniDemo extends Activity implements View.OnClickListener {     //在lib目录下有AisoundDemo.so 文件     private static final String TAG = "AisoundDemo";     private TextView txtView;     //准备读的文字     private String text = "ياخشىمۇسىز";      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);         // ui         TextView textView = (TextView) findViewById(R.id.textView);         EditText editText = (EditText) findViewById(R.id.editText);         Button startButton = (Button) findViewById(R.id.startButton);         Button stopButton = (Button) findViewById(R.id.stopButton);         startButton.setOnClickListener(this);         stopButton.setOnClickListener(this);         if (!editText.getText().toString().equals("")){             text = editText.getText().toString();         }         textView.setText(text);         // tts         Tts.JniCreate("/sdcard/Resource.irf");         Tts.JniSetParam(1282, -11000);//1282可能是 调整语速的id  后面的-11000 是它的值。 比如Tts.JniSetParam(1282, -15000); 改成这个就说话速度快了。  //        Tts.JniSetParam(1280, 4);  这个是别的参数 看看改4 这个数字看看 我也不知道是什么 //        Tts.JniSetParam(1297, 20); 这个是别的参数 看看改20 这个数字看看 我也不知道是什么 //        Tts.JniSetParam(1282, 20000);    这个是别的参数 看看改20000 这个数字看看 我也不知道是什么        }       @Override     public void onClick(View v) {         switch (v.getId()){             case R.id.startButton:                 onClickStart();                 break;             case R.id.stopButton:                 onClickStop();                 break;         }     }      public void onClickStop(){         //Tts.JniStop();     }      public void onClickStart(){         //JniSpeak参数是文字 给什么文字就读什么文字。 此代码只是维吾尔语言的离线合成。         Tts.JniSpeak(text);         //1。在这儿关闭语音助手的识别 stoplistening         // stoplistening         do {             //2.这个的作用是 等到 语音合成结束时前 不要执行任何事情         }while (Tts.JniIsPlaying()==0);         //3.语音合成结束后 在这儿开启语音识别 starlistining .         //starlistining         //总结:通过1,2,3步骤可以实习 对助手说 你好 它回答 我好 的时候 这个“我好”防止被语音识别再一次听到自己的声音。 第3步是 说完 “我好” 后自动就开启识别了。等待用户再一次说话。 这和地方在用户多轮交流时有用。      } } 

以下是Tts.java

package com.iflytek.tts.TtsService;    //import com.iflytek.tts.MessageDemo;  import com.iflytek.tts.TtsJniDemo;  public final class Tts{     static {         System.loadLibrary("Aisound");     }      public    static String getString;       /**      *       */     public  synchronized static void startReadThread(TtsJniDemo ttsJniDemo){         class TtsRunThread implements Runnable {             @Override             public void run() {                 JniSpeak(getString);             }         }         Thread ttsRun = (new Thread(new TtsRunThread()));         ttsRun.setPriority(Thread.MAX_PRIORITY);         ttsRun.start();     }      public static native int JniGetVersion();     public static native int JniCreate(String resFilename);     public static native int JniDestory();     public static native int JniStop();     public static native int JniSpeak(String text);     public static native int JniSetParam(int paramId,int value);     public static native int JniGetParam(int paramId);     public static native int JniIsPlaying();     public static native boolean JniIsCreated(); } 

以下是错误信息

我在android-studio导入一个.so库的时候遇到了以上问题,我该怎么解决?
网上有人说是NDK的bug,我改了NDK版本也是同样问题,谢谢大家。

该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答

你确定是导入so库造成的问题么?如果是,你可以试试删除-v7a -v8a x86 x86_64这些文件夹,然后试一下。或者在这些文件夹下放对应格式的.so文件

这样我们也无法确切知道问题在哪,我建议,你可以先做个调用so的demo,so里面就写一个简单的方法,对应java里面一个方法,方法命名都检查清楚,一一对应,把so文件先只放在armeabi文件夹下,然后再按照网上的介绍的一些例子试着把这一个方法调试成功,成功了然后再去试着调试你上面的代码