From 26bc00f5fd183172065438a4f74938c8e1fa2042 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Wed, 12 Aug 2015 20:31:09 +1200 Subject: [PATCH] Create new tracking controller --- .../traccar/client/TrackingController.java | 65 +++++++++++++++++++ .../org/traccar/client/TrackingService.java | 41 ++---------- 2 files changed, 72 insertions(+), 34 deletions(-) create mode 100644 app/src/main/java/org/traccar/client/TrackingController.java diff --git a/app/src/main/java/org/traccar/client/TrackingController.java b/app/src/main/java/org/traccar/client/TrackingController.java new file mode 100644 index 0000000..1861b78 --- /dev/null +++ b/app/src/main/java/org/traccar/client/TrackingController.java @@ -0,0 +1,65 @@ +/* + * Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com) + * + * 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 org.traccar.client; + +import android.content.Context; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; + +public class TrackingController implements PositionProvider.PositionListener { + + private Context context; + private SharedPreferences preferences; + + private PositionProvider positionProvider; + + public TrackingController(Context context) { + this.context = context; + preferences = PreferenceManager.getDefaultSharedPreferences(context); + positionProvider = new PositionProvider(context, this, + preferences.getString(MainActivity.KEY_ID, null), + preferences.getString(MainActivity.KEY_PROVIDER, null), + Integer.parseInt(preferences.getString(MainActivity.KEY_INTERVAL, null)) * 1000); + } + + public void start() { + positionProvider.startUpdates(); + } + + public void stop() { + positionProvider.stopUpdates(); + } + + @Override + public void onPositionUpdate(Position position) { + String request = ProtocolFormatter.formatRequest( + preferences.getString(MainActivity.KEY_ADDRESS, null), + Integer.parseInt(preferences.getString(MainActivity.KEY_INTERVAL, null)), + position.getId(), position.location, position.getBattery()); + + RequestManager.sendRequest(request, new RequestManager.RequestHandler() { + @Override + public void onSuccess() { + } + + @Override + public void onFailure() { + StatusActivity.addMessage(context.getString(R.string.status_send_fail)); + } + }); + } + +} diff --git a/app/src/main/java/org/traccar/client/TrackingService.java b/app/src/main/java/org/traccar/client/TrackingService.java index 85cf112..81569cf 100644 --- a/app/src/main/java/org/traccar/client/TrackingService.java +++ b/app/src/main/java/org/traccar/client/TrackingService.java @@ -18,17 +18,14 @@ package org.traccar.client; import android.app.Service; import android.content.Context; import android.content.Intent; -import android.content.SharedPreferences; import android.os.IBinder; import android.os.PowerManager; import android.os.PowerManager.WakeLock; -import android.preference.PreferenceManager; -public class TrackingService extends Service implements PositionProvider.PositionListener { +public class TrackingService extends Service { + + private TrackingController trackingController; - private ClientController clientController; - private PositionProvider positionProvider; - private WakeLock wakeLock; @Override @@ -39,20 +36,8 @@ public class TrackingService extends Service implements PositionProvider.Positio wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, getClass().getName()); wakeLock.acquire(); - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); - - String id = sharedPreferences.getString(MainActivity.KEY_ID, null); - - clientController = new ClientController(this, - sharedPreferences.getString(MainActivity.KEY_ADDRESS, null), - Integer.parseInt(sharedPreferences.getString(MainActivity.KEY_PORT, null)), - ProtocolFormatter.createLoginMessage(id)); - clientController.start(); - - positionProvider = new PositionProvider(this, this, id, - sharedPreferences.getString(MainActivity.KEY_PROVIDER, null), - Integer.parseInt(sharedPreferences.getString(MainActivity.KEY_INTERVAL, null)) * 1000); - positionProvider.startUpdates(); + trackingController = new TrackingController(this); + trackingController.start(); } @Override @@ -64,23 +49,11 @@ public class TrackingService extends Service implements PositionProvider.Positio public void onDestroy() { StatusActivity.addMessage(getString(R.string.status_service_destroy)); - if (positionProvider != null) { - positionProvider.stopUpdates(); - } - - if (clientController != null) { - clientController.stop(); + if (trackingController != null) { + trackingController.stop(); } wakeLock.release(); } - @Override - public void onPositionUpdate(Position position) { - if (position != null) { - StatusActivity.addMessage(getString(R.string.status_location_update)); - clientController.setNewLocation(ProtocolFormatter.createLocationMessage(position.location, 0)); - } - } - }