IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

téléchargement fichier à partir d'une url


Sujet :

Android

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 66
    Points : 53
    Points
    53
    Par défaut téléchargement fichier à partir d'une url
    Bonjour,

    j'ai de nouveau un souci/interrogation sur le fait de télécharger un fichier sur le net (dans mon cas un MP4) depuis mon application...

    En cherchant et en adaptant le code dans mon cas j'arrive à ce résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    URL u = new URL(mp4);
    		    HttpURLConnection c = (HttpURLConnection) u.openConnection();
    		    c.setRequestMethod("GET");
    		    c.setDoOutput(true);
    		    c.connect();
    		    FileOutputStream f = new FileOutputStream(new File("[root]","video.mp4"));
    		    InputStream in = c.getInputStream();
    			byte[] buffer = new byte[1024];
    		    int len1 = 0;
    		    while ( (len1 = in.read(buffer)) > 0 ) {
    		         f.write(buffer,0, len1);
    		    }
    		    f.close();
    dans ma variable mp4 se trouve l'url du fichier en question et j'aimerai dans un premier temps essayer de le mettre à la racine de la mémoire interne, et il est vrai que je ne sais pas exactement quel est le chemin d'accès à spécifier pour cela... (j'avais lu root sur un forum anglais, mais j'ai beaucoup de mal à trouver des infos sur ce sujet, j'ai essayé diverse choses mais je n'ai jamais l'impression que quoi que ce soit se passe)

    En fait est-ce que mon code vous paraît correct ?
    Et est-ce qu'on peut faire ce genre de manip sur l'emulateur ?

    Merci d'avance pour votre aide !

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 66
    Points : 53
    Points
    53
    Par défaut j'avance un peu... (ou pas)
    Je reposte pour dire que je pense avoir avancé un peu en m'aidant d'un tutorial de téléchargement d'image que j'ai trouvé là : http://www.helloandroid.com/tutorial...rl-your-device

    Malgré tout, ma vidéo semble trop volumineuse (3.5Mo) et j'ai une erreur OutofMemory :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    11-13 11:32:27.030: ERROR/dalvikvm-heap(11918): Out of memory on a 6553616-byte allocation.
    ...
    11-13 11:32:27.050: ERROR/AndroidRuntime(11918): Uncaught handler: thread main exiting due to uncaught exception
    11-13 11:32:27.060: ERROR/AndroidRuntime(11918): java.lang.OutOfMemoryError
    11-13 11:32:27.060: ERROR/AndroidRuntime(11918):     at org.apache.http.util.ByteArrayBuffer.expand(ByteArrayBuffer.java:57)
    11-13 11:32:27.060: ERROR/AndroidRuntime(11918):     at org.apache.http.util.ByteArrayBuffer.append(ByteArrayBuffer.java:84)
    11-13 11:32:27.060: ERROR/AndroidRuntime(11918):     at com.testdownload.TestDownload.onCreate(TestDownload.java:51)
    11-13 11:32:27.060: ERROR/AndroidRuntime(11918):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
    11-13 11:32:27.060: ERROR/AndroidRuntime(11918):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
    11-13 11:32:27.060: ERROR/AndroidRuntime(11918):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
    11-13 11:32:27.060: ERROR/AndroidRuntime(11918):     at android.app.ActivityThread.access$2100(ActivityThread.java:116)
    11-13 11:32:27.060: ERROR/AndroidRuntime(11918):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
    11-13 11:32:27.060: ERROR/AndroidRuntime(11918):     at android.os.Handler.dispatchMessage(Handler.java:99)
    11-13 11:32:27.060: ERROR/AndroidRuntime(11918):     at android.os.Looper.loop(Looper.java:123)
    11-13 11:32:27.060: ERROR/AndroidRuntime(11918):     at android.app.ActivityThread.main(ActivityThread.java:4203)
    11-13 11:32:27.060: ERROR/AndroidRuntime(11918):     at java.lang.reflect.Method.invokeNative(Native Method)
    11-13 11:32:27.060: ERROR/AndroidRuntime(11918):     at java.lang.reflect.Method.invoke(Method.java:521)
    11-13 11:32:27.060: ERROR/AndroidRuntime(11918):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
    11-13 11:32:27.060: ERROR/AndroidRuntime(11918):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
    11-13 11:32:27.060: ERROR/AndroidRuntime(11918):     at dalvik.system.NativeStart.main(Native Method)
    Est-ce que vous pourriez m'éclairer ? Est-ce juste lié à l'émulateur ?
    Y a-t'il possibilité d'augmenter l'espace alloué ?

    Merci d'avance.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 53
    Points : 37
    Points
    37
    Par défaut
    Je n'ai pas forcement de réponse à te donner, mais quelques commentaires :

    * Déjà a moins que ton téléphone (émulateur ?) soit rooté, tu ne peux rien écrire à la racine de la mémoire interne (tu peux écrire uniquement dans /sdcard/ a condition d'avoir ajouter la permission adéquate dans le manifest.

    * La façon dont tu gère ton buffer n'est pas top je pense : il vaudrait mieux utiliser un BufferedOutputStream et ne pas voir ton tableau de 1024octet (tu écrit chaque byte que tu lit directement)
    Cependant ton problème n'a pas l'aire d'être lié à ces problèmes, il faudrait que tu dise a quelle ligne de ton code correspond "TestDownload.java:51".

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 66
    Points : 53
    Points
    53
    Par défaut
    merci pour ta réponse, j'ai réussi à faire ce que je voulais en lisant ce topic : http://www.developpez.net/forums/d94...ement-fichier/

    Par contre comment vais-je faire si l'utilisateur ne possède pas de sdcard du coup ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.3] Obtenir le nom d'un fichier à partir d'une url dynamique
    Par Invité dans le forum Langage
    Réponses: 3
    Dernier message: 19/03/2012, 11h02
  2. [WD14] Récupération de la taille d'un fichier à partir d'une URL
    Par link256 dans le forum WinDev
    Réponses: 4
    Dernier message: 28/01/2010, 16h47
  3. Réponses: 5
    Dernier message: 03/05/2007, 13h44
  4. copie de fichier à partir d'une url
    Par Gibbon dans le forum C#
    Réponses: 4
    Dernier message: 06/02/2007, 14h13
  5. Copier un fichier à partir d'une URL ?
    Par oulahoup dans le forum ASP
    Réponses: 2
    Dernier message: 18/08/2005, 21h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo