08.Eclipse下Ndk开发(使用fmod实现QQ变声功能)
生活随笔
收集整理的這篇文章主要介紹了
08.Eclipse下Ndk开发(使用fmod实现QQ变声功能)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
(創建于2017/12/30)
1.編寫native
package org.fmod.example;public class EffectUtils {//音效的類型public static final int MODE_NORMAL = 0;public static final int MODE_LUOLI = 1;public static final int MODE_DASHU = 2;public static final int MODE_JINGSONG = 3;public static final int MODE_GAOGUAI = 4;public static final int MODE_KONGLING = 5;/*** 音效處理* @param path* @param type*/public native static void fix(String path,int type);static{System.loadLibrary("fmodL");System.loadLibrary("fmod");System.loadLibrary("qq_voice");} }2.進入src目錄下,使用命令行生成頭文件
javah 包名+類名3.創建項目根目錄下jni文件夾,將頭文件拷貝進去
4.下載fmod源碼,復制api中lowlevel中的inc中的頭文件到jni目錄下
5.復制fmod jar包到根目錄下libs文件夾并添加依賴
6.復制需要的api平臺的so文件到jni目錄下
7.修改報錯的地方,比如頭文件的路徑等問題
8.Android Tools -> Add native support 添加本地支持(在此之前,確認你的項目中已經配置了ndk相關的頭文件目錄支持,參考前邊的筆記),填寫你要生成的
so庫的文件名,確認和loadLibrary中加載的(如qq_voice)保持一致
9.配置mk文件:
Android.mk
Application.mk
##支持C++異常處理,標準莫板塊(針對string.h等頭文件的處理,去掉了common.c之后,這個不再需要了,但是保留也沒問題) APP_STL := gnustl_static10.不斷的build project,直到所有異常解決編譯成功
部分源碼:
effect_fix.cpp
QQActivity.java
package org.fmod.example;import java.io.File;import com.renzhenming.qq_voice.R;import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.View;public class QQActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);org.fmod.FMOD.init(this);setContentView(R.layout.activity_main);}public void mFix(View view){String path = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separatorChar + "singing.wav";Log.d("renzhenming", path);switch (view.getId()) {case R.id.btn_record:EffectUtils.fix(path, EffectUtils.MODE_NORMAL);Log.d("renzhenming", "MODE_NORMAL");break;case R.id.btn_luoli:EffectUtils.fix(path, EffectUtils.MODE_LUOLI);Log.d("renzhenming", "MODE_LUOLI");break;case R.id.btn_dashu:EffectUtils.fix(path, EffectUtils.MODE_DASHU);Log.d("renzhenming", "MODE_DASHU");break;case R.id.btn_jingsong:EffectUtils.fix(path, EffectUtils.MODE_JINGSONG);break; case R.id.btn_gaoguai:EffectUtils.fix(path, EffectUtils.MODE_GAOGUAI);break; case R.id.btn_kongling:EffectUtils.fix(path, EffectUtils.MODE_KONGLING);break; default:break;}}@Overrideprotected void onDestroy(){ org.fmod.FMOD.close(); super.onDestroy();} }EffectUtils.java
package org.fmod.example;public class EffectUtils {//音效的類型public static final int MODE_NORMAL = 0;public static final int MODE_LUOLI = 1;public static final int MODE_DASHU = 2;public static final int MODE_JINGSONG = 3;public static final int MODE_GAOGUAI = 4;public static final int MODE_KONGLING = 5;/*** 音效處理* @param path* @param type*/public native static void fix(String path,int type);static{System.loadLibrary("fmodL");System.loadLibrary("fmod");System.loadLibrary("qq_voice");} }程序運行界面
18404062.png
總結
以上是生活随笔為你收集整理的08.Eclipse下Ndk开发(使用fmod实现QQ变声功能)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: volatile 和 synchroni
- 下一篇: 【RESTful风格】软件接口设计中RE