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)
Uno de los mayores problemas que se presenta en el desarrollo de una aplicación, es el acceso a la base de datos y el mé[...]
En este oportunidad comparto una pequeña aplicación hecha en java para recortar partes de una imagen seleccionado con el[...]
Desarrollado por Leaning Technologies, WebVM utiliza la magia de WebAssembly (gracias a su motor CheerpX) para crear un[...]
Sourcetrail el explorador de código fuente de los lenguaje C, C ++, Java y Python se pasa al Software Libre y desde ahor[...]
Instagram es una red social y aplicación para subir fotos y videos. Sus usuarios también pueden aplicar efectos fotográf[...]
MVC es un patrón de arquitectura de software que separa una aplicación en tres componentes lógicos principales. Estos s[...]