DESARROLLO DE APLICACIONES PARA ANDROID
1. REPRODUCCIÓN, PAUSA, CONTINUACIÓN Y DETENCIÓN DE UN ARCHIVO DE AUDIO.
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.
Primero creamos un proyecto y definimos los 5 botones y métodos a ejecutar cuando se
presionen los botones respectivos:
- Creamos la carpeta raw y almacenamos en la misma el archivo mp3 con nombre
“numeros”.
- Seguidamente modificaremos nuestro código, debiendo quedar de la siguiente
manera.
package com.example.proyecto018;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.media.MediaPlayer;
import android.view.View;
import android.widget.Button;
public class Main extends Activity {
MediaPlayer mp;
Button b1;
int posicion=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b1=(Button) findViewById(R.id.button5);
Steve Jobs – Juntos hacia tu éxito 1
DESARROLLO DE APLICACIONES PARA ANDROID
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=b1.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=b1.getText().toString();
if(op.equals("No reproducir en forma circular")){
b1.setText("Reproducir en forma circular");
}else{
b1.setText("No reproducir en forma circular");
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
Steve Jobs – Juntos hacia tu éxito 2
DESARROLLO DE APLICACIONES PARA ANDROID
return true;
}
}
- 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 b1;
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=b1.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();
Steve Jobs – Juntos hacia tu éxito 3
DESARROLLO DE APLICACIONES PARA ANDROID
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=b1.getText().toString();
if(op.equals("No reproducir en forma circular")){
b1.setText("Reproducir en forma circular");
}else{
b1.setText("No reproducir en forma circular");
}
}
Steve Jobs – Juntos hacia tu éxito 4