Ce cour tutorial va vous expliquer comment utiliser la Carte SD dans vos développements.

Le première chose à savoir est qu’Android voit la carte SD comme un dossier dans l’arborescence Linux. Ce dossier se situe à la racine. Le chemin est donc /sdcard/.

Par défaut, l’émulateur est un téléphone sans carte SD donc la première étape de ce tutorial consiste en la création d’une carte SD.

Pour ce faire, ouvrez une console (sous Windows, démarrer -> exécuter « cmd.exe ») et tapez la commande suivante :

mksdcard -l label 8192M <chemin>/SDCard

Note : Si votre console vous répond que l’exécutable est introuvable, c’est que vos variables d’environnement ne prennent pas en compte le dossier tools du SDK. Soit vous rêglez le problème en suivant le tutorial d’installation, soit vous vous rendez dans le bon dossier pour taper votre ligne de commande (sous Linux il faudra alors la faire précéder de « ./ »).

8192M représente 8Go de données. Cela peut donc prendre du temps. Vous pouvez bien entendu utiliser un autre chiffre. SDCard sera le fichier image de votre carte SD.

L’outil mksdcard ne permet malheureusement pas de remplir l’image de la carte SD avec des fichiers. Nous allons donc utiliser l’émulateur pour cela.

Démarrez l’émulateur à partir de la console avec la ligne suivante :

emulator -sdcard <chemin>/SDCard

L’émulateur devrait démarrer et s’initialiser.

Note : Il peut arriver que l’émulateur refuse de démarrer de cette façon. Dans ce cas, lancez Eclipse, faîtes un nouveau projet Android et exécutez le en prenant bien soin de préciser dans la configuration la ligne de commande. Cette étape sera détaillée peu après dans le tutorial. L’émulateur devrait démarrer

Ouvrez maintenant une autre ligne de commande et utilisez la ligne suivante :

adb push <local> /sdcard/

où local représente le chemin d’un fichier que vous voulez ajoutez à votre carte SD virtuelle. Renouvellez l’opération avec tout les fichiers que vous voulez ajouter.

Votre carte SD est prète. Reste à l’exploiter.

Pour cela, démarrez Eclipse et faîtes un nouveau projet. Vous devrez vous retrouver avec le code suivant :

public class hello extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

Commentez la ligne setContentView(R.layout.main); ou supprimez la. Nous n’en aurons pas besoin.

Créez la méthode suivante :

public void listerSDCard(){

//code

}

Déclarez à l’intérieur de la méthode les variables suivantes :

File rep = new File(« /sdcard »);

String [] liste;

String txt = new String(«  »);

int i;

Nous allons maintenant utiliser la méthode list() de l’objet File qui permet, si l’objet désigne un dossier, de lister tout ce qu’il contient. Rien de très complexe donc :

liste=rep.list();

for(i=0;i<liste.length;i++){

txt = txt + liste[i] + « n »;

}

Le code est extrêmement simple. On fait juste une boucle sur les éléments contenus dans le répertoire et on récupère ça dans la chaine de caractère txt.

Maintenant, on va vouloir l’afficher dans notre application Android. Pour cela on va utiliser le widget TextView :

TextView tv = new TextView(this);

[...]

tv.setText(txt);

setContentView(tv);

Il ne reste plus qu’à appeler la méthode et faire un petit ctrl+maj+O sous Eclipse (remplit les dépendances automatiquement), et vous obtenez le code suivant :

import java.io.File;

import android.app.Activity;

import android.os.Bundle;

import android.widget.TextView;

public class hello extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//setContentView(R.layout.main);

this.listerSDCard();

}

public void listerSDCard(){

File rep = new File(« /sdcard »);

String [] liste;

String txt = new String(«  »);

int i;

TextView tv = new TextView(this);

liste=rep.list();

for(i=0;i<liste.length;i++){

txt = txt + liste[i] + « n »;

}

tv.setText(txt);

setContentView(tv);

}

}

Dont voici le résultat :