diff --git a/app/app-release.apk b/app/app-release.apk index ad238ac..5f80490 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 2db0528..ce13806 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,8 +19,8 @@ android { applicationId "org.deke.risk.riskahead" minSdkVersion 15 targetSdkVersion 22 - versionCode 20 - versionName "1.8.5" + versionCode 21 + versionName "1.8.6" } buildTypes { release { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8c38424..7bdb690 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -122,6 +122,7 @@ diff --git a/app/src/main/bg_round_map-web.png b/app/src/main/bg_round_map-web.png new file mode 100644 index 0000000..705877f Binary files /dev/null and b/app/src/main/bg_round_map-web.png differ 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 67a7028..a8facb3 100644 --- a/app/src/main/java/org/deke/risk/riskahead/MainActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/MainActivity.java @@ -1,12 +1,12 @@ package org.deke.risk.riskahead; +import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; import android.support.v4.content.ContextCompat; import android.util.Log; import android.view.View; -import android.view.Window; import android.widget.Button; import android.widget.TextView; @@ -35,6 +35,8 @@ public class MainActivity extends BaseActivity{ private Handler mHandler = new Handler(); private TextView notificationStatus; + + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -193,4 +195,7 @@ public class MainActivity extends BaseActivity{ protected String getActivityName() { return getResources().getString(R.string.title_activity_start); } + + + } 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 748c785..2991222 100644 --- a/app/src/main/java/org/deke/risk/riskahead/MapsActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/MapsActivity.java @@ -20,6 +20,7 @@ import android.view.Menu; import android.view.View; import android.widget.EditText; import android.widget.LinearLayout; +import android.widget.ProgressBar; import android.widget.RatingBar; import android.widget.TextView; @@ -94,6 +95,8 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa private boolean markersShown = false; private boolean showAdd = true; + private int pbCounter = 0; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -125,8 +128,6 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa initClustering(); } - - @Override public void onLowMemory() { super.onLowMemory(); @@ -306,6 +307,8 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa } private void refreshIncidentMarkers(LatLng northeast, LatLng southwest){ + showProgress(); + String tag_string_req = "getincidentsfrombound"; StringRequest strReq = getStringRequestGetAllIncidentsFromBound(northeast,southwest); AppController.getInstance().addToRequestQueue(strReq, tag_string_req); @@ -326,6 +329,8 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa } private void refreshIncidentHeatMap(LatLng northeast, LatLng southwest){ + showProgress(); + String tag_string_req = "getincidentsforheatmapfrombound"; StringRequest strReq = getStringRequestGetAllIncidentsForHeatMapFromBound(northeast, southwest); AppController.getInstance().addToRequestQueue(strReq, tag_string_req); @@ -365,7 +370,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa @Override public void onResponse(String response) { Log.d(TAG, "Map HeatMap positions response: " + response); - + hideProgress(); try { JSONObject jObj = new JSONObject(response); boolean error = jObj.getBoolean("error"); @@ -386,6 +391,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { + hideProgress(); Log.e(TAG, "Error getting map positions: " + error.getMessage()); showMessage(getString(R.string.errormsg_couldnotretrieve)); } @@ -412,7 +418,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa @Override public void onResponse(String response) { Log.d(TAG, "Map positions response: " + response); - + hideProgress(); try { JSONObject jObj = new JSONObject(response); boolean error = jObj.getBoolean("error"); @@ -433,6 +439,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { + hideProgress(); Log.e(TAG, "Error getting map positions: " + error.getMessage()); showMessage(getString(R.string.errormsg_couldnotretrieve)); } @@ -480,6 +487,8 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa } private void loadInfoWindowInformation(View infoView, String incidentID){ + showProgress(); + String tag_string_req = "getincidentscoreforinfowindow"; StringRequest strReq = getStringRequestGetIncidentScoreForInfoWindow(infoView, incidentID); AppController.getInstance().addToRequestQueue(strReq, tag_string_req); @@ -491,7 +500,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa @Override public void onResponse(String response) { Log.d(TAG, "Map positions response: " + response); - + hideProgress(); try { JSONObject jObj = new JSONObject(response); boolean error = jObj.getBoolean("error"); @@ -503,7 +512,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa TextView tvUsername = ((TextView) infoView.findViewById(R.id.txt_infowindow_fromuser)); RatingBar rbScore = ((RatingBar) infoView.findViewById(R.id.rb_infowindow_rating)); - tvUsername.setText(getString(R.string.lbl_mapsinfowindow_author) + " " + clickedClusterItem.getFromUsername()); + tvUsername.setText(String.format("%s %s",getString(R.string.lbl_mapsinfowindow_author),clickedClusterItem.getFromUsername())); rbScore.setRating(clickedClusterItem.getScoreStars()); if (markerShowingInfoWindow != null && markerShowingInfoWindow.isInfoWindowShown()) { @@ -523,6 +532,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { + hideProgress(); Log.e(TAG, "Error getting incident details: " + error.getMessage()); showMessage(getString(R.string.errormsg_couldnotretrieve)); } @@ -577,7 +587,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa tvSuspect.setText(String.format("%s %s",getString(R.string.lbl_mapsinfowindow_suspect),clickedClusterItem.getSuspectString(getApplicationContext()))); tvVictim.setText(String.format("%s %s",getString(R.string.lbl_mapsinfowindow_victim),clickedClusterItem.getVictimString(getApplicationContext()))); - tvTime.setText(String.format("%s %s",(R.string.lbl_mapsinfowindow_time),clickedClusterItem.getTimeString(getApplicationContext()))); + tvTime.setText(String.format("%s %s", getString(R.string.lbl_mapsinfowindow_time), clickedClusterItem.getTimeString(getApplicationContext()))); } return myContentsView; } @@ -738,8 +748,15 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa return getResources().getString(R.string.title_activity_maps); } - public void onBackPressed(){ - super.onBackPressed(); + private void showProgress(){ + ((ProgressBar) findViewById(R.id.pb_map_progress)).setVisibility(View.VISIBLE); + pbCounter++; + } + private void hideProgress(){ + pbCounter--; + if(pbCounter == 0){ + ((ProgressBar) findViewById(R.id.pb_map_progress)).setVisibility(View.GONE); + } } } 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 d3c184d..6201211 100644 --- a/app/src/main/java/org/deke/risk/riskahead/ReportWFActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/ReportWFActivity.java @@ -149,7 +149,6 @@ public class ReportWFActivity extends BaseActivity implements ReportWF_1_Fragmen currentState = state; FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); - transaction.replace(R.id.fragment_reportwf, fragList.get(state)); transaction.commit(); @@ -168,6 +167,7 @@ public class ReportWFActivity extends BaseActivity implements ReportWF_1_Fragmen String currentSite = (currentState+1) + "/" + (fragList.size()-1); siteIndicator.setText(currentSite); + } private void resetStateAndIncident(){ @@ -378,34 +378,9 @@ public class ReportWFActivity extends BaseActivity implements ReportWF_1_Fragmen .setMessage(R.string.txt_share_message) .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { - - gotoMapActivity(incident.getPosition().latitude+":"+incident.getPosition().longitude); - - Intent sharingIntent = new Intent(Intent.ACTION_SEND); - - Bitmap icon = BitmapFactory.decodeResource(getApplicationContext().getResources(), - R.drawable.ra_qrcode); - - String text = getString(R.string.txt_share_hint) - +getString(R.string.txt_share_hint2)+": "+ incident.getIncidentCategoryName(getApplicationContext()) - +" - "+incident.getIncidentSubCategoryName(getApplicationContext())+"\n" - +getString(R.string.txt_share_hint3)+": "+ incident.getIncidentPositionDescription().split("\\n")[0] + " - " + incident.getIncidentPositionDescription().split("\\n")[1] + "\n" - +getString(R.string.txt_share_page); - - sharingIntent.putExtra(Intent.EXTRA_TEXT, text); - sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(MediaStore.Images.Media.insertImage(getApplicationContext().getContentResolver(), icon, "Share incident", null))); - - sharingIntent.setType("image/*"); - - sharingIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - startActivity(Intent.createChooser(sharingIntent, getString(R.string.txt_share_acttitle))); - - - - - finish(); - - + resetStateAndIncident(); + gotoMapActivity(incident.getPosition().latitude + ":" + incident.getPosition().longitude); + startShareIncidentIntent(incident); } }) .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { @@ -416,15 +391,29 @@ public class ReportWFActivity extends BaseActivity implements ReportWF_1_Fragmen .setIcon(android.R.drawable.ic_dialog_alert) .show(); + } + private void startShareIncidentIntent(IncidentReport incident) { + Intent sharingIntent = new Intent(Intent.ACTION_SEND); + Bitmap icon = BitmapFactory.decodeResource(getApplicationContext().getResources(), + R.drawable.ra_qrcode); + String text = getString(R.string.txt_share_hint) + +getString(R.string.txt_share_hint2)+": "+ incident.getIncidentCategoryName(getApplicationContext()) + +" - "+incident.getIncidentSubCategoryName(getApplicationContext())+"\n" + +getString(R.string.txt_share_hint3)+": "+ incident.getIncidentPositionDescription().split("\\n")[0] + " - " + incident.getIncidentPositionDescription().split("\\n")[1] + "\n" + +getString(R.string.txt_share_page); - + sharingIntent.putExtra(Intent.EXTRA_TEXT, text); + sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(MediaStore.Images.Media.insertImage(getApplicationContext().getContentResolver(), icon, "Share incident", null))); + sharingIntent.setType("image/*"); + sharingIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + startActivity(Intent.createChooser(sharingIntent, getString(R.string.txt_share_acttitle))); } private void finishReportAndGotoMap(IncidentReport incident) { resetStateAndIncident(); showAd(); - gotoMapActivity(incident.getPosition().latitude+":"+incident.getPosition().longitude); + gotoMapActivity(incident.getPosition().latitude + ":" + incident.getPosition().longitude); } @Override 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 d1b9ff4..501f636 100644 --- a/app/src/main/java/org/deke/risk/riskahead/SubscriptionsActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/SubscriptionsActivity.java @@ -4,7 +4,6 @@ import android.app.PendingIntent; import android.content.ComponentName; import android.content.Context; import android.content.Intent; -import android.content.IntentSender; import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; @@ -172,9 +171,7 @@ public class SubscriptionsActivity extends BaseActivity{ initPurchaseTable(responseList); } - } catch (RemoteException e) { - e.printStackTrace(); - } catch (JSONException e) { + } catch (Exception e) { e.printStackTrace(); } } @@ -235,11 +232,8 @@ public class SubscriptionsActivity extends BaseActivity{ PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT"); startIntentSenderForResult(pendingIntent.getIntentSender(), - 1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0), - Integer.valueOf(0)); - } catch (RemoteException e) { - e.printStackTrace(); - } catch (IntentSender.SendIntentException e) { + 1001, new Intent(), 0, 0, 0); + } catch (Exception e) { e.printStackTrace(); } } @@ -256,7 +250,7 @@ public class SubscriptionsActivity extends BaseActivity{ JSONObject jo = new JSONObject(purchaseData); String sku = jo.getString("productId"); - showMessage(getResources().getString(R.string.txt_subs_youbought) + " " + purchaseMap.get(sku).getString("title") + ". " + getResources().getString(R.string.txt_subs_thankyou)); + showMessage(String.format("%s %s. %s",getResources().getString(R.string.txt_subs_youbought),purchaseMap.get(sku).getString("title"),getResources().getString(R.string.txt_subs_thankyou))); addSubscription(purchaseMap.get(sku).getString("productId"),purchaseMap.get(sku).getString("type"),purchaseMap.get(sku).getString("price_amount_micros"),purchaseMap.get(sku).getString("price_currency_code")); } catch (JSONException e) { @@ -289,7 +283,7 @@ public class SubscriptionsActivity extends BaseActivity{ Log.e(TAG, "Error adding subscription (Server returned error): " + errorMsg); showMessage(getResources().getString(R.string.txt_errormsg_subs)); } else { - getSubscriptionsAndSync(user.get(SessionManager.KEY_UID)); + gotoSubscriptionsActivity(); } } catch (JSONException e) { 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 dc7aa3d..b949bea 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 @@ -411,7 +411,6 @@ public abstract class BaseActivity extends AppCompatActivity { Intent intent; intent = new Intent(BaseActivity.this, MapsActivity.class); BaseActivity.this.startActivity(intent); - finish(); } public void gotoMapActivity(String position){ @@ -419,7 +418,6 @@ public abstract class BaseActivity extends AppCompatActivity { intent = new Intent(getApplicationContext(), MapsActivity.class); intent.putExtra(EXTRA_MESSAGE, position); startActivity(intent); - finish(); } public void getNotifyLocationFromMapActivity(){ @@ -427,7 +425,6 @@ public abstract class BaseActivity extends AppCompatActivity { intent = new Intent(getApplicationContext(), MapsActivity.class); intent.putExtra(AppConfig.EXTRA_MAP_TYPE, AppConfig.INTENT_MAP_GETNOTIFY); startActivity(intent); - finish(); } public void getIncidentLocationFromMapActivity(){ @@ -435,7 +432,6 @@ public abstract class BaseActivity extends AppCompatActivity { intent = new Intent(getApplicationContext(), MapsActivity.class); intent.putExtra(AppConfig.EXTRA_MAP_TYPE, AppConfig.INTENT_MAP_GETINCLOC); startActivity(intent); - finish(); } public void getNotifyLocationFromMapActivity(String position){ @@ -444,7 +440,6 @@ public abstract class BaseActivity extends AppCompatActivity { intent.putExtra(EXTRA_MESSAGE, position); intent.putExtra(AppConfig.EXTRA_MAP_TYPE, AppConfig.INTENT_MAP_GETNOTIFY); startActivity(intent); - finish(); } public void getIncidentLocationFromMapActivity(String position){ @@ -453,14 +448,12 @@ public abstract class BaseActivity extends AppCompatActivity { intent.putExtra(EXTRA_MESSAGE, position); intent.putExtra(AppConfig.EXTRA_MAP_TYPE, AppConfig.INTENT_MAP_GETINCLOC); startActivity(intent); - finish(); } public void gotoProfileActivity(){ Intent intent; intent = new Intent(getApplicationContext(), ProfileActivity.class); startActivity(intent); - finish(); } public void gotoProfileActivity(String uid){ @@ -468,21 +461,18 @@ public abstract class BaseActivity extends AppCompatActivity { intent = new Intent(getApplicationContext(), ProfileActivity.class); intent.putExtra(EXTRA_MESSAGE, uid); startActivity(intent); - finish(); } public void gotoSettingsActivity(){ Intent intent; intent = new Intent(getApplicationContext(), SettingsActivity.class); startActivity(intent); - finish(); } public void gotoSubscriptionsActivity(){ Intent intent; intent = new Intent(getApplicationContext(), SubscriptionsActivity.class); startActivity(intent); - finish(); } public void gotoViewReportActivity(Integer uid){ @@ -490,7 +480,6 @@ public abstract class BaseActivity extends AppCompatActivity { intent = new Intent(getApplicationContext(), ViewReportActivity.class); intent.putExtra(EXTRA_MESSAGE, uid); startActivity(intent); - finish(); } @Override @@ -577,7 +566,7 @@ public abstract class BaseActivity extends AppCompatActivity { ((TextView) dialoglayout.findViewById(R.id.txt_about_terms)).setMovementMethod(LinkMovementMethod.getInstance()); try { - ((TextView) dialoglayout.findViewById(R.id.lbl_about_version)).setText("Version: "+ getPackageManager().getPackageInfo(getPackageName(), 0).versionName); + ((TextView) dialoglayout.findViewById(R.id.lbl_about_version)).setText(String.format("Version: %s",getPackageManager().getPackageInfo(getPackageName(), 0).versionName)); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } @@ -719,19 +708,24 @@ public abstract class BaseActivity extends AppCompatActivity { return false; } - @Override public void onBackPressed() { - if (mBackPressed + TIME_INTERVAL > System.currentTimeMillis()) - { - Intent intent = new Intent(Intent.ACTION_MAIN); - intent.addCategory(Intent.CATEGORY_HOME); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - startActivity(intent); - } - else { - Toast.makeText(getBaseContext(), R.string.txt_backpressed_msg, Toast.LENGTH_SHORT).show(); } + if (isTaskRoot()) { + if (mBackPressed + TIME_INTERVAL > System.currentTimeMillis()) { + Intent intent = new Intent(Intent.ACTION_MAIN); + intent.addCategory(Intent.CATEGORY_HOME); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + } else { + showMessage(getString(R.string.txt_backpressed_msg)); + } - mBackPressed = System.currentTimeMillis(); + mBackPressed = System.currentTimeMillis(); + } else { + super.onBackPressed(); + } } + + + } diff --git a/app/src/main/java/org/deke/risk/riskahead/helper/SessionManager.java b/app/src/main/java/org/deke/risk/riskahead/helper/SessionManager.java index 0323599..02eb3bb 100644 --- a/app/src/main/java/org/deke/risk/riskahead/helper/SessionManager.java +++ b/app/src/main/java/org/deke/risk/riskahead/helper/SessionManager.java @@ -52,6 +52,8 @@ public class SessionManager { public static final String KEY_SUBS_NOADS = "subs_noads"; public static final String KEY_SUBS_PREMIUM = "subs_premium"; + public static final String KEY_ONBACKPRESSED= "onbackpressed"; + public SessionManager(Context context) { @@ -71,6 +73,15 @@ public class SessionManager { return status.getBoolean(KEY_IS_LOGGEDIN, false); } + public Long getOnBackPressed(){ + return status.getLong(KEY_ONBACKPRESSED, 0); + } + + public void setOnBackPressed(Long onbackpressed){ + statusEditor.putLong(KEY_ONBACKPRESSED, onbackpressed); + statusEditor.apply(); + } + public void setLocation(Long latitude, Long longitude){ statusEditor.putLong(KEY_LOCATION_LAT, latitude); statusEditor.putLong(KEY_LOCATION_LNG, longitude); diff --git a/app/src/main/res/drawable/bg_main.jpg b/app/src/main/res/drawable/bg_main.jpg deleted file mode 100644 index 3d4cb92..0000000 Binary files a/app/src/main/res/drawable/bg_main.jpg and /dev/null differ diff --git a/app/src/main/res/layout/activity_maps.xml b/app/src/main/res/layout/activity_maps.xml index 47eea8d..d27cdd2 100644 --- a/app/src/main/res/layout/activity_maps.xml +++ b/app/src/main/res/layout/activity_maps.xml @@ -44,6 +44,13 @@ app:layout_anchorGravity="bottom|left|end" android:layout_alignParentBottom="true"/> + + diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index b3342f2..dc1c56d 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -223,7 +223,7 @@ Für mehr Details: www.riskahead.de Vorfall teilen… Keine Angaben - Drücke erneut Zurück um die RiskAhead zu schließen + Drücke erneut Zurück um RiskAhead zu schließen Benachrichtigungen: AN NICHT BEREIT (GPS FEHLT) diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 2a6733e..01ddde0 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -5,7 +5,6 @@ #1175b7 - #9e1175b7 #50626262 #e4474747 @@ -16,8 +15,6 @@ #aa4b4b4b - #b3d1e6 - #000000 #f5f5f5