From 936ec069668626906559f05722c6b03459a47c4a Mon Sep 17 00:00:00 2001 From: James Cotton Date: Tue, 22 Mar 2011 13:14:11 -0500 Subject: [PATCH] Make auto starting work. For now removed support for standalone service but easy to add back. --- .../androidgcs/OPTelemetryService.java | 43 ++++++++++++------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/androidgcs/src/org/openpilot/androidgcs/OPTelemetryService.java b/androidgcs/src/org/openpilot/androidgcs/OPTelemetryService.java index 43cc13b04..67ee56d4e 100644 --- a/androidgcs/src/org/openpilot/androidgcs/OPTelemetryService.java +++ b/androidgcs/src/org/openpilot/androidgcs/OPTelemetryService.java @@ -68,10 +68,10 @@ public class OPTelemetryService extends Service { public void handleMessage(Message msg) { switch(msg.arg1) { case MSG_START: - Toast.makeText(OPTelemetryService.this, "HERE", Toast.LENGTH_SHORT); - System.out.println("HERE"); stopSelf(msg.arg2); - case MSG_CONNECT: + break; + case MSG_CONNECT: + Toast.makeText(getApplicationContext(), "Attempting connection", Toast.LENGTH_SHORT).show(); terminate = false; SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(OPTelemetryService.this); int connection_type = Integer.decode(prefs.getString("connection_type", "")); @@ -90,6 +90,7 @@ public class OPTelemetryService extends Service { activeTelem.start(); break; case MSG_DISCONNECT: + Toast.makeText(getApplicationContext(), "Disconnct", Toast.LENGTH_SHORT).show(); terminate = true; try { activeTelem.join(); @@ -101,6 +102,8 @@ public class OPTelemetryService extends Service { Intent intent = new Intent(); intent.setAction(INTENT_ACTION_DISCONNECTED); sendBroadcast(intent,null); + + stopSelf(); break; case MSG_TOAST: @@ -113,9 +116,9 @@ public class OPTelemetryService extends Service { } }; - @Override - public void onCreate() { - // Low priority thread for message handling with service + public void startup() { + Toast.makeText(getApplicationContext(), "Telemetry service starting", Toast.LENGTH_SHORT).show(); + HandlerThread thread = new HandlerThread("TelemetryServiceHandler", Process.THREAD_PRIORITY_BACKGROUND); thread.start(); @@ -123,20 +126,27 @@ public class OPTelemetryService extends Service { // Get the HandlerThread's Looper and use it for our Handler mServiceLooper = thread.getLooper(); mServiceHandler = new ServiceHandler(mServiceLooper); + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(OPTelemetryService.this); + if(prefs.getBoolean("autoconnect", false)) { + Toast.makeText(getApplicationContext(), "Should auto connect", Toast.LENGTH_SHORT); + Message msg = mServiceHandler.obtainMessage(); + msg.arg1 = MSG_CONNECT; + msg.arg2 = 0; + mServiceHandler.sendMessage(msg); + } + + } + + @Override + public void onCreate() { + startup(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { - Toast.makeText(this, "Telemetry service starting", Toast.LENGTH_SHORT).show(); - - System.out.println("Start"); - // For each start request, send a message to start a job and deliver the - // start ID so we know which request we're stopping when we finish the job - Message msg = mServiceHandler.obtainMessage(); - msg.arg1 = MSG_START; - msg.arg2 = startId; - mServiceHandler.sendMessage(msg); - + // Currently only using as bound service + // If we get killed, after returning from here, restart return START_STICKY; } @@ -156,6 +166,7 @@ public class OPTelemetryService extends Service { return (TelemTask) activeTelem; } public void openConnection() { + Toast.makeText(getApplicationContext(), "Requested open connection", Toast.LENGTH_SHORT); Message msg = mServiceHandler.obtainMessage(); msg.arg1 = MSG_CONNECT; mServiceHandler.sendMessage(msg);