5.android downloading file by showing progress bar

Upload: riky-noerdjaman

Post on 30-Oct-2015

404 views

Category:

Documents


0 download

TRANSCRIPT

  • Request TutorialName:Email:

    Request:

    Android Downloading File by Showing Progress Bar http://www.androidhive.info/2012/04/android-downloading-file-by-show...

    1 dari 14 5/6/2013 10:34 PM

  • Advertise Here

    Advertise Here

    HomeDownloads

    All Tutorials

    Tweet 220

    603

    Android Downloading File by Showing Progress Bar 0 Comments

    Tweet 8

    Delicious

    StumbleUpon5

    When our application does a task that takes a considerable amount of time, it is common sense to show the

    Like 6.6k

    Like 35

    Android Downloading File by Showing Progress Bar http://www.androidhive.info/2012/04/android-downloading-file-by-show...

    2 dari 14 5/6/2013 10:34 PM

  • progress of the task to the user.This is a good User Experience practice. In this tutorial i will be discussing the implementation of a process-progress dialog.

    As an example, i am displaying a progress bar that runs while the app downloads an image from the web. Andonce the image is downloadedcompletely i am showing the image in a image view. You could modify this example and try it with any file typeyou may wish. That could be fun!

    Creating new Project

    1. Create a new project and fill all the details. File New Android Project2. Open your main.xml are create a button to show download progress bar. Also define a ImageView to showdownloaded image. Paste the following code in your main.xml

    main.xml

  • 3. Now in your main activity class import necessary classes and buttons. I am starting a new asynctask todownload the file after clicking on show progress bar button.

    4. Progress Dialog can be shown using ProgressDialog class. It is a subclass of normal AlertDialog class. So addan alert method in your main activity class.

    android:layout_height="wrap_content"/>

    public class AndroidDownloadFileByProgressBarActivity extends Activity { // button to show progress dialog Button btnShowProgress // Progress Dialog private ProgressDialog pDialog; // Progress dialog type (0 - for Horizontal progress bar) public static final int progress_bar_type = 0; // File url to download private static String file_url = "http://api.androidhive.info/progressdialog/hive.jpg @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // show progress bar button btnShowProgress = (Button) findViewById(R.id.btnProgressBar); // Image view to show image after downloading my_image = (ImageView) findViewById(R.id.my_image); /** * Show Progress bar click event * */ btnShowProgress.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // starting new Async Task new DownloadFileFromURL().execute(file_url); } }); }

    /** * Showing Dialog * */@Overrideprotected Dialog onCreateDialog(int id) {

    Android Downloading File by Showing Progress Bar http://www.androidhive.info/2012/04/android-downloading-file-by-show...

    4 dari 14 5/6/2013 10:34 PM

  • 5. Now we need to add our Async Background thread to download file from url. In your main activity add aasynctask class and name it as DownloadFileFromURL(). After downloading image from the web i am readingthe downloaded image from the sdcard and displaying in a imageview.

    switch (id) { case progress_bar_type: pDialog = new ProgressDialog(this); pDialog.setMessage("Downloading file. Please wait..."); pDialog.setIndeterminate(false); pDialog.setMax(100); pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pDialog.setCancelable(true); pDialog.show(); return pDialog; default: return null; }}

    /** * Background Async Task to download file * */class DownloadFileFromURL extends AsyncTask { /** * Before starting background thread * Show Progress Bar Dialog * */ @Override protected void onPreExecute() { super.onPreExecute(); showDialog(progress_bar_type); } /** * Downloading file in background thread * */ @Override protected String doInBackground(String... f_url) { int count; try { URL url = new URL(f_url[0]); URLConnection conection = url.openConnection(); conection.connect(); // getting file length int lenghtOfFile = conection.getContentLength(); // input stream to read file - with 8k buffer InputStream input = new BufferedInputStream(url.openStream(), 8192); // Output stream to write file OutputStream output = new FileOutputStream("/sdcard/downloadedfile.jpg" byte data[] = new byte[1024];

    Android Downloading File by Showing Progress Bar http://www.androidhive.info/2012/04/android-downloading-file-by-show...

    5 dari 14 5/6/2013 10:34 PM

  • 6. Open your AndroidManifest.xml file and add internet connect permission and writing to sdcardpermission.

    long total = 0; while ((count = input.read(data)) != -1) { total += count; // publishing the progress.... // After this onProgressUpdate will be called publishProgress(""+(int)((total*100)/lenghtOfFile)); // writing data to file output.write(data, 0, count); } // flushing output output.flush(); // closing streams output.close(); input.close(); } catch (Exception e) { Log.e("Error: ", e.getMessage()); } return null; } /** * Updating progress bar * */ protected void onProgressUpdate(String... progress) { // setting progress percentage pDialog.setProgress(Integer.parseInt(progress[0])); } /** * After completing background task * Dismiss the progress dialog * **/ @Override protected void onPostExecute(String file_url) { // dismiss the dialog after the file was downloaded dismissDialog(progress_bar_type); // Displaying downloaded image into image view // Reading image path from sdcard String imagePath = Environment.getExternalStorageDirectory().toString() + "/downloadedfile.jp // setting downloaded into image view my_image.setImageDrawable(Drawable.createFromPath(imagePath)); } }

    Android Downloading File by Showing Progress Bar http://www.androidhive.info/2012/04/android-downloading-file-by-show...

    6 dari 14 5/6/2013 10:34 PM

  • 7. Run your Application and click on show progress bar button to see your progress bar. You can see thedownloaded image in imageView once it is downloaded.

    AndroidManifest.xml

    Android Downloading File by Showing Progress Bar http://www.androidhive.info/2012/04/android-downloading-file-by-show...

    7 dari 14 5/6/2013 10:34 PM

  • Final Code

    package com.example.androidhive; import java.io.BufferedInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.net.URL;import java.net.URLConnection; import android.app.Activity;import android.app.Dialog;import android.app.ProgressDialog;import android.graphics.drawable.Drawable;import android.os.AsyncTask;import android.os.Bundle;import android.os.Environment;import android.util.Log;import android.view.View;

    Android Downloading File by Showing Progress Bar http://www.androidhive.info/2012/04/android-downloading-file-by-show...

    8 dari 14 5/6/2013 10:34 PM

  • import android.widget.Button;import android.widget.ImageView; public class AndroidDownloadFileByProgressBarActivity extends Activity { // button to show progress dialog Button btnShowProgress; // Progress Dialog private ProgressDialog pDialog; ImageView my_image; // Progress dialog type (0 - for Horizontal progress bar) public static final int progress_bar_type = 0; // File url to download private static String file_url = "http://api.androidhive.info/progressdialog/hive.jpg @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // show progress bar button btnShowProgress = (Button) findViewById(R.id.btnProgressBar); // Image view to show image after downloading my_image = (ImageView) findViewById(R.id.my_image); /** * Show Progress bar click event * */ btnShowProgress.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // starting new Async Task new DownloadFileFromURL().execute(file_url); } }); } /** * Showing Dialog * */ @Override protected Dialog onCreateDialog(int id) { switch (id) { case progress_bar_type: // we set this to 0 pDialog = new ProgressDialog(this); pDialog.setMessage("Downloading file. Please wait..."); pDialog.setIndeterminate(false); pDialog.setMax(100); pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pDialog.setCancelable(true); pDialog.show(); return pDialog; default: return null;

    Android Downloading File by Showing Progress Bar http://www.androidhive.info/2012/04/android-downloading-file-by-show...

    9 dari 14 5/6/2013 10:34 PM

  • } } /** * Background Async Task to download file * */ class DownloadFileFromURL extends AsyncTask { /** * Before starting background thread * Show Progress Bar Dialog * */ @Override protected void onPreExecute() { super.onPreExecute(); showDialog(progress_bar_type); } /** * Downloading file in background thread * */ @Override protected String doInBackground(String... f_url) { int count; try { URL url = new URL(f_url[0]); URLConnection conection = url.openConnection(); conection.connect(); // this will be useful so that you can show a tipical 0-100% progress bar int lenghtOfFile = conection.getContentLength(); // download the file InputStream input = new BufferedInputStream(url.openStream(), 8192); // Output stream OutputStream output = new FileOutputStream("/sdcard/downloadedfile.jpg" byte data[] = new byte[1024]; long total = 0; while ((count = input.read(data)) != -1) { total += count; // publishing the progress.... // After this onProgressUpdate will be called publishProgress(""+(int)((total*100)/lenghtOfFile)); // writing data to file output.write(data, 0, count); } // flushing output output.flush(); // closing streams output.close();

    Android Downloading File by Showing Progress Bar http://www.androidhive.info/2012/04/android-downloading-file-by-show...

    10 dari 14 5/6/2013 10:34 PM

  • 6 0

    input.close(); } catch (Exception e) { Log.e("Error: ", e.getMessage()); } return null; } /** * Updating progress bar * */ protected void onProgressUpdate(String... progress) { // setting progress percentage pDialog.setProgress(Integer.parseInt(progress[0])); } /** * After completing background task * Dismiss the progress dialog * **/ @Override protected void onPostExecute(String file_url) { // dismiss the dialog after the file was downloaded dismissDialog(progress_bar_type); // Displaying downloaded image into image view // Reading image path from sdcard String imagePath = Environment.getExternalStorageDirectory().toString() + // setting downloaded into image view my_image.setImageDrawable(Drawable.createFromPath(imagePath)); } }}

    Android Downloading File by Showing Progress Bar http://www.androidhive.info/2012/04/android-downloading-file-by-show...

    11 dari 14 5/6/2013 10:34 PM

  • 41 comments

    Best Community # Share

    Chris I have a android gps app that well bt when i load it on a blackberry 10 device it doesaccess gps. What is the cause of it

    3

    Kailash Ravi Tamada

    Can you help me to complete my task..??

    It has RSS feed data from a website. It has 55 items in it. Each item has an image url.

    Your task is toparse the xml file and extract the image url of each item.Download each image and write a single bitmap in to a cache fileName the cache file with the url of the imageOn the UI part, show a download button. On clicking it, downloads should begin.While downloads are in progress show an indeterminate progress bar.When downloads are complete show a "SHOW IMAGES" button.On clicking this button, display the downloaded images in a 'Grid Layout'.

    can you just mail me the code [email protected]

    2

    Txarito How much?

    2

    StillBroke Jones I will get the best coders on Stackoverflow to do each component of this then linkit all together with spaghetti code. my price $75

    Chris I have an android gps app that work well on android bt when i load it on a blackberry 10device it doesnot access gps. What is the cause of it

    1

    Roneykakkanatt Learn ANDROID from the very beginning

    10

    Android Downloading File by Showing Progress Bar http://www.androidhive.info/2012/04/android-downloading-file-by-show...

    12 dari 14 5/6/2013 10:34 PM

  • Ravi Tamada

    Most ViewedTop Downloads

    Android SQLite Database Tutorial - 346,745 viewsAndroid Custom ListView with Image and Text - 286,356 viewsAndroid JSON Parsing Tutorial - 252,749 viewsHow to connect Android with PHP, MySQL - 233,623 viewsAndroid Tab Layout Tutorial - 203,943 views

    AndroidHive

    Like

    6,611 people like AndroidHive.

    Android Downloading File by Showing Progress Bar http://www.androidhive.info/2012/04/android-downloading-file-by-show...

    13 dari 14 5/6/2013 10:34 PM

  • Android Login and Registration with PHP, MySQL and SQLite - 202,443 viewsAndroid XML Parsing Tutorial - 165,735 viewsAndroid Login and Registration Screen Design - 149,083 viewsAndroid Push Notifications using Google Cloud Messaging (GCM), PHP and MySQL - 143,977 viewsAndroid ListView Tutorial - 138,410 views

    AppsAsyncBeginnerDatabasefacebookGCMGoogleGPSGridIntermediatejsonList ViewMapsMySQLPHPQuick TipssessionsSpinnerSQLiteTab ViewTwitterUIxml

    2011 www.androidhive.info|All Rights Reserved.

    Android Downloading File by Showing Progress Bar http://www.androidhive.info/2012/04/android-downloading-file-by-show...

    14 dari 14 5/6/2013 10:34 PM