Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Seekbar控制声音池,停止工作_Android_Volume_Soundpool - Fatal编程技术网

Android Seekbar控制声音池,停止工作

Android Seekbar控制声音池,停止工作,android,volume,soundpool,Android,Volume,Soundpool,所以我有8幅图像,每幅图像都开始了8种不同声音的循环。我在每个图像下都有一个seekbar来控制声音的音量 seekbar在声音第一次启动时工作正常,但当停止并再次启动时,seekbar不再控制音量。我做错了什么? `NoiseEvolumeControl.setOnSeekBarChangeListener(新的SeekBar.OnSeekBarChangeListener(){ 公共无效白色噪声已映射(视图){ Log.i(“白噪声”,“按钮被敲击”); if(白噪声播放){ Log.i(“

所以我有8幅图像,每幅图像都开始了8种不同声音的循环。我在每个图像下都有一个seekbar来控制声音的音量

seekbar在声音第一次启动时工作正常,但当停止并再次启动时,seekbar不再控制音量。我做错了什么? `NoiseEvolumeControl.setOnSeekBarChangeListener(新的SeekBar.OnSeekBarChangeListener(){

公共无效白色噪声已映射(视图){

Log.i(“白噪声”,“按钮被敲击”);
if(白噪声播放){
Log.i(“白噪音”,“已经播放”);
mySound.停止(噪音消除);
白噪声播放=假;
((ImageView)视图).setImageResource(R.drawable.whitenoise);
网络播放--;
}否则如果(显示<3){
Log.i(“白噪音”,“开始播放”);
noiseStreaming=mySound.play(whiteNoiseId,(float)noiseVol,(float)noiseVol,1,-1,1);
whiteNoisePlaying=true;
((ImageView)视图).setImageResource(R.drawable.whitenoisepressed);
isplay++;
}
}`

我找到了答案。我需要一种方法来知道我之前是否已经点击过按钮。我最初将noiseStreaming设置为0,然后在按下按钮时进行检查。如果它为0,则我将whiteNoiseId设置为noiseStreaming。下一次它将不会为0,并将跳过该位-

公共无效白色噪声已映射(视图){

Log.i(“白噪声”,“按钮被敲击”);
if(白噪声播放){
Log.i(“白噪音”,“已经播放”);
我的声音。暂停(噪音消失);
白噪声播放=假;
((ImageView)视图).setImageResource(R.drawable.whitenoise);
网络播放--;
}否则如果(显示<3){
Log.i(“白噪音”,“开始播放”);
if(noiseStreaming==0){
noiseStreaming=mySound.play(whiteNoiseId,(float)noiseVol,(float)noiseVol,1,-1,1);
}否则{
mySound.resume(噪音搜索);
}
whiteNoisePlaying=true;
((ImageView)视图).setImageResource(R.drawable.whitenoisepressed);
isplay++;
}
}

音量现在可以通过点击打开和关闭来控制。

noiseVol是一个介于0.0和1.0之间的值吗?它必须在API中描述的范围内。我想你必须释放声音池,重新构建它,并在停止声音后启动。
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            double noiseVol = (double) progress / (double) maxVolume;

            Log.i("Noise Volume", String.valueOf(progress) + " " + String.valueOf((float) noiseVol));
            mySound.setVolume(whiteNoiseId, (float) noiseVol, (float) noiseVol);
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }
    });
    Log.i("White Noise", "button tapped");

    if (whiteNoisePlaying) {
        Log.i("White Noise", "already playing");
        mySound.stop(noiseStreaming);
        whiteNoisePlaying = false;
        ((ImageView) view).setImageResource(R.drawable.whitenoise);
        isPlaying--;
    } else if (isPlaying < 3) {
        Log.i("White Noise", "start playing");
        noiseStreaming = mySound.play(whiteNoiseId, (float) noiseVol, (float) noiseVol, 1, -1, 1);
        whiteNoisePlaying = true;
        ((ImageView) view).setImageResource(R.drawable.whitenoisepressed);
        isPlaying++;
    }
}`
    Log.i("White Noise", "button tapped");

    if (whiteNoisePlaying) {
        Log.i("White Noise", "already playing");
        mySound.pause(noiseStreaming);
        whiteNoisePlaying = false;
        ((ImageView) view).setImageResource(R.drawable.whitenoise);
        isPlaying--;
    } else if (isPlaying < 3) {
        Log.i("White Noise", "start playing");
        if (noiseStreaming == 0) {
            noiseStreaming = mySound.play(whiteNoiseId, (float) noiseVol, (float) noiseVol, 1, -1, 1);
        } else {
            mySound.resume(noiseStreaming);
        }
        whiteNoisePlaying = true;
        ((ImageView) view).setImageResource(R.drawable.whitenoisepressed);
        isPlaying++;
    }
}