package Ġcom . example . ud ptest Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . hardware . Sensor Ċ import Ġandroid . hardware . Sensor Event Ċ import Ġandroid . hardware . Sensor EventListener Ċ import Ġandroid . hardware . Sensor Manager Ċ import Ġandroid . media . MediaPlayer Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . widget .* Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . local broadcast manager . content . Local Broadcast Manager Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ main . next 2 Ċ import Ġkotlin . math . absolute Value Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . view . Menu Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . example . ud ptest . Singleton . ev Num Ċ import Ġcom . example . ud ptest . Singleton . kp Num Ċ import Ġcom . example . ud ptest . Singleton . last Ev Ċ import Ġcom . example . ud ptest . Singleton . last Kp Ċ import Ġcom . google . zx ing . integration . android . Intent Integr ator Ċ import Ġjava . util .* Ċ import Ġkotlin . concurrent . timer Task Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĊĊ ĊĊĠĠĠ Ġvar Ġtext Content Ġ: String ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġintent 2 Ġ: Ġ ĠIntent ĊĠĠĠ Ġprivate Ġvar Ġlayout Status Ġ= Ġ 0 ĊĠĠĠ Ġ// Sensor ĊĠĠĠ Ġlateinit Ġvar Ġsensor Manager : ĠSensor Manager ĊĠĠĠ Ġvar Ġsensor : ĠSensor ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġx Value Ġ: ĠDouble Ġ= Ġ 0 . 0 ĊĠĠĠ Ġvar Ġy Value Ġ: ĠDouble Ġ= Ġ 0 . 0 ĊĠĠĠ Ġvar Ġz Value Ġ: ĠDouble Ġ= Ġ 0 . 0 ĊĊĊĊĠĠĠ Ġprivate Ġval Ġevent Listener Ġ= Ġobject Ġ: ĠSensor EventListener Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ çķ ¶ æĦŁ æ¸ ¬ åĻ¨ çļĦ Ġ ç²¾ ç¢º åº¦ æĶ¹ è® Ĭ æĻĤ ï¼Į å°± æľĥ è§ ¸ çĻ ¼ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Accuracy Changed ( p 0 : ĠSensor ?, Ġp 1 : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ// Ġ çķ ¶ æĦŁ æ¸ ¬ åĻ¨ çļĦ Ġæ¸ ¬ éĩı åĢ¼ æĶ¹ è® Ĭ æĻĤ ï¼Į å°± æľĥ è§ ¸ çĻ ¼ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sensor Changed ( event : ĠSensor Event ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event Ġ== Ġnull ) ĠLog . d (" sensor ", Ġ" äºĭä»¶ çĤº ç©º ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event !!. sensor . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSensor . TYPE _ AC CEL ERO METER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingleton . x Ġ= Ġevent . values [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingleton . y Ġ= Ġevent . values [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingleton . z Ġ= Ġevent . values [ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" sensor ", Ġ" æľª çŁ¥ çļĦ æĦŁ æ¸ ¬ åĻ¨ è§ ¸ çĻ ¼ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġvar Ġlv : ĠListView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcustom Adapter : ĠCustom Adapter ? Ġ= Ġnull ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. hide () ĊĊĠĠĠĠĠĠĠ Ġlinear Layout 1 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġlinear Layout 3 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġlinear Layout 6 . visibility Ġ= ĠView . IN VISIBLE ĊĊĊĠĠĠĠĠĠĠ ĠLocal Broadcast Manager . getInstance ( this ). register Receiver ( object Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext ?, Ġintent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( intent !!. getString Extra (" message ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" detect _ shake " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Content Ġ= Ġ" Sh aking Ġdetected " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Status Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetect status . text Ġ= Ġtext Content ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQR iv !!. setImage Resource ( R . drawable . shake ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" eq " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Content Ġ= Ġ" Sh aking Ġoccurred " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetect status . text Ġ= Ġtext Content ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Status Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQR iv !!. setImage Resource ( R . drawable . eq ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" normal " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" normal ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Content Ġ= Ġ" Start Ġdetect ing " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetect status . text Ġ= Ġtext Content ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQR iv !!. setImage Bitmap ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" correction " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Correct ing ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Content Ġ= Ġ" Correct ing , Ġdon 't Ġmove " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetect status . text Ġ= Ġtext Content ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQR iv !!. setImage Bitmap ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" log " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Content Ġ= Ġ" kp Ġnum Ġ: $ kp Num \ n $ last Kp \ ne vent Ġnum Ġ: $ ev Num \ n $ last Ev " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug log . text Ġ= Ġtext Content ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQR iv !!. setImage Bitmap ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" refresh ĠUI Ġfinish Ġ: ãĢĢ "+ ĠDate ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" hand _ move " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswitch 1 . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop Service ( intent 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrestart Timer Ġ= ĠTimer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrestart Timer . schedule ( timer Task Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (( Singleton . x . absolute Value Ġ- Ġ 9 . 8 0 6 6 5 ). absolute Value < 0 . 3 || Ġ( Singleton . y . absolute Value Ġ- Ġ 9 . 8 0 6 6 5 ). absolute Value Ġ< 0 . 3 ||( ĠSingleton . z . absolute Value Ġ- Ġ 9 . 8 0 6 6 5 ). absolute Value < 0 . 3 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswitch 1 . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Service ( intent 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrestart Timer . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrestart Timer . purge () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" restart Ġstatus "," success ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetect status . text Ġ= Ġ" Put Ġthe Ġphone Ġh orizontally " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" restart Ġstatus "," fail ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, 6 0 0 0 0 , 6 0 0 0 0 ) ĊĊĊ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" not _ horizontal " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetect status . text Ġ= Ġ" Put Ġthe Ġphone Ġh orizontally " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" end _ detect " Ġ-> { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetect status . text Ġ= Ġ" End Ġdetect ing " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĠIntent Filter (" My Message ")) ĊĠĠĠĠĠĠĠ ĠSingleton . broadcast = ĠLocal Broadcast Manager . getInstance ( this ) ĊĠĠĠĠĠĠĠ Ġ// setLayout ĊĠĠĠĠĠĠĠ Ġset View () ĊĠĠĠĠĠĠĠ ĠSingleton . token Set . set Share ( this . get SharedPreferences (" DATA ", Ġ 0 )) ĊĠĠĠĠĠĠĠ ĠSingleton . credit . set Share ( this . get SharedPreferences (" DATA ", Ġ 0 )) ĊĊĠĠĠĠĠĠĠ Ġlv Ġ= ĠfindViewById < ListView >( R . id . lv ) ĊĠĠĠĠĠĠĠ Ġ// Ġmodel ArrayList Ġ= Ġmodel ĊĠĠĠĠĠĠĠ Ġset Array () ĊĠĠĠĠĠĠĠ Ġ// if ( custom Adapter Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġcustom Adapter Ġ= ĠCustom Adapter ( this , ĠSingleton . model ArrayList Ġ) ĊĠĠĠĠĠĠĠ Ġlv !!. adapter Ġ= Ġcustom Adapter ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( this , ĠManifest . permission . CAMERA ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" ask Ġpermission ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĠarrayOf ( Manifest . permission . CAMERA ), 1 Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġintent 2 Ġ= ĠIntent ( this , Detection Service :: class . java ) ĊĊĊĠĠĠĠĠĠĠ Ġ// Sensor ĊĠĠĠĠĠĠĠ Ġsensor Manager Ġ= Ġget System Service ( Context . SENSOR _ SERVICE ) Ġas ĠSensor Manager ĊĠĠĠĠĠĠĠ Ġsensor Ġ= Ġsensor Manager . getDefault Sensor ( Sensor . TYPE _ AC CEL ERO METER ) ĊĠĠĠĠĠĠĠ Ġsensor Manager . register Listener ( event Listener , Ġsensor , ĠSensor Manager . SENSOR _ DELAY _ FAST EST ) ĊĠĠĠĠĠĠĠ Ġ// set Ġring ĊĠĠĠĠĠĠĠ ĠSingleton . media Player Ġ= ĠMedia Player . create ( this , ĠR . raw . eq _ warning _ sound ) ĊĠĠĠĠĠĠĠ ĠSingleton . media Player ?. setOn Prepared Listener Ġ{ Ġprintln (" sound Ġready ") Ġ} ĊĠĠĠĠĠĠĠ Ġ// start Ġudp Ġserver ĊĠĠĠĠĠĠĠ Ġ// Udp Server ( this , Ġsocket ). start () ĊĠĠĠĠĠĠĠ Ġ// connecting Ġto Ġcountry Ġserver ĊĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= Ġ ĠIntent ( this , Udp Service :: class . java ) ĊĠĠĠĠĠĠĠ Ġstart Service ( intent ) ĊĠĠĠĠĠĠĠ Ġ/* Thread ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠU dp Sender ( socket ). boot Ask Send () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK p Alive (). random time ( 1 5 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Timer (). schedule ( timer Task Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ* //* Timer (). schedule ( timer Task Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠDate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= Ġ ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . setTime ( date ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdf Ġ= Ġ ĠSimpleDateFormat (" yyyy - MM - dd ĠHH : mm : ss . SS S ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" kp Ġstart Ġtime ", Ġdf . format ( calendar . time )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( server Ip Ġ!= Ġ"" Ġ|| Ġserver Port Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" check Ġip Ġport Ġin Ġmain Ġ: Ġ"+ ĠDate ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// k pal ive Ġwith Ġserver ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠU dp Sender ( socket ). kp Alive Send () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" kp Ġfinish Ġ: Ġ"+ ĠDate ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" try Ġto Ġreconnect Ġto Ġcs Ġ: Ġ"+ ĠDate ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠU dp Sender ( socket ). boot Ask Send () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" reconnect Ġfinish Ġ: Ġ"+ ĠDate ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, 3 0 0 0 0 0 , Ġ 3 0 0 0 0 0 ) */ ĊĠĠĠĠĠĠĠ Ġ}). start () ĊĠĠĠĠĠĠĠ ĠThread ( Runnable Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" try Ġto Ġreconnect Ġto Ġcs Ġ: Ġ"+ ĠDate ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠU dp Sender ( socket ). boot Ask Send () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" reconnect Ġfinish Ġ: Ġ"+ ĠDate ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, 3 0 0 0 0 0 , Ġ 3 0 0 0 0 0 )* //* ĊĠĠĠĠĠĠĠ Ġ}). start () */ ĊĠĠĠĠĠĠĠ Ġ/* Thread ( Runnable Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimer (). schedule ( timer Task Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// println (" ack Ġstart "+ ĠDate ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( server Ip Ġ!= Ġ"" Ġ|| Ġserver Port Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// println (" check Ġip Ġport Ġin ĠMain ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// k pal ive Ġwith Ġserver ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠU dp Sender ( socket ). kp Ack Send () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// println (" ack Ġfinish "+ ĠDate ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, 3 0 0 0 0 , Ġ 3 0 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġ}). start () */ ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĊĠĠĠĠĠĠĠ Ġstop Service ( intent 2 ) ĊĠĠĠĠĠĠĠ Ġstop Service ( intent ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon KeyDown ( keyCode : ĠInt , Ġevent : ĠKeyEvent ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(( keyCode Ġ== ĠKeyEvent . KEYCODE _ BACK ) && linear Layout 1 . visibility Ġ!= ĠView . VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 1 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 2 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 3 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 6 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on KeyDown ( keyCode , Ġevent ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġswitch 1 . text Ġ= Ġ" Detection " ĊĠĠĠĠĠĠĠ Ġswitch 1 . setOn Checked ChangeListener ( Compound Button . On Checked ChangeListener Ġ{ Ġbtn View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Value Ġ= Ġ( Singleton . x . absolute Value Ġ- Ġ 9 . 8 0 6 6 5 ). absolute Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Value Ġ= Ġ( Singleton . y . absolute Value Ġ- Ġ 9 . 8 0 6 6 5 ). absolute Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz Value Ġ= Ġ( Singleton . z . absolute Value Ġ- Ġ 9 . 8 0 6 6 5 ). absolute Value ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( x Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( x Value < 0 . 3 || y Value < 0 . 3 || z Value < 0 . 3 ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Singleton . detect Ġ== Ġnull ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Service ( intent 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent (" My Message ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" message ", Ġ" not _ horizontal ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingleton . broadcast ?. send Broadcast ( intent ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswitch 1 . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Singleton . detect != null ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop Service ( intent 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent (" My Message ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" message ", Ġ" end _ detect ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingleton . broadcast ?. send Broadcast ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" end ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingleton . detect Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠIntent Integr ator . parse Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . contents Ġ== Ġnull ) Ġrun Ġ{ ĠToast . makeText ( this , Ġ" Scan Ġfailed !", ĠToast . LENGTH _ LONG ). show () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( result . contents . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtool Ġ= ĠTool ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Array Ġ= Ġresult . contents . split (",") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( token Array . size == 2 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( token Array [ 0 ] ! ="" && token Array [ 1 ] ! =" "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwait Ġfor Ġcheck Ġsafe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" token ", Ġtoken Array [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Device Ġname ", Ġtoken Array [ 1 ]) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtool . add ID ( result . contents ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Sender . push F CM Notification ( token Array [ 0 ], Ġ" Pair ", Ġ" éħį å°į æĪĲåĬŁ ", 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġprivate Ġfun Ġset Array (){ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Model >() ĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ Ġ= ĠSingleton . token Set . list Token () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( i . toString ()+ msg [ i ]. number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( msg [ i ]. number ! =- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠModel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . set Numbers ( msg [ i ]. number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . set Tokens ( msg [ i ]. name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( model ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠSingleton . model ArrayList Ġ= Ġlist ĊĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġthread Ġproblem ĊĊĊĠĠĠ Ġprivate Ġfun Ġset View (){ ĊĊĊĠĠĠĠĠĠĠ Ġval Ġconstr ant view Ġ: ĠConstraint Layout Ġ= Ġlinear Layout 1 ĊĠĠĠĠĠĠĠ Ġconstr ant view . setOn Touch Listener ( object Ġ: ĠView . On Touch Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Touch ( v : ĠView , Ġm : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( layout Status Ġ== Ġ 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQR iv !!. setImage Bitmap ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Status Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ) ĊĠĠĠĠĠĠĠ Ġhow to !!. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 1 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 2 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 3 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 6 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnext 1 !!. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 1 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 2 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 3 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 6 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnext 2 !!. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 1 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 2 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 3 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 6 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpair _ setting !!. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 1 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 2 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 3 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout 6 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Adapter !!. refresh View () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdetect status . text Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠ Ġcamera !!. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthread Ġ= ĠThread ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Integr ator Ġ= ĠIntent Integr ator ( this @ MainActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent Integr ator . set Camera Id ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent Integr ator . init iate Scan () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthread . start () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĊĠĠĠ Ġ} ĊĊ Ċ } Ċ