package Ġcom . sp db . gate info . ui . weather Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . work . Periodic Work Request Ċ import Ġandroidx . work . Periodic Work RequestBuilder Ċ import Ġandroidx . work . Work Manager Ċ import Ġcom . sp db . gate info . Gate Info Application Ċ import Ġcom . sp db . gate info . R Ċ import Ġcom . sp db . gate info . model . Weather Ċ import Ġcom . sp db . gate info . model . get Sky Ċ import Ġcom . sp db . gate info . network . My Worker Ċ import Ġkotlinx . android . synt hetic . main . fragment _ weather .* Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . TimeUnit ĊĊ Ċ class ĠWeather Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġval ĠviewModel Place Ġby Ġlazy Ġ{ ĠViewModel Provider ( this ). get ( Place ViewModel :: class . java ) Ġ} ĊĠĠĠ Ġval ĠviewModel Weather Ġby Ġlazy Ġ{ ĠViewModel Provider ( this ). get ( Weather ViewModel :: class . java ) Ġ} ĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" my Tag " ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ weather , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) Ċ Ċ // ĠĠĠĠĠĠĠ Ġ è°ĥçĶ¨ work manager ï¼Į å®ļæĹ¶ åĪ·æĸ° ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠPeriod ic Work Request . Builder ( My Worker :: class . java , 1 5 , TimeUnit . MIN UTES ). build () ĊĠĠĠĠĠĠĠ ĠWork Manager . getInstance (). enqueue ( request ) ĊĊĠĠĠĠĠĠĠ ĠviewModel Place . place LiveData . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplace Ġ= Ġresult . get OrNull () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ( location = Location ( lat = 2 2 . 5 4 8 4 5 6 6 3 7 9 8 4 1 7 7 , Ġlng = 1 1 4 . 0 6 4 5 5 1 8 3 6 5 8 7 5 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( place Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlat Ġ= Ġplace . location . lat . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlng Ġ= Ġplace . location . lng . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" my Tag ", Ġ"${ lat }, Ġ$ lng ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Weather . location Lng Ġ= Ġlng ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Weather . location Lat Ġ= Ġlat Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ èİ·å¾Ĺ ç»ı çº ¬ åº¦ åĲİ ï¼Į åĪ·æĸ° å¤© æ°Ķ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Weather . refresh Weather ( viewModel Weather . location Lng , ĠviewModel Weather . location Lat ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġ" æľª èĥ½ æŁ¥è¯¢ åĪ° ä»»ä½ķ åľ° çĤ¹ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . exception OrNull ()?. printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel Weather . weather LiveData . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweather Ġ= Ġresult . get OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( weather Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġweather . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Weather Info ( weather ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġ" æĹłæ³ķ èİ·åıĸ å¤© æ°Ķ ä¿¡æģ¯ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . exception OrNull ()?. printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġåľ¨ UI å±ķç¤º ä¿¡æģ¯ ĊĠĠĠ Ġprivate Ġfun Ġshow Weather Info ( weather : ĠWeather ){ ĊĠĠĠĠĠĠĠ Ġval Ġreal time Ġ= Ġweather . realtime ĊĠĠĠĠĠĠĠ Ġval Ġdaily Ġ= Ġweather . daily Response Ċ // ĠĠĠĠĠĠĠ Ġèİ·åıĸ å½ĵåīį å¤© æ°Ķ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Temp Text Ġ= Ġ"${ realtime . temperature . toInt ()} ĠÂ ° " ĊĠĠĠĠĠĠĠ Ġcurrent Temp . text Ġ= Ġcurrent Temp Text ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Hum Text Ġ= Ġ" æ¹ ¿ åº¦ Ġ${ (( realtime . humidity )* 1 0 0 ). toInt ()} Ġ% " ĊĠĠĠĠĠĠĠ Ġcurrent Hum . text Ġ= Ġcurrent Hum Text Ċ // ĠĠĠĠĠĠĠ ĠA QI ĊĠĠĠĠĠĠĠ Ġval Ġcurrent AQ I Value Ġ= Ġreal time . air Quality . description . chn . toString () ĊĠĠĠĠĠĠĠ Ġval Ġcurrent AQ IT ext Ġ= Ġ" AQ I Ġ Ġ${ current AQ I Value }" ĊĠĠĠĠĠĠĠ Ġcurrent AQ I . text Ġ= Ġcurrent AQ IT ext ĊĠĠĠĠĠĠĠ Ġwhen ( current AQ I Value ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ä¼ĺ " Ġ-> Ġcurrent AQ I . setTextColor ( Color . GREEN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" èī¯ " Ġ-> Ġcurrent AQ I . setTextColor ( Color . YELLOW ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġcurrent AQ I . setTextColor ( Color . RED ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcurrent Sky Ġ= Ġget Sky ( realtime . sky con ) ĊĠĠĠĠĠĠĠ Ġcurrent Sky Icon . setImage Resource ( current Sky . icon ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ å¡« åħħ forecast . xml å¸ĥå±Ģ ä¸ŃçļĦ æķ°æį® ĊĠĠĠĠĠĠĠ Ġforecast Layout . removeAll Views () ĊĠĠĠĠĠĠĠ Ġval Ġdays Ġ= Ġdaily . sky con . size ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 1 Ġuntil Ġdays ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsky con Ġ= Ġdaily . sky con [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemperature Ġ= Ġdaily . temperature [ i ] Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠæĬ Ĭ forecast _ item åĬłåħ¥ åĪ° forecast Layout ( LinearLayout ) éĩĮ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( activity ). inflate ( R . layout . forecast _ item , Ġforecast Layout , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Info Ġ= Ġview . findViewById ( R . id . date Info ) Ġas ĠTextView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsky Icon Ġ= Ġview . findViewById ( R . id . sky Icon ) Ġas ĠImageView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsky Info Ġ= Ġview . findViewById ( R . id . sky Info ) Ġas ĠTextView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemperature Info Ġ= Ġview . findViewById ( R . id . temperature Info ) Ġas ĠTextView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsimple DateFormat Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ", ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Info . text Ġ= Ġsimple DateFormat . format ( sky con . date ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsky Ġ= Ġget Sky ( sky con . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsky Icon . setImage Resource ( sky . icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsky Info . text Ġ= Ġsky . info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Text Ġ= Ġ"${ temperature . min . toInt ()} Ġ~ Ġ${ temperature . max . toInt ()} ĠâĦ ĥ " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemperature Info . text Ġ= Ġtemp Text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġforecast Layout . addView ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