Implement Progress Bar for File Download in Android -


i new android development.

i've written following code download video file internet. works fine. want attach progress bar during download process.i tried subclass asynctask , write download code inside doinbackground() method. but, somehow can't figure out.

can please me modify code accomplish that?


package sample.android.download;  import java.io.bufferedinputstream; import java.io.file; import java.io.fileoutputstream; import java.io.ioexception; import java.io.inputstream; import java.net.url; import java.net.urlconnection;  import org.apache.http.util.bytearraybuffer;  import android.app.activity; import android.content.intent; import android.net.uri; import android.os.bundle; import android.os.environment; import android.util.log; import android.widget.textview;  public class downloaddemo extends activity {     private textview tv;     private string videourl = "http://mysite-name.com/videos/videofile_name.mp4";    private string filename = "my_video.mp4";      /** called when activity first created. */    @override    public void oncreate(bundle savedinstancestate) {        super.oncreate(savedinstancestate);        setcontentview(r.layout.main);        tv = (textview) findviewbyid(r.id.textview01);        if(checkexternalmedia()==true) {                downloadfromurl(videourl,filename);                tv.append("\n\ndownload complete!");        }        else {                tv.append("\n\nexternal media not readable/writable");        }    }     /** method check whether external media available , writable. */     private boolean checkexternalmedia(){        boolean mexternalstorageavailable = false;        boolean mexternalstoragewriteable = false;        boolean stat;        string state = environment.getexternalstoragestate();         if (environment.media_mounted.equals(state)) {            // can read , write media            mexternalstorageavailable = mexternalstoragewriteable = true;            stat = true;        }         else if (environment.media_mounted_read_only.equals(state)) {            // can read media            mexternalstorageavailable = true;            mexternalstoragewriteable = false;            stat = false;        } else {            // can't read or write            mexternalstorageavailable = mexternalstoragewriteable = false;            stat = false;        }        tv.append("\n\nexternal media: readable="+mexternalstorageavailable+ "writable="+mexternalstoragewriteable);         return stat;    }     /** method download external file network sd card. */     public void downloadfromurl(string videourl, string filename) {         try {                    file root = android.os.environment.getexternalstoragedirectory();                    tv.append("\nexternal file system root: "+root);                     file dir = new file (root.getabsolutepath() + "/video");                    //dir.mkdirs();                     url url = new url(videourl); //you can write here link                    file file = new file(dir, filename);                     long starttime = system.currenttimemillis();                    log.d("imagemanager", "download begining");                    log.d("imagemanager", "download url:" + url);                    log.d("imagemanager", "downloaded file name:" + filename);                     /* open connection url. */                    urlconnection ucon = url.openconnection();                     /*                     * define inputstreams read urlconnection.                     */                    inputstream = ucon.getinputstream();                    bufferedinputstream bis = new bufferedinputstream(is);                     /*                     * read bytes buffer until there nothing more read(-1).                     */                    bytearraybuffer baf = new bytearraybuffer(5000);                    int current = 0;                    while ((current = bis.read()) != -1) {                       baf.append((byte) current);                    }                      /* convert bytes read string. */                    fileoutputstream fos = new fileoutputstream(file);                    fos.write(baf.tobytearray());                    fos.flush();                    fos.close();                    log.d("imagemanager", "download ready in" + ((system.currenttimemillis() - starttime) / 1000) + " sec");         } catch (ioexception e) {                        log.d("imagemanager", "error: " + e);        }         sendbroadcast(new intent(intent.action_media_mounted, uri.parse("file://"+ environment.getexternalstoragedirectory())));    } } 

check:

http://developer.android.com/guide/topics/ui/dialogs.html

see example on creating progress bar within second thread.


Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -