2011-08-28 3 views
0

Comment exactement est-ce que l'on va à propos d'une chose si simple dans ce cadre magnifiquement compliqué?Android - Stockage de gros fichiers au moment de la compilation

Oui J'ai lu la documentation sur le stockage de données pour Android, environ 54,5 fois. Mais je ne trouve nulle part où la documentation décrit comment vous devriez placer des fichiers sur le stockage externe au moment de la compilation.

Voici ce que je veux faire: Je veux inclure quelques (grands) fichiers audio (10-20mb) dans mon application. Naturellement, je ne veux pas qu'ils soient stockés sur le stockage interne, car ils sont juste trop gros. Donc, les placer dans res/raw n'est pas une option (parce que, si je comprends bien, les choses dans res/raw seront placées dans le stockage interne du téléphone, correct?)

La documentation indique seulement que "si vous voulez stocker des fichiers statiques au moment de la compilation, utilisez res/raw ". Maintenant, si Android est assez intelligent pour placer ces fichiers sur le stockage externe tout seul, je suis toujours reconnaissant .. Mais de toute façon je doute que. Toute aide est appréciée :) (Désolé s'il semble que j'ai une attitude, je viens de passer trop de temps sur quelque chose si simple)

Merci encore :)

MISE À JOUR: Je fini le téléchargement les fichiers de l'application au lieu de les inclure lors de l'installation. Merci pour l'aide les gars! J'ai rencontré un problème en essayant de télécharger via une URL, j'ai passé beaucoup de temps à essayer de le faire fonctionner, et à la fin le problème était parce que je n'avais pas déclaré la permission correcte dans le fichier manifeste android! Donc, à tous ceux qui cherche à télécharger des trucs dans leurs applications, ne pas oublier de définir les autorisations dans le manifeste Android, voici les autorisations dont je avais besoin:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 
<uses-permission android:name="android.permission.INTERNET"></uses-permission> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> 
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> 

Placez ces au-dessus du début de la balise

+0

Quel niveau d'API ciblez-vous? –

+0

API niveau 10 ... – Mnightmare

Répondre

0

Si vos gros fichiers sont dans le fichier APK, ils seront stockés partout où le fichier APK est stocké - cela peut être interne ou externe, et il semble que ce n'est pas ce que vous voulez. L'option la plus probable pour vous semble être de placer les fichiers sur un site Web et lors de la première exécution de votre application, il doit remarquer que les fichiers n'existent pas et les récupérer après l'installation.

+0

Ah, ok ... Merci pour le conseil. Avez-vous une astuce sur la façon de détecter "first-run"? .. Ou devrais-je vérifier grossièrement si le fichier existe à chaque fois? – Mnightmare

+0

merci, voir mon post pour ce que j'ai fini par faire! – Mnightmare

+0

Vous avez déjà résolu cela, mais en réponse à votre question, je vous aurais conseillé de vérifier si le fichier existe à chaque fois - cela vous permet de traiter dans le cas où l'utilisateur a remplacé son stockage externe où une autre méthode (comme en utilisant 'SharedPrefs') ne le ferait pas. – mah

0

comment vous devriez aller de placer des fichiers sur le stockage externe au moment de la compilation.

Je suppose que ce qui précède est une faute de frappe et vous dire installer au moment.

En ce qui concerne vos besoins - il n'est pas possible d'ordonner au gestionnaire d'applications Android de décompresser différentes parties d'un fichier APK à différents endroits au cours de l'installation. En outre, il n'y a aucune garantie qu'un téléchargement de fichier APK ira à la mémoire interne ou externe (où il restera sauf si supprimé).

Et même plus loin, il n'y a aucune garantie que même si un périphérique a un stockage externe, il sera disponible au moment de l'installation ou aura suffisamment d'espace libre.À ce stade, je m'interroge sur les fichiers audio qui ont une taille de 10-20 Mo - soit ils sont très longs (en durée) ou ils sont codés à un débit élevé. Si c'est ce dernier, cela n'a pas beaucoup de sens car la plupart des appareils mobiles ont une reproduction audio assez médiocre (en termes relatifs) .... juste quelques idées à ruminer.

Je pense personnellement que la suggestion de mah de télécharger post-installation peut être une meilleure approche, mais mes commentaires sur la disponibilité du stockage externe sont toujours valables.

+0

ouais, ils sont longs. J'ai réussi à baisser le débit de sorte qu'ils sont à 4-5 mb maintenant ... encore, en inclure quelques-uns et vous êtes déjà sur 20-30 mbs, donc la question est toujours là. :) – Mnightmare

0

Une bonne approche pour résoudre votre problème sur Android est de "ne pas les mettre avec votre application". Il suffit de les télécharger au premier démarrage à partir de votre serveur Web (à l'aide de l'API client HTTP) ou, si ces fichiers sont mis à niveau indépendamment de l'application elle-même, de les préparer en tant que "application" à télécharger via Market.

+0

Merci pour l'astuce API client http, je vais certainement y jeter un coup d'oeil! – Mnightmare

Questions connexes