Remove old unused code
Этот коммит содержится в:
@@ -1,141 +0,0 @@
|
||||
/*
|
||||
* Copyright 2013 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 java.util.LinkedList;
|
||||
import java.util.Queue;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.os.Handler;
|
||||
import android.util.Log;
|
||||
|
||||
|
||||
public class ClientController implements Connection.ConnectionHandler {
|
||||
|
||||
public static final long RECONNECT_DELAY = 10 * 1000;
|
||||
|
||||
private Context context;
|
||||
|
||||
private Handler handler;
|
||||
private Queue<String> messageQueue;
|
||||
|
||||
private Connection connection;
|
||||
|
||||
private String address;
|
||||
private int port;
|
||||
private String loginMessage;
|
||||
|
||||
public ClientController(Context context, String address, int port, String loginMessage) {
|
||||
this.context = context;
|
||||
messageQueue = new LinkedList<String>();
|
||||
this.address = address;
|
||||
this.port = port;
|
||||
this.loginMessage = loginMessage;
|
||||
}
|
||||
|
||||
private BroadcastReceiver connectivityListener = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
StatusActivity.addMessage(context.getString(R.string.status_connectivity_change));
|
||||
/*if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false)) {
|
||||
handler.removeCallbacksAndMessages(null);
|
||||
} else {
|
||||
reconnect();
|
||||
}*/
|
||||
}
|
||||
};
|
||||
|
||||
public void start() {
|
||||
handler = new Handler();
|
||||
connection = new Connection(this);
|
||||
connection.connect(address, port);
|
||||
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
|
||||
context.registerReceiver(connectivityListener, filter);
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
context.unregisterReceiver(connectivityListener);
|
||||
|
||||
connection.close();
|
||||
handler.removeCallbacksAndMessages(null);
|
||||
}
|
||||
|
||||
private void reconnect() {
|
||||
handler.removeCallbacksAndMessages(null);
|
||||
connection.close();
|
||||
connection = new Connection(this);
|
||||
connection.connect(address, port);
|
||||
}
|
||||
|
||||
private void delayedReconnect() {
|
||||
connection.close();
|
||||
handler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
connection = new Connection(ClientController.this);
|
||||
connection.connect(address, port);
|
||||
}
|
||||
}, RECONNECT_DELAY);
|
||||
}
|
||||
|
||||
public void setNewServer(String address, int port) {
|
||||
this.address = address;
|
||||
this.port = port;
|
||||
reconnect();
|
||||
}
|
||||
|
||||
public void setNewLogin(String loginMessage) {
|
||||
this.loginMessage = loginMessage;
|
||||
reconnect();
|
||||
}
|
||||
|
||||
public void setNewLocation(String locationMessage) {
|
||||
messageQueue.offer(locationMessage);
|
||||
if (!connection.isClosed() && !connection.isBusy()) {
|
||||
connection.send(messageQueue.poll());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnected(boolean result) {
|
||||
if (result) {
|
||||
StatusActivity.addMessage(context.getString(R.string.status_connection_success));
|
||||
connection.send(loginMessage);
|
||||
} else {
|
||||
StatusActivity.addMessage(context.getString(R.string.status_connection_fail));
|
||||
delayedReconnect();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSent(boolean result) {
|
||||
if (result) {
|
||||
if (!messageQueue.isEmpty()) {
|
||||
connection.send(messageQueue.poll());
|
||||
}
|
||||
} else {
|
||||
StatusActivity.addMessage(context.getString(R.string.status_send_fail));
|
||||
delayedReconnect();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,157 +0,0 @@
|
||||
/*
|
||||
* Copyright 2012 - 2013 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 java.io.Closeable;
|
||||
import java.io.OutputStream;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.Socket;
|
||||
|
||||
import android.os.AsyncTask;
|
||||
import android.util.Log;
|
||||
|
||||
/**
|
||||
* Asynchronous connection
|
||||
*
|
||||
* All methods should be called from UI thread only.
|
||||
*/
|
||||
public class Connection implements Closeable {
|
||||
|
||||
public static final String LOG_TAG = "Traccar.Connection";
|
||||
public static final int SOCKET_TIMEOUT = 10 * 1000;
|
||||
|
||||
/**
|
||||
* Callback interface
|
||||
*/
|
||||
public interface ConnectionHandler {
|
||||
void onConnected(boolean result);
|
||||
void onSent(boolean result);
|
||||
}
|
||||
|
||||
private ConnectionHandler handler;
|
||||
|
||||
private Socket socket;
|
||||
private OutputStream socketStream;
|
||||
|
||||
private boolean closed;
|
||||
private boolean busy;
|
||||
|
||||
public boolean isClosed() {
|
||||
return closed;
|
||||
}
|
||||
|
||||
public boolean isBusy() {
|
||||
return busy;
|
||||
}
|
||||
|
||||
public Connection(ConnectionHandler handler) {
|
||||
this.handler = handler;
|
||||
closed = false;
|
||||
busy = false;
|
||||
}
|
||||
|
||||
public void connect(final String address, final int port) {
|
||||
busy = true;
|
||||
|
||||
new AsyncTask<Void, Void, Boolean>() {
|
||||
|
||||
@Override
|
||||
protected Boolean doInBackground(Void... params) {
|
||||
try {
|
||||
socket = new Socket();
|
||||
socket.connect(new InetSocketAddress(address, port));
|
||||
socket.setSoTimeout(SOCKET_TIMEOUT);
|
||||
socketStream = socket.getOutputStream();
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
Log.w(LOG_TAG, e.getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCancelled() {
|
||||
if (!closed) {
|
||||
busy = false;
|
||||
handler.onConnected(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Boolean result) {
|
||||
if (!closed) {
|
||||
busy = false;
|
||||
handler.onConnected(result);
|
||||
}
|
||||
}
|
||||
|
||||
}.execute();
|
||||
|
||||
}
|
||||
|
||||
public void send(String message) {
|
||||
busy = true;
|
||||
|
||||
new AsyncTask<String, Void, Boolean>() {
|
||||
|
||||
@Override
|
||||
protected Boolean doInBackground(String... params) {
|
||||
try {
|
||||
socketStream.write(params[0].getBytes());
|
||||
socketStream.flush();
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
Log.w(LOG_TAG, e.getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCancelled() {
|
||||
if (!closed) {
|
||||
busy = false;
|
||||
handler.onSent(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Boolean result) {
|
||||
if (!closed) {
|
||||
busy = false;
|
||||
handler.onSent(result);
|
||||
}
|
||||
}
|
||||
|
||||
}.execute(message);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
closed = true;
|
||||
try {
|
||||
if (socketStream != null) {
|
||||
socketStream.close();
|
||||
}
|
||||
if (socket != null) {
|
||||
socket.close();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(LOG_TAG, e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -15,11 +15,6 @@
|
||||
*/
|
||||
package org.traccar.client;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Formatter;
|
||||
import java.util.Locale;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import android.location.Location;
|
||||
import android.net.Uri;
|
||||
|
||||
@@ -41,53 +36,5 @@ public class ProtocolFormatter {
|
||||
return builder.build().toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Format device id message
|
||||
*/
|
||||
public static String createLoginMessage(String id) {
|
||||
StringBuilder s = new StringBuilder("$PGID,");
|
||||
Formatter f = new Formatter(s, Locale.ENGLISH);
|
||||
|
||||
s.append(id);
|
||||
|
||||
byte checksum = 0;
|
||||
for (byte b : s.substring(1).getBytes()) {
|
||||
checksum ^= b;
|
||||
}
|
||||
f.format("*%02x\r\n", (int) checksum);
|
||||
f.close();
|
||||
|
||||
return s.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Format location message
|
||||
*/
|
||||
public static String createLocationMessage(Location l, double battery) {
|
||||
StringBuilder s = new StringBuilder("$GPRMC,");
|
||||
Formatter f = new Formatter(s, Locale.ENGLISH);
|
||||
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"), Locale.ENGLISH);
|
||||
calendar.setTimeInMillis(l.getTime());
|
||||
|
||||
f.format("%1$tH%1$tM%1$tS.%1$tL,A,", calendar);
|
||||
|
||||
double lat = l.getLatitude();
|
||||
double lon = l.getLongitude();
|
||||
f.format("%02d%07.4f,%c,", (int) Math.abs(lat), Math.abs(lat) % 1 * 60, lat < 0 ? 'S' : 'N');
|
||||
f.format("%03d%07.4f,%c,", (int) Math.abs(lon), Math.abs(lon) % 1 * 60, lon < 0 ? 'W' : 'E');
|
||||
|
||||
double speed = l.getSpeed() * 1.943844; // speed in knots
|
||||
f.format("%.2f,%.2f,", speed, l.getBearing());
|
||||
f.format("%1$td%1$tm%1$ty,,", calendar);
|
||||
|
||||
byte checksum = 0;
|
||||
for (byte b : s.substring(1).getBytes()) {
|
||||
checksum ^= b;
|
||||
}
|
||||
f.format("*%02x\r\n", (int) checksum);
|
||||
f.close();
|
||||
|
||||
return s.toString();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user