Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Android / Reproduce archivos MP3 desde android

Reproduce archivos MP3 desde android

Por jc mouse jueves, febrero 19, 2015

Reproducir archivos de audio en nuestras aplicaciones android.

Necesitamos

  • IDE Eclipse y SDK Android instalado
  • Un archivo MP3
Tiempo: 15 minutos
Nivel: Básico – Intermedio

Paso 1. Proyecto

Crea un proyecto nuevo android en Eclipse llamado «JMPlayer»

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:

raw mp3

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:

reproductor

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:

android bolivia

Proyecto completo AQUI (12/01/2026)

Tags

Artículos similares

Hola Mundo con Firebase

Firebase es la plataforma para el desarrollo de aplicaciones web y aplicaciones móviles de Google el cual se centra en e[...]

Mapas interactivos con HTML5 – Parte 1

La tecnología de HTML5 y javascript  nos permite crear gráficos interactivos livianos sin tener que recurrir a flash, el[...]

Manejo de BLOB: Escritura y lectura de archivos

Un BLOB en SQL es un tipo incorporado que almacena un Objeto Binario Grande como un valor de columna en una fila de una[...]

Gestión de Stock (Parte 2)

Continuando con el desarrollo de la aplicación (Parte 1), abrimos Netbeans y creamos un nuevo proyecto al que llamaremos[...]

Ordenación de burbuja animado

La Ordenación de burbuja (Bubble Sort en inglés) es un sencillo algoritmo de ordenamiento. Este algoritmo es esencialmen[...]

Crea una ventana de dialogo «Acerca de…» personalizado

Cuando se crean aplicaciones android o cualquier otro tipo de software, es importante dejar información del o los desarr[...]