package Ġcom . de de . son ime i . module . download Ċ Ċ import Ġandroid . app . Notification Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . app . Service Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Binder Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Environment Ċ import Ġandroid . os . IB inder Ċ import Ġandroid . support . v 4 . app . Notification Compat Ċ import Ġandroid . util . Log Ċ import Ġcom . bump tech . glide . load . engine . Disk Cache Strategy Ċ import Ġcom . de de . son ime i . R Ċ import Ġcom . de de . son ime i . data . Base Song Ċ import Ġcom . de de . son ime i . data . search . Search Song Ċ import Ġcom . de de . son ime i . default Download Path Ċ import Ġcom . de de . son ime i . module . setting . Settings Ċ import Ġcom . de de . son ime i . net . G lide App Ċ import Ġcom . de de . son ime i . util . Image Util Ċ import Ġcom . de de . son ime i . util . extends . isNull Ċ import Ġcom . de de . son ime i . util . extends . notNull Ċ import Ġcom . li ul ish uo . ok download . Download Task Ċ import Ġcom . li ul ish uo . ok download . Ok Download Ċ import Ġcom . li ul ish uo . ok download . Unified Listener Manager Ċ import Ġcom . mp at ric . mp 3 agic . ID 3 v 2 Ċ import Ġcom . mp at ric . mp 3 agic . ID 3 v 2 4 Tag Ċ import Ġcom . mp at ric . mp 3 agic . Mp 3 File Ċ import Ġorg . jetbrains . ank o .* Ċ import Ġjava . io . File Ċ import Ġkotlin . properties . Deleg ates ĊĊ Ċ class ĠDownload Service Ġ: ĠService (), ĠAn ko Logger Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠACTION _ CANCEL _ DOWNLOAD Ġ= Ġ" com . de de . son ime i . DOWNLOAD _ CANCEL " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠACTION _ FIN ISH _ DOWNLOAD Ġ= Ġ" com . de de . son ime i . DOWNLOAD _ FIN ISH " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDOWN LOAD _ NOTIFICATION _ ID Ġ= Ġ 1 0 0 2 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNOT IFY _ DOWNLOAD _ CHANNEL _ ID Ġ= Ġ" download _ channel _ id " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠDownload Binder Ġ: ĠB inder () Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġdownload ( song : ĠBase Song ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( song Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Download Service . download ( song ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdownload ( song : ĠBase Song ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( song . path . isNull ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( R . string . download _ link _ empty ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġwifi Download Ġ= Ġdefault SharedPreferences . getBoolean ( Settings . KEY _ WIFI _ DOWNLOAD , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġif Ġ( wifi Download Ġ&& Ġ! is Wifi Connected ( this )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( R . string . download _ only wifi ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠDownload Task . Builder ( song . path !! , Ġget Download Path ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Filename ( song . getName () Ġ+ Ġ". mp 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Min Interval Millis Callback Process ( 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pre Allocate Length ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAuto Callback To UIT hread ( true ) ĊĠĠĠĠĠĠĠ Ġbuilder . set Wifi Required ( wifi Download ) ĊĠĠĠĠĠĠĠ Ġbuilder . add Header (" User - Agent ", Ġ" Mozilla / 5 . 0 Ġ( Mac int osh ; ĠIntel ĠMac ĠOS ĠX Ġ 1 0 _ 1 4 _ 0 ) ĠAppleWebKit / 5 3 7 . 3 6 Ġ( KHTML , Ġlike ĠGecko ) ĠChrome / 7 1 . 0 . 3 5 7 8 . 9 8 ĠSafari / 5 3 7 . 3 6 ") ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġbuilder . build () ĊĠĠĠĠĠĠĠ Ġtask . tag Ġ= Ġsong // Ġè®¾ç½® tag ĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĠNotification Listener ( this ) ĊĠĠĠĠĠĠĠ Ġlistener Manager . attach Listener ( task , Ġlistener ) ĊĠĠĠĠĠĠĠ Ġlistener Manager . add Auto Remove Listeners When Task End ( task . id ) ĊĠĠĠĠĠĠĠ Ġlistener Manager . enqueue Task With Unified Listener ( task , Ġlistener ) ĊĊĠĠĠĠĠĠĠ Ġtoast ( String . format ( getString ( R . string . download _ start ), Ġsong . getName ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġbinder : ĠDownload Binder Ġby ĠDeleg ates . notNull () ĊĠĠĠ Ġprivate Ġvar Ġlistener Manager Ġ= ĠUn ified Listener Manager () ĊĠĠĠ Ġprivate Ġval Ġmanager : ĠNotification Manager Ġby Ġlazy Ġ{ Ġget System Service ( Context . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Download Path (): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdownload Path Ġ= Ġdefault SharedPreferences . getString ( Settings . KEY _ CUSTOM _ PATH , Ġdefault Download Path . absolute Path ) ĊĠĠĠĠĠĠĠ Ġvar Ġparent File Ġ= ĠFile ( download Path ) ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġif Ġ(! parent File . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent File . mkdir s () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent File . isDirectory Ġ&& Ġparent File . can Write () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! r ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( R . string . download _ path _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent File Ġ= ĠEnvironment . get External Storage Public Directory ( Environment . DIRECTORY _ M US IC ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġparent File ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdownload Receiver Ġ= Ġobject Ġ: ĠBroadcast Receiver () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext ?, Ġintent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( intent ?. action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠACTION _ CANCEL _ DOWNLOAD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtaskId Ġ= Ġintent . getInt Extra (" task _ id ", Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Download Receiver ", Ġ" cancel : Ġ$ taskId ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOk Download . with (). download Dispatcher (). cancel ( taskId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠACTION _ FIN ISH _ DOWNLOAD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsong Ġ= Ġintent . get Parcelable Extra < Base Song >(" song ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfilePath Ġ= Ġintent . getString Extra (" file _ path ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Download Receiver ", Ġ" finish : Ġ$ filePath ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Album Image Notify ( song , ĠfilePath ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Finish ( song , ĠfilePath ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnotify Finish ( song : ĠBase Song , ĠfilePath : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( filePath . notNull ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( filePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( String . format ( getString ( R . string . download _ finish ), Ġsong . getName ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscan Intent Ġ= ĠIntent ( Intent . ACTION _ MEDIA _ SCAN NER _ SCAN _ FILE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscan Intent . data Ġ= ĠUri . from File ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Broadcast ( scan Intent )// Ġ éĢļçŁ¥ åªĴ ä½ĵ åºĵ æĽ´æĸ° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( Download Helper . getInstance ( this @ Download Service ). has Task (). not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Foreground ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Album Image Notify ( song : ĠBase Song , ĠfilePath : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( filePath . isNull ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( song Ġ! is ĠSearch Song ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġvar Ġcan Notify Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġdo Async ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! can Notify ) Ġreturn @ run On Ui Thread ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Finish ( song , ĠfilePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmp 3 file Ġ= ĠM p 3 File ( filePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid 3 v 2 : ĠID 3 v 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mp 3 file . has Id 3 v 2 Tag ()) Ġ{// Ġæľī ID 3 v 2 Ġtag ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid 3 v 2 Ġ= Ġmp 3 file . id 3 v 2 Tag ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id 3 v 2 . lyr ics . isNull () Ġ&& Ġsong . l rc . notNull ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid 3 v 2 . lyr ics Ġ= Ġsong . l rc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid 3 v 2 Ġ= ĠID 3 v 2 4 Tag () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmp 3 file . id 3 v 2 Tag Ġ= Ġid 3 v 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( song . author . notNull ()) Ġid 3 v 2 . artist Ġ= Ġsong . author ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( song . title . notNull ()) Ġid 3 v 2 . title Ġ= Ġsong . title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( song . l rc . notNull ()) Ġid 3 v 2 . lyr ics Ġ= Ġsong . l rc ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalbum Image Ġ= Ġid 3 v 2 . album Image ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( album Image Ġ== Ġnull Ġ|| Ġalbum Image . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠG lide App . with ( this @ Download Service ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Bitmap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. disk Cache Strategy ( Disk Cache Strategy . NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( song . pic ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. submit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= ĠImage Util . toByteArray ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bytes . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid 3 v 2 . set Album Image ( bytes , Ġ" image / jpeg ") // ĠmimeType ĠJPEG æł¼å¼ı ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew File Ġ= ĠFile ("$ filePath . son ime i ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmp 3 file . save ( new File . absolute Path )// Ġ ä¿ĿåŃĺ çļĦæĹ¶åĢĻ åĩº éĶĻ æĹ¶ ï¼Į çĽ´æİ¥ éĢļçŁ¥ åĪ·æĸ° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcan Notify Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( filePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . delete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew File . rename To ( file ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Finish ( song , ĠfilePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĠĠĠĠĠĠĠ Ġbinder Ġ= ĠDownload Binder () ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠIntent Filter ( ACTION _ CANCEL _ DOWNLOAD ) ĊĠĠĠĠĠĠĠ Ġfilter . addAction ( ACTION _ FIN ISH _ DOWNLOAD ) ĊĠĠĠĠĠĠĠ Ġregister Receiver ( download Receiver , Ġfilter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ( intent : ĠIntent ?): ĠI Binder ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbinder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Re bind ( intent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġstop Foreground ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Un bind ( intent : ĠIntent ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġinfo (" on Un bind ") ĊĠĠĠĠĠĠĠ Ġif Ġ( Download Helper . getInstance ( this ). has Task (). not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Foreground ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠNotification Channel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNOT IFY _ DOWNLOAD _ CHANNEL _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . getString ( R . string . file _ download _ notify _ name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Manager . IMPORT ANCE _ MIN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . set Show Badge ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . create Notification Channel ( channel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠNotification Compat . Builder ( this , ĠDownload Service . NOTIFY _ DOWNLOAD _ CHANNEL _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Defaults ( Notification . DEFAULT _ LIGHT S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set O ngo ing ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAuto Cancel ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Badge IconType ( Notification Compat . BAD GE _ ICON _ NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setVisibility ( Notification Compat . VIS IBILITY _ PUBLIC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Category ( Notification Compat . CATEGORY _ PROGRESS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( Notification Compat . PRIORITY _ MIN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Title ( getString ( R . string . foreground _ download )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Channel Id ( Download Service . NOTIFY _ DOWNLOAD _ CHANNEL _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( R . drawable . ic _ notify _ music _ 1 ) ĊĠĠĠĠĠĠĠ Ġstart Foreground ( DOWNLOAD _ NOTIFICATION _ ID , Ġbuilder . build ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġunregister Receiver ( download Receiver ) ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Wifi Connected ( context : ĠContext ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ æīĭæľº æīĢæľī è¿ŀæİ¥ ç®¡çĲĨ å¯¹è±¡ ( åĮħæĭ¬ å¯¹ wi - fi , net çŃī è¿ŀæİ¥ çļĦ ç®¡çĲĨ ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġcontext . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ Network Info å¯¹è±¡ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnetwork Info Ġ= Ġmanager . active Network Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĪ¤æĸŃ Network Info å¯¹è±¡ æĺ¯åĲ¦ ä¸ºç©º Ġ å¹¶ä¸Ķ ç±»åŀĭ æĺ¯åĲ¦ ä¸º WIFI ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( network Info Ġ!= Ġnull Ġ&& Ġnetwork Info . type Ġ== ĠConnect ivity Manager . TYPE _ WIFI ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnetwork Info . is Available ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ }