Webmaster Workers utiliza cookies. Lea nuestra Política de Privacidad para obtener más información. Para eliminar este mensaje, haga clic en el siguiente botón: Acepto el uso de cookies


24 - Reproducción, pausa, continuación y detención de un arc



Problema:


Confeccionar una aplicación que permita Iniciar un archivo mp3, detener, continuar, detener en forma definitiva y activación o no de la reproducción en forma circular.


Crear un archivo mp3 con el programa Audacity contando del 1 al 30.


Primero creamos un proyecto (Proyecto026) y definimos los 5 botones y métodos a ejecutar cuando se presionen los botones respectivos:


play mp3 android




Creamos la carpeta raw y almacenamos en la misma el archivo mp3 creado previamente:


play mp3 android


El código fuente es:



package ar.com.tutorialesya.proyecto026;

import android.media.MediaPlayer;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;


public class MainActivity extends ActionBarActivity {
MediaPlayer mp;
Button b5;
int posicion = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

b5=(Button)findViewById(R.id.button5);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}

public void destruir() {
if (mp != null)
mp.release();
}

public void iniciar(View v) {
destruir();
mp = MediaPlayer.create(this, R.raw.numeros);
mp.start();
String op = b5.getText().toString();
if (op.equals("no reproducir en forma circular"))
mp.setLooping(false);
else
mp.setLooping(true);
}

public void pausar(View v) {
if (mp != null && mp.isPlaying()) {
posicion = mp.getCurrentPosition();
mp.pause();
}
}

public void continuar(View v) {
if (mp != null && mp.isPlaying() == false) {
mp.seekTo(posicion);
mp.start();
}
}

public void detener(View v) {
if (mp != null) {
mp.stop();
posicion = 0;
}
}

public void circular(View v) {
detener(null);
String op = b5.getText().toString();
if (op.equals("no reproducir en forma circular"))
b5.setText("reproducir en forma circular");
else
b5.setText("no reproducir en forma circular");
}
}

Primero definimos tres atributos uno de la clase MediaPlayer para administrar el archivo mp3, un entero donde se almacena la posición actual de reproducción en milisegundos (para poder continuarla en el futuro) y la referencia de un objeto de la clase Button:



MediaPlayer mp;
Button b5;
int posicion = 0;



El método destruir verifica con un if si el objeto de la clase MediaPlayer está creado procede a liberar recursos del mismo llamando al método release:



public void destruir() {
if(mp!=null)
mp.release();
}

El método iniciar que se ejecuta al presionar el botón "iniciar" primero llama al método destruir (para el caso que el mp3 este en ejecución actualmente) seguidamente creamos un objeto de la clase MediaPlayer llamando al método create (en este hacemos referencia al archivo que copiamos a la carpeta raw) Llamamos al método start. Por último extraemos el texto del quinto botón y verificamos si la reproducción debe ejecutarse en forma circular (en forma indefinida una y otra vez):



public void iniciar(View v) {
destruir();
mp = MediaPlayer.create(this,R.raw.numeros);
mp.start();
String op=b5.getText().toString();
if (op.equals("no reproducir en forma circular"))
mp.setLooping(false);
else
mp.setLooping(true);
}


El método pausar verifica que el objeto de la clase MediaPlayer este creado y en ejecución, en caso afirmativo recuperamos la posición actual de reproducción y llamamos seguidamente al método pause:



public void pausar(View v) {
if(mp != null && mp.isPlaying()) {
posicion = mp.getCurrentPosition();
mp.pause();
}
}


El método continuar verifica que el objeto de la clase MediaPlayer este creado y la propiedad isPlaying retorne false para proceder a posicionar en que milisegundo continuar la reproducción:



public void continuar(View v) {
if(mp != null && mp.isPlaying()==false) {
mp.seekTo(posicion);
mp.start();
}
}


El método detener interrumpe la ejecución del mp3 e inicializa el atributo posicion con cero:



public void detener(View v) {
if(mp != null) {
mp.stop();
posicion = 0;
}
}


Cuando se presiona el botón que cambia si la reproducción se efectúa en forma circular o no procedemos a extraer su texto y según dicho valor almacenamos el valor opuesto:



public void circular(View v) {
detener(null);
String op=b5.getText().toString();
if (op.equals("no reproducir en forma circular"))
b5.setText("reproducir en forma circular");
else
b5.setText("no reproducir en forma circular");
}



Este proyecto lo puede descargar en un zip desde este enlace:
proyecto026.zip



Opciones
Estadísticas
Creado 01.01.1970 a las 00:00 hs
Categoría Android Studio

  • Medallas
  • 0
    Favoritos
  • 9576
    Visitas
  • 0
    Puntos
  • 0
    Seguidores
Comentarios
0
Cargando comentarios espera un momento...
No tienes permisos para comentar.

Para poder comentar necesitas estar Registrado. O.. ya tienes usuario? Logueate!
Autor del post
Ver perfil de Administrador Administrador
Hombre Administrador  Mensaje
43 1,352 1
Medallas
No tiene medallas
Tags
Posts relacionados