Ich lade eine MP3-Datei aus dem Internet herunter und speichere sie im internen Speicher. Der Fortschritt des Downloads wird in einer ProgressDialog
angezeigt. Die ProgressDialog
zeigt den Fortschritt in Prozent an, was in Ordnung ist. Rechts wird der Fortschritt als 1/100 angezeigt .... Ich möchte, dass die aktuelle Größe der heruntergeladenen Datei in MB angezeigt wird/die Gesamtgröße der heruntergeladenen Datei in MB.Datei Download-Fortschritt in MB anzeigen
Wie in der folgenden Abbildung. Der graue Text ist der aktuelle Text, der angezeigt wird. Ich möchte, dass es wie der Text darunter rot angezeigt wird.
Hier ist der aktuelle Code:
public class DownloadSKHindi extends AsyncTask<String, Integer, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(getActivity());
progressDialog.setMessage("Downloading");
progressDialog.setMax(100);
progressDialog.setCancelable(false);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.show();
}
@Override
protected String doInBackground(String... params) {
int count = 0;
try {
url = new URL(skURL[10]);
connection = url.openConnection();
connection.connect();
int lengthOfFile = connection.getContentLength();
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = getActivity().openFileOutput(file.getPath(), Context.MODE_PRIVATE);
byte data[] = new byte[1024];
long total = 0;
while ((count = input.read(data)) != -1) {
total += count;
publishProgress((int) (total * 100/lengthOfFile));
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
progressDialog.setProgress(values[0]);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
progressDialog.dismiss();
}
}
Sie einige Berechnung tun müssen. erste Dateigröße erhalten und dann jedes Prozent in Byte prüfen und konvertiert sie dann MB –
@Devansh Wie Größe zu finden, ** Gesamt ** und ** ** lengthOfFile –
@GowthamanM wie Sie oben sehen können, 'lengthOfFile' erhalten indem ich die Länge der Datei erhalte, mit der ich mich verbinde. Also, welche Datei Sie auch immer mit der AsyncTask herunterladen möchten, verwenden Sie einfach 'connection.getContentLength();' für 'lengthOfFile'. "total" zeigt an, wie viel von der Datei heruntergeladen wurde. Der Code ist schon da für ihn über – Devansh