Reproducir archivos de audio en nuestras aplicaciones android.
Necesitamos
Paso 1. Proyecto
Crea un proyecto nuevo android en Eclipse llamado «JMPlayer»
En la carpeta «RES», crea una nueva carpeta llamada «RAW» y pega el archivo MP3 dentro de ella, como se ve en la imagen siguiente:
Paso 2: Interfaz
Abre el archivo activity_main.xml y pega el siguiente código:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/tvMsg" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/app_name" android:gravity="center" android:textSize="32sp" /> <Button android:id="@+id/btnPlay" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/str_play" /> <Button android:id="@+id/btnPause" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/str_pause" /> <Button android:id="@+id/btnStop" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/str_stop" /> <TextView android:id="@+id/tvTime" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/app_name" android:textSize="18sp" /> <SeekBar android:id="@+id/skSong" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
También debes crear los siguientes string en la carpeta «RES/VALUES/»
<string name="str_play">PLAY</string> <string name="str_pause">PAUSE</string> <string name="str_stop">STOP</string>
Nuestra interfaz se debe ver como la siguiente imagen:
Paso 3. Código
Para reproducir archivos MP3 haremos uso de la clase MediaPlayer que también nos permite reproducir vídeos. La clase completa del MainActivity es:
package com.bolivia.jmplayer; import android.media.MediaPlayer; import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.SeekBar; import android.widget.TextView; public class MainActivity extends Activity{ private TextView tvMsg; private Button btnPlay; private Button btnPause; private Button btnStop; private SeekBar skSong; private TextView tvTime; private MediaPlayer mPlayer = null; private Handler skHandler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //-- begin mPlayer = MediaPlayer.create(MainActivity.this, R.raw.onnanokootokonoko); tvMsg = (TextView) findViewById(R.id.tvMsg); btnPlay = (Button) findViewById(R.id.btnPlay); btnPause = (Button) findViewById(R.id.btnPause); btnStop = (Button) findViewById(R.id.btnStop); skSong = (SeekBar) findViewById(R.id.skSong); tvTime = (TextView) findViewById(R.id.tvTime); //----------- button PLAY btnPlay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(!mPlayer.isPlaying()) { mPlayer.start(); tvMsg.setText("PLAY"); } } }); //----------- button PAUSE btnPause.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(mPlayer.isPlaying()) { mPlayer.pause(); tvMsg.setText("PAUSE"); } } }); //----------- button STOP btnStop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (mPlayer != null) { mPlayer.stop(); mPlayer.release(); mPlayer = MediaPlayer.create(MainActivity.this, R.raw.onnanokootokonoko); tvMsg.setText(":)"); } } }); //--- Se coloca el tiempo de duracion y se inicia el seek bar tvTime.setText( getHRM(mPlayer.getDuration()) ); skSong.setMax(mPlayer.getDuration()); skSong.setProgress(mPlayer.getCurrentPosition()); //cada segundo se actualiza el estado del seek bar skHandler.postDelayed(updateskSong, 1000); //-- end }//end:onCreate //se hace uso de un hilo para actualizar el progreso de la reproducción Runnable updateskSong = new Runnable() { @Override public void run() { skSong.setProgress( mPlayer.getCurrentPosition() ); tvTime.setText( getHRM(mPlayer.getDuration()) + " - " + getHRM(mPlayer.getCurrentPosition()) ); skHandler.postDelayed(updateskSong, 1000); } }; /** * Método que convierte milisegundos a Hora:Minuto:Segundo * @param int milliseconds * @return String HH:MM:SS * */ private String getHRM(int milliseconds ) { int seconds = (int) (milliseconds / 1000) % 60 ; int minutes = (int) ((milliseconds / (1000*60)) % 60); int hours = (int) ((milliseconds / (1000*60*60)) % 24); return ((hours<10)?"0"+hours:hours) + ":" + ((minutes<10)?"0"+minutes:minutes) + ":" + ((seconds<10)?"0"+seconds:seconds); } /** * Cuando la actividad ya no es visible por el usuario, * se detiene el reproductor * */ @Override protected void onStop() { super.onStop(); if (mPlayer != null) { mPlayer.stop(); mPlayer.release(); mPlayer = MediaPlayer.create(MainActivity.this, R.raw.onnanokootokonoko); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }
Ejecuta para probar la aplicación:
Proyecto completo AQUI (12/01/2026)
Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la inter[...]
SOAP (Simple Object Access Protocol) es un protocolo estándar que define cómo dos objetos en diferentes procesos pueden[...]
VokoscreenNG es una herramienta versátil y de código abierto para la creación de screencasts, disponible para los sistem[...]
El desarrollo web moderno exige no solo funcionalidad, sino también un poco de estética diferenciada en cada componente[...]
En este post veremos un ejemplo sencillo de como descargar desde Internet archivos de cualquier tipo (*.jpg, *.png, *.gi[...]
Existen muchos clientes REST disponibles tanto para instalar en tu PC como para utilizar directamente desde la nube, sin[...]