1

是否可以让 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;
    }
}
4

2 回答 2

2

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

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

值 2 将根据您的需要将速度提高到 50%

于 2013-07-24T23:06:07.200 回答
0

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

请参阅文档

参数

soundID:由 load() 函数返回的 soundID

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

rightVolume:右音量值(范围 = 0.0 到 1.0)

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

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

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

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

于 2013-07-24T23:04:24.943 回答