package Ġcom . h alex . a 2 df arm ing Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . hardware . Sensor Ċ import Ġandroid . hardware . Sensor Event Ċ import Ġandroid . hardware . Sensor EventListener Ċ import Ġandroid . hardware . Sensor Manager Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . Image Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . recyclerview . widget . Divider Item Decoration Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . h alex . a 2 df arm ing .` class `. Item Model Ċ import Ġcom . h alex . a 2 df arm ing .` class `. My Adapter Ċ import Ġcom . h alex . a 2 df arm ing . view . Point ViewModel Ċ Ċ class ĠGame Activity Ġ: ĠAppCompatActivity (), ĠSensor EventListener , ĠMy Adapter . ClickListener { ĊĊĠĠĠ Ġ// ViewModel Ġper Ġl ' agg iorn amento Ġdei Ġp unte g gi ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠPoint ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtoast Ġ: ĠToast ĊĊĠĠĠ Ġ// Per Ġacc eller ome tro ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsensor Manager : ĠSensor Manager ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġs Accel erometer : ĠSensor ĊĠĠĠ Ġprivate Ġvar Ġlast Update : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġlast _ x Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġlast _ y : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġ Ġvar Ġlast _ z : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġval ĠSHA KE _ THRESHOLD Ġ= Ġ 6 0 0 ĊĊĊĠĠĠ Ġ// Obj List ĊĠĠĠ Ġval ĠMy Adapter Ġ= ĠMy Adapter ( this , Ġthis ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ game ) ĊĊĠĠĠĠĠĠĠ ĠInit ViewModel () ĊĠĠĠĠĠĠĠ ĠInit Recycler () ĊĊĠĠĠĠĠĠĠ Ġ// In iz ial izzazione Ġdei Ġsensor i ĊĠĠĠĠĠĠĠ Ġsensor Manager Ġ= Ġget System Service ( SENSOR _ SERVICE ) Ġas ĠSensor Manager ĊĠĠĠĠĠĠĠ Ġs Accel erometer Ġ= Ġsensor Manager . getDefault Sensor ( Sensor . TYPE _ AC CEL ERO METER ) ĊĠĠĠĠĠĠĠ Ġsensor Manager . register Listener ( this , Ġs Accel erometer Ġ, ĠSensor Manager . SENSOR _ DELAY _ NORMAL ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbutton Farm ing Ġ= ĠfindViewById < Button >( R . id . farm ing ) ĊĠĠĠĠĠĠĠ Ġbutton Farm ing . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . update Click () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbutton Maps Ġ= ĠfindViewById < Image Button >( R . id . maps Button ) ĊĠĠĠĠĠĠĠ Ġbutton Maps . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* val Ġm Intent Ġ= ĠIntent ( this @ Game Activity , ĠMaps Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// m Intent . putExtra (" obj ", ĠviewModel ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( m Intent ) */ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// finish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Sensor Changed ( sensor Event : ĠSensor Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// If Ġthere Ġis Ġa Ġnew Ġsensor Ġdata ĊĠĠĠĠĠĠĠ Ġval Ġmy Sensor : ĠSensor Ġ= Ġsensor Event . sensor ĊĊĠĠĠĠĠĠĠ Ġif Ġ( my Sensor . type Ġ== ĠSensor . TYPE _ AC CEL ERO METER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġsensor Event . values [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġsensor Event . values [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġz Ġ= Ġsensor Event . values [ 2 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcur Time Ġ= ĠSystem . currentTimeMillis () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cur Time Ġ- Ġlast Update Ġ> Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiff Time : ĠLong Ġ= Ġcur Time Ġ- Ġlast Update ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Update Ġ= Ġcur Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspeed : ĠFloat Ġ= ĠMath . abs ( x Ġ+ Ġy Ġ+ Ġz Ġ- Ġlast _ x Ġ- Ġlast _ y Ġ- Ġlast _ z ) Ġ/ Ġdiff Time Ġ* Ġ 1 0 0 0 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( speed Ġ> ĠSHA KE _ THRESHOLD ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . update Click () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast _ x Ġ= Ġx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast _ y Ġ= Ġy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast _ z Ġ= Ġz ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// register ĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġs Accel erometer . also Ġ{ Ġacc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsensor Manager . register Listener ( this , Ġacc , ĠSensor Manager . SENSOR _ DELAY _ NORMAL ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġsensor Manager . unregister Listener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ ĠviewModel . on Stop Act () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠClick ed Item ( item : ĠItem Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif (! viewModel . addItem ( item . name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Adapter . setData ( viewModel . return Data ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// In iz ial izzazione ĠviewModel ĊĠĠĠ Ġprivate Ġfun ĠInit ViewModel (){ ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= Ġ ĠViewModel Provider ( this ). get ( Point ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġobserver View () ĊĠĠĠĠĠĠĠ ĠviewModel . load Data () ĊĠĠĠĠĠĠĠ Ġtoast Ġ= ĠToast . makeText ( application Context , Ġ" Non Ġh ai Ġab b ast anza Ġsol di !", ĠToast . LENGTH _ SHORT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// In iz ial izzazione ĠRe cycler Ġview ĊĠĠĠ Ġprivate Ġfun ĠInit Recycler (){ ĊĠĠĠĠĠĠĠ Ġval Ġre cyclerView Ġ= ĠfindViewById < RecyclerView >( R . id . item Re cy ler View ) ĊĠĠĠĠĠĠĠ ĠMy Adapter . setData ( viewModel . return Data ()) ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . addItem Decoration ( Divider Item Decoration ( this , ĠDiv ider Item Decoration . VERTICAL )) ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= ĠMy Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Accuracy Changed ( sensor : ĠSensor , Ġaccuracy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// If Ġsensor Ġaccuracy Ġchanges . ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġprivate Ġfun Ġobserver View (){ ĊĊĠĠĠĠĠĠĠ ĠviewModel . point . observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Point : ĠTextView Ġ= Ġ( findViewById ( R . id . val ore )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Point . text Ġ= Ġit . toString () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . nickname . observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Nick name : ĠTextView Ġ= Ġ( findViewById ( R . id . text Nick name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Nick name . text Ġ= Ġit . toString () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } ĊĊ