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文件。在文件开始的地方加入
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS)
LOCAL_MODULE := fmodstudio
LOCAL_SRC_FILES := prebuilt/$(TARGET_ARCH_ABI)/libfmodstudio.so
include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS)
LOCAL_MODULE := fmodstudioL
LOCAL_SRC_FILES := prebuilt/$(TARGET_ARCH_ABI)/libfmodstudioL.so
include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS)
LOCAL_MODULE := fmod
LOCAL_SRC_FILES := prebuilt/$(TARGET_ARCH_ABI)/libfmod.so
include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS)
LOCAL_MODULE := fmodL
LOCAL_SRC_FILES := prebuilt/$(TARGET_ARCH_ABI)/libfmodL.so
include $(PREBUILT_SHARED_LIBRARY)
在LOCAL_SRC_FILES变量中加入自己封装的fmod的cpp文件;
在LOCAL_C_INCLUDES变量中加入fmod头文件目录;
在include $(BUILD_SHARED_LIBRARY)上方加入share libraies的导入变量:
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的过程的更多相关文章
- 分析cocos2d-x在Android上的编译过程(1):cocco2d-x是怎样生成的Android的文件夹结构
当新建完一个cocos2d-x的项目后.进入到项目中的proj.android中,会看到例如以下的文件夹结构 在VS先把它编译,然后导入到Eclipse中,导入完后会看到多了几个文件 watermar ...
- cocos2d-x在Android上的编译过程(3):简化Android.mk文件的编写
在编译动态库时.要求我们要去编写jni/Android.mk文件.告诉编译器编译出来的库时应包括包括编译文件和其它引用库.但对于一个大项目来说,维护这个文件肯定是一件比較繁琐的事情.由于每加一个文件或 ...
- android cocos2d-x for Android安装和学习笔记(请用adt-bundle21.1或以上导入)
引用:http://weimingtom.iteye.com/blog/1483566 (20121108)注意:这篇文章用cdt编译ndk工程的内容已过时(现在可以用adt-bundle,避免配置繁 ...
- (译)cocos2d-x跨android&ios平台开发入门教程
免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作 ...
- TalkingData Cocos2dx在android平台使用总结
前言:最近发现很多朋友在使用TalkingData游戏版本Cocos2dx SDK使用过程中会出现的一些问题,今天来做一下总结,希望对您有所帮助: 首先非常感谢您使用TalkingData游戏统计平台 ...
- cocos2dx工程中接入支付宝sdk
1. 首先去支付宝官网下载开发者文档 2. 然后按着开发者文档将支付宝的sdk导入到你的工程中,并关联到工程中,步骤入下图: (1)将从支付宝官方网站获得的支付宝的sdk的jar包拷贝到工程中的lib ...
- 为Cocos2d-x的Android平台加入Protobuffer支持
为Cocos2d-x的Android平台加入Protobuffer支持 分类: 工作2013-11-27 18:00 386人阅读 评论(1) 收藏 举报 cocos2d-xandroid平台交叉编译 ...
- Mac 下配置 Cocos2d-x 3-x android 的环境
本人初学Cocos2d 3-x,环境配置,搭建android环境弄了好长时间,走了不少弯路,翻阅了好多人的博客和文档,包括官方文档讲的似乎有些似懂非懂,好多依然是旧的版本,所以把我的整个过程梳理一下. ...
- 【转载】cocos2dx 中 Android NDK 加载动态库的问题
原文地址:http://blog.csdn.net/sozell/article/details/10551309 cocos2dx 中 Android NDK 加载动态库的问题 闲聊 最近在接入各 ...
随机推荐
- angular实现表格的分页显示
最近项目中用到了一个功能,就是表格的分页显示.以前没整过,今天学会了,把它整理一下,下次可以直接用. 实例代码:https://github.com/dreamITGirl/projectStudy ...
- Java基础--常用API--日期相关API
一.java.util.Date 1.只用于显示系统时间,其大部分操作由Calendar代替. 格林威治时间(GMT):指的是1970年1月1日0时,不同地区有时间差. 默认输出格式:星期.月.日.时 ...
- jsp学习与提高(五)——JSP 异常处理
JSP 异常处理 当编写JSP程序的时候,程序员可能会遗漏一些BUG,这些BUG可能会出现在程序的任何地方.JSP代码中通常有以下几类异常: 检查型异常:检查型异常就是一个典型的用户错误或者一个程序员 ...
- Windows右下角图标显示不正常
我的win7系统,右下角图标透明,分不清哪个是哪个.点击也没有任何反应. 解决办法: 点击运行输入cmd,在命令提示符下输入下列命令即可恢复. taskkill /im explorer.exe /f ...
- JavaScript进阶 - 第6章 事件响应,让网页交互
6-1什么是事件 JavaScript 创建动态页面.事件是可以被 JavaScript 侦测到的行为. 网页中的每个元素都可以产生某些可以触发 JavaScript 函数或程序的事件. 比如说,当用 ...
- shell编程 Shell script 的默认变量($0, $1...)
Shell script 的默认变量($0, $1...) 我们知道指令可以带有选项与参数,例如 ls -la 可以察看包含隐藏文件的所有属性与权限.那么 shell script 能不能在脚本文件名 ...
- mysql错误之errorcode 1215问题
1.此类问题出现时我们往往会迫不及待的去百度,但是问题偶尔也不是我们想的那样,比如我本次犯下的错误如下: 上图是我给表添加外键约束的时候的sql.下图是我建的表,问题出哪里了?原来是我的数据库根本没有 ...
- 集合中的 for-Each循环
数组的加强型的for-Each循环很简单,我们再来看一下集合中的for-Each 循环又是怎么样的.我们都知道集合中的遍历都是通过迭代(iterator)完成的.也许有人说,也可以按照下面的方式来遍 ...
- python之is 和 == 的区别//编码和解码
一.is 和 == 的区别: 1 .id() 内存地址 2. == 比较 #比较两边的值 3. is 比较 #比较的是内存地址 数字,字符串,有小数据池 #数字小 ...
- java分为 三类 ME,SE,EE
java分为 三类 ME,SE,EE Java SE=Java Standard EditionJava EE=Java Enterprise Edition Java ME=Java Mobile ...