gpt4 book ai didi

android - 如何使用 AndroidAnnotations 使用进度条显示大文件的下载进度?

转载 作者:行者123 更新时间:2023-11-29 20:56:49 30 4
gpt4 key购买 nike

我有一个 Android 应用程序,我想下载一个大文件。

REST API 实现是通过 AndroidAnnotations 实现的。我需要使用此 REST 客户端(由 AndroidAnnotations 制作)显示一个大文件下载进度条。

我该怎么做?

问候

最佳答案

你好,回答这个问题已经晚了,但这对仍在使用 Android-annotation 寻找答案的人很有帮助

您可以通过一点点代码操作来检查您的图像进度,这是我创建的

自定义转换器类:-

public class CustomConverter extends FormHttpMessageConverter {

OnProgressListener mOnProgressListener;

public CustomConverter() {
super();

List<HttpMessageConverter<?>> partConverters = new ArrayList<HttpMessageConverter<?>>();
partConverters.add(new ByteArrayHttpMessageConverter());
StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter();
stringHttpMessageConverter.setWriteAcceptCharset(false);
partConverters.add(stringHttpMessageConverter);
partConverters.add(new ProgressResourceHttpMessageConverter());
setPartConverters(partConverters);
}

//public ProgressFormHttpMessageConverter setOnProgressListener(OnProgressListener listener) {//mOnProgressListener = 监听器;//返回这个;//

class ProgressResourceHttpMessageConverter extends ResourceHttpMessageConverter {

@Override
protected void writeInternal(Resource resource, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
InputStream inputStream = resource.getInputStream();
OutputStream outputStream = outputMessage.getBody();

byte[] buffer = new byte[2048];
long contentLength = resource.contentLength();
int byteCount = 0;
int bytesRead = -1;
Log.d("<3 <3 <3", "called");
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
byteCount += bytesRead;
Log.d("<3 <3 <3 ** ", "progress" + String.valueOf((byteCount * 100) / contentLength));
if(mOnProgressListener != null) {
mOnProgressListener.onProgress(resource, byteCount, (int) contentLength);
}
}
outputStream.flush();
}
}

public interface OnProgressListener {
void onProgress(Resource resource, int downloaded, int downloadSize);
}
}

--> 你可以用日志检查你的进度:)

代码使用

-> 你的休息课如下:-

@Rest(rootUrl = CommonUtils.BASE_URL, converters = {ByteArrayHttpMessageConverter.class,
CustomConverter.class, StringHttpMessageConverter.class})

public interface CustomRest extends RestClientErrorHandling {


@Post(pUrlSignUp)
String _SignUp(MultiValueMap<String, Object> multiValueMap);

}

关于android - 如何使用 AndroidAnnotations 使用进度条显示大文件的下载进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27420841/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com