Android: как сделать звук нажатия клавиш

Я использую прослушиватель онтач, чтобы поймать события нажатия и нажатия клавиш. для функции повтора. Я также хотел бы иметь звук щелчка при нажатии кнопки. Я попытался добавить метод onClick и установить clickable true, но онтоучлистенер, похоже, переопределяет 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);

person steven smith    schedule 25.02.2015    source источник
comment
Спасибо @Piyush. Я разместил рабочий демонстрационный код на github.com/bebop-001/ButtonClickText.git.   -  person steven smith    schedule 25.02.2015


Ответы (3)


Я ответил на свой вопрос в редактировании вопроса. Я отвечаю здесь только для того, чтобы сделать мой ответ на вопрос более очевидным. как говорится в моей редакции вопроса. чтобы сделать клик вы:

private static AudioManager audioManager;
...
audioManager = (AudioManager) getSystemService(
   Context.AUDIO_SERVICE);
...
audioManager.playSoundEffect(AudioManager.FX_KEY_CLICK);
person steven smith    schedule 02.04.2015
comment
Также убедитесь, что звук касания включен, иначе вы ничего не услышите. Настройки --› Звук --› Сенсорная обратная связь - person steven smith; 09.03.2021

Попробуй это

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

Значения здесь

person grig    schedule 25.02.2015
comment
Спасибо... Я попытался установить onclicklistener, но, похоже, он перекрывает его. Я никогда не доберусь до onclicklistener, если не закомментирую прослушиватель касания. - person steven smith; 25.02.2015

Сохраните звук в 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();
    } 
}); }

start() MediaPlayer будет воспроизводить звук.

Скажи мне, если это работает.

person theapache64    schedule 25.02.2015
comment
Это должно работать, но будет игнорировать пользовательские настройки громкости звука/включено/отключено и т. д. - person steven smith; 25.02.2015