Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Android / Reproduce archivos MP3 desde android

Reproduce archivos MP3 desde android

Autor 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

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Crea formulario de login estilo Agents of Shield Marvel

Crea formulario de login estilo Agents of Shield Marvel

En esta oportunidad aprovechando el interés que tienen ahora los superheroes de Marvel, crearemos un formulario de logue...

Personalizar iconos de un JTree

Personalizar iconos de un JTree

JTree cuenta con métodos que nos permiten cambiar los iconos de cada nodo según su estado, sin embargo a veces esto no e...

Proyecto Base de Datos Access y Java

Proyecto Base de Datos Access y Java

La base de datos elegida es Access 2007 (*.accdb), pero claro la migracion hacia otra base de datos como MySQL o Postgre...

Gallery: Google presenta su app colaborativa para desarrolladores

Gallery: Google presenta su app colaborativa para desarrolladores

Gallery.io es una herramienta de colaboración gratuita desarrollada por Google para cargar trabajos de diseño, obtener c...

Mapas HTML5 – Elementos del canvas- Parte 4

Mapas HTML5 – Elementos del canvas- Parte 4

Continuando con nuestro tutorial de “Mapas interactivos con HTML5” , esta es la sección que corresponde a lo...

Encriptación simétrica en java

Encriptación simétrica en java

En este post veremos un ejemplo sencillo de encriptación/desencriptación simétrica que el API de Java nos permite realiz...

2 comentarios en “Reproduce archivos MP3 desde android”

  1. Eduardo dice:

    Gran aporte, para empezar en el mundo android 🙂

  2. Jose dice:

    Muy bueno tu aporte.
    Quisiera saber como haria para que busque musica automaticamente desde la tarjeta SD o memoria interna.
    Un saludo a la distancia.

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

JSON es un formato de texto ligero para el intercambio de datos ampliamente usado en los Servicios Web. En este post uti...

En este post conoceremos algunos de los operadores de comparación que existen en Linux y realizaremos unos ejercicios pa...

En este post conocernos lo que son las Estructuras de Control IF en los script de Bash. Estas estructuras nos ayudan a c...

Todo producto tecnológico tiene un ciclo de vida, algunos bastante corto otros muy largo, podemos mencionar el software...

Android Bolivia

MAUS