Question


Je dois écrire une application Android qui télécharger des sons de l'Internet pour une utilisation ultérieure.
Où dois-je stocker ces sons? Est-Sqlite une option? Et quelle est la meilleure façon de charger et de jouer ces fichiers?
Merci à l'avance.

Était-ce utile?

La solution

Je recommande de mettre les fichiers sur la carte SD, le cas échéant. Une chose à noter, cependant, est que vous ne devriez jamais coder en dur un chemin vers la carte SD. Vous voudrez probablement faire quelque chose le long des lignes 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;
}

De là, il est une simple question de transférer toutes les données que vous voulez dans le fichier. Une base de données SQLite serait probablement exagéré pour cette application, à moins que vous prévoyez de stocker beaucoup d'informations supplémentaires. Il n'y a également aucune garantie, à moins que vous stockez les fichiers directement dans la base de données BLOB, que l'utilisateur ne plaisante pas avec le système de fichiers entre les cycles d'application. Bien que, dans le cas de fichiers MP3 et autres informations piste / type artiste peut être stocké directement dans le fichier via les balises ID3 au lieu d'utiliser une base de données.

En ce qui concerne la lecture des fichiers en arrière, consultez la documentation Android sur leurs API audio. Il y a une tonne de grande information là-bas, certainement plus que je ne peux répéter ici.

Autres conseils

Je dirais que le meilleur endroit pour les stocker sous forme de fichiers individuels est sur la carte SD sous votre propre dossier à savoir File("/sdcard/com.example.myapp/sound12345.mp3");


EDIT: S'il vous plaît voir la réponse phobos51594 qui est beaucoup plus complet que le mien.

Il est préférable de les enregistrer directement sur le système de fichiers. Pourquoi voudriez-vous le stocker dans une base de données? y at-il des informations supplémentaires que vous devez stocker avec elle? (titres comme, descriptions, etc.)? Sinon, je l'écrire directement dans le système de fichiers.

En gros, vous pouvez l'enregistrer dans le dossier de données de votre application (où les préférences partagées et sqlite db sont stockées aussi). Cependant, je pense personnellement que cela devrait être découragée, car elle réduit la memonry disponible sur la partition de données / (qui est déjà dérange pas trop petit sur les téléphones Android La plupart des téléphones ont moins de 50 Mo de données (ce qui signifie:. Moins de 50 Mo pour des applications, qui ne peut être partiellement déplacé vers la carte SD).

Vous devriez toujours en sécurité ces amendes sur la carte SD si possible, de sorte que vous ne baissez pas d'espace libre sur la partition de données trop. Même avec la fonction de A2SD de Froyo, pas toutes les données d'une application installée est déplacé sur la carte SD. Les fichiers * de .dex (qui varie souvent entre 10-50% de la taille totale d'une application) reste toujours partition / données. Ainsi, les paramètres ne et bases de données SQLite apps celui-ci utilise. Ainsi, même avec A2SD l'espace deviendra de moins en moins les autres applications les installations de l'utilisateur

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top