【问题标题】:How to disable default sound effects for all my application or activity如何为我的所有应用程序或活动禁用默认音效
【发布时间】:2026-02-04 16:30:01
【问题描述】:

在我的应用程序中,我将声音池用于按钮单击音频效果。 问题是,如果在设备的设置中勾选了“声音选择”,那么我的按钮会同时发出两种声音:系统声音和我的声音。

似乎如果在每个按钮属性中将“启用声音效果”设置为 false,则不再听到系统声音。但是我在十几个活动中有很多按钮,而且我在代码中添加了一个按钮矩阵,因此为每个活动手动将“启用声音效果”设置为 false 是相当不方便的。不知道我是如何在代码中做到这一点的..

是否有一种更全局的方式来停止我的应用程序中的“有声选择”或至少停止一项活动?

【问题讨论】:

  • 您接受的答案不适合我。我也在做同样的事情。救命!!

标签: android


【解决方案1】:

创建主题文件“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" >

【讨论】:

    【解决方案2】:

    我的应用程序也遇到了同样的问题。通过将android:soundEffectsEnabled=false 放入主题中,我能够在全局范围内关闭声音反馈。

    【讨论】:

    • 也许这就是我正在寻找的答案。这仅适用于一项活动,对吗?然后我必须将主题分配给每个活动......虽然我不认为每个设备的行为方式都相同,但我经历过一些设备在按钮的第一个实例上全局关闭声音 android:soundEffectsEnabled=错误但不是全部。
    • 您可以将主题从清单文件应用到整个应用程序。
    【解决方案3】:

    您可以创建自己的 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>
    

    ...为您的按钮。

    【讨论】:

    • 感谢您提供了一个很好的例子。这是我有 17 个布局的很多变化......希望它是一种更简单的方法。
    • 那为什么不把'android:soundEffectsEnabled="false"'放在xml视图中而不是创建自定义按钮
    【解决方案4】:

    您可以创建一个从 Button 扩展的自定义视图。然后在创建时将 Sound Effect Enabled 设置为 false。

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

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

    【讨论】:

    • 我的应用程序快完成了,我必须为十几个活动中的每一个更改我的所有布局和代码才能做到这一点。
    • 您不能只在所有布局 XML 文件中进行简单的字符串替换以切换到自定义按钮吗?!
    最近更新 更多