diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 33d8210..f379dd8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ - + @@ -8,26 +8,26 @@ - + - + - + + + + + + + + - + \ No newline at end of file diff --git a/app/src/main/java/us/keithirwin/tracman/ConnectionReceiver.java b/app/src/main/java/us/keithirwin/tracman/ConnectionReceiver.java new file mode 100644 index 0000000..e2d7e9b --- /dev/null +++ b/app/src/main/java/us/keithirwin/tracman/ConnectionReceiver.java @@ -0,0 +1,35 @@ +package us.keithirwin.tracman; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.util.Log; + +public class ConnectionReceiver extends BroadcastReceiver { + private String TAG = "ConnectionReceiver"; + + @Override + public void onReceive(Context context, Intent intent) { + Log.d(TAG,"onReceive() called"); + + // Get connection information + ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo networkInfo = cm.getActiveNetworkInfo(); + + // Prepare intent + Intent locationServiceIntent = new Intent(context, LocationService.class); + + // Check connection + if (networkInfo!=null) { + Log.d(TAG, "Connected"); + context.startService(locationServiceIntent); + } + else { + Log.d(TAG,"Disconnected"); + context.stopService(locationServiceIntent); + } + + } +} diff --git a/app/src/main/java/us/keithirwin/tracman/LocationService.java b/app/src/main/java/us/keithirwin/tracman/LocationService.java index df8f8b1..d872077 100644 --- a/app/src/main/java/us/keithirwin/tracman/LocationService.java +++ b/app/src/main/java/us/keithirwin/tracman/LocationService.java @@ -42,6 +42,9 @@ public class LocationService extends Service implements GoogleApiClient.Connecti GoogleApiClient.OnConnectionFailedListener, LocationListener { public LocationService() {} private String TAG = "LocationService"; + final int ICON_ON = 2; + final int ICON_HALF = 1; + final int ICON_OFF = 0; final String SERVER_ADDRESS = "https://dev.tracman.org"; private Socket socket; @@ -64,6 +67,8 @@ public class LocationService extends Service implements GoogleApiClient.Connecti private NotificationManager mNotificationManager; private final NotificationCompat.Builder mNotificationBuilder = new NotificationCompat.Builder(this); private void setupNotifications(Boolean persist) { + Log.d(TAG,"setupNotification() called"); + if (mNotificationManager == null) { mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); } @@ -73,21 +78,28 @@ public class LocationService extends Service implements GoogleApiClient.Connecti 0); mNotificationBuilder .setPriority(-1) - .setSmallIcon(R.drawable.logo_white) + .setSmallIcon(R.drawable.logo_dark) .setCategory(NotificationCompat.CATEGORY_SERVICE) .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setContentTitle(getText(R.string.app_name)) .setContentIntent(notificationIntent) .setOngoing(persist); } - private void showNotification(CharSequence text, Boolean active) { + private void showNotification(CharSequence text, int icon) { + Log.d(TAG,"showNotification() called"); mNotificationBuilder .setTicker(text) .setContentText(text); - if (active) { - mNotificationBuilder.setSmallIcon(R.drawable.logo_white); - } else { - mNotificationBuilder.setSmallIcon(R.drawable.logo_trans); + switch (icon) { + case ICON_ON: + mNotificationBuilder.setSmallIcon(R.drawable.logo_white); + break; + case ICON_HALF: + mNotificationBuilder.setSmallIcon(R.drawable.logo_trans); + break; + case ICON_OFF: + mNotificationBuilder.setSmallIcon(R.drawable.logo_dark); + break; } if (mNotificationManager != null) { mNotificationManager.notify(1, mNotificationBuilder.build()); @@ -111,7 +123,7 @@ public class LocationService extends Service implements GoogleApiClient.Connecti sharedPref = PreferenceManager.getDefaultSharedPreferences(this); setupNotifications(true); - showNotification(getText(R.string.connecting), false); + showNotification(getText(R.string.notify_connecting), ICON_OFF); Log.d(TAG, "Notification set up"); buildGoogleApiClient(); @@ -134,7 +146,7 @@ public class LocationService extends Service implements GoogleApiClient.Connecti opts.secure = true; socket = IO.socket(SERVER_ADDRESS, opts); - showNotification(getText(R.string.connected), false); + showNotification(getText(R.string.notify_connected), ICON_HALF); // Log errors socket.io().on(Manager.EVENT_TRANSPORT, new Emitter.Listener() { @@ -145,7 +157,7 @@ public class LocationService extends Service implements GoogleApiClient.Connecti @Override public void call(Object... args) { Exception e = (Exception) args[0]; - Log.e(TAG, "Transport error " + e); + Log.e(TAG, "Transport error: " + e); e.printStackTrace(); e.getCause().printStackTrace(); } @@ -166,7 +178,7 @@ public class LocationService extends Service implements GoogleApiClient.Connecti socket.connect(); } catch (URISyntaxException e) { - showNotification(getText(R.string.server_connection_error), false); + showNotification(getText(R.string.server_connection_error), ICON_OFF); Log.e(TAG, "Failed to connect to sockets server " + SERVER_ADDRESS, e); } @@ -234,7 +246,7 @@ public class LocationService extends Service implements GoogleApiClient.Connecti mLocationRequest = LocationRequest.create(); connectLocationUpdates(getIntervalSetting(), getPrioritySetting()); - showNotification(getString(R.string.realtime_updates), true); + showNotification(getString(R.string.occasional_updates), ICON_HALF); } @Override @@ -245,7 +257,7 @@ public class LocationService extends Service implements GoogleApiClient.Connecti @Override public void onConnectionFailed(ConnectionResult connectionResult) { Log.e(TAG, "onConnectionFailed: " + connectionResult); - showNotification(getText(R.string.google_connection_error), false); + showNotification(getText(R.string.google_connection_error), ICON_OFF); buildGoogleApiClient(); } @@ -255,11 +267,11 @@ public class LocationService extends Service implements GoogleApiClient.Connecti if (args[0].toString().equals("true")) { Log.d(TAG, "Activating realtime updates"); connectLocationUpdates(getIntervalSetting(), getPrioritySetting()); - showNotification(getString(R.string.realtime_updates), true); + showNotification(getString(R.string.realtime_updates), ICON_ON); } else { Log.d(TAG, "Deactivating realtime updates"); connectLocationUpdates(300, LocationRequest.PRIORITY_NO_POWER); - showNotification(getString(R.string.occasional_updates), false); + showNotification(getString(R.string.occasional_updates), ICON_HALF); } } }; @@ -293,7 +305,7 @@ public class LocationService extends Service implements GoogleApiClient.Connecti @Override public void onConnectionSuspended(int i) { Log.d(TAG, "onConnectionSuspended called"); - showNotification(getText(R.string.google_connection_error), false); + showNotification(getText(R.string.google_connection_error), ICON_OFF); } @Override @@ -312,7 +324,7 @@ public class LocationService extends Service implements GoogleApiClient.Connecti Log.d(TAG, "LowPowerReceiver deactivated"); setupNotifications(false); - showNotification(getText(R.string.disconnected), false); + showNotification(getText(R.string.disconnected), ICON_OFF); Log.d(TAG, "Notification changed"); } } \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/logo_dark.png b/app/src/main/res/drawable-hdpi/logo_dark.png new file mode 100644 index 0000000..f941934 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/logo_dark.png differ diff --git a/app/src/main/res/drawable-mdpi/logo_dark.png b/app/src/main/res/drawable-mdpi/logo_dark.png new file mode 100644 index 0000000..884afba Binary files /dev/null and b/app/src/main/res/drawable-mdpi/logo_dark.png differ diff --git a/app/src/main/res/drawable-xhdpi/logo_dark.png b/app/src/main/res/drawable-xhdpi/logo_dark.png new file mode 100644 index 0000000..2c5d4c8 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/logo_dark.png differ diff --git a/app/src/main/res/drawable-xxhdpi/logo_dark.png b/app/src/main/res/drawable-xxhdpi/logo_dark.png new file mode 100644 index 0000000..eb408db Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/logo_dark.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/logo_dark.png b/app/src/main/res/drawable-xxxhdpi/logo_dark.png new file mode 100644 index 0000000..954ebde Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/logo_dark.png differ diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index ff213f2..cdf723a 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -4,8 +4,6 @@ Über Sendungen deaktiviert Problembericht - Verbindung festgestellt - verbindet… Verbindung unterbrochen FEHLER: Könnte nicht zum Google API Server verbinden. Hilfe @@ -49,9 +47,11 @@ Sendungen einschalten Aktualisierung Vorrang - Kein Internet Zugang Passwort vergessen? Einloggen - Email + Email Passwort + verbindet… + Aktualisiert nicht + Verbindung festgestellt \ No newline at end of file diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 085d4e7..f87f20b 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -2,10 +2,8 @@ Atras Info - conectando… - Cargando… + Cargando… Conexión perdida - Conexión establecida Informe de error Configuración principales Configuración @@ -47,10 +45,13 @@ Ciudad Sin energía - Encender transmisiónes Actualizaciones de ubicación - Sin conexión a Internet + Encender transmisiónes + Actualizaciones de ubicación Olividé su contrasena? Inciar session - email + email contrasena + conectando… + No se actualiza + Conexión establecida \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 18ec874..957bd69 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -16,13 +16,10 @@ ERROR: Unable to connect to Tracman server. - Connecting… - Connection established Disconnected Sending realtime updates Sending occasional updates Broadcast disabled - No internet connection Settings @@ -102,5 +99,8 @@ Login email password + Not sending updates + "Connecting… " + Connection established