Pregunta


Tengo que escribir una aplicación para Android que descargar sonidos de la Internet para su uso posterior.
¿Dónde debo guardar estos sonidos? SQLite es una opción? Y ¿cuál es la mejor manera de cargar y reproducir estos archivos?
Gracias de antemano.

¿Fue útil?

Solución

Yo recomendaría poner los archivos en la tarjeta SD, si es que existe. Hay que destacar, sin embargo, es que nunca se debe codificar un camino a la tarjeta SD. Usted probablemente querrá hacer algo en la línea de:

try {
        //Create handle to SD card drectory
        exportDirectory = new File(Environment.getExternalStorageDirectory() + "/MyDir");

        //Verify export path exists.  Create otherwise.
        if (exportDirectory.exists() == false) {
            if (exportDirectory.mkdirs() == false) {

                //Directory structure could not be created.
                //Message the user here
                return false;
            }
        }

        //Create handle to SD card file.
        exportFile = new File(exportDirectory.getAbsolutePath() + "/whatever.mp3");

        //Do whatever here

} catch(Exception e) {
        //Exception.  Message user and bail
        return false;
}

A partir de ahí se trata de una simple cuestión de la transferencia de todos los datos que desea en el archivo. Una base de datos SQLite sería probablemente una exageración para esta aplicación, a menos que pretenda almacenar una gran cantidad de información adicional. También hay ninguna garantía, a menos que se almacenan los archivos directamente en la base de datos como BLOB, que el usuario no ensuciará con el sistema de archivos entre ejecuta la aplicación. Sin embargo, en el caso de los MP3 y similares, información de la pista / tipo de artista puede ser almacenada directamente en el archivo a través de las etiquetas ID3 en lugar de utilizar una base de datos.

En cuanto a la reproducción de los archivos de nuevo, consulte la documentación de Android en sus APIs de audio. Hay un montón de buena información por ahí, sin duda más de lo que puedo repetir aquí.

Otros consejos

Yo diría que el mejor lugar para almacenarlos es como archivos individuales en la sdcard bajo su propia carpeta es decir, File("/sdcard/com.example.myapp/sound12345.mp3");


EDIT: por favor ver respuesta de que es mucho más completa que la mía.

Lo mejor es guardarlos directamente en el sistema de archivos. ¿Por qué quieres almacenarla en una base de datos? hay información adicional que necesita para almacenar junto con él? (títulos como, descripciones, etc.)? Si no es así, me gustaría escribir directamente en el sistema de archivos.

Básicamente se podía guardarlo en la carpeta de datos de la aplicación (en la que las preferencias compartidas y db sqlite se almacenan también). Sin embargo, yo personalmente creo que esto se debe desalentar, ya que reduce la memonry disponible en la partición / datos (que ya es tooo pequeña en los teléfonos Android La mayoría de los teléfonos tienen menos de 50 MB de espacio libre en los datos (esto significa:. Menos de 50 MB de aplicaciones, que no puede ser movido en parte a la tarjeta SD).

Siempre debe seguras dichas multas en la tarjeta SD, si es posible, para que no baje el espacio libre en la partición de datos demasiado. Incluso con la función de A2SD de Froyo, no todos los datos de una aplicación instalada se mueve en la tarjeta SD. Los archivos .dex * (que a menudo oscila entre el 10-50% del tamaño total de una aplicación) sigue siendo partición en / datos. Lo mismo ocurre con los ajustes y las bases de datos SQLite esta Apps utiliza. Así que incluso con A2SD el espacio se convertirá en cada vez menos el más aplicaciones de las instalaciones de usuario

scroll top