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

Rompecabezas con forma irregular

Rompecabezas con forma irregular

En este post vemos una manera de como crear un juego de rompecabezas en java sin el uso de java2d, ademas, las piezas de...

Bandera en Alto

Bandera en Alto

EL 6 de agosto de cada año se recuerda una de las fechas más importantes de la historia boliviana, porque el 6 de Agosto...

Generar clases desde Esquemas XSD

Generar clases desde Esquemas XSD

XJC es una herramienta de linea de comandos del compilador de esquemas de JAXB que se puede utilizar para convertir un e...

CRC32: Verificación de Redundancia Cíclica

CRC32: Verificación de Redundancia Cíclica

El CRC o Verificación de Redundancia Cíclica o Comprobación de redundancia cíclica  es una técnica utilizada para detect...

Gráficos iReport con parámetros tipo Date

Gráficos iReport con parámetros tipo Date

Matando dos pájaros de un solo tiro :), doy respuesta a un par de preguntas que están relacionadas, en este post veremos...

iFrame Injection – Ocultar código malicioso

iFrame Injection – Ocultar código malicioso

En ocasiones los administradores de sitios web experimentan problemas de lentitud en su carga o en el peor de los casos...

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

Eratóstenes era un matemático griego del siglo  III a.C. el cual ideó una manera rápida de obtener todos los números pri...

Las matemáticas son fundamentales para la vida y aparte de las actividades clásicas de enseñanza desarrolladas en el aul...

MVC es un patrón de arquitectura de software que separa una aplicación en tres componentes lógicos principales.  Estos s...

Microsoft acaba de lanzar Cascadia Code una fuente monoespaciada enfocada en proporcionar una mejor experiencia en conso...

Herramientas

Generador de Enlaces a Whatsapp