2

AWS SDK を使用して Amazon サーバーに画像をアップロードしています。ここでは、アップロードの進行状況で進行状況バーを更新したいと考えています。しかし、転送されているバイト数を取得していません。

これが私のコードです:

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);
                    }

                });

ファイルの名前である最初のログを出力します。しかし、2 番目のログは印刷されません。

4

2 に答える 2

3

コードを確認したところ、アップロードの開始後に進行状況リスナーを設定していることに気付きました。

por.setProgressListener(...);を の前に移動するs3Client.putObject(por);と、アップロードの進行状況が表示されます。

于 2013-02-28T18:50:56.763 に答える
0

こんな感じで使えます。

        @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);
        }
于 2016-10-18T15:00:40.203 に答える