如何为我的所有应用程序或活动禁用默认声音效果

时间:2011-02-16 22:51:19

标签: android

在我的应用程序中,我使用声音池进行按钮单击音频效果。 问题是,如果在设备的设置中勾选了“Audible selection”,那么我的按钮将产生两个声音:系统1和我的同时。

似乎如果在每个按钮属性中我将“Sound Effects Enabled”设置为false,则不再听到系统声音。但是我在十几个活动中有很多按钮,而且我在代码中添加了一个按钮矩阵,所以将“Sound Effects Enabled”设置为false来为每个按钮设置为非常不方便。我不确定我是如何在代码中执行此操作的。

是否有更全面的方法可以在我的应用程序中停止“Audible selection”或至少针对这一项活动?

4 个答案:

答案 0 :(得分:52)

创建主题文件“res / values / styles.xml”

<?xml version="1.0" encoding="utf-8"?>
<resources>

<style name="AppBaseTheme" parent="android:Theme.Black.NoTitleBar">
    <!--
        Theme customizations available in newer API levels can go in
        res/values-vXX/styles.xml, while customizations related to
        backward-compatibility can go here.
    -->
</style>

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    <item name="android:soundEffectsEnabled">false</item>
</style>

</resources>

然后在“AndroidManifest.xml”中引用它

<application
    ...
    android:theme="@style/AppTheme" >

答案 1 :(得分:29)

我的申请遇到了同样的问题。通过将android:soundEffectsEnabled=false置于主题中,我能够全局关闭声音反馈。

答案 2 :(得分:10)

您可以创建自己的Button类并在XML布局文件中使用它......

package com.mycompany.myApp

public class MyButton extends Button {

    public MyButton (Context context, AttributeSet attrs) {
        this.setSoundEffectsEnabled(false);
    }
}

然后在XML布局文件中使用...

<com.mycompany.myApp.MyButton
    ...
</com.mycompany.myApp.MyButton>

...为你的按钮。

答案 3 :(得分:1)

您可以创建从Button扩展的自定义视图。然后在创建时将声音效果设置为false。

http://developer.android.com/guide/topics/ui/custom-components.html

您还可以更进一步,让视图知道应该播放哪种新的自定义声音。