亚马逊s3在Android中为Transfer Manager上传进度计算

时间:2014-08-01 11:57:30

标签: java android amazon-s3 amazon

我正在使用高级api进行亚马逊s3上传并获得回调以获得进展但该方法   upload.getprogress()。getPercentageTransferred() 有时给出100以上的百分比。为什么它显示在100以上?是否需要进行任何更改

   BasicAWSCredentials lAwsCredentials = new BasicAWSCredentials(
        Constants.ACCESS_KEY_ID, Constants.SECRET_KEY);
AmazonS3Client s3Client = new AmazonS3Client(lAwsCredentials);

 TransferManager tm = new TransferManager(s3Client);

        File lFile = new File(mFilePath);

        PutObjectRequest putRequest = new PutObjectRequest(mBucketName,
                mKeyName, lFile);
    mUpload = tm.upload(putRequest, new S3ProgressListener() {

    ExecutorService lExecutor = Executors.newFixedThreadPool(1);

            @Override
            public void progressChanged(ProgressEvent arg0) {
                // Log.v(TAG, "Transfer: " + mUpload.getDescription());
                // Log.v(TAG, "  - Percentage: "
                // + mUpload.getProgress().getPercentTransferred());

                double lProgress = mUpload.getProgress()
                        .getPercentTransferred();

                int lProgressInteger = (int) lProgress;



                if (lProgressInteger % 10 == 0) {
                    Log.d(TAG, "File id:" + mLocalFileId
                            + "==== Transfer: " + mUpload.getDescription()
                            + "====Percentage: "
                            + mUpload.getProgress().getPercentTransferred());

                    publishProgress(lProgressInteger);

                }

            }

            @Override
            public void onPersistableTransfer(
                    final PersistableTransfer persistableTransfer) {
                lExecutor.submit(new Runnable() {

                    @Override
                    public void run() {
                        File f = new File(Environment
                                .getExternalStorageDirectory()
                                + "/resumeupload");
                        if (!f.exists())
                            try {
                                f.createNewFile();

                                FileOutputStream fos;

                                fos = new FileOutputStream(f);

                                persistableTransfer.serialize(fos);
                                fos.close();
                            } catch (FileNotFoundException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                    }
                });

            }
        });

0 个答案:

没有答案