gpt4 book ai didi

Android SoundPool 在播放另一种声音之前不会第二次播放相同的声音

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:01:58 51 4
gpt4 key购买 nike

这是我的 Activity :

public class MainActivity extends AppCompatActivity {

private SoundPool soundPool;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

setVolumeControlStream(AudioManager.STREAM_MUSIC);

soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
final int sound1 = soundPool.load(this, R.raw.whack, 1);
final int sound2 = soundPool.load(this, R.raw.miss, 1);

Button b1 = (Button) findViewById(R.id.b1);
Button b2 = (Button) findViewById(R.id.b2);

b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
playSound(sound1);
}
});
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
playSound(sound2);
}
});
}

private void playSound(int soundId) {

AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
float volume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
soundPool.play(soundId, volume, volume, 1, 0, 1);
}
}

问题是当我点击 Button1 时,会播放 sound1。然后,当我一次又一次地点击 Button1 时,直到我点击 Button2 时才播放任何内容。当我这样做时,会播放 sound2。然后,如果我单击 Button1,将播放 sound1。当我一遍又一遍地单击 Button2 时,会发生相同的情况。那么这里的问题是什么?

最佳答案

根据 SoundPool.play()文档 volume 值必须从 0.01.0。但是 audioManager.getStreamVolume(AudioManager.STREAM_MUSIC) 返回更大的值(例如 12)。因此,您应该设置正确的音量值。下面的工作代码:

public static void playAudio(Context context, SoundPool player, int soundId, float speed){
AudioManager mgr = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
float actualVolume=(float) mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
float maxVolume=(float) mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume= actualVolume/maxVolume;
player.play(soundId, volume, volume, 1, 0, speed);
}

关于Android SoundPool 在播放另一种声音之前不会第二次播放相同的声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41893173/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com