在安卓系统中,当按下按钮时播放默认软键盘声音

14

我开发了一个应用程序,使用了自己的自定义键盘(实际上是一个看起来像键盘、行为也像键盘的视图)。我还需要解决的一个问题是如何让它在按下按钮时播放默认软键盘“点击”声音。 有没有简单的方法可以做到这一点?

我想使用手机自带的键盘点击声音,而不是提供自己的声音。因为不同的手机可能有不同的键盘点击声音,所以我希望保持我的应用程序的一致性。最终,我想反映用户在他们的全局键盘设置中选择的相同设置(播放/不播放声音,振动/不振动等)。


请注意,许多手机默认情况下甚至不使用原生键盘。 - Josh Lee
2个回答

32

我已经找到了解决方案。我所需要做的就是在按钮上实现一个OnTouchListener并使用AudioManager.playSoundEffect()公共方法。以下是代码示例:

AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
float vol = 0.5; //This will be half of the default system sound
am.playSoundEffect(AudioManager.FX_KEY_CLICK, vol);

我遇到了 AUDIO_SERVICE 无法解析为变量(JB 4.1.2)的问题。 - Luis A. Florit
1
@LuisA.Florit:尝试一下:Context.AUDIO_SERVICE。效果很好。 - jpm
0.5的音量是默认值吗?还有没有办法从系统中获取它? - Oliv
如何获取与用户拨号键盘相同的声音? - Bhargav Kumar R

2
if (isSetVibration) {
        if (Build.VERSION.SDK_INT >= 26) {
            ((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(VibrationEffect.createOneShot(50, VibrationEffect.DEFAULT_AMPLITUDE));
        } else {
            ((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(50);
        }
    } else {
        if (Build.VERSION.SDK_INT >= 26) {
            ((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(VibrationEffect.createOneShot(0, VibrationEffect.DEFAULT_AMPLITUDE));
        } else {
            ((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(0);
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接