package com.safemobile.services; import java.text.SimpleDateFormat; import java.util.Date; import com.safemobile.interfaces.ITCPListener; import com.safemobile.lib.AppParams; import android.annotation.SuppressLint; import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.IBinder; import android.widget.Toast; public class TCPService extends Service { private int[] startModes = {START_STICKY, START_NOT_STICKY, START_REDELIVER_INTENT}; private int mStartMode = startModes[0]; // indicates how to behave if the service is killed private IBinder mBinder = new TCPBinder(); // interface for clients that bind private boolean mAllowRebind = true; // indicates whether onRebind should be used private TCPhandler tcp = null; private TCPmsgParser tcpParser = null; @Override public void onCreate() { // create a TCP connection and a TCP msg Parser int port = 13589; try { port = Integer.parseInt(AppParams.PORT); } catch(Exception ex) { } tcpParser = new TCPmsgParser(); if(tcp == null && !AppParams.IP.equalsIgnoreCase("n/a")) { tcp = new TCPhandler(getApplicationContext(), AppParams.IP, port); } } @Override public int onStartCommand(Intent intent, int flags, int startId) { // The service is starting, due to a call to startService() return mStartMode; } @Override public IBinder onBind(Intent intent) { // A client is binding to the service with bindService() return mBinder; } @Override public boolean onUnbind(Intent intent) { // All clients have unbound with unbindService() return mAllowRebind; } @Override public void onRebind(Intent intent) { // A client is binding to the service with bindService(), // after onUnbind() has already been called } @Override public void onDestroy() { // The service is no longer used and is being destroyed Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show(); } /** get TCP Connection in order to send messages through TCP */ public TCPhandler getTCPConnection() { return tcp; } /** Add TCP Listener to TCPmsgParser */ public boolean addITCPListener(ITCPListener listener) { if(tcpParser != null) tcpParser.addTCPListener(listener); else return false; return true; } /** remove all TCP Listeners */ public boolean clearITCPListeners() { if(tcpParser != null) tcpParser.clearITCPListeners(); else return false; return true; } /** get TCP msg Parser in order to add a new TCP Listener */ public TCPmsgParser getTCPmsgParser() { if(tcpParser == null) tcpParser = new TCPmsgParser(); return tcpParser; } /** Stop TCP Connection */ public void stopTCPConnection() { if(tcp != null) { tcp.Stop(); tcp = null; } } /** restart the TCP Connection after the connection parameters had been changed */ public void recreateTCPConnection() { /* Thread t = new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(1000*2); } catch (InterruptedException e) { e.printStackTrace(); } */ // create a tcp connection int port = 13589; try { port = Integer.parseInt(AppParams.PORT); } catch(Exception ex) { } tcp = new TCPhandler(getApplicationContext(), AppParams.IP, port); /* } }); t.start(); */ } public void recreateTCPConnection(String _ip, String _port) { // create a tcp connection int port = 13589; try { port = Integer.parseInt(_port); } catch(Exception ex) { } tcp = new TCPhandler(getApplicationContext(), _ip, port); } public void updateTCPparameters(String ip, String _port) { if(tcp!=null) tcp.updateTCPparameters(ip, _port); else recreateTCPConnection(); } /** recreate a TCPmsgParser */ public void recreateTCPmsgParser() { tcpParser = new TCPmsgParser(); } @SuppressLint("SimpleDateFormat") public String getCurrentTime() { SimpleDateFormat dateformat = new SimpleDateFormat("HH:mm:ss MM/dd/yyyy"); return (dateformat.format(new Date())); } /** get TCPService Binder */ public class TCPBinder extends Binder { public TCPService getService() { return TCPService.this; } } }