Le forum a été mis à jour! (lire la suite...)

Archived

This topic is now archived and is closed to further replies.

kom

Expansion File

6 posts in this topic

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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Personne ne possède de code pour réaliser cela ? Je dois vraiment implémenter cela pour pouvoir publier mon application.

Share this post


Link to post
Share on other sites