Android aws SDK显示上传进度,不返回字节传输
正在使用AWS软件开发工具包上传图像到亚马逊服务器,在这里我希望上传进度更新我的进度条。但是没有得到正在传输的字节数。Android aws SDK显示上传进度,不返回字节传输
这里是我的代码:
final File image = new File(imagePath);
s3Client.createBucket(Constants.getPictureBucket());
// Content type is determined by file extension.
PutObjectRequest por = new PutObjectRequest(Constants.getPictureBucket(),
obj.stackItem.ItemId + ".jpg", image);
s3Client.putObject(por);
Log.d("UploadTaskScheduler", "Photo Name: " + obj.stackItem.ItemName);
por.setProgressListener(new ProgressListener() {
int total = 0;
@Override
public void progressChanged(ProgressEvent pv) {
total += (int) pv.getBytesTransfered();
Log.d("UploadTaskScheduler", "BytesTransfered: " + total);
}
});
它打印出的第一个日志文件的名称。但第二个日志甚至没有打印。
查看您的代码后,我注意到您在开始上传后设置了进度监听器。
您需要在s3Client.putObject(por);
之前移动por.setProgressListener(...);
,此时您应该看到上传的进度。
真棒!感谢您的帮助..但最后一个问题,如何获得更多的日志在这个意义上,现在我的文件是非常小的100kb,所以日志打印0,80,100。有些文件0,100直接.. – sukarno 2013-03-01 07:39:10
@ sukarno不幸的是目前无法控制您将收到的进度的时间间隔。 – 2013-03-01 16:33:21
你可以这样使用。
@Override
public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {
long _bytesCurrent = bytesCurrent;
long _bytesTotal = bytesTotal;
float percentage = ((float)_bytesCurrent /(float)_bytesTotal * 100);
Log.d("percentage","" +percentage);
progressbar.setProgress(percentage);
}
我帮助维护适用于Android的AWS开发工具包,您能告诉我们您正在使用的SDK版本以及您正在构建的API级别? – 2013-02-28 17:17:52
这里是什么obj。我正在面对类似的问题,同时将图片从android上传到图片路径的aws,而不是图片库中的图片选择器。 – 2014-03-11 06:37:41
嗨,和我使用AWS SDK版本aws-android-sdk-2.1.4将图像上传到亚马逊服务器一样。 aws-android-sdk-2.1.4-s3.debug.jar文件只添加在我的libs文件夹中。并且我收到“BasicAWSCredentials无法解析为某种类型”错误。我无法导入“BasicAWSCredentials”。请帮帮我?。提前致谢。 – Sakthi 2014-11-06 12:13:55