Básicamente las diferencias entre ellas, residen en que la clase MEDIA PLAYER es para archivos superiores a 1MB de audio y/o vídeo sin necesidad de ser pre-cargados en memoria; los SOUNDPOOL, para archivos preferiblemente en .ogg inferiores a 1MB y que se mantengan pre-cargados en memoria para ser inmediatamente llamados sin lag ( latencia ); AUDIO TRACK para audios PCM pre-cargados en memoria del dispositivo para ser utilizados con mínimo lag y modificarles las propiedades como el tempo o el pitch.
De todos modos, todas estas CLASS ( clases ) necesitan llamar los archivos desde una carpeta ubicada en la compilación de nuestro proyecto. Así que crearemos una carpeta llamada RAW y otra llamada ASSETS, dependiendo de la CLASS.
Crearemos una carpeta RAW para un ejemplo con MEDIAPLAYER CLASS:
//dentro de nuestra clase que extiende Activity
MediaPlayer mp ;
//ya dentro de onCreate:
mp = MediaPlayer.create ( this, R.raw.nuestro_audio );
mp.start();
// mp es el nombre con el que llamaremos al objeto MediaPlayer.
//mp = MediaPlayer.create ( this, R.raw.nuestro_audio ) es: mp = MediaPlayer.create ( Context context, int resid ) que es: (desde donde estamos, hacia donde esta el archivo a reproducir y nuestra carpeta RAW)
CREACION DE LA CARPETA RAW:
- Botón derecho sobre la carpeta RES de la compilación de nuestra aplicación:
- Damos clic sobre RAW, y después sobre OK:
- Y ya tenemos el directorio creado:
Crearemos una carpeta ASSETS para el ejemplo SOUNDPOOL:
//importamos:
import android.media.SoundPool;
//dentro de nuestra clase que extiende Activity declaramos
Int nuestro_audio_ID;
SOUNDPOOL SP;
//ya en onCreate:
AssetManager assetManager = getAssets();
//assetManager es como llamaremos a nuestro gester de archivos AssetsManager
//getassets(); es el método " coger el acrchivo desde la carpeta ASSETS"
AssetFileDescriptor nuestro_sonido = assets.openFd("nuestro_audio.ogg");
nuestro_audio_ID = SP.load ( nuestro_sonido, 1 );
//primero definimos nuestro audio a reproducir
//después le mandamos .load (leer) nuestro archivo descrito anteriormente, y el 1 es la prioridad (valor int donde 1 es prioridad alta)
SP.play ( nuestro_audio_ID, float de volumen derecho, float de volumen izquierdo, int de loop, int de rate);
//.play nos pide el int de nuestra canción, un int float de volumen tanto derecho como izquierdo que van de 0.0=0% a 1.0=100%, el int de loop donde -1 es reproducción en loop, 0 reproduce una vez y 1 repite sólo una vez, y por último tenemos un int de Rate que va de 0.5 a 2 y modifica la velocidad de pitch donde 1.0 seria la velicidad normal
CREACION DE LA CARPETA ASSETS:
-Botón derecho sobre APP de nuestro proyecto:
- Creamos la carpeta finalizando :
En esa carpeta ASSETS colocaremos nuestros archivos de audio, al igual que con la carpeta RAW.
Saludos a tod@s y gracias por visitarme!
Amigo sabes como hacer para copiar una carpeta con sus subcarpetas que tengo en el Assets a el directoria Android/Data del dispositivo? te lo agradeceria mucho si me orientas
ResponderEliminarHola, puede que esto te ayude, saludos
ResponderEliminarhttp://stackoverflow.com/questions/22903540/android-copy-files-from-assets-to-data-data-folder
Caused by: java.lang.RuntimeException: native typeface cannot be made
ResponderEliminarpor qué sale eso? y cómo solucionarlo!! Gracias!