sonido - reproductor de musica en android studio
Reproducir sonido en el botón clic en Android (6)
Esta es la parte más importante en el 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 es la inicialización del botón que se utilizará para reproducir el sonido. Usamos el findViewById
la actividad, pasando el ID que le asignamos (en este caso de ejemplo: R.id.button1
), para obtener el botón que necesitamos. Lo convertimos en un Button
para que sea fácil asignarlo a la variable que estamos inicializando. Explicar más sobre cómo funciona esto está fuera del alcance de esta respuesta. This da una breve idea de cómo funciona.
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
Esta es la forma de inicializar un MediaPlayer
. El MediaPlayer sigue el patrón de diseño de método de fábrica estático . Para obtener una instancia, llamamos a su método create()
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 brindó una gran explicación sobre por qué lo hacemos here .
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//code
}
});
Finalmente, establecemos lo que hará nuestro botón inicializado previamente. ¡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 hacer el botón al hacer clic .
public void onClick(View v) {
mp.start();
}
Para reproducir el sonido, llamamos al método start()
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 señala en el comentario a continuación ¡ Gracias Langusten Gustel! y, como se recomienda en la Referencia del desarrollador de Android , es importante llamar al método de release()
para liberar recursos que ya no se usarán. Por lo general, esto se hace una vez que el sonido que se va a reproducir termina de reproducirse. Para hacerlo, agregamos un OnCompletionListener
a nuestro mp
como así:
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//code
}
});
Dentro del método onCompletion
, lo lanzamos así:
public void onCompletion(MediaPlayer mp) {
mp.release();
}
Obviamente hay mejores formas de implementar esto. Por ejemplo, puede hacer que el MediaPlayer sea una variable de clase y manejar su ciclo de vida junto con el ciclo de vida del Fragment
o Activity
que lo utiliza. Sin embargo, este es un tema para otra pregunta. Para mantener el alcance de esta respuesta pequeña, 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 utilizó un cero variable y configuró onClickListener como OnClickListener incompleto. Use la variable para el 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();
}
});
}
}
¿Cómo obtengo un botón para reproducir un sonido de crudo al hacer clic? Acabo de crear un botón con id button1
, pero cualquier código que escriba, todo está mal.
import android.media.MediaPlayer;
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);
MediaPlayer = mp;
mp = MediaPlayer.create(this, R.raw.soho);
zero.setOnCliclListener(new View.OnClickListener() )
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.basic_screen, menu);
return true;
}
}
La mejor manera de hacerlo es aquí que encontré después de buscar un problema tras otro en el LogCat
MediaPlayer mp;
mp = MediaPlayer.create(context, R.raw.sound_one);
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
mp.reset();
mp.release();
mp=null;
}
});
mp.start();
Si no liberas el reproductor multimedia, obtendrás este error en LogCat:
Android: MediaPlayer finalizado sin ser lanzado
No reiniciar el reproductor de medios le da este error en LogCat:
Android: mediaplayer went away with unhandled events
Así que juega código seguro y simple para usar el reproductor multimedia.
Para reproducir más de un sonido en la misma Actividad / Fragmento, simplemente cambie el resID mientras crea un nuevo reproductor de Media como
mp = MediaPlayer.create(context, R.raw.sound_two);
y juega!
¡Que te diviertas!
la clase pública MainActivity extiende AppCompatActivity {
public void clickMe (View view) {
MediaPlayer mp = MediaPlayer.create(this, R.raw.xxx);
mp.start();
}
crear un botón con un método podría llamarse cuando se presiona el botón (oncCeate),
luego crea una variable para la clase (MediaPlayer) con la ruta de tu archivo
MediaPlayer mp = MediaPlayer.create (esto, R.raw.xxx);
finalmente ejecutar el método de inicio en esa clase
mp.start ();
el archivo se ejecutará cuando se presione el botón, ¡espero que haya sido útil!
Probado y funcionando al 100%
public class MainActivity extends ActionBarActivity {
Context context = this;
MediaPlayer mp;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
mp = MediaPlayer.create(context, R.raw.sound);
final Button b = (Button) findViewById(R.id.Button);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
if (mp.isPlaying()) {
mp.stop();
mp.release();
mp = MediaPlayer.create(context, R.raw.sound);
} mp.start();
} catch(Exception e) { e.printStackTrace(); }
}
});
}
}
Esto fue todo lo que tuvimos que hacer
if (mp.isPlaying()) {
mp.stop();
mp.release();
mp = MediaPlayer.create(context, R.raw.sound);
}
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
MediaPlayer mp;
Button one ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mp = MediaPlayer.create(this, R.raw.soho);
one = (Button)this.findViewById(R.id.button1);
one.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mp.start();
}
});
}
}
Button button1=(Button)findViewById(R.id.btnB1);
button1.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
MediaPlayer mp1 = MediaPlayer.create(this, R.raw.b1);
mp1.start();
}
});
Prueba esto, creo que funcionará