package Ġcom . rad ik al . pc notifications . listeners Ċ Ċ import Ġandroid . app . Service Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . AsyncTask Ċ import Ġandroid . os . IB inder Ċ import Ġandroid . util . Log Ċ import Ġcom . rad ik al . pc notifications . Main Application Ċ import Ġcom . rad ik al . pc notifications . exceptions . Device Not Connected Exception Ċ import Ġcom . rad ik al . pc notifications . exceptions . Server Details NotFoundException Ċ import Ġcom . rad ik al . pc notifications . model . domain . Server Details Ċ import Ġcom . rad ik al . pc notifications . model . service . Device Com municator Ċ import Ġcom . rad ik al . pc notifications . model . service . Server Details Dao Ċ import Ġjava . net . Data gram Packet Ċ import Ġjava . net . Data gram Socket Ċ import Ġjavax . inject . Inject ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġt ud or Ġon Ġ 0 5 . 0 3 . 2 0 1 7 . Ċ Ġ*/ Ċ class ĠServer Wake Listener Ġ: ĠService () Ġ{ ĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġjava Class . simple Name ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġdevice Com municator : ĠDevice Com municator ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġserver Details Dao : ĠServer Details Dao ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ( intent : ĠIntent ?): ĠI Binder ? Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" UDP ĠListener Ġon Bind ") ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" UDP ĠListener ĠonCreate ") ĊĠĠĠĠĠĠĠ Ġ( this . application Ġas ĠMain Application ). app Component . inject ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Command ( intent : ĠIntent ?, Ġflags : ĠInt , Ġstart Id : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ ĠStart Listener AsyncTask ( server Details Dao , Ġdevice Com municator ). execute () ĊĠĠĠĠĠĠĠ Ġreturn ĠSTART _ STICK Y ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠStart Listener AsyncTask ( server Details Dao : ĠServer Details Dao , Ġdevice Com municator : ĠDevice Com municator ) Ġ: ĠAsync Task < Void , ĠVoid , ĠVoid >() Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġjava Class . simple Name ĊĊĠĠĠĠĠĠĠ Ġvar Ġserver Details Dao : ĠServer Details Dao ? Ġ= Ġserver Details Dao ĊĠĠĠĠĠĠĠ Ġvar Ġdevice Com municator : ĠDevice Com municator ? Ġ= Ġdevice Com municator ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġparams : ĠVoid ?): ĠVoid ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Listener () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġstart Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" UDP ĠListener Ġstarted ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġserver Details : ĠServer Details ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserver Details Ġ= Ġserver Details Dao !!. retrieve () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠServer Details NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Can 't Ġfind Ġport ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġport Ġ= Ġserver Details . port ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġserver Socket Ġ= ĠData gram Socket ( port ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceive Data Ġ= ĠByteArray ( 8 ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceive Packet Ġ= ĠData gram Packet ( receive Data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceive Data . size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" Listening ...") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserver Socket . receive ( receive Packet ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsentence Ġ= ĠString ( receive Packet . data , Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceive Packet . length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" UDP Ġreceived : Ġ$ sentence ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" wake " Ġ== Ġsentence ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice Com municator !!. connect () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠDevice Not Connected Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġexception . message , Ġexception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnow Ġsend Ġacknowledge ment Ġpacket Ġback Ġto Ġsender ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠIP Address Ġ= Ġreceive Packet . address ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsend String Ġ= Ġ" connecting " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsend Data Ġ= Ġsend String . toByteArray ( charset (" UTF - 8 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsend Packet Ġ= ĠData gram Packet ( send Data , Ġsend Data . size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIP Address , Ġreceive Packet . port ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserver Socket . send ( send Packet ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }