package Ġnet . team tr uta . cus cac asa . ui Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . github . mike phil . chart ing . components . Y Axis Ċ import Ġcom . github . mike phil . chart ing . data . Entry Ċ import Ġcom . github . mike phil . chart ing . data . Line Data Ċ import Ġcom . github . mike phil . chart ing . data . Line DataSet Ċ import Ġcom . github . mike phil . chart ing . interfaces . datasets . IL ine DataSet Ċ import Ġcom . microsoft . app center . App Center Ċ import Ġcom . microsoft . app center . analytics . Analytics Ċ import Ġcom . microsoft . app center . cr ashes . Cr ashes Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġnet . team tr uta . cus cac asa . R Ċ import Ġnet . team tr uta . cus cac asa . view models . Sensor Reading ViewModel Ċ import Ġorg . joda . time . DateTime Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠMainActivity :: class . simple Name ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsensor Reading ViewModel : ĠSensor Reading ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠApp Ġcenter ĊĠĠĠĠĠĠĠ ĠApp Center . start ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication , Ġ" 0 5 2 2 0 a 0 d - 3 5 4 b - 4 5 d 1 - bf 3 a - 2 e 8 eef 0 2 d 9 8 7 ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnalytics :: class . java , ĠC ras hes :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsensor Reading ViewModel Ġ= ĠViewModel Provider ( this ). get ( Sensor Reading ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġtext _ view . text Ġ= ĠgetString ( R . string . fetch ing _ data ) ĊĠĠĠĠĠĠĠ Ġsensor Reading ViewModel . read ings . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Live ĠData Ġobserved ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext _ view . text Ġ= Ġ" Read ings Ġfrom : Ġ" Ġ+ ĠDateTime . now (). toString () // Ġ+ Ġread ings . map { it . toString ()}. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfill In Chart () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// ĠObserver Ġfor Ġthe Ġnetwork Ġerror . ĊĠĠĠĠĠĠĠ Ġsensor Reading ViewModel . event Network Error . observe ( this , ĠObserver < Boolean > Ġ{ Ġis Network Error Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Network Error ) Ġon Network Error () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMethod Ġfor Ġdisplaying Ġa ĠToast Ġerror Ġmessage Ġfor Ġnetwork Ġerrors . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġon Network Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġif (! sensor Reading ViewModel . is Network Error Shown . value !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Network ĠError ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsensor Reading ViewModel . on Network Error Shown () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrefresh Data ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsensor Reading ViewModel . refresh Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfill In Chart (){ ĊĊĠĠĠĠĠĠĠ Ġval Ġcolors Ġ= ĠlistOf ( Color . BLUE , ĠColor . RED , ĠColor . BLACK ) ĊĠĠĠĠĠĠĠ Ġval Ġdata Sets Ġ= Ġmutable ListOf < IL ine DataSet >() ĊĊĠĠĠĠĠĠĠ Ġval Ġtemperature Ġ= Ġsensor Reading ViewModel . read ings . value ?. map Indexed { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġidx , Ġreading Ġ-> ĠEntry ( idx . toFloat (), Ġreading . temperature . toFloat ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpressure Ġ= Ġsensor Reading ViewModel . read ings . value ?. map Indexed { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġidx , Ġreading Ġ-> ĠEntry ( idx . toFloat (), Ġreading . pressure . toFloat ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġhum idity Ġ= Ġsensor Reading ViewModel . read ings . value ?. map Indexed { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġidx , Ġreading Ġ-> ĠEntry ( idx . toFloat (), Ġreading . relative Hum idity . toFloat ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar ĠdataSet Ġ= ĠLine DataSet ( temperature , Ġ" Temperature ") ĊĠĠĠĠĠĠĠ ĠdataSet . axis Dependency Ġ= ĠY Axis . Axis Dependency . LEFT ĊĠĠĠĠĠĠĠ Ġ// data Set . set Draw Values ( false ) ĊĠĠĠĠĠĠĠ ĠdataSet . color Ġ= Ġcolors [ 0 ] ĊĠĠĠĠĠĠĠ Ġdata Sets . add ( data Set ) ĊĊĠĠĠĠĠĠĠ ĠdataSet Ġ= ĠLine DataSet ( pressure , Ġ" Pressure ") ĊĠĠĠĠĠĠĠ ĠdataSet . color Ġ= Ġcolors [ 1 ] ĊĠĠĠĠĠĠĠ Ġdata Sets . add ( data Set ) ĊĊĠĠĠĠĠĠĠ ĠdataSet Ġ= ĠLine DataSet ( humidity , Ġ" Relative ĠHum idity ") ĊĠĠĠĠĠĠĠ ĠdataSet . color Ġ= Ġcolors [ 2 ] ĊĠĠĠĠĠĠĠ Ġdata Sets . add ( data Set ) ĊĊĠĠĠĠĠĠĠ Ġchart . data Ġ= ĠLine Data ( data Sets ) ĊĠĠĠĠĠĠĠ Ġchart . invalidate () ĊĠĠĠ Ġ} Ċ Ċ }