Trong ứng dụng của chúng tôi, tôi tải xuống tệp hình ảnh có mã này. Tôi cần hiển thị tiến trình tải xuống (byte đã tải xuống theo tỷ lệ phần trăm) trên giao diện người dùng. Làm thế nào tôi có thể tải xuống tiến trình trong mã này? Tôi đã tìm kiếm giải pháp, nhưng vẫn không thể tự mình làm được.Tải xuống tiến trình với RxJava, OkHttp và Okio trong Android
Observable<String> downloadObservable = Observable.create(
sub -> {
Request request = new Request.Builder()
.url(media.getMediaUrl())
.build();
Response response = null;
try {
response = http_client.newCall(request).execute();
if (response.isSuccessful()) {
Log.d(TAG, "response.isSuccessful()");
String mimeType = MimeTypeMap.getFileExtensionFromUrl(media.getMediaUrl());
File file = new File(helper.getTmpFolder() + "/" + helper.generateUniqueName() + "test." + mimeType);
BufferedSink sink = Okio.buffer(Okio.sink(file));
sink.writeAll(response.body().source());
sink.close();
sub.onNext(response.toString());
sub.onCompleted();
} else {
sub.onError(new IOException());
}
} catch (IOException e) {
e.printStackTrace();
}
}
);
Subscriber<String> mySubscriber = new Subscriber<String>() {
@Override
public void onNext(String responseString) {
Log.d(TAG, "works: " + responseString);
}
};
downloadObservable
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(mySubscriber);
tìm thấy ví dụ điển hình liên quan đến câu hỏi của tôi http://danosipov.com/?p=678 –