インターネットからmp3ファイルをダウンロードして内部ストレージに保存しています。ダウンロードの進行状況はProgressDialog
です。 ProgressDialog
は、進捗状況をパーセントで表示します。右側に進捗状況を1/100として表示します。ダウンロードしたファイルの現在のサイズをMB /ダウンロードしたファイルの合計サイズをMBで表示します。ファイルを表示するプログレスバー(MB)
次の画像のようになります。灰色のテキストは現在表示されているテキストです。その下のテキストのように赤で表示させたい。
ここでは、現在のコードです:
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();
}
}
:あなたこれを行うことができます。最初にファイルサイズを取得し、各パーセントをバイトでチェックしてからMBに変換します –
@Devansh ** total **と** lengthOfFile **のサイズを調べる方法 –
@GowthamanM上記のように、 'lengthOfFile'が取得されます私が接続していたファイルの長さを取得します。ですから、 'AsyncTask'を使ってダウンロードしようとしているファイルであれば、' lengthOfFile'には 'connection.getContentLength();'を使ってください。 'total'はファイルのどれくらいがダウンロードされたかを示します。コードはすでにそれのためにそこにある – Devansh