package Ġcom . f pri eto . h ms . we arable . presentation . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . RadioButton Ċ import Ġandroid . widget . Radio Group Ċ import Ġandroidx . activity . result . Activity Result Ċ import Ġandroidx . activity . result . contract . Activity Result Contracts Ċ import Ġandroidx . core . view . children Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġcom . f pri eto . h ms . we arable . R Ċ import Ġcom . f pri eto . h ms . we arable . credentials . Credentials Provider Ċ import Ġcom . f pri eto . h ms . we arable . databinding . Fragment Dashboard Binding Ċ import Ġcom . f pri eto . h ms . we arable . databinding . View Logs Binding Ċ import Ġcom . f pri eto . h ms . we arable . extensions . await Ċ import Ġcom . f pri eto . h ms . we arable . presentation . vm . Dashboard ViewModel Ċ import Ġcom . f pri eto . h ms . we arable . presentation . vm . observe Event Ċ import Ġcom . hu awei . hi health . error . Hi Health Error Ċ import Ġcom . hu awei . hi health kit . auth . Hi Health Auth . request Authorization Ċ import Ġcom . hu awei . hi health kit . data . Hi Health Extend Scope Ċ import Ġcom . hu awei . hi health kit . data . Hi Health Kit Constant Ċ import Ġcom . hu awei . hi health kit . data . store . Hi Health DataStore Ċ import Ġcom . hu awei . hi health kit . data . store . Hi Real Time Listener Ċ import Ġcom . hu awei . hi health kit . data . store . Hi Sport Data Callback Ċ import Ġcom . hu awei . h ms . common . ApiException Ċ import Ġcom . hu awei . h ms . hi health . Data Controller Ċ import Ġcom . hu awei . h ms . hi health . Hu awei Hi Health Ċ import Ġcom . hu awei . h ms . hi health . data . DataType Ċ import Ġcom . hu awei . h ms . hi health . data . DataType .* Ċ import Ġcom . hu awei . h ms . hi health . data . Health DataTypes Ċ import Ġcom . hu awei . h ms . hi health . data . Health DataTypes . DT _ INST ANT AN EO US _ S PO 2 Ċ import Ġcom . hu awei . h ms . hi health . data . Sample Point Ċ import Ġcom . hu awei . h ms . hi health . data . Sample Set Ċ import Ġcom . hu awei . h ms . support . api . entity . auth . Scope Ċ import Ġcom . hu awei . h ms . support . hw id . Hu awei Id Auth Manager Ċ import Ġcom . hu awei . h ms . support . hw id . request . Hu awei Id Auth Params Ċ import Ġcom . hu awei . h ms . support . hw id . request . Hu awei Id Auth Params Helper Ċ import Ġcom . hu awei . we are ng ine . Hi W ear Ċ import Ġcom . hu awei . we are ng ine . device . Device Ċ import Ġcom . hu awei . we are ng ine . device . Device Client Ċ import Ġcom . hu awei . we are ng ine . p 2 p . Message Ċ import Ġcom . hu awei . we are ng ine . p 2 p . P 2 p Client Ċ import Ġcom . hu awei . we are ng ine . p 2 p . Receiver Ċ import Ġcom . hu awei . we are ng ine . p 2 p . Send Callback Ċ import Ġdagger . android . support . D agger AppCompatActivity Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . json . JSONException Ċ import Ġorg . json . JSONObject Ċ import Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Inject Ċ Ċ private Ġval Ġextended Scopes Ġ= Ġarray ListOf ( ĊĠĠĠ ĠScope ( Hi Health Extend Scope . HE ALTH KIT _ EXT END _ SP ORT _ READ ) Ċ ) Ċ Ċ class ĠDashboard Fragment Ġ@ Inject Ġconstructor ( ĊĠĠĠ ĠviewModel Factory : ĠViewModel Provider . Factory Ċ ) Ġ: ĠFragment ( R . layout . fragment _ dashboard ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < Dashboard ViewModel > Ġ{ ĠviewModel Factory Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Dashboard Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview Logs Binding : ĠView Logs Binding ĊĠĠĠ Ġprivate Ġval Ġcredentials Provider : ĠCredentials Provider Ġ= ĠCredentials Provider () ĊĊĠĠĠ Ġprivate Ġvar Ġsend Callback : ĠSend Callback ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġp 2 p Client : ĠP 2 p Client Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠHi W ear . getP 2 p Client ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Peer Pkg Name ( credentials Provider . get Peer Pkg Name ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Peer F inger Print ( credentials Provider . get Peer F inger Print ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdevice Client : ĠDevice Client Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠHi W ear . getDevice Client ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdata Controller : ĠData Controller Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠHu awei Hi Health . getData Controller ( require Context ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Dashboard Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġview Logs Binding Ġ= ĠView Logs Binding . bind ( binding . root ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ ĠviewModel . getLast Found Devices () ĊĠĠĠĠĠĠĠ ĠviewModel . getSelected Device () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġsend Callback Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit Views () ĊĠĠĠĠĠĠĠ Ġset ViewModel Observer s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . get Devices . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Available Devices () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . clear Logs . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Logs Binding . log Output TextView . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . device Radio Group . setOn Checked ChangeListener Ġ{ Ġ_: ĠRadio Group , Ġchecked Id : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect RadioButton ( checked Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . debug Mode Switch . setOn Checked ChangeListener Ġ{ Ġ_, Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Logs Binding . scroll View . isVisible Ġ= Ġis Checked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . clear Logs . isVisible Ġ= Ġis Checked ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġselect RadioButton ( checked Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( binding . device Radio Group . child Count Ġ> Ġ 0 Ġ&& Ġchecked Id Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . device Radio Group . children . first Ġ{ Ġchildren View Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchildren View . id Ġ== Ġchecked Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ Ġchildren View Found Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . select Device By (( children View Found Ġas ĠRadio Button ). tag Ġas ĠString ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Available Devices () Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice Client . bon ded Devices . await (). let Ġ{ Ġdevices Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( devices . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Bon ded ĠDevices ĠonSuccess ! Ġdevices Ġlist Ġsize Ġ= Ġ${ devices . size }". log Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . set Found Devices ( devices ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Devices Ġlist Ġis Ġnull Ġor Ġempty ". log Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Failed Ġto Ġget Ġof Ġbounded Ġdevices : Ġ${ e . message }". log Error ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Device List ( devices : ĠList < Device >) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . device Radio Group . removeAll Views () ĊĠĠĠĠĠĠĠ Ġdevices . map Ġ{ Ġdevice Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" device ĠName : Ġ${ device . name }". log Result () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" device Ġconnect Ġstatus : Ġ${ device . isConnected }". log Result () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget RadioButton ( device ). let Ġ{ Ġradio Button Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . device Radio Group . addView ( radioButton ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget RadioButton ( device : ĠDevice ) Ġ= ĠRadio Button ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġid Ġ= ĠView . generate View Id () ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġdevice . name ĊĠĠĠĠĠĠĠ Ġtag Ġ= Ġdevice . uuid ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister Receiver () Ġ= ĠReceiver Ġ{ Ġmessage Ġ-> ĊĠĠĠĠĠĠĠ ĠTim ber . d ( message . data . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset ViewModel Observer s () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . last Found Devices . observe Event ( this ) Ġ{ Ġdevices Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Device List ( devices ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . selected Device . observe Event ( this ) Ġ{ Ġdevice Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevice . uuid ?. let Ġ{ Ġregister P 2 p Client Receiver ( device ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġread Today Sum m ation ( device ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġread Latest Data ( device ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Real Data () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Real Data () Ġ{ ĊĠĠĠĠĠĠĠ ĠHi Health DataStore . start Sport ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĠHi Health Kit Constant . SP ORT _ TYPE _ RUN ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġp 0 , Ġp 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( p 0 Ġ== ĠHi Health Error . SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" start Ġs port Ġsuccess :$ p 0 ". log Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregister Sport Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Reading Heart Rate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister Sport Data () Ġ{ ĊĠĠĠĠĠĠĠ ĠHi Health DataStore . register Sport Data ( require Context (), Ġobject Ġ: ĠHi Sport Data Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Result ( result Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" register Sport Data Ġon Result ĠresultCode :$ result Code ". log Result () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Changed ( state : ĠInt , Ġbundle : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" register Sport Data ĠonChange Ġstate : Ġ$ state ". log Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" distance Ġ: Ġ" Ġ+ Ġbundle [ Hi Health Kit Constant . B UNDLE _ KEY _ DISTANCE ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. log Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" duration Ġ: Ġ" Ġ+ Ġbundle [ Hi Health Kit Constant . B UNDLE _ KEY _ DURATION ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. log Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" cal or ie Ġ: Ġ" Ġ+ Ġbundle [ Hi Health Kit Constant . B UNDLE _ KEY _ CAL OR IE ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. log Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" total Steps Ġ: Ġ" Ġ+ Ġbundle [ Hi Health Kit Constant . B UNDLE _ KEY _ TOTAL _ STEPS ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. log Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" speed Ġ: Ġ" Ġ+ Ġbundle [ Hi Health Kit Constant . B UNDLE _ KEY _ SPEED ]. toString (). log Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" total Cre ep Ġ: Ġ" Ġ+ Ġbundle [ Hi Health Kit Constant . B UNDLE _ KEY _ TOTAL _ CRE EP ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. log Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" total Des cent Ġ: Ġ" Ġ+ Ġbundle [ Hi Health Kit Constant . B UNDLE _ KEY _ TOTAL _ DESC ENT ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. log Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Reading Heart Rate () Ġ{ ĊĠĠĠĠĠĠĠ ĠHi Health DataStore . start Reading Heart Rate ( context , Ġobject Ġ: ĠHi Real Time Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Result ( state : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Reading Heart Rate Ġon Result Ġstate :$ state ". log Result () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonChange ( result Code : ĠInt , Ġvalue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" start Reading Heart Rate ĠonChange ĠresultCode : Ġ$ result Code Ġvalue : Ġ$ value ". log Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠHi Health Error . SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠJSONObject ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" h ri _ info Ġ: Ġ${ jsonObject . getInt (" h ri _ info ") }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" hr _ info Ġ: Ġ Ġ${ jsonObject . getInt (" hr _ info ") }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" h rs qi _ info Ġ: ĠĠ Ġ${ jsonObject . getInt (" h rs qi _ info ") }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" time _ info Ġ: Ġ Ġ${ jsonObject . getLong (" time _ info ") }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" JSONException Ġe Ġ${ e . message }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister P 2 p Client Receiver ( device : ĠDevice ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( binding . device Radio Group . child Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget RadioButton By ( device . uuid ). let Ġ{ Ġradio Button Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( device . isConnected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 2 p Client . register Receiver ( device , Ġregister Receiver ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Register Ġreceiver Ġlistener Ġsucceed ! ". log Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġradio Button . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Result Callback And Sender ( device ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Register Ġreceiver Ġlistener Ġfailed ! ". log Error ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġradio Button . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġradio Button . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġdevice Ġseems Ġto Ġbe Ġdisconnected ". log Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget RadioButton By ( uu Id : ĠString ): ĠRadio Button Ġ= ĊĠĠĠĠĠĠĠ Ġbinding . device Radio Group . find View With Tag ( uu Id ) ĊĊĠĠĠ Ġprivate Ġfun Ġread Today Sum m ation ( device : ĠDevice ) Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDT _ CONT IN UO US _ STEPS _ DELTA , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDT _ CONT IN UO US _ CAL ORIES _ BUR NT ĊĠĠĠĠĠĠĠ Ġ). map Ġ{ ĠdataType Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Controller . read Today Sum m ation ( dataType ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ Ġsample Set Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Today Sum m ation Data ( dataType , Ġsample Set , Ġdevice ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" There Ġwas Ġan Ġerror Ġretrieving ĠToday 's ĠSum m ation Ġ${ error . message }". log Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Failed Ġreading ĠToday 's ĠSum m ation : Ġ${ e . message }". log Error ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Today Sum m ation Data ( ĊĠĠĠĠĠĠĠ ĠdataType : ĠDataType ?, ĊĠĠĠĠĠĠĠ Ġsample Set : ĠSample Set , ĊĠĠĠĠĠĠĠ Ġdevice : ĠDevice ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( sample Set . isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Zero Value ( dataType , Ġdevice ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Today Sum m ation Results ( sample Set , Ġdevice ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Zero Value ( dataType : ĠDataType ?, Ġdevice : ĠDevice ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( dataType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDT _ CONT IN UO US _ STEPS _ TOTAL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Health DataTo Connected Device ( null , ĠHealth Data . Steps , Ġdevice ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Steps ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDT _ CONT IN UO US _ CAL ORIES _ BUR NT _ TOTAL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Health DataTo Connected Device ( null , ĠHealth Data . Cal ories , Ġdevice ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Cal ories ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpopulate Today Sum m ation Results ( sample Set : ĠSample Set , Ġdevice : ĠDevice ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsample Set . sample Points . map Ġ{ Ġsample Point Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Today 's ĠSample Set Ġfor Ġ${ sample Point . dataType } Ġretrieved Ġfrom ĠH MS ĠCore Ġgot ". log Result () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( sample Point . dataType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDT _ CONT IN UO US _ STEPS _ TOTAL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Health DataTo Connected Device ( sample Point , ĠHealth Data . Steps , Ġdevice ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Steps ( sample Point ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDT _ CONT IN UO US _ CAL ORIES _ BUR NT _ TOTAL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Health DataTo Connected Device ( sample Point , ĠHealth Data . Cal ories , Ġdevice ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Cal ories ( sample Point ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Today Sum m ation Results Data ( sample Point ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġread Latest Data ( device : ĠDevice ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch When Res umed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Controller . read Latest Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDT _ INST ANT AN EO US _ HE ART _ RATE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDT _ INST ANT AN EO US _ S PO 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). await (). let Ġ{ Ġresults Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults . keys . map Ġ{ ĠdataType Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( dataType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDT _ INST ANT AN EO US _ HE ART _ RATE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Health DataTo Connected Device ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults [ DT _ INST ANT AN EO US _ HE ART _ RATE ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHealth Data . Heart Rate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Heart Rate ( results [ DT _ INST ANT AN EO US _ HE ART _ RATE ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDT _ INST ANT AN EO US _ S PO 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Health DataTo Connected Device ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults [ DT _ INST ANT AN EO US _ S PO 2 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHealth Data . O xygen , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate O xygen In Blood ( results [ DT _ INST ANT AN EO US _ S PO 2 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Failed Ġreading ĠLatest ĠData : Ġ${ e . message }". log Error ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpopulate Steps ( sample Point : ĠSample Point ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . steps Progress . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġbinding . steps Value . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġsample Point ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . steps Value . text Ġ= Ġit . field Values . values . first (). toString () ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . steps Value . text Ġ= Ġ" 0 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpopulate Cal ories ( sample Point : ĠSample Point ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . cal ories Progress . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġbinding . cal ories Value . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġsample Point ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . cal ories Value . text Ġ= Ġit . field Values . values . first (). toString () ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . cal ories Value . text Ġ= Ġ" 0 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpopulate Heart Rate ( sample Point : ĠSample Point ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . heart Rate Progress . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġbinding . heart Rate Value . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġbinding . heart Rate Value . text Ġ= Ġsample Point ?. field Values ?. values ?. first (). toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpopulate O xygen In Blood ( sample Point : ĠSample Point ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . oxy gen Progress . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġbinding . oxy gen Value . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġbinding . oxy gen Value . text Ġ= Ġsample Point ?. field Values ?. values ?. last (). toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlog Today Sum m ation Results Data ( sample Point : ĠSample Point ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsample Point . dataType . fields . map Ġ{ Ġfield Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Field : Ġ${ field . name } Ġ ĠValue : Ġ${ sample Point . getField Value ( field )} ". log Result () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Payload ( sample Point : ĠSample Point ?, Ġhealth Data : ĠHealth Data ): ĠByteArray Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( health Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHealth Data . Cal ories Ġ-> Ġ" Cal ories " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHealth Data . Heart Rate Ġ-> Ġ" Heart Rate " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHealth Data . Steps Ġ-> Ġ" Steps " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" O xygen " ĊĠĠĠĠĠĠĠ Ġ}. let Ġ{ Ġhealth DataType Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhealth Data Value Ġ= Ġif Ġ( health Data Ġ== ĠHealth Data . O xygen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Point ?. field Values ?. values ?. last (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Point ?. field Values ?. values ?. first (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ health DataType Ġ- Ġ$ health Data Value ". toByteArray () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Health DataTo Connected Device ( ĊĠĠĠĠĠĠĠ Ġsample Point : ĠSample Point ?, ĊĠĠĠĠĠĠĠ Ġhealth Data : ĠHealth Data , ĊĠĠĠĠĠĠĠ Ġdevice : ĠDevice ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdevice . uuid ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Payload ( get Payload ( sample Point , Ġhealth Data )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (). let Ġ{ Ġmessage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 2 p Client . send ( device , Ġmessage , Ġsend Callback ). add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Sent Ġmessage Ġto Ġ${ device . name }' s Ġ${ credentials Provider . get Peer Pkg Name ()} ". log Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Send Ġmessage Ġto Ġ${ device . name }' s Ġ${ credentials Provider . get Peer Pkg Name ()} Ġfailed ". log Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Result Callback And Sender ( device : ĠDevice ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsend Callback Ġ= Ġobject Ġ: ĠSend Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Send Result ( result Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Send Ġmessage Ġto Ġ${ device . name }' s Ġ${ credentials Provider . get Peer Pkg Name ()} ĠResult : Ġ$ result Code ". log Result () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Send Progress ( progress : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Send Ġmessage Ġto Ġ${ device . name }' s Ġ${ credentials Provider . get Peer Pkg Name ()} ĠProgress : Ġ$ progress ". log Result () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ" Send ĠHealth Data ĠCallback ĠRegistered ! ". log Result () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . log Result () Ġ{ ĊĠĠĠĠĠĠĠ Ġappend On Output View ( this ) ĊĠĠĠĠĠĠĠ ĠTim ber . d ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . log Error ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġappend On Output View ( this ) ĊĠĠĠĠĠĠĠ ĠTim ber . e ( exception , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġappend On Output View ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire Activity (). run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Logs Binding . log Output TextView . append ( text Ġ+ ĠSystem . line Separator ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Logs Binding . log Output TextView . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Logs Binding . scroll View . full Scroll ( View . FOCUS _ DOWN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠHealth Data Ġ{ ĊĠĠĠĠĠĠĠ ĠCal ories , ĠSteps , ĠHeart Rate , ĠO xygen ĊĠĠĠ Ġ} Ċ }