ProgressDialog をセットアップして、バイトの InputStream の進行状況をユーザーに表示しようとしています。以下の方法で、Android Studio のコンソールにこれを表示できます。
Log.d(TAG, "Progress, transferred " + Integer.toString(100 * bytesTransferred/osSize) + "%");
ただし、bytesTransferred/osSize を ProgressDialog に正しくアタッチする方法がわかりません。スレッドを使用して、以下のコードでプログレス バーがプログレス バーを埋めるのにかかる時間を計ることができます。
update = new ProgressDialog(this);
update.setTitle("Transferring update");
update.setMessage("Please wait updating...");
update.setCanceledOnTouchOutside(false);
update.setProgress(0);
final int totalProgressTime = 100;
final Thread t = new Thread() {
@Override
public void run() {
int jumpTime = 0;
while(jumpTime < totalProgressTime) {
try {
sleep(1800);
jumpTime += 1;
update.setProgress(jumpTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
t.start();
update.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
update.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
update.show();
}
しかし、バイトの実際の転送をユーザーに示す方がはるかに優れています。これは私が取り組まなければならないものです:
final int osSize;
final InputStream inputStream;
osSize = inputStream();
public void onProgress(int bytesTransferred) {
Log.d(TAG, "Progress, transferred " + Integer.toString(100 * bytesTransferred/osSize) + "%");
}
事前に感謝します。