Add new message format (fix #63)
Этот коммит содержится в:
Generated
@@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="EntryPointsManager">
|
||||
<entry_points version="2.0" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="1.7" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2013 Anton Tananaev (anton.tananaev@gmail.com)
|
||||
* Copyright 2013 - 2014 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.
|
||||
@@ -35,8 +35,6 @@ public class PositionProvider {
|
||||
public void onPositionUpdate(Location location);
|
||||
}
|
||||
|
||||
private final Context context;
|
||||
|
||||
private final Handler handler;
|
||||
private final LocationManager locationManager;
|
||||
private final long period;
|
||||
@@ -46,8 +44,7 @@ public class PositionProvider {
|
||||
private boolean useCoarse;
|
||||
|
||||
public PositionProvider(Context context, String type, long period, PositionListener listener) {
|
||||
this.context = context;
|
||||
handler = new Handler(this.context.getMainLooper());
|
||||
handler = new Handler(context.getMainLooper());
|
||||
locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
|
||||
this.period = period;
|
||||
this.listener = listener;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012 - 2013 Anton Tananaev (anton.tananaev@gmail.com)
|
||||
* Copyright 2012 - 2014 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.
|
||||
@@ -49,23 +49,36 @@ public class Protocol {
|
||||
/**
|
||||
* Format location message
|
||||
*/
|
||||
public static String createLocationMessage(Location l) {
|
||||
StringBuilder s = new StringBuilder("$GPRMC,");
|
||||
public static String createLocationMessage(boolean extended, Location l, double battery) {
|
||||
StringBuilder s = new StringBuilder(extended ? "$TRCCR," : "$GPRMC,");
|
||||
Formatter f = new Formatter(s, Locale.ENGLISH);
|
||||
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"), Locale.ENGLISH);
|
||||
calendar.setTimeInMillis(l.getTime());
|
||||
|
||||
if (extended) {
|
||||
|
||||
f.format("%1$tY%1$tm%1$td%1$tH%1$tM%1$tS.%1$tL,A,", calendar);
|
||||
|
||||
f.format("%.6f,%.6f,", l.getLatitude(), l.getLongitude());
|
||||
f.format("%.2f,%.2f,", l.getSpeed() * 1.943844, l.getBearing());
|
||||
f.format("%.2f,", l.getAltitude());
|
||||
f.format("%.0f,", battery);
|
||||
|
||||
} else {
|
||||
|
||||
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' );
|
||||
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;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012 Anton Tananaev (anton.tananaev@gmail.com)
|
||||
* Copyright 2012 - 2014 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.
|
||||
@@ -42,6 +42,7 @@ public class TraccarActivity extends PreferenceActivity {
|
||||
public static final String KEY_PORT = "port";
|
||||
public static final String KEY_INTERVAL = "interval";
|
||||
public static final String KEY_PROVIDER = "provider";
|
||||
public static final String KEY_EXTENDED = "extended";
|
||||
public static final String KEY_STATUS = "status";
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012 - 2013 Anton Tananaev (anton.tananaev@gmail.com)
|
||||
* Copyright 2012 - 2014 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.
|
||||
@@ -15,12 +15,16 @@
|
||||
*/
|
||||
package org.traccar.client;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Service;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
|
||||
import android.location.Location;
|
||||
import android.os.BatteryManager;
|
||||
import android.os.Build;
|
||||
import android.os.IBinder;
|
||||
import android.os.PowerManager;
|
||||
import android.os.PowerManager.WakeLock;
|
||||
@@ -39,6 +43,7 @@ public class TraccarService extends Service {
|
||||
private int port;
|
||||
private int interval;
|
||||
private String provider;
|
||||
private boolean extended;
|
||||
|
||||
private SharedPreferences sharedPreferences;
|
||||
private ClientController clientController;
|
||||
@@ -66,6 +71,7 @@ public class TraccarService extends Service {
|
||||
provider = sharedPreferences.getString(TraccarActivity.KEY_PROVIDER, null);
|
||||
port = Integer.valueOf(sharedPreferences.getString(TraccarActivity.KEY_PORT, null));
|
||||
interval = Integer.valueOf(sharedPreferences.getString(TraccarActivity.KEY_INTERVAL, null));
|
||||
extended = sharedPreferences.getBoolean(TraccarActivity.KEY_EXTENDED, false);
|
||||
} catch (Exception error) {
|
||||
Log.w(LOG_TAG, error);
|
||||
}
|
||||
@@ -79,6 +85,7 @@ public class TraccarService extends Service {
|
||||
sharedPreferences.registerOnSharedPreferenceChangeListener(preferenceChangeListener);
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.ECLAIR)
|
||||
@Override
|
||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||
onStart(intent, startId);
|
||||
@@ -109,13 +116,20 @@ public class TraccarService extends Service {
|
||||
wakeLock.release();
|
||||
}
|
||||
|
||||
public double getBatteryLevel() {
|
||||
Intent batteryIntent = registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||
int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
|
||||
int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, 1);
|
||||
return (level * 100.0) / scale;
|
||||
}
|
||||
|
||||
private PositionProvider.PositionListener positionListener = new PositionProvider.PositionListener() {
|
||||
|
||||
@Override
|
||||
public void onPositionUpdate(Location location) {
|
||||
if (location != null) {
|
||||
StatusActivity.addMessage(getString(R.string.status_location_update));
|
||||
clientController.setNewLocation(Protocol.createLocationMessage(location));
|
||||
clientController.setNewLocation(Protocol.createLocationMessage(extended, location, getBatteryLevel()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,6 +170,10 @@ public class TraccarService extends Service {
|
||||
positionProvider = new PositionProvider(TraccarService.this, provider, interval * 1000, positionListener);
|
||||
positionProvider.startUpdates();
|
||||
|
||||
} else if (key.equals(TraccarActivity.KEY_EXTENDED)) {
|
||||
|
||||
extended = sharedPreferences.getBoolean(TraccarActivity.KEY_EXTENDED, false);
|
||||
|
||||
}
|
||||
} catch (Exception error) {
|
||||
Log.w(LOG_TAG, error);
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
<string name="settings_status_on">Stop</string>
|
||||
<string name="settings_status_off_summary">Zastaveno</string>
|
||||
<string name="settings_status_on_summary">Spuštěno</string>
|
||||
<string name="settings_extended_title">Rozšířené formát</string>
|
||||
<string name="settings_extended_summary">Použijte nový formát zprávy</string>
|
||||
<string name="settings_provider_title">Poskytovatel zaměření</string>
|
||||
<string name="settings_provider_summary">Zdroj zaměřovacích dat</string>
|
||||
<string-array name="settings_provider_names">
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
<string name="settings_status_on">Stop</string>
|
||||
<string name="settings_status_off_summary">Service stoppet</string>
|
||||
<string name="settings_status_on_summary">Service er aktiv</string>
|
||||
<string name="settings_extended_title">Udvidet format</string>
|
||||
<string name="settings_extended_summary">Brug ny besked format</string>
|
||||
<string name="settings_provider_title">Udbyder</string>
|
||||
<string name="settings_provider_summary">Udbyder lokaliseringsdata</string>
|
||||
<string-array name="settings_provider_names">
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
<string name="settings_status_on">Stop</string>
|
||||
<string name="settings_status_off_summary">Dienst inaktiv</string>
|
||||
<string name="settings_status_on_summary">Dienst aktiv</string>
|
||||
<string name="settings_extended_title">Erweiterte Format</string>
|
||||
<string name="settings_extended_summary">Verwenden Sie neue Nachrichtenformat</string>
|
||||
<string name="settings_provider_title">Datenherkunft</string>
|
||||
<string name="settings_provider_summary">Quelle der Positionen</string>
|
||||
<string-array name="settings_provider_names">
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
<string name="settings_status_on">Desactivado</string>
|
||||
<string name="settings_status_off_summary">Servicio parado</string>
|
||||
<string name="settings_status_on_summary">Servicio activado</string>
|
||||
<string name="settings_extended_title">Formato extendido</string>
|
||||
<string name="settings_extended_summary">Utilice el nuevo formato de mensaje</string>
|
||||
<string name="settings_provider_title">Proveedor de localización</string>
|
||||
<string name="settings_provider_summary">Fuente de los datos de localización</string>
|
||||
<string-array name="settings_provider_names">
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
<string name="settings_status_on">Arrêter</string>
|
||||
<string name="settings_status_off_summary">Arrêté</string>
|
||||
<string name="settings_status_on_summary">En marche</string>
|
||||
<string name="settings_extended_title">Format étendu</string>
|
||||
<string name="settings_extended_summary">Utilisez un nouveau format de message</string>
|
||||
<string name="settings_provider_title">Source de localisation</string>
|
||||
<string name="settings_provider_summary">Source utilisée par le système afin d\'obtenir la localisation de l\'appareil</string>
|
||||
<string-array name="settings_provider_names">
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
<string name="settings_status_on">Parar</string>
|
||||
<string name="settings_status_off_summary">Serviço Parado</string>
|
||||
<string name="settings_status_on_summary">Serviço em execução</string>
|
||||
<string name="settings_extended_title">Formato prolongado</string>
|
||||
<string name="settings_extended_summary">Use o formato de mensagem nova</string>
|
||||
<string name="settings_provider_title">Provedor de localização</string>
|
||||
<string name="settings_provider_summary">Fonte dos dados de localização</string>
|
||||
<string-array name="settings_provider_names">
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
<string name="settings_status_on">Стоп</string>
|
||||
<string name="settings_status_off_summary">Сервис остановлен</string>
|
||||
<string name="settings_status_on_summary">Сервис запущен</string>
|
||||
<string name="settings_extended_title">Расширенный формат</string>
|
||||
<string name="settings_extended_summary">Использовать новый формат сообщений</string>
|
||||
<string name="settings_provider_title">Провайдер местоположения</string>
|
||||
<string name="settings_provider_summary">Источник данных о местоположении</string>
|
||||
<string-array name="settings_provider_names">
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
<string name="settings_status_on">Stop</string>
|
||||
<string name="settings_status_off_summary">Service stopped</string>
|
||||
<string name="settings_status_on_summary">Service running</string>
|
||||
<string name="settings_extended_title">Extended format</string>
|
||||
<string name="settings_extended_summary">Use new message format</string>
|
||||
<string name="settings_provider_title">Location provider</string>
|
||||
<string name="settings_provider_summary">Source of location data</string>
|
||||
<string-array name="settings_provider_names">
|
||||
|
||||
@@ -33,6 +33,12 @@
|
||||
android:summary="@string/settings_provider_summary"
|
||||
android:title="@string/settings_provider_title" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="false"
|
||||
android:key="extended"
|
||||
android:summary="@string/settings_extended_summary"
|
||||
android:title="@string/settings_extended_title" />
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="status"
|
||||
|
||||
@@ -33,6 +33,12 @@
|
||||
android:summary="@string/settings_provider_summary"
|
||||
android:title="@string/settings_provider_title" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="false"
|
||||
android:key="extended"
|
||||
android:summary="@string/settings_extended_summary"
|
||||
android:title="@string/settings_extended_title" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="false"
|
||||
android:key="status"
|
||||
|
||||
Ссылка в новой задаче
Block a user