web-dev-qa-db-fra.com

Lecture du son par défaut du bouton Android, en cliquant sur la méthode Touch ()

Dans mon application Android, j'ai quelques boutons, qui devraient fonctionner avec onTouch () method, bien sûr, je dois changer le texte du bouton, lorsque le doigt est dans la position ACTION_DOWN. Mais ces boutons doivent jouer par défaut Android le son du bouton en cliquant (comme dans la méthode onClick ()). Où puis-je trouver un tel son? Je pense que cela doit être en SDK, mais comment puis-je le trouver? Et quelles méthodes sont meilleures pour une telle opération? J'utilise MediaPlayer.

Inscription:

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;
}

Et ma méthode 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();
    }
}
22
dmgmyza

Utilisez ce code dans votre méthode onTouch ():

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

Si vous recherchez simplement un son Android prédéfini, il est préférable d'utiliser cette fonctionnalité fournie gratuitement par la structure. Faire autre chose, à moins que cela ne soit nécessaire pour la personnalisation, aurait simplement pour conséquence que vous travailliez contre le cadre au lieu de le faire.

64
Vishwa Patel

Utiliser les sons par défaut de /system/media/audio/

MediaPlayer ou SoundPool aidera à mettre en œuvre la lecture.

0
dimetil

Pensez à utiliser view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);.

Il fera les deux: jouer le son par défaut et vibrer si l’utilisateur l’a activé dans les paramètres globaux.

0
bapho