http接続を使用してファイルをダウンロードするプロジェクトに取り組んでいます。ダウンロード中に進行状況バーのステータスを示す水平方向の進行状況バーを表示します。私の関数は次のようになります。
.......
try {
InputStream myInput = urlconnect.getInputStream();
BufferedInputStream buffinput = new BufferedInputStream(myInput);
ByteArrayBuffer baf = new ByteArrayBuffer(capacity);
int current = 0;
while((current = buffinput.read()) != -1) {
baf.append((byte) current);
}
File outputfile = new File(createRepertory(app, 0), Filename);
FileOutputStream myOutPut = new FileOutputStream(outputfile);
myOutPut.write(baf.toByteArray());
...
}
ファイルのサイズを事前に知っているので、ダウンロード中に(whileブロックで)サイズを取得する必要があります。したがって、プログレスバーのステータスを判別できます。
progressBarStatus = ((int) downloadFileHttp(url, app) * 100)/sizefile;
long downloadFileHttp(..、..)は私の関数の名前です。
私はすでにoutputfile.lengthを使用してそれを取得しようとしていますが、彼の値は「1」です。おそらく、ダウンロードしようとしているファイルの数です。
それを理解する方法はありますか?
更新1
私はこれを理解することを可能にするスレッドを持っていません。現在、中間値なしで0と100%のみを表示する水平プログレスバーがあります。別のアプローチを考えます。Wi-Fiの速度とファイルのサイズがわかれば、ダウンロードの時間を決定できます。
Wifi接続の情報とダウンロードするファイルのサイズを取得できることを知っています。
誰かがすでに働いているか、それにスレッドを持っていますか?