package Ġcom . o jh dt app . action . logic Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . location . Location Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . live Data Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġcom . o jh dt app . action . Base Application Ċ import Ġcom . o jh dt app . action . Event Ċ import Ġcom . o jh dt app . action . R Ċ import Ġcom . o jh dt app . action . logic . model .* Ċ import Ġcom . o jh dt app . action . logic . network . Network Ċ import Ġcom . o jh dt app . action . util . Location Util Ċ import Ġcom . o jh dt app . action . util . Notification Util Ċ import Ġkotlinx . coroutines .* Ċ import Ġjava . lang . RuntimeException Ċ import Ġjava . math . Round ingMode Ċ import Ġjava . sql . Timestamp Ċ import Ġjava . text . Decimal Format Ċ import Ġjava . util .* Ċ Ċ object ĠRepository Ġ{ ĊĠĠĠ Ġprivate Ġval Ġdatabase Ġ= ĠApp Data Base . getData Base () ĊĠĠĠ Ġprivate Ġval Ġshared Preference : ĠSharedPreferences Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( Base Application . context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetString Resource ( id : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBase Application . context . resources . getString ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsky con Map Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġ" CLEAR _ DAY " Ġto ĠgetString Resource ( R . string . weather _ type _ clear ), ĊĠĠĠĠĠĠĠ Ġ" CLEAR _ N IGHT " Ġto ĠgetString Resource ( R . string . weather _ type _ clear ), ĊĠĠĠĠĠĠĠ Ġ" PART LY _ CLOUD Y _ DAY " Ġto ĠgetString Resource ( R . string . weather _ type _ part ly _ cloud y ), ĊĠĠĠĠĠĠĠ Ġ" PART LY _ CLOUD Y _ N IGHT " Ġto ĠgetString Resource ( R . string . weather _ type _ part ly _ cloud y ), ĊĠĠĠĠĠĠĠ Ġ" CLOUD Y " Ġto ĠgetString Resource ( R . string . weather _ type _ cloud y ), ĊĠĠĠĠĠĠĠ Ġ" LIGHT _ HA ZE " Ġto ĠgetString Resource ( R . string . weather _ type _ light _ h aze ), ĊĠĠĠĠĠĠĠ Ġ" MO DER ATE _ HA ZE " Ġto ĠgetString Resource ( R . string . weather _ type _ mod erate _ h aze ), ĊĠĠĠĠĠĠĠ Ġ" HE AV Y _ HA ZE " Ġto ĠgetString Resource ( R . string . weather _ type _ heavy _ h aze ), ĊĠĠĠĠĠĠĠ Ġ" LIGHT _ R AIN " Ġto ĠgetString Resource ( R . string . weather _ type _ light _ rain ), ĊĠĠĠĠĠĠĠ Ġ" MO DER ATE _ R AIN " Ġto ĠgetString Resource ( R . string . weather _ type _ mod erate _ rain ), ĊĠĠĠĠĠĠĠ Ġ" HE AV Y _ R AIN " Ġto ĠgetString Resource ( R . string . weather _ type _ heavy _ rain ), ĊĠĠĠĠĠĠĠ Ġ" ST ORM _ R AIN " Ġto ĠgetString Resource ( R . string . weather _ type _ storm _ rain ), ĊĠĠĠĠĠĠĠ Ġ" FO G " Ġto ĠgetString Resource ( R . string . weather _ type _ fog ), ĊĠĠĠĠĠĠĠ Ġ" LIGHT _ S NOW " Ġto ĠgetString Resource ( R . string . weather _ type _ light _ snow ), ĊĠĠĠĠĠĠĠ Ġ" MO DER ATE _ S NOW " Ġto ĠgetString Resource ( R . string . weather _ type _ mod erate _ snow ), ĊĠĠĠĠĠĠĠ Ġ" HE AV Y _ S NOW " Ġto ĠgetString Resource ( R . string . weather _ type _ heavy _ snow ), ĊĠĠĠĠĠĠĠ Ġ" ST ORM _ S NOW " Ġto ĠgetString Resource ( R . string . weather _ type _ storm _ snow ), ĊĠĠĠĠĠĠĠ Ġ" D UST " Ġto ĠgetString Resource ( R . string . weather _ type _ dust ), ĊĠĠĠĠĠĠĠ Ġ" S AND " Ġto ĠgetString Resource ( R . string . weather _ type _ sand ), ĊĠĠĠĠĠĠĠ Ġ" W IND " Ġto ĠgetString Resource ( R . string . weather _ type _ wind ), ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġval Ġraw Map Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġ" CLEAR _ DAY " Ġto ĠR . raw . weather _ sun ny , ĊĠĠĠĠĠĠĠ Ġ" CLEAR _ N IGHT " Ġto ĠR . raw . weather _ night , ĊĠĠĠĠĠĠĠ Ġ" PART LY _ CLOUD Y _ DAY " Ġto ĠR . raw . weather _ part ly _ cloud y , ĊĠĠĠĠĠĠĠ Ġ" PART LY _ CLOUD Y _ N IGHT " Ġto ĠR . raw . weather _ loud yn ight , ĊĠĠĠĠĠĠĠ Ġ" CLOUD Y " Ġto ĠR . raw . weather _ part ly _ cloud y , ĊĠĠĠĠĠĠĠ Ġ" LIGHT _ HA ZE " Ġto ĠR . raw . weather _ mist , ĊĠĠĠĠĠĠĠ Ġ" MO DER ATE _ HA ZE " Ġto ĠR . raw . weather _ mist , ĊĠĠĠĠĠĠĠ Ġ" HE AV Y _ HA ZE " Ġto ĠR . raw . weather _ mist , ĊĠĠĠĠĠĠĠ Ġ" LIGHT _ R AIN " Ġto ĠR . raw . weather _ part ly _ sh ower , ĊĠĠĠĠĠĠĠ Ġ" MO DER ATE _ R AIN " Ġto ĠR . raw . weather _ part ly _ sh ower , ĊĠĠĠĠĠĠĠ Ġ" HE AV Y _ R AIN " Ġto ĠR . raw . weather _ rain yn ight , ĊĠĠĠĠĠĠĠ Ġ" ST ORM _ R AIN " Ġto ĠR . raw . weather _ storm , ĊĠĠĠĠĠĠĠ Ġ" FO G " Ġto ĠR . raw . weather _ fog gy , ĊĠĠĠĠĠĠĠ Ġ" LIGHT _ S NOW " Ġto ĠR . raw . weather _ snow , ĊĠĠĠĠĠĠĠ Ġ" MO DER ATE _ S NOW " Ġto ĠR . raw . weather _ snow , ĊĠĠĠĠĠĠĠ Ġ" HE AV Y _ S NOW " Ġto ĠR . raw . weather _ snow , ĊĠĠĠĠĠĠĠ Ġ" ST ORM _ S NOW " Ġto ĠR . raw . weather _ snow , ĊĠĠĠĠĠĠĠ Ġ" D UST " Ġto ĠR . raw . weather _ mist , ĊĠĠĠĠĠĠĠ Ġ" S AND " Ġto ĠR . raw . weather _ mist , ĊĠĠĠĠĠĠĠ Ġ" W IND " Ġto ĠR . raw . weather _ wind y ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġget Action Now Live () Ġ= Ġdatabase . action Dao (). load All Activ ating Action Live () ĊĊĠĠĠ Ġfun Ġget Suggest More Live () Ġ= Ġdatabase . suggest Dao (). load All Display Suggest Live () ĊĊĠĠĠ Ġfun ĠgetAll Action Live (): ĠLive Data < List < Action >> Ġ= ĊĠĠĠĠĠĠĠ Ġdatabase . action Dao (). load All Action Live () ĊĊĠĠĠ Ġfun Ġget Activated Action Live (): ĠLive Data < List < Action >> Ġ= ĊĠĠĠĠĠĠĠ Ġdatabase . action Dao (). load Activated Action Live () ĊĊĠĠĠ Ġfun Ġget Read Suggest Live (): ĠLive Data < List < Suggest >> Ġ= ĊĠĠĠĠĠĠĠ Ġdatabase . suggest Dao (). load All Read Suggest Live () ĊĊĠĠĠ Ġfun Ġget Arch ived Suggest Live (): ĠLive Data < List < Suggest >> Ġ= ĊĠĠĠĠĠĠĠ Ġdatabase . suggest Dao (). load All Arch ived Suggest Live () ĊĊĠĠĠ Ġfun Ġget G ained Ach ievement Live (): ĠLive Data < List < Ach ievement >> Ġ= ĊĠĠĠĠĠĠĠ Ġdatabase . ach ievement Dao (). load All Ach ievement Live () ĊĊĠĠĠ Ġfun Ġload Available Action By Conditions ( ĊĠĠĠĠĠĠĠ Ġactivity State Trigger : ĠInt Ġ= Ġ- 1 , ĊĠĠĠĠĠĠĠ Ġlight State Trigger : ĠInt Ġ= Ġ- 1 , ĊĠĠĠĠĠĠĠ Ġlocation State Trigger : ĠInt Ġ= Ġ- 1 , ĊĠĠĠĠĠĠĠ Ġtime State Trigger : ĠInt Ġ= Ġ- 1 , ĊĠĠĠĠĠĠĠ Ġweather State Trigger : ĠInt Ġ= Ġ- 1 , ĊĠĠĠĠĠĠĠ ĠcurrentTime : ĠLong Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠ Ġ): ĠList < Action > Ġ= Ġdatabase . action Dao (). load Available Action By Conditions ( ĊĠĠĠĠĠĠĠ Ġactivity State Trigger , ĊĠĠĠĠĠĠĠ Ġlight State Trigger , ĊĠĠĠĠĠĠĠ Ġlocation State Trigger , ĊĠĠĠĠĠĠĠ Ġtime State Trigger , ĊĠĠĠĠĠĠĠ Ġweather State Trigger , ĊĠĠĠĠĠĠĠ ĠcurrentTime ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġupdate All Activ ating Action State () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjob Ġ= ĠJob () ĊĠĠĠĠĠĠĠ ĠCor outine Scope ( job ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġdatabase . action Dao (). load All Activ ating Action () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmill time Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( shared Preference . getString (" action _ expired _ time ", Ġ" 1 0 ") !!. toInt () Ġ* Ġ 6 0 0 0 0 ). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( System . currentTimeMillis () Ġ- Ġit . last Triggered Ġ> Ġmill time ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Activ ating Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" aaa ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" No ." Ġ+ Ġit . id . toString () Ġ+ Ġ" task Ġhas Ġbeen Ġautomatically Ġcleared " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . action Dao (). update Action ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Util . cancel Action ( it . id . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġjob . complete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠFrom ĠCloud ĊĠĠĠ Ġsuspend Ġfun Ġstore Suggest From Cloud ( type : ĠInt ): ĠResult < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠLe an Cloud Data Base . getNew Suggest ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . suggest Dao (). insert Suggest ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( getString Resource ( R . string . network _ success )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠWeather ĊĠĠĠ Ġfun Ġcreate Temp Weather Live (): ĠLive Data < Result < Weather >> Ġ= Ġlive Data ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġweather Ġ= ĠWeather Block ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBase Application . context . getString ( R . string . loading _ location ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBase Application . context . getString ( R . string . loading _ data ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWeather Block . Weather Temperature ( R . raw . weather _ sun ny , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWeather Block . Weather Temperature ( R . raw . weather _ sun ny , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWeather Block . Weather Temperature ( R . raw . weather _ sun ny , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWeather Block . Weather Temperature ( R . raw . weather _ sun ny , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWeather Block . Weather Temperature ( R . raw . weather _ sun ny , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWeather Block . Weather Temperature ( R . raw . weather _ sun ny , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWeather Block . Weather Temperature ( R . raw . weather _ sun ny , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġair Ġ= ĠWeather Message Block ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ outline _ air _ 2 4 , ĠBase Application . context . getString ( R . string . air ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġlife Ġ= ĠLife Message Block ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠResult . success ( Weather ( weather , Ġair , Ġlife , Ġtrue )) ĊĠĠĠĠĠĠĠ Ġemit ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Weather Live (): ĠLive Data < Result < Weather >> Ġ= Ġlive Data ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġlng : ĠString ĊĠĠĠĠĠĠĠ Ġvar Ġlat : ĠString ĊĠĠĠĠĠĠĠ Ġval Ġdefault Lng Ġ= Ġ 1 1 6 . 3 1 0 0 0 3 ĊĠĠĠĠĠĠĠ Ġval Ġdefault Lat Ġ= Ġ 3 9 . 9 9 1 9 5 7 ĊĠĠĠĠĠĠĠ Ġval Ġdf Ġ= ĠDecimal Format (" 0 . 0 0 0 0 0 0 "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrounding Mode Ġ= ĠRound ingMode . HALF _ UP ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( shared Preference . getBoolean (" locate ", Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcurrent Location Ġ= ĠLocation Util . getLocation (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( Result . failure ( java . lang . Exception (" Location ĠNull "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġcurrent Location Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlng Ġ= Ġdf . format ( current Location ?. longitude Ġ?: Ġdefault Lng ). trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlat Ġ= Ġdf . format ( current Location ?. latitude Ġ?: Ġdefault Lat ). trim () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preference . edit () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putString (" lng ", Ġlng ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putString (" lat ", Ġlat ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlng Ġ= Ġshared Preference . getString (" lng ", Ġdf . format ( default Lng ). trim ()) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlat Ġ= Ġshared Preference . getString (" lat ", Ġdf . format ( default Lat ). trim ()) !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoroutine Scope < Result < Weather >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġforecast Response Job Ġ= Ġasync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork . get Forecast Response ( lng , Ġlat ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Response Job Ġ= Ġasync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork . getLocation Response ( lng , Ġlat ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġforecast Response Ġ= Ġforecast Response Job . await () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Response Ġ= Ġlocation Response Job . await () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( forecast Response . status Ġ== Ġ" ok " Ġ&& Ġlocation Response . status Ġ== Ġ" 1 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġpo is Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" aaa ", Ġlocation Response . re geo code . pois . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// weather Ġblock ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsystem Calendar Hour Ġ= ĠCalendar . getInstance (). get ( Calendar . HOUR _ OF _ DAY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforecast Response . result . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweather Ġ= ĠWeather Block ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Response . re geo code . formatted _ address , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsky con Map [ realtime . sky con ] !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeather Block . Weather Temperature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġraw Map [ realtime . sky con ] !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreal time . temperature . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeather Block . Weather Temperature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġraw Map [ hourly . sky con [ system Calendar Hour ]. value ] !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhourly . temperature [ system Calendar Hour ]. value . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeather Block . Weather Temperature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġraw Map [ hourly . sky con [ system Calendar Hour Ġ+ Ġ 1 ]. value ] !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhourly . temperature [ system Calendar Hour Ġ+ Ġ 1 ]. value . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeather Block . Weather Temperature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġraw Map [ hourly . sky con [ system Calendar Hour Ġ+ Ġ 2 ]. value ] !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhourly . temperature [ system Calendar Hour Ġ+ Ġ 2 ]. value . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeather Block . Weather Temperature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġraw Map [ hourly . sky con [ system Calendar Hour Ġ+ Ġ 3 ]. value ] !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhourly . temperature [ system Calendar Hour Ġ+ Ġ 3 ]. value . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeather Block . Weather Temperature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġraw Map [ daily . sky con [ 0 ]. value ] !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdaily . temperature [ 0 ]. avg . toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdaily . temperature [ 0 ]. min . toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdaily . temperature [ 0 ]. max . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeather Block . Weather Temperature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġraw Map [ daily . sky con [ 1 ]. value ] !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdaily . temperature [ 1 ]. avg . toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdaily . temperature [ 1 ]. min . toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdaily . temperature [ 1 ]. max . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġair Ġ= ĠWeather Message Block ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ outline _ air _ 2 4 , ĠgetString Resource ( R . string . air ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreal time . air _ quality . a qi . chn , Ġreal time . air _ quality . a qi . chn Ġ/ Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlife Ġ= ĠLife Message Block ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreal time . life _ index . ultr av io let . index . toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreal time . life _ index . ultr av io let . index . toInt () Ġ* Ġ 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreal time . life _ index . com fort . index , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreal time . life _ index . com fort . index Ġ* Ġ 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( Weather ( weather , Ġair , Ġlife )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( RuntimeException (" Status :${ forecast Response . status }, ${ location Response . status } ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" aaa ", Ġe . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġemit ( result ) ĊĠĠĠ Ġ} Ċ }