Hy. Ich entwickle eine Android-Anwendung, wo ich Videos vom Server herunterlade. Ich habe kein Problem, mehrere Videos gleichzeitig herunterzuladen und sie in SD-Karte zu speichern. Ich verwende die DownloadManager-Klasse zum Herunterladen. Ich kann ein Download-Symbol in der Statusleiste sehen und den Fortschritt im Benachrichtigungsbereich herunterladen und es wird vom Download Manager selbst verwaltet. Ich habe einen separaten Tabnamen Downloads, wo ich eine Listenansicht verwende, um zuvor heruntergeladene Videos anzuzeigen, aber jetzt muss ich auch die aktuell herunterladenden Videos mit Fortschrittsbalken anzeigen. Meine Probleme sind 1 - Wie bekomme ich die Videos, die gerade heruntergeladen werden, in listview zu zeigen 2 - Wie man Fortschrittsbalken für alle Videos zu pflegen.Herunterladen mehrerer Videos mit Fortschrittsbalken
Dies ist mein aktueller Code
String urlDownload = "https://dl.dropbox.com/s/ex4clsfmiu142dy/test.zip?token_hash=AAGD-XcBL8C3flflkmxjbzdr7_2W_i6CZ_3rM5zQpUCYaw&dl=1";
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(urlDownload));
request.setDescription("Testando");
request.setTitle("Download");
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "teste.zip");
final DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
final long downloadId = manager.enqueue(request);
final ProgressBar mProgressBar = (ProgressBar) findViewById(R.id.progressBar1);
new Thread(new Runnable() {
@Override
public void run() {
boolean downloading = true;
while (downloading) {
DownloadManager.Query q = new DownloadManager.Query();
q.setFilterById(downloadId);
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) {
downloading = false;
}
final int dl_progress = (int) ((double)bytes_downloaded/(double)bytes_total * 100f);
runOnUiThread(new Runnable() {
@Override
public void run() {
mProgressBar.setProgress((int) dl_progress);
}
});
Log.d(Constants.MAIN_VIEW_ACTIVITY, statusMessage(cursor));
cursor.close();
}
}
}).start();
Ein Bild angehängt ist, zu zeigen, was ich erreichen will. Jede Hilfe wird geschätzt. Dank
den Code, den Sie derzeit haben – Mushirih