【问题标题】:Display progress bar while uploading image to Amazon server in Android在Android中将图像上传到亚马逊服务器时显示进度条
【发布时间】: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


【解决方案1】:

用于显示进度条

  private ProgressDialog mProgressDialog;

  private void showProgress() {
    if (isShowProgressDialog) {
        mProgressDialog = Util.getProgressDialog(activity);
    }
}

用于隐藏进度条

 private void dismissProgress() {
    if (isShowProgressDialog) {
        Util.dismissDialog(activity, mProgressDialog);
    }
}

 public static ProgressDialog getProgressDialog(Context c) {
    //ProgressDialog mProgressDialog=new ProgressDialog(c);
    MyCustomProgressDialog mProgressDialog = new MyCustomProgressDialog(c);
    //mProgressDialog.setMessage("Loading...");
    mProgressDialog.setIndeterminate(true);
    mProgressDialog.setCancelable(isCancelable);
    mProgressDialog.show();
    return mProgressDialog;
}

【讨论】:

    猜你喜欢
    • 2017-06-28
    • 2012-07-07
    • 1970-01-01
    • 2017-08-01
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    相关资源
    最近更新 更多