如何获取FMOD输出进度条并在android java活动中播放和暂停

我在android中使用FMOD库,我不知道如何获取输出progressbar或具有效果的快速播放/暂停/停止声音,例如: https://play.google.com/store/apps/details?id=com.baviux.voicechanger&hl=en

我尝试使用fomd文档,我知道如何获取输出,但是由于这个问题,我什么都没找到。

我是android&ndk的初学者。

这是我的代码,我无法控制播放暂停或停止并在java活动中获取输出进度栏:

System *system;
Sound *sound;
DSP *dsp;
Channel *channel;
float frequency;
bool isPlaying = true;
FMOD_RESULT result;


System_Create(&system);
if (save == 1) {
    unsigned int outputhandle;
    system->setOutput(FMOD_OUTPUTTYPE_WAVWRITER);
    system->init(32,FMOD_INIT_NORMAL,(void *) "/sdcard/sound.mp3");


} else{
    system->init(32,NULL);
}


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

try {
    system->createSound(path_cstr,FMOD_DEFAULT,NULL,&sound);
    switch (type) {
        case TYPE_NORMAL: 
            LOGI("%s",path_cstr)
            system->playSound(sound,false,&channel);
            LOGI("%s","fix normal");
            break;
        case TYPE_LOLITA: 
            system->createDSPByType(FMOD_DSP_TYPE_PITCHSHIFT,&dsp);   
            dsp->setParameterFloat(FMOD_DSP_PITCHSHIFT_PITCH,8.0);     
            system->playSound(sound,&channel);
            channel->addDSP(0,dsp);
            break;

        case TYPE_UNCLE:  
            system->createDSPByType(FMOD_DSP_TYPE_PITCHSHIFT,&dsp);
            dsp->setParameterFloat(FMOD_DSP_PITCHSHIFT_PITCH,0.8);
            system->playSound(sound,dsp);
            break;

        case TYPE_THRILLER:  
            system->createDSPByType(FMOD_DSP_TYPE_TREMOLO,&dsp);    
            dsp->setParameterFloat(FMOD_DSP_TREMOLO_SKEW,5);         
            system->playSound(sound,dsp);


            break;
        case TYPE_FUNNY:  
            system->createDSPByType(FMOD_DSP_TYPE_NORMALIZE,&dsp);    
            system->playSound(sound,dsp);

            channel->getFrequency(&frequency);
            frequency = frequency * 2;                                  
            channel->setfrequency(frequency);
            break;
        case TYPE_ETHEREAL: 
            system->createDSPByType(FMOD_DSP_TYPE_ECHO,&dsp);          
            dsp->setParameterFloat(FMOD_DSP_ECHO_DELAY,300);           
            dsp->setParameterFloat(FMOD_DSP_ECHO_FEEDBACK,20);        

            system->playSound(sound,dsp);
            break;
        case TYPE_Sajjad: 

            system->createDSPByType(FMOD_DSP_TYPE_CHORUS,&dsp);
            dsp->setParameterFloat(FMOD_DSP_CHORUS_DEpth,90.0f);

            system->playSound(sound,&channel);

            channel->addDSP(0,dsp);
            channel->getFrequency(&frequency);
           // frequency = frequency * 2;                                 
            channel->setfrequency(frequency);

            break;


    }
} catch (...) {
    LOGE("%s","catch exception...")
    goto end;
}

system->update();

while (isPlaying) {
    channel->isPlaying(&isPlaying);
    usleep(1000 * 1000);
}

goto end;


end:
env->ReleaseStringUTFChars(path_jstr,path_cstr);
sound->release();
system->close();
system->release();

我是初学者,请给我一些代码。

inlovelove 回答:如何获取FMOD输出进度条并在android java活动中播放和暂停

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3129206.html

大家都在问