2017-01-24 3 views
0

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 enter image description here

+0

den Code, den Sie derzeit haben – Mushirih

Antwort

0

, wenn Sie all Video von Ihrer Karte oder Speichern zeigen mögen Sie Hase android scanning all .mp3 files in SD Card und für aktuelles Video Sie aktuelles Videos zum Speichern von in jedem beliebigen SQL oder gemeinsam genutzte Einstellungsdatei verweisen können Sie Namen von dort bekommen können Wenn Sie fertig sind, entfernen Sie von Satelliten- oder geteilten Präferenz

+0

Post, aber wie Fortschrittsbalken auf Videos nach dem Erzielen von gemeinsamen Präferenz zu zeigen –

Verwandte Themen