我在我的Android应用中使用Dailymotion云将视频上传到服务器。 我想在上传时显示进度条,但我不知道如何获得逐字节值来更新进度条。
这是dailymotion cloud api link Dailymotion cloud api link
在互联网上搜索时我发现了这个progress bar in java,但我不知道如何实现这种dailymotion api方法。
我正在使用异步任务来显示进度条 这是用于上传的android代码
try
{
CloudKey cloud = new CloudKey(user_id, api_key);
File f = new File(selectedVideoPath);
String media_id = cloud.mediaCreate(f);
System.out.println(media_id);
Log.d("Testing", "media_id is"+media_id);
}
这里是Dailymotion API的Cloud.class mediacreate(),其中我想显示进度条..任何想法
public String mediaCreate(File f) throws Exception
{
return this.mediaCreate(f, null, null);
}
public String mediaCreate(File f, DCArray assets_names, DCObject meta) throws Exception
{
String upload_url = this.fileUpload();
PostMethod filePost = null;
int status;
try
{
filePost = new PostMethod(upload_url);
Part[] parts = {
new FilePart("file", f)
};
filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));
HttpClient client = new HttpClient();
client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
status = client.executeMethod(filePost);
if (status == HttpStatus.SC_OK)
{
ObjectMapper mapper = new ObjectMapper();
DCObject json_response = DCObject.create(mapper.readValue(filePost.getResponseBodyAsString(), Map.class));
return this.mediaCreate(json_response.pull("url"), assets_names, meta);
}
else
{
throw new DCException("Upload failed.");
}
}
catch (Exception e)
{
throw new DCException("Upload failed: " + e.getMessage());
}
finally
{
if (filePost != null)
{
filePost.releaseConnection();
}
}
}
答案 0 :(得分:1)
我无法使用您提到的DailyMotion类找到任何api支持。
如果您可以编辑该库的源代码,那么您可以尝试扩展MultipartRequestEntity并添加对回调的支持以进行进度,然后只需在mediaCreate方法的DailyMotion代码中插入该新类:
filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));
..用新的替换MultipartRequestEntity,例如。 ExtendedMultipartRequestEntity。
请参阅Tuler和其他人File Upload with Java (with progress bar)的答案,了解如何操作。
通过回调获得更新后,您可以连接进度条。