我正在使用 ontouch 侦听器来捕获按键向上和按键按下事件。用于重复功能。我还想在按下按钮时发出咔嗒声。我尝试添加 onClick 方法并设置 clickable true 但 ontouchlistener 似乎覆盖了 onclicklistener。
如何发出按键声音并遵循用户的点击偏好?
更新:谢谢大家。我通过 Android 源代码找到了我的答案。在 PhoneWindow.java 中,我找到了一个地方,他们正在那里做我需要的事情。本质上,您打开音频管理器并播放 AudioManager.FX_KEY_CLICK。 AudioManager.playSoundEffect 仅在合适的情况下播放音效。
private static AudioManager audioManager;
...
audioManager = (AudioManager) getSystemService(
Context.AUDIO_SERVICE);
...
audioManager.playSoundEffect(AudioManager.FX_KEY_CLICK);
注意:我最近再次弹出这个问题,并编写了以下 Kotlin 扩展函数来处理它。
使用音频管理器的优点是可以遵循用户的选择并提供 Android 的声音。
fun Context.androidButtonClick () {
val audioManager = getSystemService(
Context.AUDIO_SERVICE) as AudioManager
audioManager.playSoundEffect(AudioManager.FX_KEY_CLICK)
}
我在问题的编辑中回答了我自己的问题。我在这里回答只是为了让我对问题的回答更加明显。正如我对问题的修改中所说。点击您:
private static AudioManager audioManager;
...
audioManager = (AudioManager) getSystemService(
Context.AUDIO_SERVICE);
...
audioManager.playSoundEffect(AudioManager.FX_KEY_CLICK);
试试这个
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
button_flip.playSoundEffect(0);
}
});
价值观这里
将声音保存在 res/raw/ 下。假设声音名称为tap.mp3, 那么代码将如下所示。
MediaPlayer tap ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tap = MediaPlayer.create(getApplicationContext(), R.raw.tap);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Playing sound.
tap.start();
}
}); }
MediaPlayer的start()会播放声音。
告诉我是否有效。