gpt4 book ai didi

android - 如何使用Soundpool一键播放和停止声音

转载 作者:行者123 更新时间:2023-12-03 01:45:40 24 4
gpt4 key购买 nike

我是这里的新人,也是Java中的新人。我所有关于代码的知识都是基于我在项目中可以在网上找到的。因此,一方面我了解一些困难的东西,另一方面却不了解简单的东西。目前,我处于这种情况。

我有带有循环声音的按钮,我想做的是,当我触摸按钮时,它应该在“button_prees”上更改图像;当我释放按钮时,它应该在“button_on”上播放声音,更改图像现在我正在尝试做反向序列。触摸相同的按钮,它会更改“button_prees2”上的图像,而释放按钮时,它应该停止播放声音并更改“button_off”上的图像

如何在下面的代码中实现呢?

final Button b1 = (Button) findViewById(R.id.button1);
b1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()){
case MotionEvent.ACTION_DOWN:


b1.setBackgroundResource(R.drawable.button_prees);

break;

case MotionEvent.ACTION_MOVE:

break;

case MotionEvent.ACTION_UP:


myS.play(s1I, 1, 1, 1, -1, 1);

b1.setBackgroundResource(R.drawable.button_on);

break;
}
return true;
}
});

最佳答案

您可以使用 bool(boolean) 值作为Button状态的标志。非常简短且基本:

boolean soundsOn = false;
public void setSoundsOn(boolean soundsOn){
this.soundsOn = soundsOn;
}

public boolean isSoundsOn(){
return soundsOn;
}
...

// Then for your Button listener:
onTouch(...)
if (!isSoundsOn){
// Your above above code to change resources, start playing
// EXCEPT
case MotionEvent.ACTION_UP:
...
setSoundsOn(true);
...
}else{
// Code to stop etc.
// INCLUDING
case MotionEvent.ACTION_UP:
...
setSoundsOn(false);
...
}
...

理想情况下,您应在调用 setSoundsOn(...)之前确保声音已成功启动/停止,否则您的标签可能最终会说出不是的声音。希望这可以帮助...

关于android - 如何使用Soundpool一键播放和停止声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43834068/

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