![]() |
|
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
«
Tema Anterior
|
Siguiente tema
»
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Detectar y reproducir sonidos
Hola chic@s,
Veréis he creado mi primer juego, el cual, en una parte de él, cada vez que pulsas la pantalla se reproduce un sonido. Está realizado sobre la clase SurfaceView (por si es de importancia saber eso). Bueno, el caso es que consigo que se reproduzca y todo va perfectamente, pero ahora una vez que he terminado el juego me he dado cuenta que el sonido del juego se reproduce absolutamente siempre, es decir, aunque el móvil esté en silencio o sólo en vibración, el sonido se escucha. Yo pensaba que era por el móvil pero no, no lo es y es por eso por lo que os pregunto, cómo detecto si el sonido del móvil está habilitado o no para reproducir sonidos????? Si me ha ocurrido poner en las opciones del juego o algún otro lado lo típico de "Silenciar/Reproducir sonidos" pero me niego si hay una solución para detectar si está habilitado o no en el móvil ..... Por si os sirve, ésta forma es la que utilizo para reproducir los sonidos, por si no lo estoy haciendo bien: Creo el sonido: Código:
sonido = new SoundPool(10, AudioManager.STREAM_MUSIC,0); mi_sonido= sonido.load(context, R.raw.audio, 1); Código:
sonido.play(mi_sonido, 1.0f, 1.0f, 0, 0, 1.5f); Un saludo. |
|
|
|
#2
|
||||
|
||||
|
Te lo copio-pego de mi cuatro en raya, que a su vez debí copiar de algún sitio... Con esto el volumen es el volumen que haya configurado, respetando la configuración del usuario.
Código:
AudioManager mgr = (AudioManager) c.getSystemService(Context.AUDIO_SERVICE); float streamVolumeCurrent = mgr .getStreamVolume(AudioManager.STREAM_MUSIC); float streamVolumeMax = mgr .getStreamMaxVolume(AudioManager.STREAM_MUSIC); float volume = streamVolumeCurrent / streamVolumeMax; /* Play the sound with the correct volume */ if (soundPool != null) soundPool.play(soundPoolMap.get(sound), volume, volume, 1, 0, 1f); |
|
#3
|
||||
|
||||
|
Pues se me sigue escuchando siempre :S, aunque el sonido esté quitado y sólo en vibración. A ver he puesto el código que has puesto en el constructor (onCreate) y guardo el volumen en una variable privada global, luego cuando necesito reproducir pues utilizo el código para reproducir el sonido con esa variable de volumen, pero nada .... se escucha siempre ....
¿Alguna idea? |
|
#4
|
||||
|
||||
|
El volumen tienes que calcularlo antes de reproducir cada sonido, si lo haces solo en el onCreate ha podido cambiar unas cuantas veces el volumen y no te enteras.
|
|
#5
|
||||
|
||||
|
Despiste mio :S. Pero de todas formas, si abro la aplicación con el sonido quitado, no se debería de escuchar nada, pero se escucha perfectamente.
|
|
#6
|
||||
|
||||
|
Estás seguro de tener el volumen multimedia en silencio? El volumen de llamada o la vibración no afectan.
|
| Respuesta |
Estás aquí
|
||||||
|
||||||
«
Tema Anterior
|
Siguiente tema
»
| Herramientas | |
|
|
Hora actual: 22:07:11 (GMT +1)
HTCMania: líderes desde el 2007





