最近接到一个项目需求,大概是围绕***变声***这个功能展开的。

我从来没有写过这样的项目,抱着好奇的心态百度了一番,找到了一个是为游戏开发者准备的革命性音频引擎------FMOD开发引擎库。

1、去官网下载fmod库 :https://www.fmod.com/

选择 Download

然后在选择Android相应的

解压完

api文件里使我们所需要的东西。

2、开始创建项目
需要ndk支持,需下载ndk,因为我的as版本是3.2.0,我用的ndk版本是 android-ndk-r16b
新建项目,输入项目名称,勾选包含支持c++

一直next最后一步勾选c++支持如下:

到此创建成功。

3、项目配置

 (1)打开下载好的库,找到lib里的so和jar如下


吧这些放到项目的lib里边:

一定要记得 fmod.jar 右击add

(2)在as main文件下新建cpp文件夹,找到下载好的库里如下文件:

将整个文件夹复制到cpp文件夹下,如下:

里边的 changedvoice.cpp 是自己创建的cpp文件,是对声音的改变 ,稍后会上传github,我们先看一下:

 (3)接下来我们看 gradle  文件


这三处是需要添加的,第一处需注意只有以下三个是需要添加的

第二处就是CMakeLists.txt文件,在选择支持c++的时候这个文件自动生成,如果是没有选择支持c++那就请复制这个文件到项目中。

 (4)setting配置 请下载cmake

 (5)在XML写好布局以备来展示效果<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" ><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:orientation="vertical"android:background="#FFF"android:paddingBottom="20dp" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_marginTop="20dp"><LinearLayout android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="vertical"><ImageViewandroid:id="@+id/btn_normal"style="@style/AudioImgStyle"android:src="@mipmap/record"android:onClick="startChange"/><TextView style="@style/AudioTextStyle"android:text="原声"/></LinearLayout><LinearLayout android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="vertical"><ImageViewandroid:id="@+id/btn_luoli"style="@style/AudioImgStyle"android:src="@mipmap/luoli"android:onClick="startChange"/><TextView style="@style/AudioTextStyle"android:text="萝莉"/></LinearLayout><LinearLayout android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="vertical"><ImageViewandroid:id="@+id/btn_dashu"style="@style/AudioImgStyle"android:src="@mipmap/dashu"android:onClick="startChange"/><TextView style="@style/AudioTextStyle"android:text="大叔"/></LinearLayout></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_marginTop="20dp"><LinearLayout android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="vertical"><ImageViewandroid:id="@+id/btn_jingsong"style="@style/AudioImgStyle"android:src="@mipmap/jingsong"android:onClick="startChange"/><TextView style="@style/AudioTextStyle"android:text="惊悚"/></LinearLayout><LinearLayout android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="vertical"><ImageViewandroid:id="@+id/btn_gaoguai"style="@style/AudioImgStyle"android:src="@mipmap/gaoguai"android:onClick="startChange"/><TextView style="@style/AudioTextStyle"android:text="搞怪"/></LinearLayout><LinearLayout android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="vertical"><ImageViewandroid:id="@+id/btn_kongling"style="@style/AudioImgStyle"android:src="@mipmap/kongling" android:onClick="startChange"/><TextView style="@style/AudioTextStyle"android:text="空灵"/></LinearLayout></LinearLayout>
</LinearLayout>
(6)接下来我们看MainActivity首先是获取了相关权限

         因为我是要获取手机里存在的相关音频,所以开启县城使用IO流读取

   然后我加了判断是否有相关文件,便于查看日志了解是否是有文件。

  (7)建立一个java文件,添加加载动态库代码,添加native方法。

基本到这也就差不多了,由于本人能力有限,所以有的地放表达的不是很准确,网上也有很多相关的例子,都是查不了多少,再次写一遍记录一下,也有个印象。

github地址:https://github.com/yuzhushi/VioceDemo

