cocos2dx for android 接入 fmod的过程
cocos2dx自帶的音效播放有SimpleAudioEngine和AudioEngine兩個,SimpleAudioEngine可以播放簡單的音效,
如果播放音效數量過多的話,多導致有些音效播放失敗。AudioEngine是一個不成熟的音效引擎,筆者在兩個項目中
都試過用它,結果在安卓手機上頻繁切換音效的過程中出現閃退。
fmod很強大,而且一個音效文件可以支持多平臺。而且音效文件不容易被盜。
在官網下載cocos2dx的demo,然后下載對應平臺的fmod的庫,將安裝好的庫文件放在同一個文件夾,另外所有頭文件
也放在一個文件夾內。
win32的庫有:
fmod_vc.lib
fmodL_vc.lib
fmodstudio_vc.lib
fmodstudioL_vc.lib
fsbank_vc.lib
對于64位系統的,可以使用帶64的庫文件。
在vs的庫路徑和附加依賴項中加入寫庫文件,在附加包含目錄添加頭文件目錄,運行文件即可。
對應安卓平臺會有許多問題,比如聲音會出現顫抖,處理方法可以看官網的教學文檔。
安卓接入過程:
1.修改項目的jni目錄Android.mk文件。在文件開始的地方加入
1 LOCAL_PATH := $(call my-dir) 2 3 include $(CLEAR_VARS) 4 LOCAL_MODULE := fmodstudio 5 LOCAL_SRC_FILES := prebuilt/$(TARGET_ARCH_ABI)/libfmodstudio.so 6 include $(PREBUILT_SHARED_LIBRARY) 7 8 include $(CLEAR_VARS) 9 LOCAL_MODULE := fmodstudioL 10 LOCAL_SRC_FILES := prebuilt/$(TARGET_ARCH_ABI)/libfmodstudioL.so 11 include $(PREBUILT_SHARED_LIBRARY) 12 13 include $(CLEAR_VARS) 14 LOCAL_MODULE := fmod 15 LOCAL_SRC_FILES := prebuilt/$(TARGET_ARCH_ABI)/libfmod.so 16 include $(PREBUILT_SHARED_LIBRARY) 17 18 include $(CLEAR_VARS) 19 LOCAL_MODULE := fmodL 20 LOCAL_SRC_FILES := prebuilt/$(TARGET_ARCH_ABI)/libfmodL.so 21 include $(PREBUILT_SHARED_LIBRARY)
View Code
在LOCAL_SRC_FILES變量中加入自己封裝的fmod的cpp文件;
在LOCAL_C_INCLUDES變量中加入fmod頭文件目錄;
在include $(BUILD_SHARED_LIBRARY)上方加入sharelibraies的導入變量:
LOCAL_SHARED_LIBRARIES := fmodL
LOCAL_SHARED_LIBRARIES += fmod
LOCAL_SHARED_LIBRARIES += fmodstudioL
LOCAL_SHARED_LIBRARIES += fmodstudio
include $(BUILD_SHARED_LIBRARY)
在jni的目錄下創建prebuilt文件夾,將fmod的庫的四個文件夾:arm64-v8a、armeabi、armeabi-v7a、x86放在prebuilt文件夾下,
另外還有一個fmod.jar庫,將它放在libs文件夾下
修改安卓的AppActivity啟動文件:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
org.fmod.FMOD.init(this);//用于啟動fmod功能
}
protected void onDestroy() {
super.onDestroy();
org.fmod.FMOD.close();//用于關閉fmod功能
}
static
{
System.loadLibrary("fmod");//用于程序開始運行時導入fmod.jar
}
接入過程完成。
注意的是,安卓在加載音效的目錄跟其他平臺有所區別,
下方是區分平臺獲取音效的路徑方法:
const char * getResourcePath(const char *path)
{
if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
{
char buf[256];
sprintf(buf, "file:///android_asset/%s", path);
return buf;
}
else
{
return path;
}
}
如果項目中使用了fmod的錄音功能,需要在AndroidManifest.xml文件中加入路徑權限:android.permission.RECORD_AUDIO
在項目目錄下通過控制臺編譯打包:cocos compile -p android
轉載請注明出處,from博客園HemJohn
總結
以上是生活随笔為你收集整理的cocos2dx for android 接入 fmod的过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac快捷键大全及cheatsheet插
- 下一篇: HeidiSQL工具导出导入MySQL数