En este tutorial veremos cómo crear un reproductor de música en Android Studio. Si te gusta la música y tienes pensado crear una aplicación de música para Android, como esta nuestra de Cánticos del Atlético de Madrid, te contaremos más o menos lo que necesitas para llevarlo a cabo. Así podrás reproducir audio en Android Studio, implementando los controladores de play y pause.
Esta aplicación se hace bastante rápido, más de lo que crees:
Cómo crear un reproductor de música en Android Studio
- Lo primero que necesitas es crear una lista. Puedes implementar los botones de play y pause en la propia lista (que sea el mismo botón y se cambie). O que al hacer clic en la canción, se abra un nuevo layout con la letra y los botones de play/plause. En el anterior tutorial te contamos cómo crear la lista.
- Necesitas crear una carpeta raw con los .mp3. La puedes crear a la altura de las carpetas menú y values.
- El segundo paso importante es implementar los botones de play/pause. Aquí te contamos cómo crear botones en Android Studio, aunque lo haremos con un custom view y ayuda de otra app.
Reproducir audio en Android Studio
El código que necesitas para hacer las funciones de play/pause, es el siguiente:
Código play/pause
- Necesitas declarar la variable MediaPlayer:
1 |
private MediaPlayer mp = new MediaPlayer(); |
- Luego crear el método Play por ejemplo (lo llamarás como buttonPlay(); desde onCreate()):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
public void buttonPlay() { final PlayPauseView view = (PlayPauseView) findViewById(R.id.play_pause_view); view.toggle(); song = songsArray.get(id); //array dónde tengo almacenadas las canciones int resId = -1; switch (song.getSongId()) { case : resId=R.raw.ale; break; case 1: resId=R.raw.todoelfondo; break; // (...) una manera de hacerlo es poner cada audio en un case } if (resId != -1) { mp = MediaPlayer.create(Song_detail.this, resId); } view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { view.toggle(); if (!mp.isPlaying()) { //si no suena al play mp.start(); } else if (mp.isPlaying()) { //si suena la paro mp.pause(); } } }); } |
- Necesitarás la clase PlayPauseView:
Encuéntrala en GitHub.
- Necesitarás esto en tu clase (si cierras la app, que deje de sonar):
1 2 3 4 5 6 7 8 |
@Override public void onDestroy() { super.onDestroy(); mp.stop(); mp.release(); mp = null; } |
- Necesitarás un botón custom view en tu layout:
1 2 3 4 5 6 7 8 9 10 11 12 |
<aa.designers.canticosatletico.PlayPauseView android:id="@+id/play_pause_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginRight="10dp" android:clickable="true" android:foreground="?android:selectableItemBackground" android:stateListAnimator="@anim/button_elevation" android:layout_toEndOf="@+id/t_text" android:layout_alignParentBottom="true" android:layout_toRightOf="@+id/t_text" android:layout_marginBottom="10dp" /> |
Este botón cambiará de play a pause y viceversa. Podrás darle formato.
¡Y creo que ya está todo! Este código lo hice hace tiempo y es posible que me haya comido algún paso.
Con este código,lo que hago es tener 2 botones en la app (play y pause). Cuando haces clic en play, pasará a pause y se escuchará la música y viceversa. Hay una animación en los botones para que pase de play a pause.
Puedes ver la app creada en este enlace: Cánticos Atleti
Debería servirte para crear un reproductor de música en Android Studio.
¿Tienes dudas? ¿No sabes cómo implementar alguna de las partes? Pregúntame en los comentarios.
Hola quisiera por favor q me ayudaras en como hacer la animavion para los botones de play y stop para una app de radio streaming en android studio. Este es mi codigo java
public class MainActivity extends Activity { static MediaPlayer mPlayer; Button buttonPlay; Button buttonStop; String url = «http://s39.myradiostream.com:4682/»; private MediaPlayer mMediaPlayer; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buttonPlay = (Button) findViewById(R.id.BtnPlay); buttonPlay.setOnClickListener(new OnClickListener() { public void onClick(View v) { mPlayer = new MediaPlayer(); mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); try { mPlayer.setDataSource(url); } catch (IllegalArgumentException e) { Toast.makeText(getApplicationContext(), «Emisora fuera del Aire!!», Toast.LENGTH_LONG).show(); } catch (SecurityException e) { Toast.makeText(getApplicationContext(), «Emisora fuera del Aire!!», Toast.LENGTH_LONG).show(); } catch (IllegalStateException e) { Toast.makeText(getApplicationContext(), «Emisora fuera del Aire!!», Toast.LENGTH_LONG).show(); } catch (IOException e) { e.printStackTrace(); } try { mPlayer.prepare(); } catch (IllegalStateException e) { Toast.makeText(getApplicationContext(), «Emisora fuera del Aire!!», Toast.LENGTH_LONG).show(); } catch (IOException e) { Toast.makeText(getApplicationContext(), «Emisora fuera del Aire!!», Toast.LENGTH_LONG).show(); } mPlayer.start(); } }); buttonStop = (Button) findViewById(R.id.BtnStop); buttonStop.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub if (mPlayer != null && mPlayer.isPlaying()) { mPlayer.stop(); } } }); } protected void onDestroy() { super.onDestroy(); // TODO Auto-generated method stub if (mPlayer != null) { mPlayer.release(); mPlayer = null; } } public void onPressed() { moveTaskToBack(true); }}
Hola, disculpa no se si me puedes ayudar debo hacer para un proyecto de la U un reproductor por streaming, pero tengo problemas para que la al acabar una canción automáticamente reproduzca la siguiente. Ojala puedas ayudarme. Saludos y gracias…
Hola! No es nada complicado. Simplemente tendrías que cambiar la acción. En muchos casos, cuando en un reproductor de música se acaba una canción no hace nada. Pues tendrás que meter un código que saltara el siguiente ID y lo reprodujera. ¿Cómo lo tienes implementado?
PORFAVOR DEJEN LA CARPETA COMPLETA DEL PROGRAMA ES K ME LO PIEDRON EN LA ESCUELA… PLIS!!!!!!
PORFAVOR ES K LO NESESITO … ES UN ORIYECTO FINAL SOY DEL TEC DE TUXTLA
SI SON TAN AMABLES PORFA !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
O SI ALGUIEN MRE ISISERA EL FAVOR DE MANDARLO EN MI CORREO S LO AGRADECERIA INFINITAMENTE……….!!!!!!!!!!!!!!!!!!
PORFAVOR ECHEN LA MANO CN ESTA TAREA
hola, quisiera saber si me pudieran ayudar.
Lo que necesito saber es como hacer que en el reproductor divida las canciones por album, artista y cancion, osea en tres listas correspondientes a lo anterior mencionado.
se los agradeceria mucho si me pudieran ayudar
Debes leer las etiquetas incrustadas en los archivos de audio, busca una biblioteca para manipular etiquetas ID3tag algo así, aunque es una lata la compatibilidad con todas las versiones de etiquetas. luego que extraigas su información, puedes decidir en que lista agregarlas. suerte
Alguien me puede ayudar? quiero reproducir musica con mediaplayer en android 6.0.1 desde archivos en la sdcard, entiendo que solo hay que cambiar la URI o direccion, pero no logro hacer funcionar
Cree una App para Radio online, todo funciona ok pero cuando cree la notificación tengo el problema de que la presiona y me envía de nuevo a la App pero crea otro audio y se superpone, como lo soluciono:
public void NotificarUsuario() {
Intent intent = new Intent(MainActivity.this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
notificacion = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.icono)
.setContentIntent(pendingIntent)
.setTicker(«Estas escuchando Radio»)
.setAutoCancel(true)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.icono));
NotificationCompat.BigTextStyle style = new NotificationCompat.BigTextStyle(builder);
style.bigText(«Continua»)
.setBigContentTitle(«Radio Online»)
.setSummaryText(«Ver mas en http://www.google.com«);
//Notification.MediaStyle mediaStyle = new Notification.MediaStyle()
notificacion.notify(1, builder.build());
if (mPlayer != null && mPlayer.isPlaying()) {
notificacion.notify(1, builder.build());
} else {
notificacion.cancel(1);
}
}
Hola disculpa necesito realizar una aplicación que me permita grabar audio directamente con el micrófono del celular, al frenar la grabación debe aparecer un alert que me permita cambiar el nombre de dicho audio y guardarlo, también esos audios enseñarlos en un listView y poder reproducirlos al seleccionarlos…. Ya logré grabar los audios pero no se como guardarlos, podrías ayudarme?