Aller au contenu

Expansion File


kom

Recommended Posts

Bonjour,

J'essaie d'intégrer un Expansion File à mon application qui à la base pèse 90mo. J'ai essayé de lire le guide sur le site d'Android Developers, mais certains points restent assez flou et il n'existe que très peu de tutoriels la dessus.

Dans mon application, j'ai séparé mes images dans un fichier zip que j'ai déplacé sur la mémoire du téléphone dans le répertoire /storage/emulated/0/Android/data/com.<lenomdemonpackage>.<lenomdemonapp>/ avec le nom patch.1.<lenomdemonpackage>.<lenomdemonapp>.zip, même si pour le moment, ceci n'a pas vraiment d'importance.

Pour le moment ce que j'aimerais essayer de faire, c'est tout simplement d'utiliser les images qui sont à l'intérieur de mon .zip dans mon code.

Avant d'archiver mes images, je les utilisait ainsi :

public static int[] ma_liste = {
R.drawable.1, R.drawable.2,R.drawable.3
};

Ma question est la suivante, comment puis-je utiliser les images contenues dans mon zip au fur et à mesure de mon application ? dois-je dézipper entièrement le fichier avant de l'utiliser ? Comment les réutiliser en tant que drawable dans mon Array de int ?

Merci pour les infos.

Lien vers le commentaire
Partager sur d’autres sites

Un Expansion File est un simple fichier (typiquement un .zip) qui contient des données qui sont propres à ton application, dans un format que tu gères toi-même: Android n'a aucune connaissance des données qui y sont stockées.

Ce qui veut dire que c'est à toi d'aller chercher les données qui sont dans cet Expansion File, pour pouvoir les utiliser dans ton application ensuite.

Lien vers le commentaire
Partager sur d’autres sites

Oui je comprends, mais je ne saisis pas vraiment comment utiliser les données stockées dans mon zip.

Si dans mon exemple je remplace un R.drawable.x par un expansionFile.getInputStream(image.png), cela ne fonctionne pas, il m'indique que le type InputStream ne peut être converti en int.

Lien vers le commentaire
Partager sur d’autres sites

Le R.drawable.x est un int, car c'est un identifiant, qui permet à Android, à partir de cette valeur, d'aller chercher dans les ressources de ton application le drawable qui correspond.

Avec un Expansion File, tu ne peux pas utiliser les mêmes API, puisque Android ne connait pas le contenu de celui-ci. Il va falloir que tu construise toi-même le Drawable, à partir ici de l'InputStream, pour pouvoir le fournir à Android via la méthode adéquate ensuite. Selon ton application, cela peut nécessiter plus ou moins de modifications.

Lien vers le commentaire
Partager sur d’autres sites

Je suis assez perdu dans l'utilisation de l'Expansion File, existe t-il un Project sample ou quelque chose de la sorte que l'on peut reprendre et adapter à un projet ? Je m'embrouille complètement dans le storage data, le getExpansionFile, le getInputStream, les Drawable.createFromStream et autres fonctions utilisées uniquement pour la récupération d'une image.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...