package Ġcom . dew . ai h ua . download . background Ċ Ċ import Ġandroid . util . Log Ċ import Ġjava . io . Buffered InputStream Ċ import Ġjava . io . Random Access File Ċ import Ġjava . net . Http URLConnection Ċ import Ġjava . net . URL Ċ Ċ /** Ċ Ġ* Ġ ĠCreated Ġby ĠEd ward Ġon Ġ 3 / 2 / 2 0 1 9 . Ċ Ġ*/ ĊĊ Ċ class ĠDownload Runnable Fallback ( private Ġval Ġmission Control : ĠMis sion Control ) Ġ: ĠRunnable Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Download Fallback Ġrun () Ġcalled , Ġfile Ġlocated : Ġ${ mission Control . mission . location }/${ mission Control . mission . name }, ĠThread Ġname : Ġ${ Thread . currentThread (). name }" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠURL ( mission Control . mission . url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconn Ġ= Ġurl . open Connection () Ġas ĠHttp URLConnection ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( conn . response Code Ġ!= Ġ 2 0 0 Ġ&& Ġconn . response Code Ġ!= Ġ 2 0 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Error ( Mission Control . ERROR _ SERVER _ UNSUPPORTED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠRandom Access File ("${ mission Control . mission . location }/${ mission Control . mission . name }", Ġ" rw ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . seek ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffered InputStream Ġ= ĠBuffered InputStream ( conn . inputStream ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuf Ġ= ĠByteArray ( 5 1 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlen Ġ= Ġbuffered InputStream . read ( buf , Ġ 0 , Ġ 5 1 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( len Ġ!= Ġ- 1 Ġ&& Ġmission Control . running ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . write ( buf , Ġ 0 , Ġlen ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Progress ( len . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlen Ġ= Ġbuffered InputStream . read ( buf , Ġ 0 , Ġ 5 1 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Thread . inter rupted ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffered InputStream . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Error ( Mission Control . ERROR _ UNKNOWN ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( mission Control . err Code Ġ== Ġ- 1 Ġ&& Ġmission Control . running ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Finished () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnotify Progress ( len : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( mission Control ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmission Control . notify Progress ( len ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnotify Error ( err : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( mission Control ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmission Control . notify Error ( err ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmission Control . pause () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnotify Finished () Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( mission Control ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmission Control . notify Finished () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠDownload Runnable Fallback :: class . java . simple Name ĊĠĠĠ Ġ} Ċ } Ċ