2011-02-16 6 views
35

En mi aplicación, estoy utilizando el grupo de sonido para el botón, haga clic en el efecto de audio. El problema es que si en la configuración del dispositivo está marcada "Selección audible", mis botones producirán dos sonidos: el del sistema uno y el mío al mismo tiempo.Cómo deshabilitar los efectos de sonido predeterminados para todas las aplicaciones o actividades

Parece que si en cada una de las propiedades de los botones configuré "Efectos de sonido habilitados" en falso, ya no se escucha el sonido del sistema. Pero tengo muchos botones en una docena de actividades, además estoy agregando una matriz de botones en el código, por lo que es bastante inconveniente establecer "Efectos de sonido habilitados" en falso manualmente para cada uno de ellos. No estoy seguro de cómo hago esto en el código ...

¿Existe alguna forma más global de detener la "selección audible" en mi aplicación o al menos para una actividad?

+0

Sus ans aceptados en que no trabaja para mí . Estoy haciendo lo mismo. ¡¡Ayuda!! –

Respuesta

47

Crear un archivo de tema "res/valores/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> 

y luego hacer referencia a ella en su "AndroidManifest.xml"

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

Estoy haciendo lo mismo. Pero no funciona en Samsung Note I. –

+0

¡Me salvaste el tiempo! – Justin

+2

No funciona para mí en Lollipop – Gilian

1

Puede crear una vista personalizada que se extienda desde el botón. Luego, simplemente establezca el efecto de sonido habilitado en falso en su creación.

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

También puede ir más allá y hacer la vista sé a qué sonido personalizado nueva debe ser jugado.

+0

Mi aplicación está casi terminada, tendría que cambiar todos mis diseños y códigos para cada una de una docena de actividades para hacer esto. – Lumis

+1

No puede simplemente reemplazar una cadena simple en todos sus archivos XML de diseño para cambiar al botón personalizado? – EboMike

9

Usted puede crear su propia clase Button y el uso que en los archivos de diseño XML ...

package com.mycompany.myApp 

public class MyButton extends Button { 

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

Luego, en el XML utilizan archivos de diseño ...

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

... de tus botones.

+1

Gracias por un buen ejemplo. Esos son muchos cambios. Tengo 17 diseños ... deseo si fuera una forma más fácil. – Lumis

+0

entonces ¿por qué no poner 'android: soundEffectsEnabled = "false"' en la vista xml en lugar de crear el botón personalizado –

29

Acabo de tener el mismo problema para mi aplicación. Pude desactivar la respuesta sonora global al poner android:soundEffectsEnabled=false en un tema.

+0

Tal vez esa es la respuesta que estaba buscando. Esto funcionaría para una sola actividad, ¿verdad? Tendría que asignar el tema a cada actividad ... Aunque no creo que todos los dispositivos se comporten de la misma manera, he experimentado que algunos dispositivos desactivan el sonido globalmente en la primera instancia de un botón con Android: soundEffectsEnabled = falso pero no todo. – Lumis

+1

Puede aplicar el tema a toda la aplicación desde el archivo de manifiesto. – JessicaM

Cuestiones relacionadas