使用SoundPool加速声音

时间:2013-07-24 22:53:10

标签: android soundpool

是否有可能让Soundpool以更快的速度播放声音,例如播放速度提高50%?

private void loadSound(int position, int group_position) {
    switch (position) {
        case 0:
            myVoice = soundPool.load(PhraseActivity.wr.get(), sound[group_position][0], 2);
            soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
                @Override
                public void onLoadComplete(SoundPool soundPool, int sampleId,
                    int status) {
                    soundPool.play(myVoice, 20, 20, 1, 0, 1f);
                } 
            });
        break;
        case 1:
            myVoice = soundPool.load(PhraseActivity.wr.get(), sound[group_position][1], 2);
            soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
                @Override
                public void onLoadComplete(SoundPool soundPool, int sampleId,
                    int status) {
                    soundPool.play(myVoice, 20, 20, 1, 0, 1f);
                } 
            });
        break;
    }
}

2 个答案:

答案 0 :(得分:2)

播放速率允许应用程序改变声音的播放速率(音高)。值1.0表示以原始频率播放。值2.0表示播放速度的两倍,值0.5表示以半速播放。 见Doc

所以你需要改变 soundPool.play(myVoice, 20, 20, 1, 0, 1f);
soundPool.play(myVoice, 20, 20, 1, 0, 2f);

值2将使速度提高到50%,如你所愿

答案 1 :(得分:0)

play()的最后一个参数控制播放速度。

请参阅the docs

  

<强>参数

     

soundID:load()函数返回的soundID

     

leftVolume:左侧音量值(范围= 0.0到1.0)

     

rightVolume:正确的音量值(范围= 0.0到1.0)

     

优先级:流优先级(0 =最低优先级)

     

循环:循环模式(0 =无循环,-1 =永远循环)

     

评分:播放率(1.0 =正常播放,范围0.5到2.0)

请注意,您只能将速度从0.5更改为2.0,这意味着速度的一半到两倍。过去的任何事情,你都必须提出自定义实现。