2013-06-15 6 views
2

J'ai fait une méthode de téléchargement qui fonctionne bien. Il faut String url et retourne le fichier téléchargé InputStream qui obtient traité par XMLPullParser. Maintenant, je veux ajouter une barre de progression au téléchargement. J'ai compris que je peux en quelque sorte utiliser getContentLength() sur HttpURLConnection mais je ne sais pas comment calculer la barre de progression après cela.Android télécharger l'url calculer les progrès?

Ceci est mon code:

public static InputStream downloadUrl(String urlString) throws IOException { 
    URL url = new URL(urlString); 
    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
    conn.setReadTimeout(15000); 
    conn.setConnectTimeout(25000); 
    conn.setRequestMethod("GET"); 
    conn.setDoInput(true); 
    conn.setUseCaches(true); 
    conn.setRequestProperty("Content-Type", "application/xml; charset=utf-8"); 
    conn.setRequestProperty("Accept", "application/xml"); 
    conn.connect(); 
    int size = conn.getContentLength(); 
    InputStream stream = conn.getInputStream(); 

      //calculate the progress 

    return stream;  
} 

Merci!

+0

Veuillez utiliser la recherche avant de poster des questions auxquelles vous avez déjà répondu. [Ici vous allez] (http://stackoverflow.com/questions/3028306/download-a-file-with-android-and-showing-the-progress-in-a-progressdialog) – cwin

+0

J'ai vu ceux-ci mais non de En fait, ils retournent un InputStream après le téléchargement dont mon analyseur a besoin. Ou ai-je manqué quelque chose? – TutenStain

Répondre

1

Si vous avez besoin d'analyser le contenu par la suite, vous avez (au moins) deux options:

  • -mailez de la position actuelle dans le flux, comme suggéré dans that Google groups answer. Vous avez alors un progrès précis car il représente à la fois l'analyse et le téléchargement. Téléchargez le flux vers un fichier temporaire (et montrez la progression pour cela), puis vous passez un FileInputStream à votre analyseur (et montrez plus de progrès si nécessaire, mais cela devrait être rapide par rapport au téléchargement, vous pourriez envisager téléchargement comme 90% de la progression et analyse comme les 10% restants par exemple).

Questions connexes