asynctaskを使用してファイルをダウンロードし、プログレスバーを表示します

クールな男

画像をダウンロードし、プログレスバーを表示して、そのビットマップを返すための次のコードがあります。しかし、ビットマップは常にnullを返します。whileループを削除すると、ビットマップには値がありますが、プログレスバーが表示されません。

@Override
protected Bitmap doInBackground(String... params) {
    bitmap = null;

    try {
        URL url = new URL(params[0]);
        HttpURLConnection connection = (HttpURLConnection) url
                .openConnection();
        connection.setDoInput(true);
        connection.connect();
        int lenghtOfFile = connection.getContentLength();
        InputStream input = connection.getInputStream();
        OutputStream output = new FileOutputStream(Environment
                .getExternalStorageDirectory().toString()
                + "/DCIM/downloadedfile.jpg");

        byte data[] = new byte[1024];

        long total = 0;

        int count;
        while ((count = input.read(data)) != -1) {
            total += count;
            publishProgress((int) ((total * 100) / lenghtOfFile));
            output.write(data, 0, count);

        }

        Bitmap bitmap = BitmapFactory.decodeStream(input);

        return bitmap;

    } catch (IOException e) {

        Log.e("could not  load ", e.getMessage());
        e.printStackTrace();
        return null;
    }

}

protected void onProgressUpdate(Integer... progress) {
    pDialog.setProgress(progress[0]);
}

public void onPostExecute(Bitmap result) {
    pDialog.dismiss();
    listener.onTaskCompleted(result);
}
enter code here
リン・グエン

InputStreamは1回しか読み取ることができません。コードを次のように変更する必要があります:

   while ((count = input.read(data)) != -1) {
        total += count;
        publishProgress((int) ((total * 100) / lenghtOfFile));
        output.write(data, 0, count);

    }

    output.flush();

    String pathName=Environment
            .getExternalStorageDirectory().toString()
            + "/DCIM/downloadedfile.jpg";
    Bitmap bitmap = BitmapFactory.decodeFile(pathName);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

REACT:プログレスバーを使用してAxiosでファイルをダウンロードします

分類Dev

スイングGUIを使用して、ファイルのダウンロード中にプログレスバーを表示する

分類Dev

XHR2 / AJAXを使用してファイルをダウンロードするためのプログレスバーを表示する

分類Dev

プログレスバー付きのApacheIOを使用したJavaダウンロードファイル

分類Dev

JavaScript / jQueryを使用してファイルをダウンロードするためのプログレスバー

分類Dev

[名前を付けて保存]ダイアログを表示しているサーバーからファイルをダウンロードします

分類Dev

Javaはスレッドを使用して複数のファイルをダウンロードします

分類Dev

プラグインプロファイラーを使用してCRM2011プラグインをデバッグすると、「詳細をダウンロードしてプラグインプロファイラーを使用してロードする」という例外メッセージが表示されます。

分類Dev

cURL を使用してファイルをダウンロードしますが、ログインする前に

分類Dev

Bashスクリプト:htmlファイルをダウンロードし、以前のバージョンと比較して、違いを表示します

分類Dev

phpスクリプトを使用してサーバーからファイルをダウンロードして名前を変更します

分類Dev

urlopenを使用してダウンロードするプログレスバー

分類Dev

ファイルプロバイダーを使用してAndroidNougatでダウンロードしたファイルを開きます

分類Dev

Pythonを使用してFTPサーバーからダウンロードしたファイルにタイムスタンプを追加します

分類Dev

共有リンクを使用して、ファイルをクラウドストレージフォルダーにアップロードします

分類Dev

Angularがファイルをロードするときにプログレスバーを表示しますか?

分類Dev

Rを使用して既存のtcltkウィンドウにプログレスバーを表示します

分類Dev

AngularJSを使用してNode.JSサーバーからファイルをダウンロードします

分類Dev

FlaskとJSを使用してサーバーからファイルをダウンロードします

分類Dev

doublesshを使用してサーバーからファイルをダウンロードします

