diff --git a/app/app-release.apk b/app/app-release.apk index a78bf3b..61f059a 100644 Binary files a/app/app-release.apk and b/app/app-release.apk differ diff --git a/app/build.gradle b/app/build.gradle index fbd56ab..f5c710d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,8 +19,8 @@ android { applicationId "org.deke.risk.riskahead" minSdkVersion 15 targetSdkVersion 22 - versionCode 4 - versionName "1.3" + versionCode 5 + versionName "1.4" } buildTypes { release { diff --git a/app/src/main/java/org/deke/risk/riskahead/MainActivity.java b/app/src/main/java/org/deke/risk/riskahead/MainActivity.java index 334b468..2dfc933 100644 --- a/app/src/main/java/org/deke/risk/riskahead/MainActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/MainActivity.java @@ -38,6 +38,7 @@ public class MainActivity extends BaseActivity{ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); userHasToBeLoggedIn(); + registerBroadcastReceiver(); initButtons(); } diff --git a/app/src/main/java/org/deke/risk/riskahead/MapsActivity.java b/app/src/main/java/org/deke/risk/riskahead/MapsActivity.java index 61bbb0f..0573c6b 100644 --- a/app/src/main/java/org/deke/risk/riskahead/MapsActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/MapsActivity.java @@ -63,7 +63,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa private final static String mActivityTitle = "Risk Map"; private static final String TAG = MapsActivity.class.getSimpleName(); - private static final Double PRELOAD_PERCENTAGE = 0.3; + private Double PRELOAD_PERCENTAGE = 0.3; private static final int DEFAULT_ZOOM_LEVEL = 14; private static final int THRESHOLD_ZOOM_LEVEL = 10; private int MIN_ZOOM_LEVEL = 9; @@ -89,6 +89,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); userHasToBeLoggedIn(); + registerBroadcastReceiver(); navDrawer.setSelection(mapAvtivityID, false); @@ -173,6 +174,12 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa return; } + if(position.zoom > 13) { + PRELOAD_PERCENTAGE = 0.7; + }else{ + PRELOAD_PERCENTAGE = 0.3; + } + LatLngBounds bounds = mMap.getProjection().getVisibleRegion().latLngBounds; Log.d("OnCameraChangeListener", "Position: "+bounds.getCenter()+" Zoom: "+position.zoom + " Bounds: NE:" + bounds.northeast + " SW: " + bounds.southwest); @@ -673,16 +680,6 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa showAd(); } - @Override - public void onDestroy() { - if (mMap != null) { - getSupportFragmentManager().beginTransaction().remove(getSupportFragmentManager().findFragmentById(R.id.frag_maps_map)).commitAllowingStateLoss(); - mMap = null; - } - session.setNotificationPositionRequest(false); - super.onDestroy(); - } - @Override protected int getLayoutResourceId() { return R.layout.activity_maps; diff --git a/app/src/main/java/org/deke/risk/riskahead/ProfileActivity.java b/app/src/main/java/org/deke/risk/riskahead/ProfileActivity.java index d79c8c5..e51d81e 100644 --- a/app/src/main/java/org/deke/risk/riskahead/ProfileActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/ProfileActivity.java @@ -20,7 +20,7 @@ public class ProfileActivity extends BaseActivity{ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); userHasToBeLoggedIn(); - + registerBroadcastReceiver(); Intent intent = getIntent(); diff --git a/app/src/main/java/org/deke/risk/riskahead/ReportWFActivity.java b/app/src/main/java/org/deke/risk/riskahead/ReportWFActivity.java index c358ce2..474ff23 100644 --- a/app/src/main/java/org/deke/risk/riskahead/ReportWFActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/ReportWFActivity.java @@ -84,6 +84,7 @@ public class ReportWFActivity extends BaseActivity implements ReportWF_1_Fragmen @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + registerBroadcastReceiver(); initFragments(); initButtonsAndElements(); diff --git a/app/src/main/java/org/deke/risk/riskahead/SettingsActivity.java b/app/src/main/java/org/deke/risk/riskahead/SettingsActivity.java index 04e61c6..cd68975 100644 --- a/app/src/main/java/org/deke/risk/riskahead/SettingsActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/SettingsActivity.java @@ -15,6 +15,7 @@ public class SettingsActivity extends BaseActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); userHasToBeLoggedIn(); + registerBroadcastReceiver(); getFragmentManager().beginTransaction().replace(R.id.fragment_content, new SettingsFragment()).commit(); } diff --git a/app/src/main/java/org/deke/risk/riskahead/SubscriptionsActivity.java b/app/src/main/java/org/deke/risk/riskahead/SubscriptionsActivity.java index 2efa3a0..f080f0f 100644 --- a/app/src/main/java/org/deke/risk/riskahead/SubscriptionsActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/SubscriptionsActivity.java @@ -57,6 +57,7 @@ public class SubscriptionsActivity extends BaseActivity{ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); userHasToBeLoggedIn(); + registerBroadcastReceiver(); tblBillings = (TableLayout) findViewById(R.id.tbl_billing); getSubscriptions(user.get(SessionManager.KEY_UID)); diff --git a/app/src/main/java/org/deke/risk/riskahead/ViewReportActivity.java b/app/src/main/java/org/deke/risk/riskahead/ViewReportActivity.java index 7d7ab0b..4155733 100644 --- a/app/src/main/java/org/deke/risk/riskahead/ViewReportActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/ViewReportActivity.java @@ -63,7 +63,8 @@ public class ViewReportActivity extends BaseActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); userHasToBeLoggedIn(); - + registerBroadcastReceiver(); + txtIncidentCategory = (EditText) findViewById(R.id.txt_viewreport_incidentcategory); txtIncidentSubCategory = (EditText) findViewById(R.id.txt_viewreport_incidentsubcategory); txtPosition = (EditText) findViewById(R.id.txt_viewreport_position); diff --git a/app/src/main/java/org/deke/risk/riskahead/fragment/ReportWF_2_Fragment.java b/app/src/main/java/org/deke/risk/riskahead/fragment/ReportWF_2_Fragment.java index 889f803..41d3f1a 100644 --- a/app/src/main/java/org/deke/risk/riskahead/fragment/ReportWF_2_Fragment.java +++ b/app/src/main/java/org/deke/risk/riskahead/fragment/ReportWF_2_Fragment.java @@ -24,8 +24,10 @@ import org.deke.risk.riskahead.ReportWFActivity; import org.deke.risk.riskahead.helper.IncidentReport; import org.deke.risk.riskahead.adapter.SpinnerHintAdapter; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; +import java.util.Date; /** * @author Dennis Thießen @@ -229,8 +231,13 @@ public class ReportWF_2_Fragment extends Fragment { } public void onTimeSet(TimePicker view, int hourOfDay, int minute) { - tmpInput.setText(new StringBuilder().append(hourOfDay) - .append(":").append(minute).append(" ")); + try { + SimpleDateFormat df = new SimpleDateFormat("hh:mm"); + Date tmpTime = df.parse(hourOfDay + ":" + minute); + tmpInput.setText(df.format(tmpTime)); + } catch (ParseException e) { + e.printStackTrace(); + } checkIfFinished(); } @@ -254,10 +261,13 @@ public class ReportWF_2_Fragment extends Fragment { } public void onDateSet(DatePicker view, int year, int month, int day) { - tmpInput.setText(new StringBuilder() - .append(year).append("-").append(month + 1).append("-") - .append(day).append(" ")); - + try { + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + Date tmpTime = df.parse(year + "-" + month + 1 + "-" + day); + tmpInput.setText(df.format(tmpTime)); + } catch (ParseException e) { + e.printStackTrace(); + } checkIfFinished(); } } @@ -298,6 +308,8 @@ public class ReportWF_2_Fragment extends Fragment { } } + saveInput(); + ((ReportWFActivity)getActivity()).setIncident(incident); mCallback.onInputFinished(isTimeCategoryFilled && isSubCategoryFilled && isFromDateFilled && isToDateFilled); } @@ -346,14 +358,18 @@ public class ReportWF_2_Fragment extends Fragment { public void onPause() { super.onPause(); + saveInput(); + + ((ReportWFActivity)getActivity()).setIncident(incident); + } + + private void saveInput() { incident.setFidTimeCategory(timeCategory.getSelectedItemPosition()); incident.setFidTimeSubCategory(timeSubCategory.getSelectedItemPosition()); incident.setFromDate(inputDateFrom.getText().toString()); incident.setFromTime(inputTimeFrom.getText().toString()); incident.setToDate(inputDateTo.getText().toString()); incident.setToTime(inputTimeTo.getText().toString()); - - ((ReportWFActivity)getActivity()).setIncident(incident); } @Override diff --git a/app/src/main/java/org/deke/risk/riskahead/helper/AppConfig.java b/app/src/main/java/org/deke/risk/riskahead/helper/AppConfig.java index 1224339..5116b8e 100644 --- a/app/src/main/java/org/deke/risk/riskahead/helper/AppConfig.java +++ b/app/src/main/java/org/deke/risk/riskahead/helper/AppConfig.java @@ -17,6 +17,7 @@ public class AppConfig { public final static String INTENT_REGISTER = "register"; public final static String INTENT_NORMALLOGIN = "normallogin"; public final static String INTENT_SOCIALMEDIALOGIN = "socialmedialogin"; + public final static String INTENT_LOGOUT = "org.deke.risk.riskahead.ACTION_LOGOUT"; /** HANDLER INTERVALS **/ public final static int UPDATE_COUNT_INTERVAL = 1000 * 30; //30 seconds diff --git a/app/src/main/java/org/deke/risk/riskahead/helper/BaseActivity.java b/app/src/main/java/org/deke/risk/riskahead/helper/BaseActivity.java index 1848545..9dfdd01 100644 --- a/app/src/main/java/org/deke/risk/riskahead/helper/BaseActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/helper/BaseActivity.java @@ -3,9 +3,11 @@ package org.deke.risk.riskahead.helper; import android.app.ActivityManager; import android.app.AlertDialog; import android.app.ProgressDialog; +import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.IntentFilter; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; @@ -120,6 +122,20 @@ public abstract class BaseActivity extends AppCompatActivity { }else{ Log.d(TAG,"onCreate: NotificationService already running. Not starting more services."); } + + + } + + public void registerBroadcastReceiver(){ + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(AppConfig.INTENT_LOGOUT); + registerReceiver(new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + Log.d("onReceive", "Logout in progress"); + finish(); + } + }, intentFilter); } private class MyLocationListener implements LocationListener { @@ -328,8 +344,12 @@ public abstract class BaseActivity extends AppCompatActivity { session.setLogin(false); Intent intent = new Intent(BaseActivity.this, LoginActivity.class); - intent.putExtra(EXTRA_MESSAGE, "login"); + intent.putExtra(EXTRA_MESSAGE, AppConfig.INTENT_LOGIN); BaseActivity.this.startActivity(intent); + + Intent broadcastIntent = new Intent(); + broadcastIntent.setAction(AppConfig.INTENT_LOGOUT); + sendBroadcast(broadcastIntent); finish(); } diff --git a/app/src/main/java/org/deke/risk/riskahead/helper/IncidentReport.java b/app/src/main/java/org/deke/risk/riskahead/helper/IncidentReport.java index e4f0490..17e49c7 100644 --- a/app/src/main/java/org/deke/risk/riskahead/helper/IncidentReport.java +++ b/app/src/main/java/org/deke/risk/riskahead/helper/IncidentReport.java @@ -142,11 +142,17 @@ public class IncidentReport implements ClusterItem { int mIcon; Date tmpFromDate = null; - Date today = new Date(); + SimpleDateFormat simpleDateFormat = null; + Date today = new Date(System.currentTimeMillis()-1*60*60*1000); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { - tmpFromDate = simpleDateFormat.parse(this.fromDate); + if(this.fromTime != null){ + simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); + tmpFromDate = simpleDateFormat.parse(this.fromDate+" "+this.fromTime); + }else{ + simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + tmpFromDate = simpleDateFormat.parse(this.fromDate); + } } catch (ParseException e) { e.printStackTrace(); } diff --git a/app/src/main/java/org/deke/risk/riskahead/helper/NotificationService.java b/app/src/main/java/org/deke/risk/riskahead/helper/NotificationService.java index 6e5a9af..6d0f01f 100644 --- a/app/src/main/java/org/deke/risk/riskahead/helper/NotificationService.java +++ b/app/src/main/java/org/deke/risk/riskahead/helper/NotificationService.java @@ -149,13 +149,22 @@ public class NotificationService extends Service { } private void sentNotification(JSONArray notification) { + String title = ""; + String context = ""; + + if(notification.length() == 1){ + title = getString(R.string.txt_notification_title); + context = notification.length() + " " + getString(R.string.txt_notification_context); + }else{ + title = getString(R.string.txt_notification_title_multi); + context = notification.length() + " " + getString(R.string.txt_notification_context_multi); + } NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext()) .setSmallIcon(R.drawable.logo_riskahead_header) - .setContentTitle("New incidents reported in your area!") - .setContentText(notification.length() + " new incidents near your last location. Watch out!"); - - + .setAutoCancel(true) + .setContentTitle(title) + .setContentText(context); Intent resultIntent = new Intent(this, MapsActivity.class); diff --git a/app/src/main/res/anim/fade_in_anim.xml b/app/src/main/res/anim/fade_in_anim.xml index 03a7fc8..ee9288f 100644 --- a/app/src/main/res/anim/fade_in_anim.xml +++ b/app/src/main/res/anim/fade_in_anim.xml @@ -8,6 +8,6 @@ android:repeatCount="0" /> --> - - + + \ No newline at end of file diff --git a/app/src/main/res/anim/fade_out_anim.xml b/app/src/main/res/anim/fade_out_anim.xml index 3e3d9f9..6c07221 100644 --- a/app/src/main/res/anim/fade_out_anim.xml +++ b/app/src/main/res/anim/fade_out_anim.xml @@ -8,6 +8,6 @@ android:repeatCount="0" /> --> - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/header2.jpg b/app/src/main/res/drawable/header2.jpg deleted file mode 100644 index 57a8cad..0000000 Binary files a/app/src/main/res/drawable/header2.jpg and /dev/null differ diff --git a/app/src/main/res/drawable/logo_riskahead_header.png b/app/src/main/res/drawable/logo_riskahead_header.png deleted file mode 100644 index ebd9d6b..0000000 Binary files a/app/src/main/res/drawable/logo_riskahead_header.png and /dev/null differ diff --git a/app/src/main/res/menu/menu_maps.xml b/app/src/main/res/menu/menu_maps.xml index aaebe9a..8a16239 100644 --- a/app/src/main/res/menu/menu_maps.xml +++ b/app/src/main/res/menu/menu_maps.xml @@ -3,9 +3,6 @@ xmlns:tools="http://schemas.android.com/tools" tools:context="org.deke.risk.riskahead.MapsActivity"> - - Suche Bitte wählen … - + Neuer Vorfall in deiner Nähe gemeldet! + Neue Vorfälle in deiner Nähe gemeldet! + neuer Vorfall. Pass auf! + neue Vorfälle. Pass auf! Allgemeiner Vorfall/Situation diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5b111d3..525f640 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -140,6 +140,10 @@ Help us by purchasing subscriptions. This allows us to maintain and enhance RiskAhead in the future. Please select … + New incident reported in your area! + New incidents reported in your area! + new incident near your last location. Watch out! + new incidents near your last location. Watch out! Allgemeiner Vorfall/Situation