package Ġcom . cool weather . android Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroid . support . v 4 . view . Gravity Compat Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . cool weather . android . R . layout . forecast Ċ import Ġcom . cool weather . android . gson . Weather Ċ import Ġcom . cool weather . android . service . Auto Update Service Ċ import Ġcom . cool weather . android . util . Http Util Ċ import Ġcom . cool weather . android . util . Utility Ċ import Ġkotlinx . android . synt hetic . main . activity _ weather .* Ċ import Ġkotlinx . android . synt hetic . main . a qi .* Ċ import Ġkotlinx . android . synt hetic . main . forecast .* Ċ import Ġkotlinx . android . synt hetic . main . forecast _ item .* Ċ import Ġkotlinx . android . synt hetic . main . forecast _ item . view .* Ċ import Ġkotlinx . android . synt hetic . main . now .* Ċ import Ġkotlinx . android . synt hetic . main . suggestion .* Ċ import Ġkotlinx . android . synt hetic . main . title .* Ċ import Ġokhttp 3 . Call Ċ import Ġokhttp 3 . Callback Ċ import Ġokhttp 3 . Response Ċ import Ġorg . jetbrains . ank o . sdk 2 5 . coroutines . onClick Ċ import Ġorg . jetbrains . ank o . start Service Ċ import Ġorg . jetbrains . ank o . support . v 4 . on Refresh Ċ import Ġorg . jetbrains . ank o . toast Ċ import Ġjava . io . IOException Ċ Ċ class ĠWeather Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġm weather Id : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . decor View . system Ui Visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( View . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ weather ) ĊĊĠĠĠĠĠĠĠ Ġswipe _ refresh . setColor Scheme Resources ( R . color . color Primary ) ĊĠĠĠĠĠĠĠ Ġnav _ button . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer _ layout . open Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġprefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠ Ġvar Ġweather String Ġ= Ġprefs . getString (" weather ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( weather String Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æľī ç¼ĵåŃĺ æĹ¶ çĽ´æİ¥ è§£æŀĲ å¤© æ°Ķ æķ°æį® ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweather Ġ= ĠUtility . handle Weather Response ( weather String ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweather ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm weather Id Ġ= Ġit . basic ?. weather Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Weather Info ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĹł ç¼ĵåŃĺ æĹ¶ åİ» æľįåĬ¡åĻ¨ æŁ¥è¯¢ å¤© æ°Ķ æķ°æį® ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm weather Id Ġ= Ġintent . getString Extra (" weather _ id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweather _ layout . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Weather ( m weather Id ) ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ // ĠĠĠĠĠĠĠ Ġswipe _ refresh . setOn Refresh Listener Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Weather ( weather Id ) Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġswipe _ refresh . on Refresh Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Weather ( m weather Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġb ing Pic Ġ= Ġprefs . getString (" bing _ pic ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( bing Pic Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( this ). load ( bing Pic ). into ( bing _ pic _ img ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload B ing Pic () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæł¹æį® å¤© æ°Ķ id è¯·æ±Ĥ åŁİ å¸Ĥ å¤© æ°Ķ ä¿¡æģ¯ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrequest Weather ( weather Id : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġweather Url Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" http :// gu olin . tech / api / weather ? city id =${ weather Id }& key = 8 8 ec 8 2 7 6 3 fb 0 4 d 3 0 b 8 3 6 1 0 0 4 e 3 b 9 8 6 3 6 " ĊĠĠĠĠĠĠĠ ĠHttp Util . send Ok HttpRequest ( weather Url , Ġobject Ġ: ĠCallback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall , Ġe : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" èİ·åıĸ å¤© æ°Ķ ä¿¡æģ¯ å¤±è´¥ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe _ refresh . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall , Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Text Ġ= Ġresponse . body () !!. string () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweather Ġ= ĠUtility . handle Weather Response ( responseText ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( weather Ġ!= Ġnull Ġ&& Ġweather . status Ġ== Ġ" ok ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( this @ Weather Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString (" weather ", Ġresponse Text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm weather Id Ġ= Ġweather Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Weather Info ( weather ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" èİ·åıĸ å¤© æ°Ķ ä¿¡æģ¯ å¤±è´¥ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe _ refresh . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġload B ing Pic () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĬłè½½ å¿ħ åºĶ æ¯ı æĹ¥ ä¸Ģ åĽ¾ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġload B ing Pic () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest B ing Pic Ġ= Ġ" http :// gu olin . tech / api / bing _ pic " ĊĠĠĠĠĠĠĠ ĠHttp Util . send Ok HttpRequest ( request B ing Pic , Ġobject Ġ: ĠCallback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall , Ġe : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall , Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb ing Pic Ġ= Ġresponse . body ()?. string () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( this @ Weather Activity ). edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString (" bing _ pic ", Ġb ing Pic ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( this @ Weather Activity ). load ( bing Pic ). into ( bing _ pic _ img ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ å¹¶ å±ķç¤º Weather å®ŀä½ĵ ç±» ä¸ŃçļĦ æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshow Weather Info ( weather : ĠWeather ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcity Name Ġ= Ġweather . basic ?. city Name ĊĠĠĠĠĠĠĠ Ġval Ġupdate Time Ġ= Ġweather . basic ?. update ?. update Time ?. split (" Ġ") ?. get ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġdegree Ġ= Ġ( weather . now ?. temperature Ġ?: Ġ"") Ġ+ Ġ" âĦ ĥ " ĊĠĠĠĠĠĠĠ Ġval Ġweather Info Ġ= Ġweather . now ?. more ?. info ĊĠĠĠĠĠĠĠ Ġtitle _ city . text Ġ= Ġcity Name ĊĠĠĠĠĠĠĠ Ġtitle _ update _ time . text Ġ= Ġupdate Time ĊĠĠĠĠĠĠĠ Ġdegree _ text . text Ġ= Ġdegree ĊĠĠĠĠĠĠĠ Ġweather _ info _ text . text Ġ= Ġweather Info ĊĠĠĠĠĠĠĠ Ġforecast _ layout . removeAll Views () ĊĠĠĠĠĠĠĠ Ġweather . forecast List ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( forecast Ġin Ġit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . forecast _ item , Ġforecast _ layout , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . date _ text . text Ġ= Ġforecast . date ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . info _ text . text Ġ= Ġforecast . more ?. info ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . max _ text . text Ġ= Ġ( forecast . temperature ?. max Ġ?: Ġ"") Ġ+ Ġ" âĦ ĥ " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . min _ text . text Ġ= Ġ( forecast . temperature ?. min Ġ?: Ġ"") Ġ+ Ġ" âĦ ĥ " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforecast _ layout . addView ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġweather . a qi ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa qi _ text . text Ġ= Ġit . city ?. a qi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpm 2 5 _ text . text Ġ= Ġit . city ?. pm 2 5 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcomfort Ġ= Ġ" èĪ Ĵ éĢĤ åº¦ ï¼ļ ${ weather . suggestion ?. com fort ?. info }" ĊĠĠĠĠĠĠĠ Ġval Ġcar W ash Ġ= Ġ" æ´ Ĺ è½¦ æĮĩ æķ° ï¼ļ ${ weather . suggestion ?. car W ash ?. info }" ĊĠĠĠĠĠĠĠ Ġval Ġs port Ġ= Ġ" è¿Ĳ åĬ¨ å»ºè®® ï¼ļ ${ weather . suggestion ?. sport ?. info }" ĊĠĠĠĠĠĠĠ Ġcomfort _ text . text Ġ= Ġcomfort ĊĠĠĠĠĠĠĠ Ġcar _ w ash _ text . text Ġ= Ġcar W ash ĊĠĠĠĠĠĠĠ Ġs port _ text . text Ġ= Ġs port ĊĠĠĠĠĠĠĠ Ġweather _ layout . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġstart Service < Auto Update Service >() ĊĠĠĠ Ġ} Ċ } Ċ