package Ġcom . no ah bres . mission control Ċ Ċ import Ġandroid . app . Activity Ċ 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 . util . Log Ċ import Ġcom . no ah bres . mission control . webserver . WebServer Ċ import Ġcom . no ah bres . mission control . websocket . Socket Listener Ċ import Ġcom . no ah bres . mission control . websocket . WebSocket Ċ import Ġorg . java _ websocket . handshake . Client Handshake Ċ import Ġjava . util .* ĊĊ Ċ class ĠMis sion Control ( activity Ġ: ĠActivity , Ġsend Sensor Data Ġ: ĠBoolean ) Ġ: ĠSocket Listener , ĠSensor EventListener Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Mission Control " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġactivity Ġ= Ġactivity ĊĊĠĠĠ Ġprivate Ġval Ġweb Server Ġ= ĠWeb Server () ĊĠĠĠ Ġprivate Ġval Ġweb Socket Ġ= ĠWebSocket () ĊĊĠĠĠ Ġprivate Ġvar Ġsend Sensor Data Ġ= Ġsend Sensor Data ĊĊĊĠĠĠ Ġprivate Ġvar Ġsensor Manager Ġ: ĠSensor Manager ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġsensor Accel erometer Ġ: ĠSensor ? Ġ= Ġnull ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Socket . add Socket Listener ( this ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Mission ĠControl Ġstarting ") ĊĠĠĠĠĠĠĠ Ġweb Server . start () ĊĠĠĠĠĠĠĠ Ġweb Socket . start () ĊĊĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġsensor Manager Ġ= Ġactivity . getSystem Service ( Context . SENSOR _ SERVICE ) Ġas ĠSensor Manager ĊĠĠĠĠĠĠĠ Ġval Ġlocal Sensor Manager Ġ= Ġactivity . getSystem Service ( Context . SENSOR _ SERVICE ) Ġas ĠSensor Manager ĊĠĠĠĠĠĠĠ Ġsensor Manager Ġ= Ġlocal Sensor Manager ĊĠĠĠĠĠĠĠ Ġsensor Accel erometer Ġ= Ġlocal Sensor Manager . getDefault Sensor ( Sensor . TYPE _ AC CEL ERO METER ) ĊĊĠĠĠĠĠĠĠ Ġif ( send Sensor Data ) Ġturn On Sensor Reading () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstop () Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Server . stop () ĊĠĠĠĠĠĠĠ Ġweb Socket . stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġturn On Sensor Reading () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . send Sensor Data Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġsensor Manager ?. register Listener ( this , Ġsensor Accel erometer , ĠSensor Manager . SENSOR _ DELAY _ GAME ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġturn Off Sensor Reading () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . send Sensor Data Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġsensor Manager ?. unregister Listener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Open ( conn : Ġorg . java _ websocket . WebSocket , Ġhandshake : ĠClient Handshake ) Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Socket . sendMessage ( conn , ĠLog Model (" testing Ġ", Ġ" init ", ĠDate ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Message ( conn : Ġorg . java _ websocket . WebSocket ?, Ġmsg : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i (" Mission Control ", Ġ" Message : Ġ$ msg ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Accuracy Changed ( sensor : ĠSensor ?, Ġaccuracy : ĠInt ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Sensor Changed ( event : ĠSensor Event ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( event ?. sensor ?. type Ġ!= ĠSensor . TYPE _ AC CEL ERO METER ) Ġreturn Ċ Ċ // ĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ"" Ġ+ Ġevent . values [ 0 ] Ġ+ Ġ", Ġ" Ġ+ Ġevent . values [ 1 ]) Ċ // ĠĠĠĠĠĠĠ Ġweb Socket . sendMessage () ĊĠĠĠĠĠĠĠ Ġweb Socket . broadcast ( Log Model ("${ event . values [ 0 ]}, Ġ${ event . values [ 1 ] }", Ġ" accel erometer ", ĠDate ())) ĊĠĠĠ Ġ} Ċ }