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