package Ġcom . ct ye ung . ped ometer Ċ Ċ import Ġandroid . hardware . Sensor Ċ import Ġandroid . hardware . Sensor Event Ċ import Ġandroid . hardware . Sensor EventListener Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġcom . ct ye ung . ped ometer . databinding . Fragment Step Detect Binding Ċ import Ġcom . google . android . material . floating action button . Floating ActionButton Ċ import Ġkotlinx . android . synt hetic . main . fragment _ step _ counter .* Ċ Ċ class ĠStep Detect Fragment Ġ: ĠFragment (), ĠSensor EventListener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding Ġ: ĠFragment Step Detect Binding ĊĠĠĠ Ġprivate Ġval Ġsensor Listener : ĠSensor EventListener Ġ= Ġthis ĊĠĠĠ Ġprivate Ġvar Ġcurrent State Ġ= ĠState . STOP PED ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). request Permission () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġ// return Ġinflater . inflate ( R . layout . fragment _ step _ detect , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Binding Util . inflate ( in flater , ĠR . layout . fragment _ step _ detect , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbinding . listener Ġ= Ġthis ; ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġinit Buttons () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Buttons () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġinitial ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn _ stop . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn _ play . isEnabled Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < Floating ActionButton >( R . id . btn _ play ). setOnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Sensor ( Sensor . TYPE _ MOT ION _ DETECT , Ġsensor Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent State Ġ= ĠState . ACTIVE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt State . text Ġ= Ġ" Active " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn _ play . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn _ stop . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < Floating ActionButton >( R . id . btn _ stop ). setOnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). stop Sensor ( sensor Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent State Ġ= ĠState . STOP PED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt State . text Ġ= Ġ" Stopped " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn _ stop . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn _ play . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Sensor Changed ( event : ĠSensor Event ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠ Ġ* ĠFrom Ġdocs Ġ- Ġexpect Ġa Ġvalue Ġof Ġ 1 Ġreturned ĊĠĠĠĠĠĠĠĠ Ġ* Ġhttps :// developer . android . com / reference / android / hardware / Sensor # TYPE _ STEP _ DE TE CTOR ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( currentState ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠState . ACTIVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt State . text Ġ= Ġ" Detected !! " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠState . STOP PED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnothing Ġis Ġhappening ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt State . text Ġ= Ġ" Station ed " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdo Ġnothing Ġ! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Accuracy Changed ( p 0 : ĠSensor ?, Ġp 1 : ĠInt ) Ġ{} Ċ }