IDIOMAS

Google-Translate-Chinese Google-Translate-Spanish to French Google-Translate-Spanish to German Google-Translate-Spanish to Japanese Google-Translate-Spanish to English Google-Translate-Spanish to Russian Google-Translate-Spanish to Portuguese Google-Translate-Spanish to Italian

domingo, 8 de marzo de 2015

Como crear las carpetas RAW y ASSETS para reproducir audio en Android Studio.

Si queremos reproducir audio en nuestra aplicación, ya sea en background  ( de fondo, por ejemplo la música de nuestro vídeojuego ), en reproductor mp3 y/o mp4, o botones con efectos de explosiones, sonidos de animales, etc...hay que tener en cuenta estas classes: MEDIA PLAYER , SOUNDPOOL y AUDIO TRACK ( las diferencias están explicadas con todo tipo de detalle en http://developer.android.com/ ).
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:






- Escogeremos dentro el desplegable NEW =>ANDROID RESOUCE DIRECTORY:






- Nos aparece este nuevo menú y damos clic sobre el desplegable:





- 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:






- Clic sobre NEW => FOLDER => ASSETS FOLDER:





- Creamos la carpeta finalizando :





- Y nos aparece en la compilación de nuestro proyecto así:




En esa carpeta ASSETS colocaremos nuestros archivos de audio, al igual que con la carpeta RAW.

Saludos a tod@s y gracias por visitarme!

3 comentarios:

  1. 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

    ResponderEliminar
  2. Hola, puede que esto te ayude, saludos

    http://stackoverflow.com/questions/22903540/android-copy-files-from-assets-to-data-data-folder

    ResponderEliminar
  3. Caused by: java.lang.RuntimeException: native typeface cannot be made
    por qué sale eso? y cómo solucionarlo!! Gracias!

    ResponderEliminar