آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل در نمایش درصد پیشرفت هنگام دانلود فایلهایی غیر از عکس و آهنگ

mortex  10 سال پیش  10 سال پیش
0 0

سلام من وقتی از پروژه file downloader استاد استفاده میکنم هنگام دانلود فایل هایی مثل txt یا apk دانلود انجام میشه اما پروگرس بار حرکتی نمیکنه ولی برای فایل های عکس یا آهنگ مشکلی نیست و همه چیز خوب پیش میره

این هم کد:

 public class FileDownloader {

    public static void download(final String downloadPath, final String filepath, final OnProgressDownloadListener listener) {
        Thread thread = new Thread(new Runnable() {

            @Override
            public void run() {
                try {
                    URL url = new URL(downloadPath);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setDoOutput(true);
                    connection.connect();

                    final int fileSize = connection.getContentLength();

                    File file = new File(filepath);
                    if (file.exists()) {
                        file.delete();
                    }

                    FileOutputStream outputStream = new FileOutputStream(filepath);

                    InputStream inputStream = connection.getInputStream();
                    byte[] buffer = new byte[G.DOWNLOAD_BUFFER_SIZE];
                    int len = 0;
                    int downloadedSize = 0;
                    while ((len = inputStream.read(buffer)) > 0) {
                        outputStream.write(buffer, 0, len);
                        downloadedSize += len;

                        final float downloadPercent = 100.0f * (float) downloadedSize / fileSize;
                        if (listener != null) {

                            final int finalDownloadedSize = downloadedSize;
                            G.HANDLER.post(new Runnable() {

                                @Override
                                public void run() {
                                    listener.onProgressDownload((int) downloadPercent, finalDownloadedSize, fileSize);
                                }
                            });
                        }

                    }

                    outputStream.close();
                }
                catch (MalformedURLException e) {
                    e.printStackTrace();
                }
                catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });

        thread.start();
    }
}

OnProgressDownloadListener listener = new OnProgressDownloadListener() { private String convertByteToMB(int byteLength) { float sizeInKB = (float) byteLength / 1024; float sizeInMB = (float) sizeInKB / 1024; return String.format("%.1fMB", sizeInMB); } @Override public void onProgressDownload(int percent, int downloadedSize, int fileSize) { prgDownload.setProgress(percent); txtDownload.setText(percent + "% " + convertByteToMB(downloadedSize) + "/" + convertByteToMB(fileSize)); if (percent >= 100) { txtDownload.setText("Download Complete"); } } }; FileDownloader.download(filepath, G.DIR_APP + "/" + filename, listener);
+2 0
لینک (10 سال پیش)
0 0
بسیار ممنون محمد حسین جان با روش شما مشکلم حل شد (10 سال پیش)
+1 0
خواهش میکنم ولی لطفا برای تشکر فقط روی دکمه مربوطه کلیک کنید :) (10 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
Criss  10 سال پیش
0 0

این قسمت از کد رو اجرا نکنید <

 privateString convertByteToMB(int byteLength){
float sizeInKB =(float) byteLength /1024;
float sizeInMB =(float) sizeInKB /1024;
returnString.format("%.1fMB", sizeInMB);
}

و مستقیما خود downloadedSize و fileSize رو setText کنید

لینک این تاپیک رو هم توی سوالتون اضافه کنید < که بچه ها بدونند این سوال < ادامه سوال قبلی تون هست <

https://answers.uncox.com/android/question/11364

 

//ویرایش <

با توجه به لینکی که محمد حسین بالا گذاشت < این مشکل از جایی دیگه آب میخوره < و به این چیزی که من گفتم اصلا ربط نداره


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .