Esta es la parte más importante del código proporcionado en la publicación original.
Button one = (Button) this.findViewById(R.id.button1);
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
mp.start();
}
});
Para explicarlo paso a paso:
Button one = (Button) this.findViewById(R.id.button1);
Primero está la inicialización del botón que se utilizará para reproducir el sonido. Usamos la actividad findViewById
, pasando el Id que le asignamos (en el caso de este ejemplo :) R.id.button1
, para obtener el botón que necesitamos. Lo convertimos como a Button
para que sea fácil asignarlo a la variable one
que estamos inicializando. Explicar más sobre cómo funciona esto está fuera del alcance de esta respuesta. Esto le da una breve idea de cómo funciona.
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
Así es como se inicializa un MediaPlayer
. El MediaPlayer sigue el patrón de diseño del método de fábrica estático . Para obtener una instancia, llamamos a su create()
método y le pasamos el contexto y el Id del recurso del sonido que queremos reproducir, en este caso R.raw.soho
. Lo declaramos como final
. Jon Skeet proporcionó una gran explicación de por qué lo hacemos aquí .
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//code
}
});
Finalmente, configuramos lo que hará nuestro botón previamente inicializado. ¡Reproduce un sonido al hacer clic en el botón! Para hacer esto, configuramos el OnClickListener
de nuestro botón one
. En el interior hay solo un método, onClick()
que contiene las instrucciones que debe seguir el botón al hacer clic .
public void onClick(View v) {
mp.start();
}
Para reproducir el sonido, llamamos al start()
método de MediaPlayer . Este método inicia la reproducción del sonido.
Allí, ahora puedes reproducir un sonido al hacer clic en un botón en Android.
Parte de bonificación:
Como se indica en el comentario a continuación, ¡ Gracias Langusten Gustel! , y como se recomienda en la Referencia para desarrolladores de Android , es importante llamar al release()
método para liberar recursos que ya no se utilizarán. Normalmente, esto se hace una vez que se ha completado la reproducción del sonido que se va a reproducir. Para hacerlo, agregamos un OnCompletionListener
a nuestro me mp
gusta así:
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//code
}
});
Dentro del onCompletion
método, lo lanzamos así:
public void onCompletion(MediaPlayer mp) {
mp.release();
}
Obviamente, hay mejores formas de implementar esto. Por ejemplo, puede hacer que MediaPlayer sea una variable de clase y manejar su ciclo de vida junto con el ciclo de vida del Fragment
o Activity
que lo usa. Sin embargo, este es un tema para otra pregunta. Para mantener pequeño el alcance de esta respuesta, la escribí solo para ilustrar cómo reproducir un sonido al hacer clic en un botón en Android .
Publicación original
Primero. Debe poner sus declaraciones dentro de un bloque, y en este caso el método onCreate.
Segundo. Inicializó el botón como variable uno , luego usó una variable cero y estableció su onClickListener en un onClickListener incompleto. Utilice la variable uno para setOnClickListener.
En tercer lugar, ponga la lógica para reproducir el sonido dentro de onClick.
En resumen:
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class BasicScreenActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_basic_screen);
Button one = (Button)this.findViewById(R.id.button1);
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
mp.start();
}
});
}
}
MusicManager.getInstance().play(this, R.raw.my_sound);
. Si es así, esta biblioteca podría ser para usted: github.com/delight-im/Android-Audio