@ file : Suppress (" DE PREC ATION ") Ċ Ċ package Ġcom . dev . anz alone . luc a . fac el and marks . utils Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Progress Dialog Ċ import Ġandroid . os . AsyncTask Ċ import Ġandroid . os . Looper Ċ import Ġandroid . util . Log Ċ import Ġjava . io . Buffered InputStream Ċ import Ġjava . io . File Ċ import Ġjava . io . File OutputStream Ċ import Ġjava . net . URL Ċ Ċ /** Ċ Ġ* ĠClass Ġused Ġto Ġdownload Ġfiles Ċ Ġ*/ Ċ class ĠDown loader ( activity : ĠActivity , Ġtitle : ĠString Ġ= Ġ" Downloading Ġfile .. ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdestination : ĠFile , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠonError : Ġ( File ) Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠonSuccess : Ġ( File ) Ġ-> ĠUnit Ġ= Ġ{}) Ċ { ĊĠĠĠ Ġprivate Ġval Ġprogress Dialog : ĠProgress Dialog Ġ= ĠProgress Dialog ( activity ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġprogress Dialog . set Progress Style ( Progress Dialog . STYLE _ HORIZONTAL ) ĊĠĠĠĠĠĠĠ Ġprogress Dialog . set Cancel able ( false ) ĊĠĠĠĠĠĠĠ Ġprogress Dialog . setTitle ( title ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart ( url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTask (). execute ( url ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠAsync Task Ġ*/ ĊĠĠĠ Ġ@ Suppress Lint (" Static Field Leak ") ĊĠĠĠ Ġinner Ġclass ĠTask Ġ: ĠAsync Task < String , ĠInt , ĠFile >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Pre Execute () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Pre Execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġurls : ĠString ): ĠFile Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠURL ( urls [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= Ġurl . open Connection () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Length Ġ= Ġconnection . content Length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreader Ġ= ĠBuffered InputStream ( url . open Stream (), Ġbuffer _ size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwriter Ġ= ĠFileOutputStream ( destination ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ Ġ= ĠByteArray ( buffer _ size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġreader . read ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtotal Ġ= Ġcount ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( tag , Ġ" download Ġstarted Ġfor : Ġ${ destination . name }") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( count Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Ġ+= Ġcount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublish Progress ( total Ġ* Ġ 1 0 0 Ġ/ Ġfile Length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( data , Ġ 0 , Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ= Ġreader . read ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . flush () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreader . close () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( tag , Ġ" File Ġdownloaded Ġat Ġ${ destination . path }") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL ooper . prepare () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess ( destination ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( tag , Ġ" Error Ġoccurred ! Ġ--> Ġ$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL ooper . prepare () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError ( destination ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdestination ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Update ( values : ĠArray < Int >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Progress Update (* values ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog . progress Ġ= Ġvalues [ 0 ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Execute ( result : ĠFile ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog . dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġbuffer _ size Ġ= Ġ 4 0 9 6 ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġtag Ġ= Ġ" Downloader " ĊĠĠĠ Ġ} Ċ }