在fmod中播放新歌曲时停止声音

时间:2019-04-30 11:13:55

标签: android c++ c fmod

我正在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

0 个答案:

没有答案