【发布时间】:2016-04-11 14:24:23
【问题描述】:
我在将图像上传到Amazon server. 时尝试显示progress bar 一切正常,只是当图像上传到服务器时进度条不可见。这是我迄今为止尝试过的。
My Activity
cameraBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Take the picture for the first time.
photoFileName += RandomStringUtils.randomAlphanumeric(5) + ".jpg";
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, getPhotoFileUri(photoFileName));
if (intent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
}
}
}
});
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
// progressBar.setVisibility(View.VISIBLE);
if (resultCode == RESULT_OK) {
Uri takenPhotoUri = getPhotoFileUri(photoFileName);
Bitmap takenImage = BitmapFactory.decodeFile(takenPhotoUri.getPath());
ByteArrayOutputStream bos = new ByteArrayOutputStream();
takenImage.compress(Bitmap.CompressFormat.JPEG, 50, bos);
try {
AmazonS3Client s3Client = new AmazonS3Client(
new BasicAWSCredentials(MY_ACCESS_KEY_ID, MY_SECRET_KEY));
byte[] contentBytes = bos.toByteArray();
InputStream is = new ByteArrayInputStream(contentBytes);
Long contentLength = Long.valueOf(contentBytes.length);
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentLength(contentLength);
PutObjectRequest putObjectRequest =
new PutObjectRequest(BUCKET_NAME,
photoFileName, is, objectMetadata);
//progressBar.setVisibility(View.VISIBLE);
PutObjectResult result = s3Client.putObject(putObjectRequest);
// progressBar.setVisibility(View.INVISIBLE);
}
这是我到目前为止所做的。在将image 上传到server 时,phone screen 变黑(此时没有任何工作)并在 10 秒后恢复正常。
【问题讨论】:
-
考虑在 AsyncTask 中执行上传部分。你的 Ui 线程可能被阻塞了,这就是你出现黑屏的原因。在 AsynckTask 中有一个名为 onProgressUpdate 的方法可以用于你的需要..评论如果你需要例如
-
嘿@sunilsunny!非常感谢您的建议。照你说的做了,现在效果很好..
-
@sunilsunny 嘿!我得到了进度条,一切正常问题是,一旦捕获图像,它就不会显示在图像视图中,仅在少数三星设备上显示。
-
这张图片的大小是多少..它可能太大了。考虑使用 Picasso、glide 或通用图像加载器来实现此目的。这些库将为您完成所有艰苦的工作.. 询问如果您需要帮助,请提出不同的问题。
标签: java android amazon-web-services amazon-s3