播放按钮的默认android声音,单击onTouch()方法

时间:2012-08-11 15:38:51

标签: android android-mediaplayer audio ontouchlistener

在我的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();
    }
}

3 个答案:

答案 0 :(得分:65)

在onTouch()方法中使用此代码:

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

如果您只是在寻找预设的Android声音,那么最好使用框架免费提供给您的此功能。除非需要进行自定义,否则执行任何其他操作只会导致您违反框架而不是使用它。

答案 1 :(得分:0)

使用/system/media/audio/

中的默认声音

MediaPlayer或SoundPool将有助于实现播放。

答案 2 :(得分:0)

考虑使用view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);

它会同时执行这两项操作:播放默认声音并在用户在全局设置中启用时振动。