février
2010
Au démarrage d’un projet, j’ai voulu utiliser/simuler une carte SD avec l’émulateur. Je l’aurai parié ! Tout n’a pas fonctionné comme prévu avec le SDK d’Android Heureusement pour nous, la ligne de commande existe.
Dans ce billet je vais donc expliquer comment :
- Créer une carte SD en ligne de commande
- Créer une carte SD sous Eclipse
- Configurer Eclipse
- Ajouter des fichiers
- Lister les fichiers dans une application
> Créer une carte SD en ligne de commande
Ouvrez une ligne de commande Windows. Allez dans le répertoire où vous souhaitez la créer puis utilisez l’outil du SDK mksdcard:
Pour créer un carte sd_card d’1 Go :
> mksdcard 1024M sd_card
Il est inutile de spécifier une extension au nom de la carte.
Puis sous Eclipse: Run > Run configurations > Target
Dans le champ « Additional Emulator Command Line Options »,ajoutez le paramètre :
-sdcard <filepath>/<filename>
On indique ainsi pour chaque projet, s’il nécessite une carte et laquelle.
> Créer une carte SD sous Eclipse
Il est possible de créer une carte SD lors de la création du Android Virtual Device (AVD).
Les données restent persistantes. Si vous relancer l’émulateur, les fichiers seront toujours présents.
Vous pouvez également spécifier un fichier créé avec la commande mksdcard
De cette manière, tous vos projets déployés sur ce même AVD utiliseront cette carte SD. Sinon vous devez créer un AVD par projet et spécifier sur quel AVD vous voulez déployer chacun de vos projets.
Pour cela dans Eclipse: Run > Run configurations > Target et sélectionnez l’AVD
> Ajouter des fichiers
Vous pouvez voir le contenu de la carte SD dans la vue DDMS sous l’onglet File Explorer :
Il est nécessaire que l’émulateur soit lancé.
Pour ajouter des fichiers deux solutions existent mais qu’une fonctionne (c’est la magie de google):
- En ligne de commande, utiliser la commande
adb push <source path> /sdcard/
:
- Sous Eclipse, sélectionnez le répertoire
sdcard
et cliquez sur le bouton de droite à coté des onglets :
Malheureusement, j’obtiens systématiquement le message Failed to push the item(s) dans la console
J’ai quand même un doute sur la prise en compte à chaud de nouveaux fichiers, du moins en ce qui concerne le lecteur mp3…
> Lister les fichiers dans une application
Je vais faire court puisque qu’un très bon tutorial existe http://www.anddev.org/building_an_android_filebrowser_list-based_-t67.html et montre comment lister les fichiers du téléphone dans une ListActivity
Rien de bien sorcier, puisqu’on part d’un objet File
en indiquant la racine du téléphone :
File file = new File("/");
Pour lister les fichiers de la carte SD, on partira de :
File file = new File("/sdcard/");
On prendra soin de vérifier la présence de la carte SD avec file.exist();
qui renvoie vrai si le répertoire ou le fichier existe. On peut prendre également la précaution de s’assurer que notre file
est un bien un répertoire en utilisant file.isDirectory();
.
Enfin n’oublions pas :
file.listFiles();
qui renvoie un tableau de File
présents dans le répertoire.
Pour compiler l’exemple, effectuez les quelques modifications indiquées sur ce post : http://www.anddev.org/viewtopic.php?p=12328#12328
> Ressources
-
http://www.anddev.org/tinytut_-_pull-push_files_from-to_the_emulator_eclipse-t113.html
- http://modmygphone.com/wiki/index.php/Emulating_SD_card
- http://www.anddev.org/building_an_android_filebrowser_list-based_-t67.html