diff --git a/app/src/main/java/android/support/v4/content/WakefulBroadcastReceiver.java b/app/src/main/java/android/support/v4/content/WakefulBroadcastReceiver.java
deleted file mode 100644
index 137e5fa..0000000
--- a/app/src/main/java/android/support/v4/content/WakefulBroadcastReceiver.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * 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 android.support.v4.content;
-
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.os.PowerManager;
-import android.util.Log;
-import android.util.SparseArray;
-
-/**
- * Helper for the common pattern of implementing a {@link BroadcastReceiver}
- * that receives a device wakeup event and then passes the work off
- * to a {@link android.app.Service}, while ensuring that the
- * device does not go back to sleep during the transition.
- *
- * This class takes care of creating and managing a partial wake lock
- * for you; you must request the {@link android.Manifest.permission#WAKE_LOCK}
- * permission to use it.
- *
- * Example
- *
- * A {@link WakefulBroadcastReceiver} uses the method
- * {@link WakefulBroadcastReceiver#startWakefulService startWakefulService()}
- * to start the service that does the work. This method is comparable to
- * {@link android.content.Context#startService startService()}, except that
- * the {@link WakefulBroadcastReceiver} is holding a wake lock when the service
- * starts. The intent that is passed with
- * {@link WakefulBroadcastReceiver#startWakefulService startWakefulService()}
- * holds an extra identifying the wake lock.
- *
- * {@sample development/samples/Support4Demos/src/com/example/android/supportv4/content/SimpleWakefulReceiver.java complete}
- *
- * The service (in this example, an {@link android.app.IntentService}) does
- * some work. When it is finished, it releases the wake lock by calling
- * {@link WakefulBroadcastReceiver#completeWakefulIntent
- * completeWakefulIntent(intent)}. The intent it passes as a parameter
- * is the same intent that the {@link WakefulBroadcastReceiver} originally
- * passed in.
- *
- * {@sample development/samples/Support4Demos/src/com/example/android/supportv4/content/SimpleWakefulService.java complete}
- */
-public abstract class WakefulBroadcastReceiver extends BroadcastReceiver {
- private static final String EXTRA_WAKE_LOCK_ID = "android.support.content.wakelockid";
-
- private static final SparseArray mActiveWakeLocks
- = new SparseArray();
- private static int mNextId = 1;
-
- /**
- * Do a {@link android.content.Context#startService(android.content.Intent)
- * Context.startService}, but holding a wake lock while the service starts.
- * This will modify the Intent to hold an extra identifying the wake lock;
- * when the service receives it in {@link android.app.Service#onStartCommand
- * Service.onStartCommand}, it should pass back the Intent it receives there to
- * {@link #completeWakefulIntent(android.content.Intent)} in order to release
- * the wake lock.
- *
- * @param context The Context in which it operate.
- * @param intent The Intent with which to start the service, as per
- * {@link android.content.Context#startService(android.content.Intent)
- * Context.startService}.
- */
- public static ComponentName startWakefulService(Context context, Intent intent) {
- synchronized (mActiveWakeLocks) {
- int id = mNextId;
- mNextId++;
- if (mNextId <= 0) {
- mNextId = 1;
- }
-
- intent.putExtra(EXTRA_WAKE_LOCK_ID, id);
- ComponentName comp = context.startService(intent);
- if (comp == null) {
- return null;
- }
-
- PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
- PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
- "wake:" + comp.flattenToShortString());
- wl.setReferenceCounted(false);
- wl.acquire(60*1000);
- mActiveWakeLocks.put(id, wl);
- return comp;
- }
- }
-
- /**
- * Finish the execution from a previous {@link #startWakefulService}. Any wake lock
- * that was being held will now be released.
- *
- * @param intent The Intent as originally generated by {@link #startWakefulService}.
- * @return Returns true if the intent is associated with a wake lock that is
- * now released; returns false if there was no wake lock specified for it.
- */
- public static boolean completeWakefulIntent(Intent intent) {
- final int id = intent.getIntExtra(EXTRA_WAKE_LOCK_ID, 0);
- if (id == 0) {
- return false;
- }
- synchronized (mActiveWakeLocks) {
- PowerManager.WakeLock wl = mActiveWakeLocks.get(id);
- if (wl != null) {
- wl.release();
- mActiveWakeLocks.remove(id);
- return true;
- }
- // We return true whether or not we actually found the wake lock
- // the return code is defined to indicate whether the Intent contained
- // an identifier for a wake lock that it was supposed to match.
- // We just log a warning here if there is no wake lock found, which could
- // happen for example if this function is called twice on the same
- // intent or the process is killed and restarted before processing the intent.
- Log.w("WakefulBroadcastReceive", "No active wake lock id #" + id);
- return true;
- }
- }
-}
diff --git a/app/src/main/java/org/traccar/client/AboutActivity.java b/app/src/main/java/org/traccar/client/AboutActivity.java
index 69ad13d..b563f21 100644
--- a/app/src/main/java/org/traccar/client/AboutActivity.java
+++ b/app/src/main/java/org/traccar/client/AboutActivity.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 Anton Tananaev (anton.tananaev@gmail.com)
+ * Copyright 2012 - 2017 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,22 +15,24 @@
*/
package org.traccar.client;
-import android.app.Activity;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+import android.util.Log;
import android.widget.TextView;
-public class AboutActivity extends Activity {
+public class AboutActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.about);
- TextView title = (TextView) findViewById(R.id.title);
+ TextView title = findViewById(R.id.title);
try {
title.setText(title.getText() + " " + getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName);
} catch (NameNotFoundException e) {
+ Log.w(AboutActivity.class.getSimpleName(), e);
}
}
diff --git a/app/src/main/java/org/traccar/client/AutostartReceiver.java b/app/src/main/java/org/traccar/client/AutostartReceiver.java
index 3cd4db0..af57fad 100644
--- a/app/src/main/java/org/traccar/client/AutostartReceiver.java
+++ b/app/src/main/java/org/traccar/client/AutostartReceiver.java
@@ -26,7 +26,7 @@ public class AutostartReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
- if (sharedPreferences.getBoolean(MainActivity.KEY_STATUS, false)) {
+ if (sharedPreferences.getBoolean(MainFragment.KEY_STATUS, false)) {
startWakefulService(context, new Intent(context, TrackingService.class));
}
}
diff --git a/app/src/main/java/org/traccar/client/DialLaunchReceiver.java b/app/src/main/java/org/traccar/client/DialLaunchReceiver.java
index 86b5db7..5029efa 100644
--- a/app/src/main/java/org/traccar/client/DialLaunchReceiver.java
+++ b/app/src/main/java/org/traccar/client/DialLaunchReceiver.java
@@ -28,7 +28,7 @@ public class DialLaunchReceiver extends BroadcastReceiver {
String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
if (phoneNumber.equals(LAUNCHER_NUMBER)) {
setResultData(null);
- Intent appIntent = new Intent(context, MainActivity.class);
+ Intent appIntent = new Intent(context, MainFragment.class);
appIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(appIntent);
}
diff --git a/app/src/main/java/org/traccar/client/MainActivity.java b/app/src/main/java/org/traccar/client/MainFragment.java
similarity index 83%
rename from app/src/main/java/org/traccar/client/MainActivity.java
rename to app/src/main/java/org/traccar/client/MainFragment.java
index d1d0e55..8ffce29 100644
--- a/app/src/main/java/org/traccar/client/MainActivity.java
+++ b/app/src/main/java/org/traccar/client/MainFragment.java
@@ -20,6 +20,7 @@ import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.ComponentName;
+import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
@@ -30,11 +31,14 @@ import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.EditTextPreference;
import android.preference.Preference;
-import android.preference.PreferenceActivity;
+import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.preference.TwoStatePreference;
+import android.support.annotation.NonNull;
+import android.support.v4.content.ContextCompat;
import android.util.Log;
import android.view.Menu;
+import android.view.MenuInflater;
import android.view.MenuItem;
import android.webkit.URLUtil;
import android.widget.Toast;
@@ -43,10 +47,9 @@ import java.util.HashSet;
import java.util.Random;
import java.util.Set;
-@SuppressWarnings("deprecation")
-public class MainActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener {
+public class MainFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener {
- private static final String TAG = MainActivity.class.getSimpleName();
+ private static final String TAG = MainFragment.class.getSimpleName();
public static final String KEY_DEVICE = "id";
public static final String KEY_URL = "url";
@@ -70,7 +73,7 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen
removeLauncherIcon();
}
- sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
+ sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
migrateLegacyPreferences(sharedPreferences);
addPreferencesFromResource(R.xml.preferences);
initPreferences();
@@ -120,8 +123,8 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen
findPreference(KEY_DISTANCE).setOnPreferenceChangeListener(numberValidationListener);
findPreference(KEY_ANGLE).setOnPreferenceChangeListener(numberValidationListener);
- alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
- alarmIntent = PendingIntent.getBroadcast(this, 0, new Intent(this, AutostartReceiver.class), 0);
+ alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
+ alarmIntent = PendingIntent.getBroadcast(getActivity(), 0, new Intent(getActivity(), AutostartReceiver.class), 0);
if (sharedPreferences.getBoolean(KEY_STATUS, false)) {
startTrackingService(true, false);
@@ -129,14 +132,14 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen
}
private void removeLauncherIcon() {
- String className = MainActivity.class.getCanonicalName().replace(".MainActivity", ".Launcher");
- ComponentName componentName = new ComponentName(getPackageName(), className);
- PackageManager packageManager = getPackageManager();
+ String className = MainFragment.class.getCanonicalName().replace(".MainActivity", ".Launcher");
+ ComponentName componentName = new ComponentName(getActivity().getPackageName(), className);
+ PackageManager packageManager = getActivity().getPackageManager();
if (packageManager.getComponentEnabledSetting(componentName) != PackageManager.COMPONENT_ENABLED_STATE_DISABLED) {
packageManager.setComponentEnabledSetting(
componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setIcon(android.R.drawable.ic_dialog_alert);
builder.setMessage(getString(R.string.hidden_alert));
builder.setPositiveButton(android.R.string.ok, null);
@@ -146,32 +149,32 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen
private void addShortcuts(String action, int name) {
Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
- shortcutIntent.setComponent(new ComponentName(getPackageName(), ShortcutActivity.class.getCanonicalName()));
+ shortcutIntent.setComponent(new ComponentName(getActivity().getPackageName(), ShortcutActivity.class.getCanonicalName()));
shortcutIntent.putExtra(ShortcutActivity.EXTRA_ACTION, action);
Intent installShortCutIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
installShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
installShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(name));
installShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
- Intent.ShortcutIconResource.fromContext(this, R.mipmap.ic_launcher));
+ Intent.ShortcutIconResource.fromContext(getActivity(), R.mipmap.ic_launcher));
- sendBroadcast(installShortCutIntent);
+ getActivity().sendBroadcast(installShortCutIntent);
}
private boolean hasPermission(String permission) {
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) {
return true;
}
- return checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED;
+ return ContextCompat.checkSelfPermission(getActivity(), permission) == PackageManager.PERMISSION_GRANTED;
}
@Override
- protected void onResume() {
+ public void onResume() {
super.onResume();
sharedPreferences.registerOnSharedPreferenceChangeListener(this);
}
@Override
- protected void onPause() {
+ public void onPause() {
super.onPause();
sharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
}
@@ -199,15 +202,15 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen
}
@Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.main, menu);
- return super.onCreateOptionsMenu(menu);
+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+ inflater.inflate(R.menu.main, menu);
+ super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.status) {
- startActivity(new Intent(this, StatusActivity.class));
+ startActivity(new Intent(getActivity(), StatusActivity.class));
return true;
} else if (item.getItemId() == R.id.shortcuts) {
addShortcuts(ShortcutActivity.EXTRA_ACTION_START, R.string.shortcut_start);
@@ -215,18 +218,18 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen
addShortcuts(ShortcutActivity.EXTRA_ACTION_SOS, R.string.shortcut_sos);
return true;
} else if (item.getItemId() == R.id.about) {
- startActivity(new Intent(this, AboutActivity.class));
+ startActivity(new Intent(getActivity(), AboutActivity.class));
return true;
}
return super.onOptionsItemSelected(item);
}
private void initPreferences() {
- PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
+ PreferenceManager.setDefaultValues(getActivity(), R.xml.preferences, false);
if (!sharedPreferences.contains(KEY_DEVICE)) {
String id = String.valueOf(new Random().nextInt(900000) + 100000);
- sharedPreferences.edit().putString(KEY_DEVICE, id).commit();
+ sharedPreferences.edit().putString(KEY_DEVICE, id).apply();
((EditTextPreference) findPreference(KEY_DEVICE)).setText(id);
}
findPreference(KEY_DEVICE).setSummary(sharedPreferences.getString(KEY_DEVICE, null));
@@ -254,11 +257,11 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen
if (permission) {
setPreferencesEnabled(false);
- startService(new Intent(this, TrackingService.class));
+ getActivity().startService(new Intent(getActivity(), TrackingService.class));
alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
15000, 15000, alarmIntent);
} else {
- sharedPreferences.edit().putBoolean(KEY_STATUS, false).commit();
+ sharedPreferences.edit().putBoolean(KEY_STATUS, false).apply();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
TwoStatePreference preference = (TwoStatePreference) findPreference(KEY_STATUS);
preference.setChecked(false);
@@ -271,12 +274,12 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen
private void stopTrackingService() {
alarmManager.cancel(alarmIntent);
- stopService(new Intent(this, TrackingService.class));
+ getActivity().stopService(new Intent(getActivity(), TrackingService.class));
setPreferencesEnabled(true);
}
@Override
- public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == PERMISSIONS_REQUEST_LOCATION) {
boolean granted = true;
for (int result : grantResults) {
@@ -295,14 +298,14 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen
&& (URLUtil.isHttpUrl(userUrl) || URLUtil.isHttpsUrl(userUrl))) {
return true;
}
- Toast.makeText(MainActivity.this, R.string.error_msg_invalid_url, Toast.LENGTH_LONG).show();
+ Toast.makeText(getActivity(), R.string.error_msg_invalid_url, Toast.LENGTH_LONG).show();
return false;
}
private void migrateLegacyPreferences(SharedPreferences preferences) {
String port = preferences.getString("port", null);
if (port != null) {
- Log.d(TAG, "migrateLegacyPreferences: migrating to URL preference");
+ Log.d(TAG, "Migrating to URL preference");
String host = preferences.getString("address", getString(R.string.settings_url_default_value));
String scheme = preferences.getBoolean("secure", false) ? "https" : "http";
@@ -315,7 +318,8 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen
editor.remove("port");
editor.remove("address");
editor.remove("secure");
- editor.commit();
+ editor.apply();
}
}
+
}
diff --git a/app/src/main/java/org/traccar/client/Position.java b/app/src/main/java/org/traccar/client/Position.java
index 888c620..7f1da5f 100644
--- a/app/src/main/java/org/traccar/client/Position.java
+++ b/app/src/main/java/org/traccar/client/Position.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com)
+ * Copyright 2015 - 2017 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.
@@ -36,39 +36,93 @@ public class Position {
}
private long id;
- public long getId() { return id; }
- public void setId(long id) { this.id = id; }
+
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
private String deviceId;
- public String getDeviceId() { return deviceId; }
- public void setDeviceId(String deviceId) { this.deviceId = deviceId; }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
private Date time;
- public Date getTime() { return time; }
- public void setTime(Date time) { this.time = time; }
+
+ public Date getTime() {
+ return time;
+ }
+
+ public void setTime(Date time) {
+ this.time = time;
+ }
private double latitude;
- public double getLatitude() { return latitude; }
- public void setLatitude(double latitude) { this.latitude = latitude; }
+
+ public double getLatitude() {
+ return latitude;
+ }
+
+ public void setLatitude(double latitude) {
+ this.latitude = latitude;
+ }
private double longitude;
- public double getLongitude() { return longitude; }
- public void setLongitude(double longitude) { this.longitude = longitude; }
+
+ public double getLongitude() {
+ return longitude;
+ }
+
+ public void setLongitude(double longitude) {
+ this.longitude = longitude;
+ }
private double altitude;
- public double getAltitude() { return altitude; }
- public void setAltitude(double altitude) { this.altitude = altitude; }
+
+ public double getAltitude() {
+ return altitude;
+ }
+
+ public void setAltitude(double altitude) {
+ this.altitude = altitude;
+ }
private double speed;
- public double getSpeed() { return speed; }
- public void setSpeed(double speed) { this.speed = speed; }
+
+ public double getSpeed() {
+ return speed;
+ }
+
+ public void setSpeed(double speed) {
+ this.speed = speed;
+ }
private double course;
- public double getCourse() { return course; }
- public void setCourse(double course) { this.course = course; }
+
+ public double getCourse() {
+ return course;
+ }
+
+ public void setCourse(double course) {
+ this.course = course;
+ }
private double battery;
- public double getBattery() { return battery; }
- public void setBattery(double battery) { this.battery = battery; }
+
+ public double getBattery() {
+ return battery;
+ }
+
+ public void setBattery(double battery) {
+ this.battery = battery;
+ }
}
diff --git a/app/src/main/java/org/traccar/client/PositionProvider.java b/app/src/main/java/org/traccar/client/PositionProvider.java
index 7c44c79..3e50211 100644
--- a/app/src/main/java/org/traccar/client/PositionProvider.java
+++ b/app/src/main/java/org/traccar/client/PositionProvider.java
@@ -15,7 +15,6 @@
*/
package org.traccar.client;
-import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
@@ -23,7 +22,6 @@ import android.content.SharedPreferences;
import android.location.Location;
import android.location.LocationManager;
import android.os.BatteryManager;
-import android.os.Build;
import android.preference.PreferenceManager;
import android.util.Log;
@@ -58,10 +56,10 @@ public abstract class PositionProvider {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
- deviceId = preferences.getString(MainActivity.KEY_DEVICE, null);
- interval = Long.parseLong(preferences.getString(MainActivity.KEY_INTERVAL, null)) * 1000;
- distance = Integer.parseInt(preferences.getString(MainActivity.KEY_DISTANCE, null));
- angle = Integer.parseInt(preferences.getString(MainActivity.KEY_ANGLE, null));
+ deviceId = preferences.getString(MainFragment.KEY_DEVICE, null);
+ interval = Long.parseLong(preferences.getString(MainFragment.KEY_INTERVAL, null)) * 1000;
+ distance = Integer.parseInt(preferences.getString(MainFragment.KEY_DISTANCE, null));
+ angle = Integer.parseInt(preferences.getString(MainFragment.KEY_ANGLE, null));
if (distance > 0 || angle > 0) {
requestInterval = MINIMUM_INTERVAL;
@@ -69,7 +67,7 @@ public abstract class PositionProvider {
requestInterval = interval;
}
- type = preferences.getString(MainActivity.KEY_PROVIDER, "gps");
+ type = preferences.getString(MainFragment.KEY_PROVIDER, "gps");
}
public abstract void startUpdates();
@@ -89,16 +87,11 @@ public abstract class PositionProvider {
}
}
- @TargetApi(Build.VERSION_CODES.ECLAIR)
public static double getBatteryLevel(Context context) {
- if (android.os.Build.VERSION.SDK_INT > Build.VERSION_CODES.ECLAIR) {
- Intent batteryIntent = context.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;
- } else {
- return 0;
- }
+ Intent batteryIntent = context.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;
}
}
diff --git a/app/src/main/java/org/traccar/client/RequestManager.java b/app/src/main/java/org/traccar/client/RequestManager.java
index 0de7c2f..e62ddd0 100644
--- a/app/src/main/java/org/traccar/client/RequestManager.java
+++ b/app/src/main/java/org/traccar/client/RequestManager.java
@@ -16,6 +16,7 @@
package org.traccar.client;
import android.os.AsyncTask;
+import android.util.Log;
import java.io.IOException;
import java.io.InputStream;
@@ -68,7 +69,7 @@ public class RequestManager {
inputStream.close();
}
} catch (IOException secondError) {
- return false;
+ Log.w(RequestManager.class.getSimpleName(), secondError);
}
}
}
diff --git a/app/src/main/java/org/traccar/client/ShortcutActivity.java b/app/src/main/java/org/traccar/client/ShortcutActivity.java
index ac3ddd8..ef17f4f 100644
--- a/app/src/main/java/org/traccar/client/ShortcutActivity.java
+++ b/app/src/main/java/org/traccar/client/ShortcutActivity.java
@@ -15,7 +15,6 @@
*/
package org.traccar.client;
-import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -23,9 +22,10 @@ import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.preference.PreferenceManager;
+import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;
-public class ShortcutActivity extends Activity {
+public class ShortcutActivity extends AppCompatActivity {
public static final String EXTRA_ACTION = "action";
public static final String EXTRA_ACTION_START = "start";
@@ -60,11 +60,11 @@ public class ShortcutActivity extends Activity {
if (location != null) {
Position position = new Position(
- preferences.getString(MainActivity.KEY_DEVICE, null),
+ preferences.getString(MainFragment.KEY_DEVICE, null),
location, PositionProvider.getBatteryLevel(this));
String request = ProtocolFormatter.formatRequest(
- preferences.getString(MainActivity.KEY_URL, null), position, ALARM_SOS);
+ preferences.getString(MainFragment.KEY_URL, null), position, ALARM_SOS);
RequestManager.sendRequestAsync(request, new RequestManager.RequestHandler() {
@Override
@@ -94,13 +94,13 @@ public class ShortcutActivity extends Activity {
switch (action) {
case EXTRA_ACTION_START:
PreferenceManager.getDefaultSharedPreferences(this)
- .edit().putBoolean(MainActivity.KEY_STATUS, true).commit();
+ .edit().putBoolean(MainFragment.KEY_STATUS, true).commit();
startService(new Intent(this, TrackingService.class));
Toast.makeText(this, R.string.status_service_create, Toast.LENGTH_SHORT).show();
break;
case EXTRA_ACTION_STOP:
PreferenceManager.getDefaultSharedPreferences(this)
- .edit().putBoolean(MainActivity.KEY_STATUS, false).commit();
+ .edit().putBoolean(MainFragment.KEY_STATUS, false).commit();
stopService(new Intent(this, TrackingService.class));
Toast.makeText(this, R.string.status_service_destroy, Toast.LENGTH_SHORT).show();
break;
diff --git a/app/src/main/java/org/traccar/client/StatusActivity.java b/app/src/main/java/org/traccar/client/StatusActivity.java
index 3f20962..339ed77 100644
--- a/app/src/main/java/org/traccar/client/StatusActivity.java
+++ b/app/src/main/java/org/traccar/client/StatusActivity.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 - 2013 Anton Tananaev (anton.tananaev@gmail.com)
+ * Copyright 2012 - 2017 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.
@@ -21,19 +21,20 @@ import java.util.HashSet;
import java.util.LinkedList;
import java.util.Set;
-import android.app.ListActivity;
import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
+import android.widget.ListView;
-public class StatusActivity extends ListActivity {
+public class StatusActivity extends AppCompatActivity {
private static final int LIMIT = 20;
- private static final LinkedList messages = new LinkedList();
- private static final Set> adapters = new HashSet>();
+ private static final LinkedList messages = new LinkedList<>();
+ private static final Set> adapters = new HashSet<>();
private static void notifyAdapters() {
for (ArrayAdapter adapter : adapters) {
@@ -62,8 +63,9 @@ public class StatusActivity extends ListActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.status);
- adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, android.R.id.text1, messages);
- setListAdapter(adapter);
+ adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, android.R.id.text1, messages);
+ ListView listView = findViewById(android.R.id.list);
+ listView.setAdapter(adapter);
adapters.add(adapter);
}
diff --git a/app/src/main/java/org/traccar/client/TrackingController.java b/app/src/main/java/org/traccar/client/TrackingController.java
index 9ffbf3d..bfd42cb 100644
--- a/app/src/main/java/org/traccar/client/TrackingController.java
+++ b/app/src/main/java/org/traccar/client/TrackingController.java
@@ -17,7 +17,6 @@ package org.traccar.client;
import android.content.Context;
import android.content.SharedPreferences;
-import android.os.Build;
import android.os.Handler;
import android.os.PowerManager;
import android.preference.PreferenceManager;
@@ -45,11 +44,7 @@ public class TrackingController implements PositionProvider.PositionListener, Ne
private PowerManager.WakeLock wakeLock;
private void lock() {
- if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1) {
- wakeLock.acquire();
- } else {
- wakeLock.acquire(WAKE_LOCK_TIMEOUT);
- }
+ wakeLock.acquire(WAKE_LOCK_TIMEOUT);
}
private void unlock() {
@@ -62,7 +57,7 @@ public class TrackingController implements PositionProvider.PositionListener, Ne
this.context = context;
handler = new Handler();
preferences = PreferenceManager.getDefaultSharedPreferences(context);
- if (preferences.getString(MainActivity.KEY_PROVIDER, "gps").equals("mixed")) {
+ if (preferences.getString(MainFragment.KEY_PROVIDER, "gps").equals("mixed")) {
positionProvider = new MixedPositionProvider(context, this);
} else {
positionProvider = new SimplePositionProvider(context, this);
@@ -71,7 +66,7 @@ public class TrackingController implements PositionProvider.PositionListener, Ne
networkManager = new NetworkManager(context, this);
isOnline = networkManager.isOnline();
- url = preferences.getString(MainActivity.KEY_URL, null);
+ url = preferences.getString(MainFragment.KEY_URL, null);
PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, getClass().getName());
@@ -160,7 +155,7 @@ public class TrackingController implements PositionProvider.PositionListener, Ne
public void onComplete(boolean success, Position result) {
if (success) {
if (result != null) {
- if (result.getDeviceId().equals(preferences.getString(MainActivity.KEY_DEVICE, null))) {
+ if (result.getDeviceId().equals(preferences.getString(MainFragment.KEY_DEVICE, null))) {
send(result);
} else {
delete(result);
diff --git a/app/src/main/java/org/traccar/client/TrackingService.java b/app/src/main/java/org/traccar/client/TrackingService.java
index 15e6c21..c6f7ac3 100644
--- a/app/src/main/java/org/traccar/client/TrackingService.java
+++ b/app/src/main/java/org/traccar/client/TrackingService.java
@@ -35,9 +35,8 @@ public class TrackingService extends Service {
private TrackingController trackingController;
- @SuppressWarnings("deprecation")
private static Notification createNotification(Context context) {
- PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), 0);
+ PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, new Intent(context, MainFragment.class), 0);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
@@ -94,10 +93,8 @@ public class TrackingService extends Service {
trackingController = new TrackingController(this);
trackingController.start();
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR) {
- startForeground(NOTIFICATION_ID, createNotification(this));
- startService(new Intent(this, HideNotificationService.class));
- }
+ startForeground(NOTIFICATION_ID, createNotification(this));
+ startService(new Intent(this, HideNotificationService.class));
}
@Override
@@ -105,18 +102,12 @@ public class TrackingService extends Service {
return null;
}
- @SuppressWarnings("deprecation")
- @Override
- public void onStart(Intent intent, int startId) {
- if (intent != null) {
- AutostartReceiver.completeWakefulIntent(intent);
- }
- }
-
@TargetApi(Build.VERSION_CODES.ECLAIR)
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
- onStart(intent, startId);
+ if (intent != null) {
+ AutostartReceiver.completeWakefulIntent(intent);
+ }
return START_STICKY;
}
@@ -125,9 +116,7 @@ public class TrackingService extends Service {
Log.i(TAG, "service destroy");
StatusActivity.addMessage(getString(R.string.status_service_destroy));
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR) {
- stopForeground(true);
- }
+ stopForeground(true);
if (trackingController != null) {
trackingController.stop();
diff --git a/app/src/main/res/drawable-hdpi/logo.png b/app/src/main/res/drawable-hdpi/logo.png
deleted file mode 100644
index 7ee73f4..0000000
Binary files a/app/src/main/res/drawable-hdpi/logo.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/logo.png b/app/src/main/res/drawable-mdpi/logo.png
deleted file mode 100644
index 7b02989..0000000
Binary files a/app/src/main/res/drawable-mdpi/logo.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/logo.png b/app/src/main/res/drawable-xhdpi/logo.png
deleted file mode 100644
index 01b2c7b..0000000
Binary files a/app/src/main/res/drawable-xhdpi/logo.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/logo.png b/app/src/main/res/drawable-xxhdpi/logo.png
deleted file mode 100644
index 2805088..0000000
Binary files a/app/src/main/res/drawable-xxhdpi/logo.png and /dev/null differ
diff --git a/app/src/main/res/layout/about.xml b/app/src/main/res/layout/about.xml
index 4b22833..14f9919 100644
--- a/app/src/main/res/layout/about.xml
+++ b/app/src/main/res/layout/about.xml
@@ -1,56 +1,38 @@
-
+ android:layout_height="fill_parent"
+ android:layout_margin="@dimen/about_margin"
+ android:layout_toRightOf="@+id/logo"
+ android:layout_toEndOf="@+id/logo"
+ android:orientation="vertical" >
-
+ android:layout_marginBottom="@dimen/about_spacing"
+ android:text="@string/app_name"
+ android:textAppearance="?android:attr/textAppearanceLarge" />
-
+
-
-
-
-
-
-
-
-
-
+
-
+
+
+
diff --git a/app/src/main/res/layout/status.xml b/app/src/main/res/layout/status.xml
index 5f57d23..891e260 100644
--- a/app/src/main/res/layout/status.xml
+++ b/app/src/main/res/layout/status.xml
@@ -1,5 +1,6 @@
-
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
diff --git a/build.gradle b/build.gradle
index a717cdb..67e8a6e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,15 +3,15 @@
buildscript {
repositories {
jcenter()
- google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:2.3.2'
+ classpath 'com.android.tools.build:gradle:2.3.3'
}
}
allprojects {
repositories {
jcenter()
+ google()
}
}