Подтвердить что ты не робот

Воспроизведение звука по умолчанию для Android, нажатие кнопки onTouch()

В моем приложении для Android у меня есть несколько кнопок, которые должны работать с методом onTouch(), поэтому мне нужно изменить текст кнопки, когда палец находится в позиции ACTION_DOWN. Но эти кнопки должны воспроизводить звук по умолчанию по умолчанию для Android (например, в методе onClick()). Где я могу найти такой звук? Я думаю, это должно быть в SDK, но как я могу его найти? И какие методы лучше для такой операции? Я использую MediaPlayer.

Листинг:

public boolean onTouch(View v, MotionEvent event) {
    int action = event.getAction();
    switch (action) {
    case MotionEvent.ACTION_DOWN:
        addTextShadow(v);
        Log.v(LOG_TAG, "ACTION_DOWN");
        break;
    case MotionEvent.ACTION_MOVE:
        clearTextShadow(v);
        isMoved = true;
        Log.v(LOG_TAG, "ACTION_MOVE");
        break;
    case MotionEvent.ACTION_UP:
        Log.v(LOG_TAG, "ACTION_UP");
        if (!isMoved) {
            clearTextShadow(v);
            if (v.getId() == R.id.btn_new) {
                Log.v(LOG_TAG, "New pressed");

                            playSound(); //MY METHOD TO PLAY SOUND

            } else if (v.getId() == R.id.btn_saved) {
                Log.v(LOG_TAG, "Saved pressed");
            } else if (v.getId() == R.id.btn_random) {
                Log.v(LOG_TAG, "Random pressed");
            }
        }
        isMoved = false;
        break;
    }
    return true;
}

И мой метод playSound():

    public void playSound(){
    if (mp != null) {
        mp.release();
        mp = null;
    }
    try {
        mp = MediaPlayer
    .create(MyActivity.this, R.raw.sound); //BUT HERE I NEED DEFAULT SOUND!
        mp.start();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
4b9b3361

Ответ 1

Используйте этот код в методе onTouch():

view.playSoundEffect(android.view.SoundEffectConstants.CLICK);

Если вы просто ищете предустановленный звук для Android, то лучше использовать эту функциональность, которая предоставляется вам бесплатно с помощью фреймворка. Выполнение чего-либо еще, если это необходимо для настройки, просто приведет к тому, что вы будете работать против фреймворка вместо того, чтобы работать с ним.

Ответ 2

Использовать звуки по умолчанию от /system/media/audio/

MediaPlayer или SoundPool помогут реализовать воспроизведение.

Ответ 3

Рассмотрим использование view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);.

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