Question

Je dois obtenir le temps de téléchargement dans mon application Android, c'est la raison pour laquelle je dois déterminer le temps de début et de fin de dowload pour déterminer la période od téléchargement. J'ai ajouté ces lignes au début et à la fin de doInBackground:

Log.v("Download_INFO","i begin downloading at : "+" "+dt.getHours()+"h "+dt.getMinutes()+"min "
                        +dt.getSeconds()+"sec");

Log.v("Download_INFO","i complete downloading at : "+" "+dt.getHours()+"h "+dt.getMinutes()
                        +"min "+dt.getSeconds()+"sec");

Mais la surprise est que je l'ai eu un peu de temps. Je ne comprends pas la raison pour

est ma méthode de doInBackground:

protected String doInBackground(String... aurl) {
        int count;

        try {
            File vSDCard = null;
            if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
                vSDCard = Environment.getExternalStorageDirectory();
                File vFile = new File(vSDCard.getParent() + "/" + vSDCard.getName() + "/"
                        + "downloadTest.jpg");
                URL url = new URL(aurl[0]);
                URLConnection conexion = url.openConnection();
                conexion.connect();
                int lenghtOfFile = conexion.getContentLength();
                Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile);
                InputStream input = new BufferedInputStream(url.openStream());
                OutputStream output = new FileOutputStream(vFile);
                byte data[] = new byte[1024];
                long total = 0;
                while ((count = input.read(data)) != -1) {
                    total += count;
                    publishProgress("" + (int) ((total * 100) / lenghtOfFile));
                    output.write(data, 0, count);
                }

                Log.v("Download_INFO","i complete downloading at : "+" "+dt.getHours()+"h "+dt.getMinutes()
                        +"min "+dt.getSeconds()+"sec");
                output.flush();
                output.close();
                input.close();
                System.out.println(currentDateTimeString);
            }

        } catch (Exception e) {
            Log.d("ImageManager", "Error: " + e);
        }

        return null;
    }

quel est le problème s'il vous plaît!

Était-ce utile?

La solution

On dirait que vous utilisez le même objet date pour les deux déclarations du journal. Ajouter cette avant votre déclaration de journal « téléchargement complet »:

dt = new Date();

Par ailleurs, toutes ces méthodes (getSeconds, getHours, etc.) Date sont depricated. Vous pouvez obtenir le calendrier simplement en faisant un System.currentTimeMillis () au début du téléchargement et de nouveau à la fin et la soustraction. Ceci est la durée totale en millisecondes que vous pouvez convertir en heures / minutes / secondes si vous voulez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top