分類Dev

vuejsを使用してPHPサーバーからファイルをダウンロードします

分類Dev

OneDrive SDKを使用してAsyncTaskでファイルをダウンロードすると、NetworkOnMainThreadExceptionがスローされます

分類Dev

Pythonのキーワードを使用してFTPサーバーからログファイルをダウンロードします

分類Dev

リストからファイルをダウンロードして進行状況バーを表示する方法

分類Dev

wpfプログレスバーを使用して複数のファイルをアップロードする

分類Dev

bashスクリプトを使用してftpサーバーから複数のファイルをダウンロードします

分類Dev

FTPサーバーからCSVファイルをダウンロードしてローカルに保存し、アップロードを処理します

分類Dev

JS(Internet Explorer)を使用してプログラムでファイルをダウンロードする方法

分類Dev

C#でSSH.NETを使用して、プレフィックス名で始まるSFTPファイルをダウンロードします。

Related 関連記事

  1. 1

    REACT:プログレスバーを使用してAxiosでファイルをダウンロードします

  2. 2

    スイングGUIを使用して、ファイルのダウンロード中にプログレスバーを表示する

  3. 3

    XHR2 / AJAXを使用してファイルをダウンロードするためのプログレスバーを表示する

  4. 4

    プログレスバー付きのApacheIOを使用したJavaダウンロードファイル

  5. 5

    JavaScript / jQueryを使用してファイルをダウンロードするためのプログレスバー

  6. 6

    [名前を付けて保存]ダイアログを表示しているサーバーからファイルをダウンロードします

  7. 7

    Javaはスレッドを使用して複数のファイルをダウンロードします

  8. 8

    プラグインプロファイラーを使用してCRM2011プラグインをデバッグすると、「詳細をダウンロードしてプラグインプロファイラーを使用してロードする」という例外メッセージが表示されます。

  9. 9

    cURL を使用してファイルをダウンロードしますが、ログインする前に

  10. 10

    Bashスクリプト:htmlファイルをダウンロードし、以前のバージョンと比較して、違いを表示します

  11. 11

    phpスクリプトを使用してサーバーからファイルをダウンロードして名前を変更します

  12. 12

    urlopenを使用してダウンロードするプログレスバー

  13. 13

    ファイルプロバイダーを使用してAndroidNougatでダウンロードしたファイルを開きます

  14. 14

    Pythonを使用してFTPサーバーからダウンロードしたファイルにタイムスタンプを追加します

  15. 15

    共有リンクを使用して、ファイルをクラウドストレージフォルダーにアップロードします

  16. 16

    Angularがファイルをロードするときにプログレスバーを表示しますか?

  17. 17

    Rを使用して既存のtcltkウィンドウにプログレスバーを表示します

  18. 18

    AngularJSを使用してNode.JSサーバーからファイルをダウンロードします

  19. 19

    FlaskとJSを使用してサーバーからファイルをダウンロードします

  20. 20

    doublesshを使用してサーバーからファイルをダウンロードします

  21. 21

    vuejsを使用してPHPサーバーからファイルをダウンロードします

  22. 22

    OneDrive SDKを使用してAsyncTaskでファイルをダウンロードすると、NetworkOnMainThreadExceptionがスローされます

  23. 23

    Pythonのキーワードを使用してFTPサーバーからログファイルをダウンロードします

  24. 24

    リストからファイルをダウンロードして進行状況バーを表示する方法

  25. 25

    wpfプログレスバーを使用して複数のファイルをアップロードする

  26. 26

    bashスクリプトを使用してftpサーバーから複数のファイルをダウンロードします

  27. 27

    FTPサーバーからCSVファイルをダウンロードしてローカルに保存し、アップロードを処理します

  28. 28

    JS(Internet Explorer)を使用してプログラムでファイルをダウンロードする方法

  29. 29

    C#でSSH.NETを使用して、プレフィックス名で始まるSFTPファイルをダウンロードします。

ホットタグ

アーカイブ