Android:如何发出按键声音

问题描述 投票:0回答:3

我正在使用 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)
}
android onclick ontouch
3个回答
1
投票

我在问题的编辑中回答了我自己的问题。我在这里回答只是为了让我对问题的回答更加明显。正如我对问题的修改中所说。点击您:

private static AudioManager audioManager;
...
audioManager = (AudioManager) getSystemService(
   Context.AUDIO_SERVICE);
...
audioManager.playSoundEffect(AudioManager.FX_KEY_CLICK);

0
投票

试试这个

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        button_flip.playSoundEffect(0);
    }
});

价值观这里


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()会播放声音。

告诉我是否有效。

© www.soinside.com 2019 - 2024. All rights reserved.