2010-10-20 6 views
2


Je dois écrire une application Android qui téléchargerait des sons provenant d'Internet pour une utilisation ultérieure.
Où devrais-je stocker ces sons? Sqlite est-il une option? Et quelle est la meilleure façon de charger et de lire ces fichiers?
Merci d'avance.Conseils sur le stockage de fichiers Android

+0

En tant qu'utilisateur Android, je vous recommande de stocker les fichiers sur la carte SD de l'utilisateur s'il y en a un disponible. La plupart des téléphones Android ont une quantité de stockage relativement limitée et il est dommage que plus d'applications n'utilisent pas la carte SD. –

+0

True. Je supprime généralement les applications qui utilisent beaucoup d'espace sur le stockage interne, en particulier si leurs paramètres dépassent de loin la taille de l'application d'origine. Mais même avec le stockage des données sur la carte SD et l'installation sur le SD, l'utilisation de la mémoire interne est encore assez importante. J'espère qu'avec les futures versions, il y aura un système plus sophistiqué pour installer complètement tout (y compris la plupart des/data, fichiers * .dex etc sur la carte SD) – Tseng

Répondre

4

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ée pour cette application, sauf si vous envisagez de stocker beaucoup d'informations supplémentaires. Il n'y a également aucune garantie, sauf si vous stockez les fichiers directement dans la base de données en tant que BLOB, que l'utilisateur ne jouera pas avec le système de fichiers entre les exécutions de l'application. Bien que, dans le cas des MP3 et similaires, les informations de type piste/artiste puissent être stockées directement dans le fichier via des étiquettes ID3 au lieu d'utiliser une base de données.

Pour la lecture des fichiers, consultez la documentation Android sur leurs API audio. Il y a une tonne de bonnes informations là-bas, certainement plus que je ne peux répéter ici.

+0

+1 c'est une meilleure réponse que la mienne. –

+0

Merci. Nouveau ici, donc c'est vraiment agréable de voir des commentaires comme ça. – phobos51594

+0

Cela a vraiment aidé, merci @phobos – marcosbeirigo

2

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 phobos51594's answer ce qui est beaucoup plus complète que la mienne.

1

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 dont vous avez besoin pour stocker avec elle? (Comme les titres, les descriptions, etc.)? Sinon, je l'écrirais directement dans le système de fichiers. Fondamentalement, vous pouvez l'enregistrer dans le dossier de données de votre application (où les préférences partagées, et sqlite db sont également stockés). Cependant, je pense personnellement que cela devrait être découragé, car il réduit la memonry disponible sur la partition/data (qui est déjà trop petit sur les téléphones Android.) La plupart des téléphones ont moins de 50 Mo de données (cela signifie: moins de 50 Mo applications, qui ne peuvent être déplacées en partie sur la carte SD)

Si possible, veillez à ce que de telles amendes soient toujours appliquées sur la carte SD, afin de ne pas trop réduire l'espace libre sur la partition de données, même avec la fonction A2SD de Froyo, Les fichiers * .dex (qui se situent souvent entre 10 et 50% de la taille totale d'une application) restent sur la partition de données, tout comme les paramètres et les bases de données sqlite. cette application utilise.Alors même avec A2SD l'espace deviendra de moins en moins le plus d'applications l'utilisateur installe

Questions connexes