Android开发之Fmod开发引擎库-----变声相关推荐

  1. qt android 开发之wifi开发篇

    小编简单介绍如何通过调用android API来获取wifi服务( 非常感谢作者安晓辉发布了qt android 核心编程这本书,让我两天搞懂了很多在qt中开发安卓的要领,现在跟大家分享下!至于还没知 ...

  2. Android开发之SDK开发获取资源id报错的问题

    我们在开发SDK的时候有时候需要兼容Eclipse版本和AS版本,AS版本就不说了没多大问题,主要是Eclipse版本会有问题.当开发之使用Eclipse开发的时候接入jar包(AS打包成aar,解压 ...

  3. Android开发之ApiCloud模块开发之模块引用第三方库的问题

    因为现在第三方库比较多,所以很多人为了快速开发导致库用烂大街了,但是在模块开发中本人不建议使用第三方库的依赖会有很多问题,要么是资源图片找不到,要么是布局找不到啥的,但是有的需求只有第三方库怎么办呢? ...

  4. Android开发之无bug滑动删除源码(非第三方库)

    Android开发之无bug滑动删除源码(非第三方库源码请在最后面自行下载) 1.我们先来看下效果图:上边是抽取出来的demo,下边是公司用到的项目 2.我们来看下如何调用(我们这里以listView ...

  5. android 视频开发sd卡,Android开发之SD卡文件操作分析

    本文实例讲述了Android开发之SD卡文件操作.分享给大家供大家参考,具体如下: 前面的文章中写过直接操作手机自带存储器的程序,这次就接着上次文章协议下对sd卡的文件操作.与自带存储不同的是使用sd ...

  6. android开发集成flash,Android开发之Adobe flash操作工具类

    本文实例讲述了Android开发之Adobe flash操作工具类.分享给大家供大家参考,具体如下: public class AdobeUtil { /** * 安装flash插件 */ publi ...

  7. Android开发之旅:android架构

    引言 通过前面两篇: Android 开发之旅:环境搭建及HelloWorld Android 开发之旅:HelloWorld项目的目录结构 我 们对android有了个大致的了解,知道如何搭建and ...

  8. Android开发之TextView高级应用

    Android开发之TextView高级应用 我们平时使用TextView往往让它作为一个显示文字的容器,但TextView的功能并不局限于此.以下就和大家分享一下TextView的一些使用技巧. A ...

  9. Android开发之JNI(一)--HelloWorld及遇到的错误解析

    Android开发之JNI(一)--HelloWorld及遇到的错误解析 1.NDK环境搭建 參考http://blog.csdn.net/xiaoliouc/article/details/8705 ...

最新文章

  1. 5软件开发与软件测试
  2. pathview包绘制富集的kegg图
  3. 1、初识Server API for JavaScript
  4. python3 if else 简洁写法 三元运行
  5. 转:[C#]获取某年指定周的开始日期和结束日期的通用方法
  6. linux fastQC 操作命令,[Bio-Info]fq文件解析统计工具:FastQC在linux下初应用
  7. java thread 几个状态_Java-Thread 线程的几种状态
  8. Go Web 编程--如何确保Cookie数据的安全传输
  9. Windows xp+Ubuntu 11.10 硬盘安装
  10. 【操作系统】笔记6 java基本类型及运算
  11. 等长子网划分、变长子网划分(网络整理)
  12. Windows server 2019 - Raid5 搭建+测试
  13. wuyun知识库目录
  14. JavaScript教程---洪恩在线
  15. 51单片机的定时器TMOD的小记
  16. java微信服务通知
  17. 从USGS Earth Explorer网站查找和下载MODIS数据
  18. Unity3D MMORPG 背包系统如何设计
  19. 蒜厂年会|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)
  20. 金秋10月,结婚的季节啊-参加同学婚宴安排

热门文章

  1. Nitro League 和 YGG 达成合作
  2. 【附源码】计算机毕业设计SSM商场VIP管理系统
  3. 快捷键实现MAC或者WINDOWS下快速切换显示器输入源
  4. 用Python爬取大众点评数据,推荐火锅店里最受欢迎的食品
  5. 分布式光伏联网设备推荐——4G/5G工业路由器/有线工业路由器
  6. VirtualBox运行中经常报错0x00000000不能为written解决办法(附上所需文件下载链接)
  7. Chinese English 笑话
  8. 2014武汉大学acm邀请赛总结
  9. Silverlight.XNA(C#)跨平台3D游戏研发手记:(一)差集运算在SLG战斗范围设定中的应用
  10. lru调度算法例题_关于调度算法-例题解析