Android 开发之 QQ变声功能实现(3)

本文介绍了在Android开发中使用FMOD库进行音频处理,包括加载库、头文件生成、CMake配置及高级工程师在面对需求时的思考。文章强调了系统性和完整性在技术体系中的重要性。
摘要由CSDN通过智能技术生成

System.loadLibrary(“fmod”);

System.loadLibrary(“sound”);

}

}

5.2生成对应的头文件

我们使用javah命令生成工具类对应的头文件

上面报错是因为在代码注释中有中文,所以我们可以给javah添加utf8,就不报错误了,命令如下:

执行成功后就生成了对应的头文件:

5.3将生成的头文件复制到cpp目录下,并在cpp目录下新建voice.cpp文件

我们可以根据下载实例中的下述文件编写voice的代码(个人能力有限,不造轮子)

voice.cpp的代码如下:

#include “inc/fmod.hpp”

#include <stdlib.h>

#include <unistd.h>

#include “hlq_utils_ChangeUtils.h”

#include <jni.h>

#include <android/log.h>

#define LOGI(FORMAT, …) __android_log_print(ANDROID_LOG_INFO,“zph”,FORMAT,##VA_ARGS);

#define LOGE(FORMAT, …) __android_log_print(ANDROID_LOG_ERROR,“zph”,FORMAT,##VA_ARGS);

#define MODE_NORMAL 0

#define MODE_LUOLI 1

#define MODE_DASHU 2

#define MODE_JINGSONG 3

#define MODE_GAOGUAI 4

#define MODE_KONGLING 5

using namespace FMOD;

JNIEXPORT void JNICALL Java_hlq_utils_ChangeUtils_change(JNIEnv *env,

jclass jcls, jstring path_jstr,

jint type) {

//声音引擎

System *system;

//声音

Sound *sound;

//数字处理(音效)

DSP *dsp;

//正在播放

bool playing = true;

//音乐轨道

Channel *channel;

//播放速度

float frequency = 0;

//音频地址

const char *path_cstr = env->GetStringUTFChars(path_jstr, NULL);

System_Create(&system);

system->init(32, FMOD_INIT_NORMAL, NULL);

try {

//创建声音

system->createSound(path_cstr, FMOD_DEFAULT, NULL, &sound);

switch (type) {

case MODE_NORMAL:

//原生播放

system->playSound(sound, 0, false, &channel);

break;

case MODE_LUOLI:

//提升或者降低音调的一种音效

system->createDSPByType(FMOD_DSP_TYPE_PITCHSHIFT, &dsp);

//设置音调的参数

dsp->setParameterFlo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值