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

Respuesta
 
Herramientas
  #1  
Viejo 23/10/13, 17:23:57
Array

[xs_avatar]
Davidwalter Davidwalter no está en línea
Usuario novato en la web
 
Fecha de registro: dic 2011
Mensajes: 9
Modelo de smartphone: Iphone
Tu operador: Movistar
¿hacer que pare un sonido dandole de nuevo a un boton?

Buenas, estoy creando una aplicacion de botones con sonidos, y mi pregunta era,
¿Como hago para que, despues de haberle dado al boton y mientras suena el sonido, dandole de nuevo mientras se reproduce el sonido, en vez de empezar de nuevo pare el sonido?
El codigo para utilizar el sonido es este:
Código:
int miAudio = -1;
SoundPool sP;

//ahora en el onCreate
sP = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
		 Button miboton = (Button) findViewById(R.id.miboton);
setVolumeControlStream(AudioManager.STREAM_MUSIC);

try {
AssetManager assetManager = getAssets();
AssetFileDescriptor sound1 = assetManager.openFd("misonido.mp3");
             miAudio = sP.load(sound1, 1);
}

 miboton.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                     sP.play(miAudio, 1.0f, 1.0f, 1, 0, 1);
             }
     });
¿que tendria que añadir?
Responder Con Cita


  #2  
Viejo 23/10/13, 20:09:57
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
No puedes de forma directa con SoundPool, sólo con MediaPlayer. Porque con SoundPool no puedes saber si el sonido se está reproduciendo o no, y por tanto no puedes saber si tienes que llamar a "stop" o a "play".

La librería ideal sería la combinación de ambas.

Puedes hacer una "chapucilla", que aunque no sea muy precisa puede ser que te resuelva el problema:

1) Creas un objeto MediaPlayer con MediaPlayer.create del mismo sonido que quieres reproducir.

2) Obtienes su duración con getDuration()

3) Cuando haces click en el botón por primera vez estableces una variable al tiempo actual del sistema (System.currentTimeMillis())

4) Las sucesivas veces compruebas si la última vez que pulsaste el botón ha pasado menos tiempo que la duración del sonido, y en ese caso llamas a "stop". Si ya ha pasado el tiempo llamas a "play".

Los pasos 1 y 2 lo mejor es hacerlo al mismo tiempo que creas el SoundPool en el onCreate, y no cada vez que vas a reproducir el sonido. Porque si no pierdes la ventaja de usar SoundPool. Obviamente necesitarás tantas variables (de duración y de tiempo de la última vez) como sonidos tengas.

Y repito, no es muy preciso, ya que puede haber ligeras diferencias de tiempo, pero creo que te resolverá el problema.

EDITO: Recuerda cerrar los MediaPlayer después de obtener las duraciones.

Última edición por kriogeN Día 23/10/13 a las 20:12:23.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 10:30:26 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /