gpt4 book ai didi

java - 如何在按下按钮时持续循环播放声音并在释放时停止?

转载 作者:行者123 更新时间:2023-12-02 08:30:23 25 4
gpt4 key购买 nike

我确信我的问题非常简单。只是我不太确定如何有效地描述我想要实现的目标。

无论如何,我有一个简单的按钮,我知道如何“链接”原始声音文件以手动播放它。但我想做的可能是将 3 秒的声音链接到按钮,并在用户按住按钮时让它循环播放,然后在松开按钮时停止播放。任何人都可以分享任何示例链接,那就太好了!谢谢!

编辑:谢谢欧伦德上尉!

谢谢,这绝对有帮助,并且成功了,但是我遇到了 1 个小问题,也许你可以帮助我,我正在使用“自定义按钮”,如 http://developer.android.com/resources/tutorials/views/hello-formstuff.html 上所示。

在我添加“onTouch Listener”之前,它工作得很好。按钮现在不使用它的 android:state_pressed 项目,它只显示普通项目,而不是按下的项目。至少它现在播放声音。但是,任何想法?

最佳答案

您可以使用以下内容,只需将 R.raw.hit 更改为您自己的声音文件:

public class XButtonSound extends Activity implements OnTouchListener {

private int sound;
private SoundPool sounds;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button donePlacing = new Button(this.getApplicationContext());
donePlacing.setId(1);
donePlacing.setText("Play");
donePlacing.setOnTouchListener(this);

this.addContentView(donePlacing, new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));


sounds = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
sound = sounds.load(this.getApplicationContext(), R.raw.hit, 1);
}


@Override
public boolean onTouch(View arg0, MotionEvent event) {

switch (event.getAction() ) {
case MotionEvent.ACTION_DOWN:
System.out.println("touch");
sounds.play(sound, 1, 1, 1, -1, 1);
break;
case MotionEvent.ACTION_UP:
System.out.println("up");
sounds.autoPause();
break;
}

return true;
}

}

关于java - 如何在按下按钮时持续循环播放声音并在释放时停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3572541/

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