android代码 qq语音,Android仿QQ语音变声功能实现(二)---移植到android studio 并
统计
1:因为半年前代码用Eclipse写的,有人问我能不能移植到Android Studio 上,可以
2:变声后的文件在哪里?这么保存?问这个问题的肯定没有认真阅读我上一篇博客和看源码。(我这里提供一种解决方案,在最下面认真往下看)
开始
Android Studio NDK目前有两种玩法:
1: ndk-build 、Android.mk、 Application.mk
2: CMake
我也不介绍他俩对比了,第二个是android studio2.2之后主推的,新建ndk项目直接勾选上可以玩了。
既然要移植到android studio上我们也用第二种
开撸:
1.创建新项目(Create New Project)
勾选上 Include C++ Support
接下来和普通创建一样一路 —->Next到下图这个页面
2.配置C++(Customize C++ Support)
你们 C++ Standard 这里应该是默认的Toolchain Default默认是CMake环境,这里我们用C++11没有为什么,任性。
勾选上 Exceptions Support 、Exceptions Support让其支持C++异常处理然后Finish如下图:
项目创建好,把他帮我们生成的文件删掉,布局以及MainActivity里的不用代码,还有cpp目录下的.cpp文件不需要,之后我们开始做移植吧。
3.拷贝资源文件到 Android Studio
首先看下Eclipse工程下的目录结构:
src 目录下的java代码
assets 目录下的音频资源
jni 目录下的fmod的动态库和c++代码
lib 目录下的fmod包
res 目录下的图片及布局xml代码和一些资源文件
这些复制黏贴的活我就不贴出来了,主要看下jni目录
刚才创建完成项目后,AS自动帮创建了cpp目录,原jni目录下的inc直接拷过去就好其他不要看图:
在Android studio 里app->libs目录下创建armeabi平台文件夹把libfmod.so和libfmodL.so这俩包放进去看下AS的现在的结构:
fmod.jar放到libs下右键add进去、assets这个目录as没有我们需要自己去创建把音频文件放进去。
4.Android Studio 下生成.h头文件
现在剩下头文件和supersound.cpp这俩关键文件了,因为我包结构不一样所以需要重新生成头文件。
我看了几篇文档AS下有配置直接生成头文件的,我懒不配置了,直接命令行玩吧!
从Android Studio的Terminal里进入到, /src/main/java 目录下,一定要刀这个文件夹下来执行命令操作。
执行javah XXX.XX.XXX 即可, XXX.XX.XXX是要生成.h文件的完整路径名,包名+文件名
cd 到目录下 执行javah命令会在当前文件夹下生成.h文件F5刷新目录就有了,把他拷贝到cpp目录下,把原来的supersound.cpp也拷过来,如下图
把.h文件里的这一行代码拷贝到我们原来supersound.cpp文件里替换标红这段代码,以及修改引用头文件的目录地址#include 那里地址变了,如下图:
至此我们资源文件拷贝完毕
5.修改CMakeList.txt构建ndk
看下CMakeList.txt的我直接写好了,简单介绍下
# Sets the minimum version of CMake required to build the native
# library. You should either keep the default value or only pass a
# value of 3.4.0 or lower.
cmake_minimum_required(VERSION 3.4.1)
find_library( # Sets the name of the path variable.
log-lib
log )
set(distribution_DIR ${CMAKE_SOURCE_DIR}/../../../../libs)
add_library( fmod
SHARED
IMPORTED )
set_target_properties( fmod
PROPERTIES IMPORTED_LOCATION
../../../../libs/armeabi/libfmod.so )
add_library( fmodL
SHARED
IMPORTED )
set_target_properties( fmodL
PROPERTIES IMPORTED_LOCATION
../../../../libs/armeabi/libfmodL.so )
add_library( sound
SHARED
src/main/cpp/supersound.cpp )
include_directories(src/main/cpp/inc)
target_link_libraries( sound fmod fmodL
${log-lib} )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
这里不介绍Cmake的使用了附上学习地址官方文档
https://cmake.org/documentation/
中文翻译的简易的 CMake手册
https://www.zybuluo.com/khan-lau/note/254724
最后一步配置build.gradle直接上图了:
可以编译安装玩一玩了 哈哈哈真是愉快的一下午啊
6.结束语-变声后保存解决思路
关于你们说的要保存变声后的声音 不知道你们为什么要保存下来哈哈哈 因为是在播放的时候加入的音轨就像唱歌的时候加入伴奏加入一段钢琴的声音达到变声效果,加了特效。
目前我们是在本机播放变声后的效果,有个哥们他的需求是这边发出去语音对方听到的是变声后效果。然后问我怎么保存说找不到解决方法所以来问我。
我这里给的思路就是我们本地不保存,就把原声发送给接收方,在接收方调fmod进行变声,这么说理解了吗? 发送的时候加上tag标示,这个标示代表用那种变声效果,然后对方点击播放的时候你把他变声了就好了啊! 有时候换一种思路你会发现真的很简单,没必要一直纠结 关键还是在于懒,懒得查资料,那么我们就用简单的方法 这只是一次移植的记录,所以资料我写的不是很详细,如果需要学习哪一方面可以找我,我写教程或者帮你找相关资料都可以。
边移植边查资料还要记录所以文档很乱,有问题来找我QQ:1344670918或者下面留言
项目下载:https://github.com/CN-ZPH
版权信息:本站所有资源仅供学习与参考,请勿用于商业用途,如有侵犯您的版权,请及时联系客服,我们将尽快处理。
android代码 qq语音,Android仿QQ语音变声功能实现(二)---移植到android studio 并相关推荐
- android变声后的文件,仿QQ语音变声功能实现(二)---移植到android studio 并解决部分问题...
版权声明:转载必须注明本文转自张鹏辉的博客: http://blog.csdn.net/qingtiangg 大家好,距离上一篇博客半年过去了,关于上一篇博客很多人加我QQ留言问了几个问题,最近不忙决 ...
- 仿QQ语音变声功能实现(二)---移植到android studio 并解决部分问题
版权声明:转载必须注明本文转自张鹏辉的博客: http://blog.csdn.net/qingtiangg 大家好,距离上一篇博客半年过去了,关于上一篇博客很多人加我QQ留言问了几个问题,最近不忙决 ...
- 仿QQ语音变声功能实现
版权声明:转载必须注明本文转自张鹏辉的博客: http://blog.csdn.net/qingtiangg 大家好,这是我从业以来第一篇博客,给大家拜个晚年,祝大家鸡年大吉,幸福美满.事业有成.好了 ...
- Android插件化的思考——仿QQ一键换肤,思考比实现更重要!
Android插件化的思考--仿QQ一键换肤,思考比实现更重要! 今天群友希望写一个关于插件的Blog,思来想去,插件也不是很懂,只是用大致的思路看看能不能模拟一个,思路还是比较重要的,如果你有兴趣的 ...
- android 仿qq换肤功能,Android插件化的思考——仿QQ一键换肤,思考比实现更重要!.doc...
Android插件化的思考--仿QQ一键换肤,思考比实现更重要! 关于QQ的换肤,他们的实现思路我不是很清楚,但是你可以看一下这张换肤的截图 我们想使用哪个主题就直接下载就好了,这一实现的过程我们大致 ...
- Android仿QQ ios dialog,仿QQ退出向上菜单
Android仿QQ ios dialog,仿QQ退出向上菜单 EasyDialog两种模式 仿QQ退出向上菜单,自定义向上菜单 github地址:https://githu ...
- Android仿微信小视频录制功能(二)
Android仿微信小视频录制功能(二) 接着上一篇,在完成了录制功能后,伟大的哲学家沃兹基索德曾经说过:"有录就有放.",那么紧接着就来实现播放功能,按照国际惯例,先上下效果图: ...
- Android ListView侧滑item,仿QQ删除效果
尊重原创,转载请注明(http://blog.csdn.net/aoshiwenrou/article/details/42971193) 最近的项目需求有一条是要实现仿QQ的侧滑删除效果,网上搜到了 ...
- Android源码解析--SwipeMenuListView仿QQ聊天左滑
版权声明:本文为博主原创文章,转载请标明出处. https://blog.csdn.net/lyhhj/article/details/50612714 绪论: 好久没写博客了,最近比较懒,不想写博客 ...
- android 自定义特效,Android自定义View之高仿QQ健康
我们都知道自定义View一般有三种直接继承View.继承原有的控件对控件的进行修改.重新拼装组合,最后一种主要针对于ViewGroup.具体的怎么做不是本文的所涉及的内容(本文是基于第一种方式实现的) ...
最新文章
- Spring boot 实战 利用 Sharding-jdbc实现数据库的读写分离
- C语言处理字符串及内存操作
- dell服务器怎么查看网卡型号,dell R730集成网卡什么型号
- Leet Code OJ 简单(二)
- SAP中:ALE控制单元是什么?
- [云炬python3玩转机器学习] 6-4 在线性回归模型中使用梯度下降法
- 记一次院赛CTF的Pwn和Misc题(入门)
- Linux服务-telnet服务部署(配置允许root登录)
- onlyoffice启用HTTPS
- [数据结构-严蔚敏版]P37定义一个带头结点的线性链表
- 在嵌套使用if语句时,C语言规定else总是什么?
- [json] JSON for Modern C++
- as3 physaxe 2d 物理引擎
- django 1.8 官方文档翻译: 3-5-1 使用Django输出CSV
- Linux开机启动过程(4):切换到64位模式-长模式(直到内核解压缩之前)
- 一个普通人,想改变命运,最靠谱的3种方式
- python 读取配置文件的单元测试_单元测试
- 用计算机知识写祝福,计算机课程设计心得体会
- AcWing Django框架课第一节笔记
- [渝粤教育] 西南科技大学 民事诉讼法学 在线考试复习资料(1)
热门文章
- 朴素贝叶斯——新闻分类
- lintcode(507)摆动排序 II
- Java实现压缩图片
- java 添加盲水印_图片加数字盲水印
- 刷题学习—数据结构(字符串、栈和队列、链表、数组与矩阵、哈希表、位运算)
- 微信小程序开发者工具运行不了
- 计算机专业毕业设计(论文)指导pdf,中国计量学院信息工程学院毕业设计论文指导书计算机专业.pdf...
- 如何删除桌面右键菜单中的英特尔核心显卡选项
- 算法之显著性检测《Saliency Detection: A Spectral Residual A》
- 串行接口与并行接口的概念与区别