【问题标题】:Playing default android sound of button, clicking onTouch() method播放按钮的默认android声音,单击onTouch()方法
【发布时间】:2012-08-08 14:25:21
【问题描述】:

在我的 android 应用程序中,我有一些按钮,它们应该与 onTouch() 方法一起使用,当然当手指处于 ACTION_DOWN 位置时,我需要更改按钮的文本。但是这个按钮应该播放 default 按钮点击的 android 声音(如 onClick() 方法)。我在哪里可以找到这样的声音?我想,它必须在 SDK 中,但我怎样才能找到它呢?什么方法更适合这种操作?我正在使用媒体播放器。

上市:

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

【问题讨论】:

  • Android 不是默认播放默认的点击声音吗?至少在 ICS 上是这样的。
  • Vishwa Patel,不,当我们使用 onClickListener 而不是 onTouchListener 时,android 播放默认的点击声音。我用 ICS (SGS2) 测试所有程序。

标签: android android-mediaplayer audio ontouchlistener


【解决方案1】:

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

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

如果您只是在寻找预设的 Android 声音,那么最好使用框架免费提供给您的此功能。做任何其他事情,除非需要定制,否则只会导致您使用框架而不是使用它。

【讨论】:

  • 维什瓦·帕特尔,超级棒!它有效,非常感谢。没错,playSound() 和 MediaPlayer 现在没用了。
  • @dmgmyza 太好了!很高兴有帮助。如果您认为我的回答有帮助,您应该点赞!
  • 我很想要,但我现在的声望只有12。我还需要 3 分才能投票。
  • 哇!真的很酷!Android SDK 有自己的一组媒体文件用于不同的目的,如点击、导航向上、导航向下等。
  • 如果声音设置关闭,我如何获得点击声音
【解决方案2】:

使用来自/system/media/audio/的默认声音

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

【讨论】:

    【解决方案3】:

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

    如果用户在全局设置中启用了它,它会同时播放默认声音和振动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-08
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 2016-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多