Как я могу показать «загрузка в процессе» в индикаторах выполнения нескольких видео в RecyclerView, когда я возвращаюсь из другого действия? - PullRequest
0 голосов
/ 02 июня 2018

У меня есть ListView, который содержит список видео и нажмите кнопку загрузки видео, которая отображает прогресс загрузки в круговой шкале прогресса.Если я нажму на номер видео для загрузки, то он начнет показывать прогресс.Но когда я нажимаю на другое действие и возвращаюсь к тому же действию, оставшийся прогресс не отображается на индикаторе выполнения и не отображается.

Что я должен сделать, чтобы увидеть оставшийся процесс видео в ListViewна который я нажимал ранее?Я использовал менеджер загрузок, чтобы загрузить видео и показать прогресс на индикаторе выполнения.

Я хочу ту же функциональность, которая используется в WhatsApp;Если щелкнуть видео, оно показывает ход загрузки, а также после повторного посещения страницы.

1 Ответ

0 голосов
/ 12 июня 2018

мы должны сохранить downloadId в локальной базе данных.`DownloadManager manager = (DownloadManager) context.getSystemService (Context.DOWNLOAD_SERVICE);DownloadManager.Request request = new DownloadManager.Request (Uri.parse (strUrl));request.allowScanningByMediaScanner ();request.setTitle (strDownloadFileName);request.setDestinationInExternalPublicDir (Environment.DIRECTORY_DOWNLOADS, strDownloadFileName);request.setNotificationVisibility (DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);long downloadId = manager.enqueue (запрос);

                                databaseHelper.insertProgress(positionItem,downloadId);'

создать функцию для получения прогресса от downloadId `private int getProgressFromDownloadID (long donloadId) {

    DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
    DownloadManager.Query q = new DownloadManager.Query();
    q.setFilterById(donloadId);

    Cursor  cursor = manager.query(q);
    cursor.moveToFirst();
    int bytes_downloaded = cursor.getInt(cursor
            .getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));
    int bytes_total = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));

    if (cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)) == DownloadManager.STATUS_SUCCESSFUL) {

    }

    int dl_progress = (int) ((double)bytes_downloaded / (double)bytes_total * 100f);

    return dl_progress;
}`
...