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

JTable editable con base de datos

JTable editable con base de datos

JTable es un componente swing java que nos permite mostrar datos en una tabla de una base de datos, sin embargo a difere...

Microservicio REST Java con Spark – Parte 2

Microservicio REST Java con Spark – Parte 2

Segunda y ultima parte del post dedicado a la creación de un microservicio en lenguaje java utilizando el framework Spar...

Cifrado francmasón PigPen

Cifrado francmasón PigPen

El cifrado francmasón es un cifrado por sustitución simple que cambia las letras por símbolos. Sin embargo, el uso de sí...

Cambiar API Level en Android Studio

Cambiar API Level en Android Studio

Cuando desarrollamos aplicaciones en el IDE (Entorno de Desarrollo Integrado) de Android Studio, es importante indicar e...

HSQLDB: Gestor de bases de datos libre en java

HSQLDB: Gestor de bases de datos libre en java

HyperSQL DataBase (HSQLDB) es un moderno administrador de bases de datos relacionales, es portátil e implementado en jav...

Generar reportes con origen de datos JSON

Generar reportes con origen de datos JSON

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

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

KolibriOS  es un pequeño sistema operativo poderoso, rápido y libre con un núcleo monolítico anticipativo en tiempo real...

Los cursos online se han convertido en algo común en nuestros días y las aplicaciones que hay en la nube para realizar r...

Dia Diagram Editor es un software gratuito de dibujo de código abierto para los sistemas operativos de Windows, Mac OS X...

En ocasiones el limite máximo de importación de base de datos que ofrece PhpMyAdmin (2MB) no es suficiente para lo que q...

Android Bolivia

MAUS