/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . yum iko . bl ut ooth le chat we ar . chat Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . bluetooth . Bluetooth Device Ċ import Ġandroid . content . Context Ċ import Ġandroid . hardware . Sensor Ċ import Ġandroid . hardware . Sensor Event Ċ import Ġandroid . hardware . Sensor EventListener Ċ import Ġandroid . hardware . Sensor Manager Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . util . Log Ċ import Ġandroid . view .* Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . yum iko . bl ut ooth le chat we ar . bluetooth . Chat Server Ċ import Ġcom . yum iko . bl ut ooth le chat we ar . bluetooth . Message Ċ import Ġcom . yum iko . bl ut ooth le chat we ar . databinding . Fragment Bluetooth Chat Binding Ċ import Ġcom . yum iko . bl ut ooth le chat we ar . visible Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ private Ġconst Ġval ĠTAG Ġ= Ġ" Bluetooth Chat Fragment " Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . CUP CA KE ) Ċ class ĠBluetooth Chat Fragment Ġ: ĠFragment (), ĠSensor EventListener Ġ{ ĊĊĠĠĠ Ġ/* Sensor */ ĊĠĠĠ Ġprivate Ġval Ġmanager : ĠSensor Manager Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire Context (). getSystem Service ( Context . SENSOR _ SERVICE ) Ġas ĠSensor Manager Ġ Ġ// ìĦ ¼ ìĦľ Ġë§¤ ëĭĪ ìłĢ ìĹĲ ëĮĢ íķľ Ġì°¸ ì¡° ë¥¼ Ġìĸ » ê¸° ìľĦ íķ¨ ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġsensor 1 : ĠSensor ? Ġ= Ġnull Ġ// LIN _ ACC ĊĠĠĠ Ġprivate Ġvar Ġsensor 2 : ĠSensor ? Ġ= Ġnull Ġ// ĠG Y ĊĠĠĠ Ġprivate Ġvar Ġsensor 3 : ĠSensor ? Ġ= Ġnull Ġ// ĠGR AV ĊĊĠĠĠ Ġprivate Ġvar Ġstart Clicked : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġstop Clicked : ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġ/* txt Ġfile */ ĊĠĠĠ Ġprivate Ġvar Ġoutput Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġoutput _ gy Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġoutput _ lin Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġoutput _ grav Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġtime : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdate Ġ= ĠDate ( System . currentTimeMillis ()) ĊĊĠĠĠ Ġ/* Queue */ ĊĠĠĠ Ġprivate Ġvar Ġqueue : ĠQueue < String > Ġ= ĠLinkedList < String >() Ġ// Ġíģ Ĳ ĠìĦł ìĸ¸ íķĺê¸° ĊĊĠĠĠ Ġprivate Ġvar Ġconnected Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Bluetooth Chat Binding ? Ġ= Ġnull ĊĠĠĠ Ġ// Ġthis Ġproperty Ġis Ġvalid Ġbetween ĠonCreate View Ġand Ġon Destroy View . ĊĠĠĠ Ġprivate Ġval Ġbinding : ĠFragment Bluetooth Chat Binding ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġprivate Ġval Ġdevice Connection Observer Ġ= ĠObserver < Device Connection State > Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDevice Connection State . Connected Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdevice Ġ= Ġstate . device ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Gatt Ġconnection Ġobserver : Ġhave Ġdevice Ġ$ device ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnected Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" connected ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommunicate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDevice Connection State . Disconnected Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Not Ġconnected ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġconnection Request Observer Ġ= ĠObserver < Bluetooth Device > Ġ{ Ġdevice Ġ-> ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Connection Ġrequest Ġobserver : Ġhave Ġdevice Ġ$ device ") ĊĠĠĠĠĠĠĠ ĠChat Server . setCurrent Chat Connection ( device ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ìŀĲ ê¸° ê°Ģ Ġë°Ľ ëĬĶ Ġë©Ķ ìĦ¸ ì§Ģ ëıĦ , Ġë³ ´ë Ĥ ¸ Ġë©Ķ ìĦ¸ ì§Ģ ëıĦ ĠìĹ¬ ê¸° ìĦľ Ġì²ĺë¦¬ ĠíķĺëĬĶ ê±° Ġê°Ļ ëĭ¤ ĊĠĠĠ Ġprivate Ġval Ġmessage Observer Ġ= ĠObserver < Message > Ġ{ Ġmessage Ġ-> ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Have Ġmessage Ġ${ message . text }") ĊĠĠĠĠĠĠĠ Ġif ( message . text . contains (" TAG ")){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( message . text ) Ġ// Ġìĸ´ëĸ ¤ Ġíĥ ľ ê·¸ ìĿ¸ ì§Ģ Ġí Ĩł ìĬ¤íĬ¸ ë¥¼ Ġë Ŀ Ħ ìļ´ ëĭ¤ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif ( message . text . contains (" TEST ")){ Ġ// Ġíħ Į ìĬ¤íĬ¸ ìļ© Ġí Ĩł ìĬ¤íĬ¸ Ġë©Ķ ìĦ¸ ì§Ģ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( message . text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Bluetooth Chat Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġconnected Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġsensor 1 Ġ= Ġmanager . getDefault Sensor ( Sensor . TYPE _ GR AV ITY ) ĊĠĠĠĠĠĠĠ Ġsensor 2 Ġ= Ġmanager . getDefault Sensor ( Sensor . TYPE _ LINEAR _ AC CELER ATION ) ĊĠĠĠĠĠĠĠ Ġsensor 3 Ġ= Ġmanager . getDefault Sensor ( Sensor . TYPE _ GYRO SCOPE ) ĊĊĠĠĠĠĠĠĠ ĠChat Server . connection Request . observe ( view Lifecycle Owner , Ġconnection Request Observer ) ĊĠĠĠĠĠĠĠ ĠChat Server . device Connection . observe ( view Lifecycle Owner , Ġdevice Connection Observer ) ĊĠĠĠĠĠĠĠ ĠChat Server . messages . observe ( view Lifecycle Owner , Ġmessage Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ìĦ ¼ ìĦľ ëį°ìĿ´íĦ° ĠìĪĺ ì§ĳ Ġ- Ġtxt ĠìłĢìŀ¥ */ ĊĠĠĠ Ġprivate Ġfun Ġcommunicate () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . connected Container . visible () ĊĠĠĠĠĠĠĠ Ġ/* START Ġë²Ħ íĬ ¼ Ġë Ī Į ëł Ģ ìĿĦ ĠëķĮ - ĠìĦ ¼ ìĦľ Ġëį°ìĿ´íĦ° ĠìĪĺ ì§ĳ Ġìĭľìŀĳ . Ġíĥ ľ ê·¸ Ġë©Ķ ìĦ¸ ì§Ģ Ġë°Ľ ê¸° */ ĊĠĠĠĠĠĠĠ Ġbinding . btn Start . setOnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( connected ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( start Clicked ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" ìĿ´ ë¯¸ Ġë Ī Ħ ë¦Ħ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Clicked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop Clicked Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" START ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . register Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsensor 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSensor Manager . SENSOR _ DELAY _ NORMAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . register Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsensor 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSensor Manager . SENSOR _ DELAY _ NORMAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . register Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsensor 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSensor Manager . SENSOR _ DELAY _ NORMAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Not Ġconnected ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/* STOP Ġë²Ħ íĬ ¼ Ġë Ī Į ëł Ģ ìĿĦ ĠëķĮ Ġ- ĠìĦ ¼ ìĦľ Ġëį°ìĿ´íĦ° ĠìĪĺ ì§ĳ Ġë ģ Ŀ ëĤ´ ê³ł Ġtxt ĠíĮĮìĿ¼ ĠìłĢìŀ¥ */ ĊĠĠĠĠĠĠĠ Ġbinding . btn Stop . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// val Ġdb Ġ= ĠFirebase . firestore ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( stop Clicked ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Click ĠSTART ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" STOP ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . unregister Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Clicked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop Clicked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" SimpleDateFormat ") ĊĠĠĠ Ġoverride Ġfun Ġon Sensor Changed ( event : ĠSensor Event ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġsensor Ġ= Ġevent !!. sensor ĊĠĠĠĠĠĠĠ Ġval Ġm Format Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ĠHH - mm - ss - SS S ") ĊĠĠĠĠĠĠĠ Ġdate Ġ= ĠDate ( System . currentTimeMillis ()) Ġ// ĠìĿ´ ê±° Ġê ¼ Ń ĠìĹ¬ ê¸° ĠìŀĪ ìĸ´ ìķ¼ Ġìĭľê°Ħ ĠìĹħ ë İ ĥ ĠëĲ ¨ ĊĠĠĠĠĠĠĠ Ġtime Ġ= Ġm Format . format ( date ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( sensor . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSensor . TYPE _ GYRO SCOPE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput _ gy Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġevent . values . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġíĺķ ìĭĿ : Ġìĭľê°Ħ ; x ; x ê°Ĵ ; y ; y ê°Ĵ ; z ; z ê°Ĵ , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠìĺĪ : Ġ 2 0 2 1 - 1 1 - 2 3 _ 1 7 : 2 3 : 2 8 _ 6 6 7 ; GR AV [ 0 ]; 0 . 8 2 9 2 9 0 5 7 ; GR AV [ 1 ]; 1 . 9 5 0 2 7 5 ; GR AV [ 2 ]; 9 . 5 7 4 9 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġwhen Ġ( i ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ+ Ġ";" Ġ+ Ġ" GY [" Ġ+ Ġi Ġ+ Ġ" ]; " Ġ+ Ġevent . values [ i ] Ġ+ Ġ";" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" GY [" Ġ+ Ġi Ġ+ Ġ" ]; " Ġ+ Ġevent . values [ i ] Ġ+ Ġ"," ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" GY [" Ġ+ Ġi Ġ+ Ġ" ]; " Ġ+ Ġevent . values [ i ] Ġ+ Ġ";" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput _ gy Ġ+= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ i ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . add ( output _ gy ) Ġ// Ġíķľ ĠìĦ¸ íĬ¸ Ġíģ Ĳ ìĹĲ ĠëĦ £ ìĿĮ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( queue . peek ()!= null ){ Ġ// Ġíģ Ĳ ìĹĲ Ġë³ ´ë Ĥ ¼ Ġê² Į ĠìŀĪ ìľ¼ ë©´ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . out . println (" íģ Ĳ : Ġ" Ġ+ Ġqueue . peek ()) Ġ// ĠëĶĶ ë²Ħ ê¹ ħ ìļ© Ġì¶ľëł¥ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Ġ= Ġqueue . peek () Ġ// Ġoutput ĠìĬ¤ íĬ¸ ë§ģ ìĹĲ Ġíģ Ĳ Ġë§ ¨ Ġìķ ŀ ìĹĲ Ġê º ¼ Ġë³ µ ìĤ¬ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠChat Server . sendMessage ( output ) Ġ// Ġoutput Ġë³ ´ë ĥ Ħ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . poll () Ġ// Ġë§ ¨ Ġìķ ŀ Ġëį°ìĿ´íĦ° ĠìĤ Ń ìłľ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 2 0 0 )// ĠëĶ ľ ëłĪ ìĿ´ Ġ 0 . 2 ì ´Ī ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSensor . TYPE _ GR AV ITY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput _ grav Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġevent . values . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġwhen Ġ( i ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ+ Ġ";" Ġ+ Ġ" GV [" Ġ+ Ġi Ġ+ Ġ" ]; " Ġ+ Ġevent . values [ i ] Ġ+ Ġ";" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" GV [" Ġ+ Ġi Ġ+ Ġ" ]; " Ġ+ Ġevent . values [ i ] Ġ+ Ġ"," ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" GV [" Ġ+ Ġi Ġ+ Ġ" ]; " Ġ+ Ġevent . values [ i ] Ġ+ Ġ";" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput _ grav Ġ+= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ i ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . add ( output _ grav ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSensor . TYPE _ LINEAR _ AC CELER ATION Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput _ lin Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġevent . values . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġwhen Ġ( i ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ+ Ġ";" Ġ+ Ġ" LA [" Ġ+ Ġi Ġ+ Ġ" ]; " Ġ+ Ġevent . values [ i ] Ġ+ Ġ";" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" LA [" Ġ+ Ġi Ġ+ Ġ" ]; " Ġ+ Ġevent . values [ i ] Ġ+ Ġ"," ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" LA [" Ġ+ Ġi Ġ+ Ġ" ]; " Ġ+ Ġevent . values [ i ] Ġ+ Ġ";" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput _ lin Ġ+= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ i ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . add ( output _ lin ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Accuracy Changed ( sensor : ĠSensor ?, Ġaccuracy : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* íĨł ìĬ¤íĬ¸ Ġë©Ķ ìĨĮ ëĵľ ĊĠĠĠ Ġ* Ġë³´ í Ĩµ Ġë ľ ¨ ëĬĶ Ġê²ĥ ë³´ ëĭ¤ ĠìķĦëŀĺ ì ª ½ ìĹĲ Ġë ľ ¨ ê²Į Ġíĸ Īëĭ¤ . Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġtoast ( text : ĠString ){ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( context , Ġtext , ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . set Gravity ( Gravity . BOTTOM , Ġ 0 , Ġ 1 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠWindow Manager . Bad Token Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// use Ġa Ġlog Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" ìĹĲ ëŁ¬ ", Ġ" íĨł ìĬ¤íĬ¸ ĠìĹĲ ëŁ¬ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }