Escolar Documentos
Profissional Documentos
Cultura Documentos
contenido en la aplicacin)
Veremos los pasos para reproducir un archivo mp3 (otros formatos soportados por
Android son: Ogg, Wav)
Problema:
Disponer dos botones con las etiquetas: Gato y Len, luego cuando se presione
reproducir el archivo de audio respectivo. Los archivos de sonidos almacenarlos en la
misma aplicacin.
Luego de crear el proyecto procedemos a crear una carpeta llamada raw que dependa
de la carpeta res, almacenamos los dos archivos mp3 en dicha carpeta (para crear la
carpeta presionamos el botn derecho del mouse sobre la carpeta res y
seleccionamos new -> folder):
Luego de copiar los archivos a la carpeta debemos refrescar los archivos contenidos
en el proyecto presionando el botn derecho del mouse y seleccionando la opcin
"Refresh":
package com.androidya.proyecto019;
import
import
import
import
import
android.app.Activity;
android.media.MediaPlayer;
android.os.Bundle;
android.view.Menu;
android.view.View;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the
action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void presionGato(View v) {
MediaPlayer mp = MediaPlayer.create(this,
R.raw.gato);
mp.start();
}
public void presionLeon(View v) {
MediaPlayer mp = MediaPlayer.create(this,
R.raw.leon);
mp.start();
}
}
Cuando copiamos los archivos mp3 se genera luego en la clase R la referencia a los
dos archivos y posteriormente los podemos rescatar cuando creamos un objeto de la
clase MediaPlayer:
MediaPlayer mp=MediaPlayer.create(this,R.raw.gato);
package com.androidya.proyecto020;
import
import
import
import
import
import
android.app.Activity;
android.media.MediaPlayer;
android.os.Bundle;
android.view.Menu;
android.view.View;
android.widget.Button;
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");
}
}
Primero definimos tres atributos uno de la clase MediaPlayer para administrar el
archivo mp3, un entero donde se almacena la posicin actual de reproduccin 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 mtodo iniciar que se ejecuta al presionar el botn "Iniciar" primero llama al mtodo
destruir (para el caso que el mp3 este en ejecucin actualmente) seguidamente
creamos un objeto de la clase MediaPlayer llamando al mtodo create (en este
hacemos referencia al archivo que copiamos a la carpeta raw) Llamamos al mtodo
start. Por ltimo extraemos el texto del quinto botn y verificamos si la reproduccin
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 mtodo detener interrumpe la ejecucin del mp3 e inicializa el atributo posicion con
cero:
public void detener(View v) {
if(mp != null) {
mp.stop();
posicion = 0;
}
}
Problema:
Disponer un botn con la etiqueta: "Gato", luego cuando se presione reproducir el
archivo de audio respectivo. El archivo de sonido almacenarlo en la tarjeta SD.
Luego de crear el proyecto debemos ejecutar la aplicacin en modo depuracin para
poder acceder a la tarjeta SD que crea el emulador Android. Para ejecutar la
aplicacin en modo "Debug" presionamos el botn derecha del mouse sobre el
proyecto y seleccionamos la opcin "Debug A" "Android Aplication":
Una vez que se este ejecutando la aplicacin (no importa que todava no hemos
implementado su funcionalidad) procedemos a abrir la ventana "File Explorer" de
Android. Seleccionamos del men de opciones de Eclipse: Window -> Show View ->
Other :
En la carpeta sdcard debemos subir el archivo mp3 (debemos seleccionar esta carpeta
con
el
mouse)
Esto lo hacemos mediante un botn que aparece en la parte derecha de esta ventana
"Push a file onto device", luego de esto tenemos el archivo montado en la tarjeta SD:
Ahora implementemos la interfaz de nuestra aplicacin (un solo botn) que cuando se
presione llame al mtodo ejecutar:
package com.androidya.proyecto021;
import
import
import
import
import
import
import
android.app.Activity;
android.media.MediaPlayer;
android.net.Uri;
android.os.Bundle;
android.os.Environment;
android.view.Menu;
android.view.View;
Problema:
package com.androidya.proyecto022;
import java.io.IOException;
import
import
import
import
import
android.app.Activity;
android.media.MediaPlayer;
android.os.Bundle;
android.view.Menu;
android.view.View;
Problema:
package com.androidya.proyecto023;
import java.io.IOException;
import
import
import
import
import
import
import
android.app.Activity;
android.media.MediaPlayer;
android.media.MediaPlayer.OnPreparedListener;
android.os.Bundle;
android.view.Menu;
android.view.View;
android.widget.Toast;
implements
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the
action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void ejecutar(View v) {
mp = new MediaPlayer();
mp.setOnPreparedListener(this);
try {
mp.setDataSource("http://www.codigofuenteya.com.ar/rec
ursos/gato.mp3");
mp.prepareAsync();
} catch (IOException e) {
}
Toast t = Toast.makeText(this,
"Espere un momento mientras se carga
el mp3",
Toast.LENGTH_SHORT);
t.show();
}
public void onPrepared(MediaPlayer mp) {
mp.start();
}
}
Para poder capturar el evento que el archivo se termin de recuperar debemos
implementar la interface OnPreparedListener:
public
class
Proyecto023Activity
OnPreparedListener {
extends
Activity
implements
Con esto decimos que nuestra clase implementar el mtodo onPrepared donde
iniciamos la ejecucin del mp3:
public void onPrepared(MediaPlayer mp) {
mp.start();
}
Problema:
Disponer un botn con la etiqueta: "Ejecutar mp3 con el reproductor
propio de Android", luego cuando se presione reproducir el archivo de
audio respectivo con el reproductor de Android via Intent. El archivo de
sonido almacenarlo en la tarjeta SD.
Luego de crear el proyecto debemos ejecutar la aplicacin en modo
depuracin para poder acceder a la tarjeta SD que crea el emulador
Android. Para ejecutar la aplicacin en modo "Debug" presionamos el
botn derecha del mouse sobre el proyecto y seleccionamos la opcin
"Debug A" "Android Aplication":
Una vez que se este ejecutando la aplicacin (no importa que todava no
hemos implementado su funcionalidad) procedemos a abrir la ventana
"File Explorer" de Android. Seleccionamos del men de opciones de
Eclipse: Window -> Show View -> Other :
package com.androidya.proyecto024;
import
import
import
import
import
import
android.app.Activity;
android.content.Intent;
android.net.Uri;
android.os.Bundle;
android.view.Menu;
android.view.View;
}
Creamos un objeto de la clase Intent y un objeto de la clase Uri
referenciando al archivo mp3 almacenado en la tarjeta SD. Indicamos
mediante el mtodo setDataAndType el Uri y el tipo de archivo a
reproducir. Activamos la aplicacin mediante startActivity.
Este proyecto lo puede descargar en un zip desde este
enlace: proyecto024.zip
Problema:
Disponer dos objetos de la clase Button con las etiquetas "Grabar" y "Reproducir".
Cuando se presione el primer botn proceder a activar la grabadora provista por
Android. Cuando se presione el segundo botn reproducir el audio grabado.
Crear la interfaz e inicializar los eventos On click de cada botn:
package com.javaya.proyecto025;
import
import
import
import
import
android.net.Uri;
android.os.Bundle;
android.provider.MediaStore;
android.view.Menu;
android.view.View;
new
Problema:
Disponer tres objetos de la clase Button con las etiquetas "Grabar", "Detener
Grabacin" y "Reproducir Grabacin". Disponer adems un TextView para informar del
estado actual.
Cuando se presione el botn "Grabar" permitir registrar todos los sonidos hasta que se
presione el botn "Detener Grabacin". Cuando se presione el botn "Reproducir
Grabacin" emitir el archivo de audio previamente generado.
La interfaz visual a implementar es la siguiente:
Tener en cuenta de no olvidar definir los tres mtodos para los tres botones: grabar,
detener y reproducir.
Tambin debemos modificar el archivo AndroidManifest.xml donde debemos indicar
que nuestra aplicacin acceder a la grabadora de sonido y a la tarjeta SD donde se
almacenar el archivo de sonido.
Esto lo hacemos seleccionando el archivo AndroidManifest.xml y en la pestaa
Permissions registramos los dos permisos:
package com.androidya.proyecto026;
import java.io.File;
import java.io.IOException;
import
import
import
import
import
import
import
import
import
import
android.app.Activity;
android.media.MediaPlayer;
android.media.MediaPlayer.OnCompletionListener;
android.media.MediaRecorder;
android.os.Bundle;
android.os.Environment;
android.view.Menu;
android.view.View;
android.widget.Button;
android.widget.TextView;
b2 = (Button) findViewById(R.id.button2);
b3 = (Button) findViewById(R.id.button3);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the
action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void grabar(View v) {
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC)
;
recorder.setOutputFormat(MediaRecorder.OutputFormat.TH
REE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AM
R_NB);
File path = new
File(Environment.getExternalStorageDirectory()
.getPath());
try {
archivo = File.createTempFile("temporal",
".3gp", path);
} catch (IOException e) {
}
recorder.setOutputFile(archivo.getAbsolutePath());
try {
recorder.prepare();
} catch (IOException e) {
}
recorder.start();
tv1.setText("Grabando");
b1.setEnabled(false);
b2.setEnabled(true);
}
public void detener(View v) {
recorder.stop();
recorder.release();
Declaramos un objeto de la clase File que hace referencia al archivo que se crear:
File archivo;
Declaramos las variables que harn referencia a los tres botones y al TextView:
TextView tv1;
Button b1,b2,b3;
El mtodo detener:
public void detener(View v) {
recorder.stop();
recorder.release();
player = new MediaPlayer();
player.setOnCompletionListener(this);
try {
player.setDataSource(archivo.getAbsolutePath());
} catch (IOException e) {
}
try {
player.prepare();
} catch (IOException e) {
}
b1.setEnabled(true);
b2.setEnabled(false);
b3.setEnabled(true);
tv1.setText("Listo para reproducir");
}