Android声音嘈杂,噼里啪啦

时间:2013-12-12 21:48:26

标签: java android audio

我在使用 SoundPool 在Android上播放声音时出现问题,这与MediaPlayer类很有效。为什么我不能使用MediaPlayer类是因为它不支持改变声音音高或速度。

用例:声音在后台播放,并根据用户输入进行更改。

当前问题:无法正确播放声音并冻结应用程序。

问题:处理这种情况的正确方法是什么,如果背景声音在单独的线程中播放,并且应该使用处理程序和消息来完成更改音量的通信?

@Override
public void surfaceCreated(SurfaceHolder holder) {

    soundPool = new SoundPool(3, AudioManager.STREAM_MUSIC, 0);
    RAIN_SOUND_ID =  soundPool.load(getContext(), R.raw.rain, 1);

    new Thread(new Runnable() {
        @Override
        public void run() {


            soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {

                @Override
                public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
                    if (sampleId == RAIN_SOUND_ID) {
                        soundPool.play(RAIN_SOUND_ID, 1f, 1f, 10, -1, 1);
                    }
                }
            });
        }
    }).start();
 }

1 个答案:

答案 0 :(得分:0)

SoundPool类实际上在幕后创建和管理它自己的线程池,用于播放它的声音。因此,您可以简化代码以删除其他线程作为潜在问题。

相关问题