diff --git a/app/app-release.apk b/app/app-release.apk index 216406d..1c85641 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 3667f73..c839c55 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,8 +19,8 @@ android { applicationId "org.deke.risk.riskahead" minSdkVersion 15 targetSdkVersion 22 - versionCode 11 - versionName "1.6.2" + versionCode 12 + versionName "1.7" } 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 e519e13..5f49b6c 100644 --- a/app/src/main/java/org/deke/risk/riskahead/MainActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/MainActivity.java @@ -34,6 +34,7 @@ public class MainActivity extends BaseActivity{ private final static String TAG = MainActivity.class.getSimpleName(); private Handler mHandler = new Handler(); + private TextView notificationStatus; @Override protected void onCreate(Bundle savedInstanceState) { @@ -85,6 +86,21 @@ public class MainActivity extends BaseActivity{ @Override public void run() { requestNumberOfIncidents(); + + notificationStatus = (TextView) findViewById(R.id.lbl_main_notifystatus_status); + if(session.getNotificationEnabled()){ + if(session.getNotificationServiceReady()){ + notificationStatus.setText(getString(R.string.txt_notifystatus_activated)); + notificationStatus.setTextColor(getResources().getColor(R.color.md_green_400)); + }else{ + notificationStatus.setText(getString(R.string.txt_notifystatus_activatedbutnotready)); + notificationStatus.setTextColor(getResources().getColor(R.color.md_yellow_400)); + } + }else{ + notificationStatus.setText(getString(R.string.txt_notifystatus_deactivated)); + notificationStatus.setTextColor(getResources().getColor(R.color.md_red_400)); + } + mHandler.postDelayed(mHandlerTask, AppConfig.UPDATE_COUNT_INTERVAL); } }; @@ -95,7 +111,6 @@ public class MainActivity extends BaseActivity{ AppController.getInstance().addToRequestQueue(strReq, tag_string_req); } - private StringRequest getStringRequestIncidentCount() { return new StringRequest(Request.Method.POST, AppConfig.URL_DEFAULT, new Response.Listener() { 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 a8b6060..2f5894b 100644 --- a/app/src/main/java/org/deke/risk/riskahead/MapsActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/MapsActivity.java @@ -93,6 +93,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa private LatLng curSouthwestBounds; private boolean markersShown = false; + private boolean showAdd = true; @Override protected void onCreate(Bundle savedInstanceState) { @@ -108,6 +109,8 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa MIN_ZOOM_LEVEL = 9; } + showAdd = true; + MapFragment mapFragment = (MapFragment) getFragmentManager() .findFragmentById(R.id.frag_maps_map); mapFragment.getMapAsync(this); @@ -158,7 +161,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa if (getIntent().hasExtra(AppConfig.EXTRA_MAP_TYPE)) { if (getIntent().getStringExtra(AppConfig.EXTRA_MAP_TYPE).equals(AppConfig.INTENT_MAP_GETINCLOC)) { addButton.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(getApplicationContext(), R.color.md_green_400))); - + showAdd = false; Drawable identityIcon = new IconicsDrawable(getApplicationContext()) .icon(GoogleMaterial.Icon.gmd_done) .color(ContextCompat.getColor(getApplicationContext(), R.color.white)) @@ -174,7 +177,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa }); } else if (getIntent().getStringExtra(AppConfig.EXTRA_MAP_TYPE).equals(AppConfig.INTENT_MAP_GETNOTIFY)) { addButton.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(getApplicationContext(), R.color.md_green_400))); - + showAdd = false; Drawable identityIcon = new IconicsDrawable(getApplicationContext()) .icon(GoogleMaterial.Icon.gmd_done) .color(ContextCompat.getColor(getApplicationContext(), R.color.white)) @@ -205,9 +208,9 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa { mClusterManager.onCameraChange(position); - if(position.zoom < MIN_ZOOM_LEVEL) { + if((position.zoom < MIN_ZOOM_LEVEL) && !session.getSubsPremium()) { mMap.animateCamera(CameraUpdateFactory.zoomTo(MIN_ZOOM_LEVEL)); - showMessage("Get Premiuim to view the Full Map!"); + showMessage(getString(R.string.txt_map_zoomoutpremium)); return; } @@ -594,7 +597,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(point, DEFAULT_ZOOM_LEVEL)); if(getIntent().hasExtra(AppConfig.EXTRA_MAP_TYPE)) mMarker = mMap.addMarker(new MarkerOptions().position(point)); } else { - myPosition = session.getLocation(); + LatLng myPosition = session.getLocation(); if ((myPosition != null) && (myPosition.latitude != 0.0) && (myPosition.longitude != 0.0)) { @@ -715,8 +718,8 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa @Override protected void onPause(){ super.onPause(); + if(showAdd) showAd(); - showAd(); } @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 3147aa6..edbb2d9 100644 --- a/app/src/main/java/org/deke/risk/riskahead/SubscriptionsActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/SubscriptionsActivity.java @@ -121,7 +121,13 @@ public class SubscriptionsActivity extends BaseActivity{ private void syncWithDatabase(ArrayList ownedSkus) { Log.d(TAG, "Sync subs with database..."); - Log.d(TAG, "Database shows following active subs: "+dbItems.toString()); + + if(dbItems != null){ + Log.d(TAG, "Database shows following active subs: "+dbItems.toString()); + }else{ + Log.d(TAG, "No active subs in Database"); + } + ArrayList subs = new ArrayList<>(); subs.add("extra_functions_01"); @@ -130,10 +136,9 @@ public class SubscriptionsActivity extends BaseActivity{ subs.add("no_ads_02"); for(String sub : subs){ - boolean itemFound = false; - if(dbItems.containsKey(sub)){ + if(dbItems != null && dbItems.containsKey(sub)){ for(String sku : ownedSkus){ itemFound = itemFound || sku.equals(sub); } @@ -145,8 +150,14 @@ public class SubscriptionsActivity extends BaseActivity{ } } - - + for(String sku : ownedSkus){ + if(dbItems != null && dbItems.containsKey(sku)){ + // everything in sync + }else{ + Log.d(TAG, "Subscription "+sku+" not found in DB, add subscription!"); + addSubscription(sku, "subs", "0", "0"); + } + } } private void initBillingOptions() { @@ -332,22 +343,24 @@ public class SubscriptionsActivity extends BaseActivity{ try { JSONObject jObj = new JSONObject(response); boolean error = jObj.getBoolean("error"); + dbItems = new HashMap<>(); if (error) { String errorMsg = jObj.getString("error_msg"); - Log.e(TAG, "Error getting subscription (Server returned error): " + errorMsg); + Log.d(TAG, "Error getting subscription (Server returned error): " + errorMsg); dbItems = null; + }else{ JSONArray subs = jObj.getJSONArray("msg"); - Log.d(TAG,"SUB FROM DB RECEIVED"); + Log.d(TAG, "SUB FROM DB RECEIVED"); for(int i = 0;i < subs.length();i++){ dbItems.put(subs.getJSONObject(i).getString("productId"),subs.getJSONObject(i).getString("id")); } - - syncWithDatabase(ownedSkus); } + syncWithDatabase(ownedSkus); + } catch (JSONException e) { e.printStackTrace(); } diff --git a/app/src/main/java/org/deke/risk/riskahead/fragment/ProfileStatisticsFragment.java b/app/src/main/java/org/deke/risk/riskahead/fragment/ProfileStatisticsFragment.java index f37971e..a0e9491 100644 --- a/app/src/main/java/org/deke/risk/riskahead/fragment/ProfileStatisticsFragment.java +++ b/app/src/main/java/org/deke/risk/riskahead/fragment/ProfileStatisticsFragment.java @@ -105,17 +105,17 @@ public class ProfileStatisticsFragment extends Fragment { if(jSubs.getJSONObject(i).getString("productId").contains("no_ads")){ btnMembershipType.setBootstrapBrand(DefaultBootstrapBrand.PRIMARY); btnMembershipType.setText(getResources().getString(R.string.lbl_membershiptype_addfree)); - ((ProfileActivity) getActivity()).session.setSubsPremium(true); + ((ProfileActivity) getActivity()).session.setSubsNoAds(true); }else{ - ((ProfileActivity) getActivity()).session.setSubsPremium(false); + ((ProfileActivity) getActivity()).session.setSubsNoAds(false); } if(jSubs.getJSONObject(i).getString("productId").contains("extra_functions")){ btnMembershipType.setBootstrapBrand(DefaultBootstrapBrand.WARNING); btnMembershipType.setText(getResources().getString(R.string.lbl_membershiptype_premium)); - ((ProfileActivity) getActivity()).session.setSubsNoAds(true); + ((ProfileActivity) getActivity()).session.setSubsPremium(true); }else{ - ((ProfileActivity) getActivity()).session.setSubsNoAds(false); + ((ProfileActivity) getActivity()).session.setSubsPremium(false); } } } diff --git a/app/src/main/java/org/deke/risk/riskahead/fragment/SettingsFragment.java b/app/src/main/java/org/deke/risk/riskahead/fragment/SettingsFragment.java index 1c5752d..b773435 100644 --- a/app/src/main/java/org/deke/risk/riskahead/fragment/SettingsFragment.java +++ b/app/src/main/java/org/deke/risk/riskahead/fragment/SettingsFragment.java @@ -130,6 +130,8 @@ public class SettingsFragment extends PreferenceFragment { prefGPSENabled.setEnabled(false); prefLocation.setEnabled(false); + session.setGPSForNotificationsEnabled(true); + prefGPSENabled.setTitle(prefGPSENabled.getTitle() + " " + getResources().getString(R.string.txt_premium_only)); prefLocation.setTitle(prefLocation.getTitle() + " " + getResources().getString(R.string.txt_premium_only)); } diff --git a/app/src/main/java/org/deke/risk/riskahead/helper/AppRater.java b/app/src/main/java/org/deke/risk/riskahead/helper/AppRater.java index e444a9b..dbf130a 100644 --- a/app/src/main/java/org/deke/risk/riskahead/helper/AppRater.java +++ b/app/src/main/java/org/deke/risk/riskahead/helper/AppRater.java @@ -51,7 +51,7 @@ public class AppRater { alert.setTitle(R.string.txt_rate_title); alert.setMessage(R.string.txt_rate_message); - alert.setIcon(R.drawable.logo_512w); + alert.setIcon(R.drawable.logo_380); alert.setCancelable(true); alert.setPositiveButton(R.string.txt_rate_retenowbtn, new DialogInterface.OnClickListener() { 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 b492fa0..40878f3 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 @@ -1,21 +1,16 @@ package org.deke.risk.riskahead.helper; -import android.app.ActionBar; import android.app.ActivityManager; import android.app.AlarmManager; import android.app.AlertDialog; import android.app.Dialog; import android.app.PendingIntent; -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.graphics.drawable.ColorDrawable; -import android.location.Location; -import android.location.LocationListener; -import android.location.LocationManager; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; @@ -91,9 +86,6 @@ public abstract class BaseActivity extends AppCompatActivity { public Drawer navDrawer = null; public Toolbar mToolbar; - public LocationManager locationManager; - public LatLng myPosition; - private static final int TIME_INTERVAL = 2000; // # milliseconds, desired time passed between two back presses. private long mBackPressed; @@ -125,11 +117,6 @@ public abstract class BaseActivity extends AppCompatActivity { setSupportActionBar(mToolbar); initNavigationDrawer(savedInstanceState); - locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); - LocationListener locationListener = new MyLocationListener(); - locationManager.requestLocationUpdates( - LocationManager.NETWORK_PROVIDER, 5000, 10, locationListener); - overridePendingTransition(R.anim.fade_in_anim, R.anim.fade_out_anim); if(!isMyNotificationServiceRunning()){ @@ -169,41 +156,7 @@ public abstract class BaseActivity extends AppCompatActivity { }, intentFilter); } - private class MyLocationListener implements LocationListener { - - @Override - public void onLocationChanged(Location loc) { - String longitude = "Longitude: " + loc.getLongitude(); - Log.v(TAG, longitude); - String latitude = "Latitude: " + loc.getLatitude(); - Log.v(TAG, latitude); - - if(session.isGPSForNotificationsEnabled()) { - Log.d(TAG,"Save GPS as new location..."); - session.setLocation(Double.doubleToRawLongBits(loc.getLatitude()), Double.doubleToRawLongBits(loc.getLongitude())); - }else{ - Log.d(TAG,"Don't Save GPS as new location because GPS for notifications is disabled..."); - } - } - - @Override - public void onProviderDisabled(String provider) {} - - @Override - public void onProviderEnabled(String provider) {} - - @Override - public void onStatusChanged(String provider, int status, Bundle extras) {} - } - private void initProgressDialog() { - /* - pDialog = new ProgressDialog(this); - pDialog = new ProgressDialog(this); - pDialog.setCancelable(false); - pDialog.setTitle(getString(R.string.progress_getdata_title)); - pDialog.setMessage(getString(R.string.progress_getdata_text));*/ - pDialog = new Dialog(this); pDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); pDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); @@ -262,9 +215,9 @@ public abstract class BaseActivity extends AppCompatActivity { AccountHeader headerResult = new AccountHeaderBuilder() .withActivity(this) - .withHeaderBackground(R.drawable.header) + .withHeaderBackground(R.drawable.header2) .addProfiles( - new ProfileDrawerItem().withName(user.get("username")).withEmail(user.get("email")).withIcon(ContextCompat.getDrawable(getApplicationContext(), R.drawable.logo_riskahead)) + new ProfileDrawerItem().withName(user.get("username")).withEmail(user.get("email")).withIcon(ContextCompat.getDrawable(getApplicationContext(), R.drawable.logo_riskahead_header)) ) .build(); @@ -351,8 +304,11 @@ public abstract class BaseActivity extends AppCompatActivity { public void showAd(){ if (mInterstitialAd.isLoaded()) { - if(!session.getSubsNoAds()){ + Log.d(TAG,"Loading Add..."); + if(!session.getSubsNoAds() || !session.getSubsPremium()){ mInterstitialAd.show(); + }else{ + Log.d(TAG,"Add not shown because user has status."); } } } @@ -517,7 +473,7 @@ public abstract class BaseActivity extends AppCompatActivity { private void showFeedbackDialog() { AlertDialog.Builder alert=new AlertDialog.Builder(this); - alert.setTitle(R.string.txt_feedback_title); + alert.setTitle(R.string.menu_action_feedback); alert.setMessage(R.string.txt_feedback_message); final EditText input = new EditText(BaseActivity.this); @@ -532,7 +488,7 @@ public abstract class BaseActivity extends AppCompatActivity { input.setGravity(Gravity.TOP); input.setHint(R.string.txt_feedback_hint); - alert.setIcon(R.drawable.logo_512w); + alert.setIcon(R.drawable.logo_380); alert.setCancelable(true); alert.setPositiveButton(R.string.txt_feedback_sendbtn, new DialogInterface.OnClickListener() { 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 6b938fd..1c8598d 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 @@ -6,6 +6,9 @@ import android.app.PendingIntent; import android.app.Service; import android.content.Context; import android.content.Intent; +import android.location.Location; +import android.location.LocationListener; +import android.location.LocationManager; import android.os.*; import android.support.v4.app.NotificationCompat; import android.support.v4.app.TaskStackBuilder; @@ -39,6 +42,9 @@ public class NotificationService extends Service { public SessionManager session; public HashMap user; + public LocationManager locationManager; + public LatLng myPosition; + public NotificationService() { super(); } @@ -51,9 +57,50 @@ public class NotificationService extends Service { session = new SessionManager(getApplicationContext()); user = session.getUserDetails(); + locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); + LocationListener locationListener = new MyLocationListener(); + locationManager.requestLocationUpdates( + LocationManager.NETWORK_PROVIDER, 5000, 10, locationListener); + mNotifyTask.run(); } + private class MyLocationListener implements LocationListener { + + @Override + public void onLocationChanged(Location loc) { + String longitude = "Longitude: " + loc.getLongitude(); + Log.v(TAG, longitude); + String latitude = "Latitude: " + loc.getLatitude(); + Log.v(TAG, latitude); + + if(session.isGPSForNotificationsEnabled() && loc.getLongitude() != 0.0 && loc.getLatitude() != 0.0) { + Log.d(TAG, "Save GPS as new location..."); + if(session.getLocation() == null || session.getLocation().latitude == 0.0 || session.getLocation().longitude == 0.0){ + session.setLocation(Double.doubleToRawLongBits(loc.getLatitude()), Double.doubleToRawLongBits(loc.getLongitude())); + mNotifyHandler.removeCallbacksAndMessages(null); + mNotifyTask.run(); + }else{ + session.setLocation(Double.doubleToRawLongBits(loc.getLatitude()), Double.doubleToRawLongBits(loc.getLongitude())); + } + + session.setNotificationServiceReady(true); + + }else{ + Log.d(TAG,"Don't Save GPS as new location because GPS for notifications is disabled...: "+session.isGPSForNotificationsEnabled()); + } + } + + @Override + public void onProviderDisabled(String provider) {} + + @Override + public void onProviderEnabled(String provider) {} + + @Override + public void onStatusChanged(String provider, int status, Bundle extras) {} + } + @Override public IBinder onBind(Intent intent) { return null; @@ -69,25 +116,31 @@ public class NotificationService extends Service { int pollFrequency = session.getNotificationPollFreq() * 1000 * 60; boolean notifyEnabled = session.getNotificationEnabled(); - Log.d(this.toString(), "Run Notification Task. Notifications enabled = "+ notifyEnabled); + Log.d(this.toString(), "Run Notification Task. Notifications enabled = " + notifyEnabled); - if ((myPosition != null) && (myPosition.latitude != 0.0) && (myPosition.longitude != 0.0)) { + if(notifyEnabled){ + if ((myPosition != null) && (myPosition.latitude != 0.0) && (myPosition.longitude != 0.0)) { + session.setNotificationServiceReady(true); + String lastNotificationTime; - String lastNotificationTime; + if (session.getLastNotification().equals("")) { + lastNotificationTime = user.get(SessionManager.KEY_LASTLOGIN_AT); + } else { + lastNotificationTime = session.getLastNotification(); + } - if (session.getLastNotification().equals("")) { - lastNotificationTime = user.get(SessionManager.KEY_LASTLOGIN_AT); - } else { - lastNotificationTime = session.getLastNotification(); + Log.d(this.toString(), "Lookup location with position: " + myPosition + " Radius: "+ radius +" PollFrequency: "+ pollFrequency +" lastNotifyTime: " + lastNotificationTime); + + StringRequest strReq = getStringRequestIncidentsFromAreaAndTime(myPosition.latitude, myPosition.longitude, radius, lastNotificationTime); + String tag_string_req = "req_incidents"; + AppController.getInstance().addToRequestQueue(strReq, tag_string_req); + }else{ + Log.d(TAG,"No position found. No notification send."); + session.setNotificationServiceReady(false); } - - Log.d(this.toString(), "Lookup location with position: " + myPosition + " Radius: "+ radius +" PollFrequency: "+ pollFrequency +" lastNotifyTime: " + lastNotificationTime); - - StringRequest strReq = getStringRequestIncidentsFromAreaAndTime(myPosition.latitude, myPosition.longitude, radius, lastNotificationTime); - String tag_string_req = "req_incidents"; - AppController.getInstance().addToRequestQueue(strReq, tag_string_req); } + mNotifyHandler.postDelayed(mNotifyTask, pollFrequency); } }; 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 124227e..0323599 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 @@ -47,6 +47,7 @@ public class SessionManager { public static final String KEY_NOTIFY_RADIUS = "notifyRadius"; public static final String KEY_NOTIFY_POLLINGFREQ = "notifyPollingfreq"; public static final String KEY_NOTIFY_GPS = "notifyGPSEnabled"; + public static final String KEY_NOTIFY_READY = "notifyReady"; public static final String KEY_SUBS_NOADS = "subs_noads"; public static final String KEY_SUBS_PREMIUM = "subs_premium"; @@ -86,7 +87,7 @@ public class SessionManager { } public boolean isGPSForNotificationsEnabled(){ - return status.getBoolean(KEY_NOTIFY_GPS, false); + return status.getBoolean(KEY_NOTIFY_GPS, true); } public void setLastNotification(String time){ @@ -103,6 +104,15 @@ public class SessionManager { statusEditor.apply(); } + public void setNotificationServiceReady(boolean isReady) { + statusEditor.putBoolean(KEY_NOTIFY_READY, isReady); + statusEditor.apply(); + } + + public boolean getNotificationServiceReady(){ + return status.getBoolean(KEY_NOTIFY_READY, false); + } + public void setNotificationPollFreq(int pollingFreqInMinutes){ statusEditor.putInt(KEY_NOTIFY_POLLINGFREQ, pollingFreqInMinutes); statusEditor.apply(); @@ -188,4 +198,6 @@ public class SessionManager { public void removeUser(){ userdata.edit().clear().apply(); } + + } diff --git a/app/src/main/res/drawable-hdpi/bg_withlogo.jpg b/app/src/main/res/drawable-hdpi/bg_withlogo.jpg new file mode 100644 index 0000000..e5f2858 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/bg_withlogo.jpg differ diff --git a/app/src/main/res/drawable-hdpi/bg_withlogo_2.jpg b/app/src/main/res/drawable-hdpi/bg_withlogo_2.jpg new file mode 100644 index 0000000..af184af Binary files /dev/null and b/app/src/main/res/drawable-hdpi/bg_withlogo_2.jpg differ diff --git a/app/src/main/res/drawable-hdpi/header2.9.png b/app/src/main/res/drawable-hdpi/header2.9.png new file mode 100644 index 0000000..9e8c3a1 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/header2.9.png differ diff --git a/app/src/main/res/drawable-hdpi/logo_380.png b/app/src/main/res/drawable-hdpi/logo_380.png new file mode 100644 index 0000000..d82b2c8 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/logo_380.png differ diff --git a/app/src/main/res/drawable-hdpi/logo_riskahead_header.9.png b/app/src/main/res/drawable-hdpi/logo_riskahead_header.9.png new file mode 100644 index 0000000..49ecf4e Binary files /dev/null and b/app/src/main/res/drawable-hdpi/logo_riskahead_header.9.png differ diff --git a/app/src/main/res/drawable-mdpi/bg_withlogo.jpg b/app/src/main/res/drawable-mdpi/bg_withlogo.jpg new file mode 100644 index 0000000..f23fb34 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/bg_withlogo.jpg differ diff --git a/app/src/main/res/drawable-mdpi/bg_withlogo_2.jpg b/app/src/main/res/drawable-mdpi/bg_withlogo_2.jpg new file mode 100644 index 0000000..6652e90 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/bg_withlogo_2.jpg differ diff --git a/app/src/main/res/drawable-mdpi/header2.9.png b/app/src/main/res/drawable-mdpi/header2.9.png new file mode 100644 index 0000000..afcb52b Binary files /dev/null and b/app/src/main/res/drawable-mdpi/header2.9.png differ diff --git a/app/src/main/res/drawable-mdpi/logo_380.png b/app/src/main/res/drawable-mdpi/logo_380.png new file mode 100644 index 0000000..a6e38ae Binary files /dev/null and b/app/src/main/res/drawable-mdpi/logo_380.png differ diff --git a/app/src/main/res/drawable-mdpi/logo_riskahead_header.9.png b/app/src/main/res/drawable-mdpi/logo_riskahead_header.9.png new file mode 100644 index 0000000..4d68ce8 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/logo_riskahead_header.9.png differ diff --git a/app/src/main/res/drawable-xhdpi/bg_withlogo.jpg b/app/src/main/res/drawable-xhdpi/bg_withlogo.jpg new file mode 100644 index 0000000..7c16523 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/bg_withlogo.jpg differ diff --git a/app/src/main/res/drawable-xhdpi/bg_withlogo_2.jpg b/app/src/main/res/drawable-xhdpi/bg_withlogo_2.jpg new file mode 100644 index 0000000..368ca5b Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/bg_withlogo_2.jpg differ diff --git a/app/src/main/res/drawable-xhdpi/header2.9.png b/app/src/main/res/drawable-xhdpi/header2.9.png new file mode 100644 index 0000000..b033462 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/header2.9.png differ diff --git a/app/src/main/res/drawable-xhdpi/logo_380.png b/app/src/main/res/drawable-xhdpi/logo_380.png new file mode 100644 index 0000000..91b0bbd Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/logo_380.png differ diff --git a/app/src/main/res/drawable-xhdpi/logo_riskahead_header.9.png b/app/src/main/res/drawable-xhdpi/logo_riskahead_header.9.png new file mode 100644 index 0000000..4c0c4cb Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/logo_riskahead_header.9.png differ diff --git a/app/src/main/res/drawable-xxhdpi/bg_withlogo.jpg b/app/src/main/res/drawable-xxhdpi/bg_withlogo.jpg new file mode 100644 index 0000000..75676d8 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/bg_withlogo.jpg differ diff --git a/app/src/main/res/drawable-xxhdpi/bg_withlogo_2.jpg b/app/src/main/res/drawable-xxhdpi/bg_withlogo_2.jpg new file mode 100644 index 0000000..d205469 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/bg_withlogo_2.jpg differ diff --git a/app/src/main/res/drawable-xxhdpi/header2.9.png b/app/src/main/res/drawable-xxhdpi/header2.9.png new file mode 100644 index 0000000..8053a5b Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/header2.9.png differ diff --git a/app/src/main/res/drawable-xxhdpi/logo_380.png b/app/src/main/res/drawable-xxhdpi/logo_380.png new file mode 100644 index 0000000..fcea6a6 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/logo_380.png differ diff --git a/app/src/main/res/drawable-xxhdpi/logo_riskahead_header.9.png b/app/src/main/res/drawable-xxhdpi/logo_riskahead_header.9.png new file mode 100644 index 0000000..49a5c1e Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/logo_riskahead_header.9.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/bg_withlogo.jpg b/app/src/main/res/drawable-xxxhdpi/bg_withlogo.jpg new file mode 100644 index 0000000..f12f8e8 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/bg_withlogo.jpg differ diff --git a/app/src/main/res/drawable-xxxhdpi/bg_withlogo_2.jpg b/app/src/main/res/drawable-xxxhdpi/bg_withlogo_2.jpg new file mode 100644 index 0000000..a2277ff Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/bg_withlogo_2.jpg differ diff --git a/app/src/main/res/drawable-xxxhdpi/header2.9.png b/app/src/main/res/drawable-xxxhdpi/header2.9.png new file mode 100644 index 0000000..5a79bd2 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/header2.9.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/logo_380.png b/app/src/main/res/drawable-xxxhdpi/logo_380.png new file mode 100644 index 0000000..c79e634 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/logo_380.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/logo_riskahead_header.9.png b/app/src/main/res/drawable-xxxhdpi/logo_riskahead_header.9.png new file mode 100644 index 0000000..8c80a9c Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/logo_riskahead_header.9.png differ diff --git a/app/src/main/res/drawable/header.jpg b/app/src/main/res/drawable/header.jpg deleted file mode 100644 index f54a30e..0000000 Binary files a/app/src/main/res/drawable/header.jpg and /dev/null differ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 57b2191..6345e1c 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -20,7 +20,7 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:id="@+id/imageView" - android:src="@drawable/bg_main_map" + android:src="@drawable/bg_withlogo_2" android:scaleType="centerCrop" android:layout_alignParentTop="true" android:alpha="0.9" /> @@ -71,15 +71,34 @@ - + + + + + + + + + @@ -39,7 +38,6 @@ android:text="@string/btn_start_register" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:backgroundTint="@color/bg_common_trans" android:layout_weight="1" android:onClick="gotoRegister" /> diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 1c3f55a..97e61ac 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -30,6 +30,7 @@ Info Hilfe & Kontakt Beenden + Karte aktualisieren Wir haben aktuell … … gemeldete Vorfälle @@ -125,7 +126,6 @@ hat aktuell … und sein Rang ist … unterstützt RiskAhead seit - Top 10 Statistik Meldungen @@ -143,7 +143,6 @@ Neue Vorfälle in deiner Nähe gemeldet! neuer Vorfall. Pass auf! neue Vorfälle. Pass auf! - Jetzt melden! Weiter @@ -154,6 +153,7 @@ Vorfall löschen? Willst du wirklich diesen Vorfall löschen? Ein gelöschter Vorfall kann nicht wiederhergestellt werden. + Bitte versuche es später erneut oder schreibe dem RiskAhead Support. Anmeldung ist fehlgeschlagen. Registrierung ist fehlgeschlagen. @@ -204,9 +204,8 @@ Mitglied seit Feedback - Feedback - Sende uns Verbesserungsvorschläge, Lob und Kritik um uns dabei zu helfen RiskAhead zu verbessern. - Trage dein Feedback hier ein + Sende uns dein Feedback um uns dabei zu helfen RiskAhead besser zu machen + Hier dein Feedback eingeben Senden Abbrechen Danke für dein Feedback! @@ -225,6 +224,11 @@ Vorfall teilen… Keine Angaben Drücke erneut Zurück um die RiskAhead zu schließen + Benachrichtigungen: + AN + NICHT BEREIT (GPS FEHLT) + AUS + Hole dir die Premium-Mitgliedschaft um die ganze Karte zu sehen! Allgemeiner Vorfall/Situation @@ -237,7 +241,7 @@ Diebstahl, Betrug, Einbruch - Drogenmissbrauch z.B.Getränk + Drogenmissbrauch z.B. Getränk Protest, Unruhe, Straßenblockade Checkpoint, Kontrollen Korruption, Erpressung @@ -268,7 +272,7 @@ Schießerei Explosion, Selbstmordattentat Mord, Tötung, Hinrichtung - Leiche in Öffentlichkeit + Leichenfund Sonstiges … @@ -386,10 +390,10 @@ - 1 KM - 5 KM - 10 KM - 15 KM + 1 km + 5 km + 10 km + 15 km @@ -416,3 +420,4 @@ + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2a1325f..9772341 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,4 +1,5 @@ + RiskAhead 658657714234846 ca-app-pub-3940256099942544/6300978111 @@ -31,6 +32,7 @@ About Help & Contact Exit + Refresh Map We have currently … … reported incidents @@ -55,13 +57,13 @@ Enter your E-Mail to reset your password Send Password Reset E-Mail - Do you really want to reset your password? An E-Mail will be send to your address. Please follow the instructions to reset your password. + Do you really want to reset your password? An E-Mail will be sent to your address. Please follow the instructions to reset your password. E-Mail was sent to your e-mail address Activate your account - Your account is not activated yet. Please follow the instructions in your E-Mail. Do you want to resent the E-Mail? + Your account is not activated yet. Please follow the instructions in your E-Mail. Do you want to resend the E-Mail? E-Mail was sent to your e-mail address Activation E-Mail - An activation link was send to your e-mail address. Please follow the instructions to activate your account. Thank you! + An activation link was sent to your e-mail address. Please follow the instructions to activate your account. Thank you! No Internet Connection You need an active internet connection to use this app. Please turn on your internet connection and login again. @@ -84,32 +86,32 @@ To date (yyyy-MM-dd) To time - Du hast alles ausgefüllt! - Wir danken dir für deine Unterstützung! + You have filed everything! + Thank you for your support! New - Abschicken! + Send! Incident Category Incident Subcategory - More Details - Reported from user + More details + Reported by user - Was ist passiert? - Wo passiert es? - Wann passiert es? - Wer tut das? - Mit welchen Waffen passiert es? - Wie viele tun das? - Wer ist betroffen? - Kommen die Opfer aus der Umgebung? - Weißt du noch mehr? - Mit was sind sie unterwegs? - Haben die Opfer etwas gemeinsam? - Wie erkennt man die Täter? - Weiteres? - Weitere Details … + What is happening? + Where does it happen? + When does it happen? + Who does it or is a likely suspect? + Are there weapons involved? + How many perpetrators are there? + Who is affected? + Where do the victims come from? + Do you know anything more? + How do they travel? + Do the victims have anything in common? + How would you categorize the perpetrators? + Further information? + Further details … - Bitte wähle zunächst einen Ort auf der Karte aus + Please choose a location on the map first Time Suspect Victim @@ -130,7 +132,6 @@ has currently … and his/her rank is … is supporting RiskAhead since - Top 10 Statistics Reports @@ -145,12 +146,14 @@ 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! - + New incident near your last location. Watch out! + New incidents near your last location. Watch out! Report NOW! Next + + Send Feedback + Create new incident? Do you want to reset all values and create a new incident? You have bought @@ -160,12 +163,12 @@ Please try again later or contact RiskAhead support. Could not log-in. . - Could not registrate. + Could not register. Could not send E-Mail. Could not send you an activation link. Could not load info window values. Could not save your incident. - There was an error parsing your purchase data. + There was an error processing your purchase data. Could not delete this incident. Could not retrieve incident details. You can not vote your own incident. @@ -208,12 +211,12 @@ Member since Feedback - FeedBack Give us your feedback to help us improve RiskAhead Enter Feedback here Send Cancel Thank you for your feedback! + Rate RiskAhead If you enjoy using RiskAhead, please take a moment to rate it. Thanks for your support! Rate Now! @@ -228,171 +231,176 @@ Share incident… No Value Tap back button again in order to exit RiskAhead + Notifications: + ON + NOT READY (NO GPS) + OFF + Get Premiuim to view the Full Map! - Allgemeiner Vorfall/Situation - Mündliche Gewalt - Leichte / schwere körperliche Gewalt - Lebensgefährliche Gewalt - Naturkatastrophe - Menschl. Katastrophe & Infrastruktur + A Threatening Incident or Situation + Verbal Violence + Light to Heavy Physical Violence + Life-Threatening Violence + Natural Disaster + Human Disasters & Infrastructure - Diebstahl, Betrug - Drogenmissbrauch z.B.Getränk - Protest, Unruhe, Straßenblockade - Checkpoint, Kontrollen - Korruption, Erpressung - Einfluss Kriminalität, Milizen, Terror - Sonstiges … + Fraud, Theft, Mugging or Burglary + Drug Abuse eg Drink spiked + Demonstration, Riot or Road Blockade + Checkpoints, Controls + Corruption, Extortion + Crime, Militia or Terrorist Activities + Other … - Sexuelle Belästigung - Beleidigung, Drohung - Nötigung/Vernehmung - Aufhetzung - Sonstiges … + Sexual Harassment + Insulting or Threatening Language + Interrogation, Pressuring or Coercing + Incitement + Other … - Sexueller Übergriff - Angriff auf Person allgemein - Schlägerei - Festnahme/Gefangennahme - Zwangsarbeit - Sonstiges … + Sexual Assault + Physical Attack in general + A Fight or Brawl + Arrest or Capture + Forced Labour + Other … - Vergewaltigung - Folter, Entführung, Geiselnahme - Schießerei - Explosion, Selbstmordattentat - Mord, Tötung, Hinrichtung - Leiche in Öffentlichkeit - Sonstiges … + Rape + Torture, Kidnapping, Hostage-Taking + Shooting + Bomb or Suicide Attack + Murder, Public Execution + Display of Corpse or Corpse Parts + Other … - Temperaturextrem - Wind, Sturm, Orkan, Tornado - Überschwemmung/-flutung, Tsunami - Erdbeben, Berghang Einsturz - Feuer, Rauch, Vulkanausbruch - Hungersnot, Tierplage - Sonstiges … + Extreme Temperaturs + Storm, Hurricane, Tornado + Flooding, Tsunami + Earthquake, Landslide + Fire, Smoke, Volcanic Eruption + Famine, Drought, Animal Plague + Other … - Smog Stadt - Stromausfall, Unfall - Zerstörung, Einsturzgefahr Gebäude - Brandkatastrophe - Chemiekatastrophe, Ölpest - Seuche, Krankheit - Chaos Bevölkerung, Anarchie - Sonstiges … + Air Pollution + Power Failure or General Accident + Collapsing Buildings or Destruction + Widespread Fire + Chemical Disaster or Oil Spill + Disease Outbreak or Epidemic + Chaos, Anarchy + Other … - Jetzt! - Regelmäßig - Bestimmter Zeitpunkt - Bestimmter Zeitraum + Right now! + Periodically + Exact Time + Exact Time Period - Morgens - Mittags - Abends - Nachts + Morning + During the Day + Evening + Night - Kriminelle/Gangs - Polizei - Volksmenge - Auftragskiller, Kartell, Miliz, Guerilla - Soldaten (Militär) - Terroristen (religiöse oder politische) - Weiß ich nicht - Sonstiges … + Street Criminal or Gang + The Police + Large Crowd + Hit Man, Cartel, Militia, Guerilla + Soldiers, The Military + Terrorists (religious or political) + I do not know + Other … - Lokale aus dem Land - Ausländische + Local + Foreign - Alltagsgegenstände - Schusswaffe - Explosionswaffen oder Sprengkörper - Großwaffen z.B. Panzer, Flugbombe - Weiß ich nicht - Sonstiges … + Everyday Objects + Firearms + Explosive Devices + Very Heavy or Military Grade System + I do not know + Other … - Einzelperson - Kleine Gruppe (2–5) - Große Gruppe (mehr als 5) - Weiß ich nicht - Sonstiges … + Individual + Small group(2–5) + Large group (more than 5) + I do not know + Other … - Frauen - Kinder - Männer - Jede Person - Tiere - Gebäude/Infrastruktur + Women + Children + Men + Each Person + Animals + Buildings/Infrastructure - Heimische Bevölkerung - Touristen - Ausländer, der dort arbeitet z.B. Expat - Weiß ich nicht - Sonstiges … + The Local population + Tourists + Long-term Resident Foreigners, Expat + I do not know + Other … - Zu Fuß - Motorrad - Auto, Jeep, Pick-up - Lkw, Bus - Militärfahrzeug, Panzer - Flugzeug, Helikopter - Sonstiges … + By Foot + Motor Bike + Car, Jeep, Pick-up + Truck, Bus + Military Vehicle, Tank + Airplane, Helicopter + Other … Religion - Volksgruppe/Ethnie z.B. Hautfarbe - Politische Zugehörigkeit - Soziale Gruppe z.B. Einwanderer - Beruf z.B. Journalisten, Prostituierte - Sprachzugehörigkeit - Sonstiges … + Ethnic Origin eg Skin Colour + Political Affiliation + Social Group eg Immigrants + Profession eg Journalist, Prostitute + Language + Other … - Männer - Frauen - Kinder - Tiere - Sonstiges … + Men + Women + Children + Animals + Other … - 1 KM - 5 KM - 10 KM - 15 KM + 1 km + 5 km + 10 km + 15 km @@ -418,4 +426,5 @@ 60 - + + \ No newline at end of file