我正在Android中实现fmod语音功能。
用不同的声音完美播放歌曲,但是当我在播放歌曲时更改声音并尝试用不同的声音播放时,以前的声音不会停止。
我已经在mi note 3s和note 4中测试了此代码
这是我的代码,
bool playing = true;
bool play = false;
JNIEXPORT void JNICALL
Java_com_teefourteen_glideplayer_utils_Utils_fix(JNIEnv *env,
jclass jcls, jstring path_jstr, jint type) {
DSP *dsp;
Sound *sound;
System *systemm;//fatel exception
Channel *channel;
float frequency = 0;
if(play){
play = false;
channel->stop();
systemm->close();
systemm->release();
}
//Audio address
const char* path_cstr = env->GetStringUTFChars(path_jstr, NULL);
System_Create(&systemm);
systemm->init(32, FMOD_INIT_NORMAL, NULL);
try {
//Create sound
systemm->createSound(path_cstr, FMOD_DEFAULT, NULL, &sound);
switch (type) {
case MODE_NORMAL:
//Native play
systemm->playSound(sound, 0, false, &channel);
play = true;
systemm->update();
break;
case MODE_LUOLI:
systemm->createDSPByType(FMOD_DSP_TYPE_PITCHSHIFT, &dsp);
dsp->setParameterFloat(FMOD_DSP_PITCHSHIFT_PITCH, 1.8);
systemm->playSound(sound, 0, false, &channel);
channel->addDSP(0, dsp);
play = true;
system->update();
break;
} catch (...) {
play = false;
channel->stop();
systemm->close();
systemm->release();
}
它可以正常工作,但是在尝试更改歌曲/声音时却不起作用。
有时在更改声音或更改歌曲时会出现致命错误。
A / libc:致命信号11(SIGSEGV),代码1,在tid 19449(pool-7-thread-1)中出现故障加法器0x0