使用playSoundEffect(SoundEffectConstants.CLICK)无法在按钮单击时播放声音

时间:2010-12-06 02:32:38

标签: android

我有以下两行代码:

myButton.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
myButton.playSoundEffect(SoundEffectConstants.CLICK);

当我按下按钮时,触觉反馈工作正常,但没有音频 听到。

当他们开始使用Android时,有没有人遇到过这个问题?

4 个答案:

答案 0 :(得分:9)

我遇到了这个问题,结果证明这是我非常愚蠢的事情。我已经禁用了整个手机的“Audible Selection”。在主页上,它位于“设置” - >“声音” - >“声音选择”上。可能有一种编程方式来做同样的事情,但我还没有找到它。

答案 1 :(得分:1)

我也有同样的问题。在我的三星Galaxy S4上,路径是设置 - >我的设备 - >声音 - >触摸声音(在“系统”标题下)。启用此功能后,默认系统声音就开始在我的应用上运行。

答案 2 :(得分:1)

嗯,我遇到了同样的情况,诀窍是使用Audiomanager。

在Activity类中定义AudioManager。

AudioManager audioManager;

在onCreate中初始化

audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

在click方法中,使用audioManager播放声音。

public void play(View view) {
    audioManager.playSoundEffect(SoundEffectConstants.CLICK,1.0f);
}

请注意,如果您未指定音量,则将音量指定为1.0f,您将听不到任何声音。

答案 3 :(得分:0)

我知道我要来这是一个非常老的线程,但我也遇到了这个问题,但提供的答案并没有解决我的问题。如果有其他人遇到这个,这就是我找到的。

如果未从UI线程调用,则View.playSoundEffect()在我的设备上无效。 (我没有在Android文献中看到这个限制,因此它可能因设备或操作系统版本而异。)View.performHapticFeedback()似乎并不关心。我是从ThreadPool线程调用的;触觉反馈有效,声音效果没有。

我通过发布声音效果调用来修复此问题,以便在UI线程上运行,如下所示:

getActivity().runOnUiThread(new Runnable()
            {
                @Override
                public void run()
                {
                    mSketchView.playSoundEffect(SoundEffectConstants.CLICK);
                }
            });