From 9d750fc6a33b2cb462e8f85473ca5942e0a2501c Mon Sep 17 00:00:00 2001 From: Igor I Date: Thu, 10 Apr 2025 15:41:07 +0500 Subject: [PATCH 1/8] =?UTF-8?q?=D0=9F=D0=BE=D0=BC=D0=B5=D0=BD=D1=8F=D0=BB?= =?UTF-8?q?=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8E=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 ++-- app/src/main/res/values-az/strings.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 31a240a..dd1dbbb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,8 @@ android { defaultConfig { applicationId "kz.istt.locust" minSdkVersion 15 - versionCode 109 - versionName "3.0.6" + versionCode 110 + versionName "3.0.7" targetSdkVersion 34 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 6bb6c13..7a92a11 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -347,7 +347,7 @@ İnsan sağlamlığına və ətraf mühitə nəzarət Serverə URL yolu Hər hansı bir hadisənin fotoşəkilləri - Yağa/suya həssas kağızdan istifadə etməklə damcıların çökməsi uzunluğu (m) + İS və ƏM monitorinqu üzrə qrup rəhbərinin adı From d9b271120951347479ec2070de41ae51d5e2bdd4 Mon Sep 17 00:00:00 2001 From: igor Date: Fri, 25 Jul 2025 07:42:29 +0500 Subject: [PATCH 2/8] logger --- .idea/caches/deviceStreaming.xml | 260 ++++++++++++++++-- .../java/kz/istt/locust/MapsActivity.java | 24 +- app/src/main/java/kz/istt/locust/Tools.java | 4 +- app/src/main/java/logging/AndroidLogger.java | 16 ++ app/src/main/java/logging/Logger.java | 12 + app/src/main/java/logging/LoggerFactory.java | 21 ++ 6 files changed, 318 insertions(+), 19 deletions(-) create mode 100644 app/src/main/java/logging/AndroidLogger.java create mode 100644 app/src/main/java/logging/Logger.java create mode 100644 app/src/main/java/logging/LoggerFactory.java diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml index 9e9ba09..9aaec77 100644 --- a/.idea/caches/deviceStreaming.xml +++ b/.idea/caches/deviceStreaming.xml @@ -3,6 +3,18 @@ diff --git a/app/src/main/java/kz/istt/locust/MapsActivity.java b/app/src/main/java/kz/istt/locust/MapsActivity.java index 324806d..4151211 100644 --- a/app/src/main/java/kz/istt/locust/MapsActivity.java +++ b/app/src/main/java/kz/istt/locust/MapsActivity.java @@ -1,5 +1,6 @@ package kz.istt.locust; +import androidx.core.app.ActivityCompat; import androidx.core.content.res.ResourcesCompat; import androidx.fragment.app.FragmentActivity; @@ -8,6 +9,7 @@ import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.pm.PackageManager; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.graphics.Bitmap; @@ -103,8 +105,28 @@ public class MapsActivity extends FragmentActivity implements OnMapReadyCallback if(g_uid==null) g_uid=""; // Чтоб слушать GPS + + lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); - lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 1, this); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(this, new String[]{ + android.Manifest.permission.ACCESS_FINE_LOCATION, + android.Manifest.permission.ACCESS_COARSE_LOCATION + }, 1001); + }else{ + lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 1, this); + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + if (requestCode == 1) { + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 1, this); + } else { + Toast.makeText(this, getResources().getString(R.string.Please_activate_GPS), Toast.LENGTH_LONG).show(); + } + } } /** diff --git a/app/src/main/java/kz/istt/locust/Tools.java b/app/src/main/java/kz/istt/locust/Tools.java index 623bea2..d2ebd29 100644 --- a/app/src/main/java/kz/istt/locust/Tools.java +++ b/app/src/main/java/kz/istt/locust/Tools.java @@ -51,7 +51,7 @@ public class Tools public static String readInputStream(InputStream is) { try { byte[] buffer = new byte[1024]; - StringBuilder result = new StringBuilder(); + StringBuilder result = new StringBuilder(1024); int length; while ((length = is.read(buffer)) != -1) { result.append(new String(buffer, 0, length, "UTF-8")); // StandardCharsets.UTF_8.name() > JDK 7 @@ -208,7 +208,7 @@ public class Tools public static String convertStreamToString(InputStream is, int size) throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); - StringBuilder sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(1024); String line = null; while ((line = reader.readLine()) != null) { sb.append(line).append("\n"); diff --git a/app/src/main/java/logging/AndroidLogger.java b/app/src/main/java/logging/AndroidLogger.java new file mode 100644 index 0000000..68733de --- /dev/null +++ b/app/src/main/java/logging/AndroidLogger.java @@ -0,0 +1,16 @@ +package logging; + +import android.util.Log; + +public class AndroidLogger implements Logger { + private final String tag; + + public AndroidLogger(Class clazz) { + this.tag = clazz.getSimpleName(); + } + + public void debug(String msg) { Log.d(tag, msg); } + public void info(String msg) { Log.i(tag, msg); } + public void warn(String msg) { Log.w(tag, msg); } + public void error(String msg) { Log.e(tag, msg); } +} diff --git a/app/src/main/java/logging/Logger.java b/app/src/main/java/logging/Logger.java new file mode 100644 index 0000000..02de834 --- /dev/null +++ b/app/src/main/java/logging/Logger.java @@ -0,0 +1,12 @@ +package logging; + +public interface Logger { + void debug(String msg); + void info(String msg); + void warn(String msg); + void error(String msg); + + static Logger getLogger(Class clazz) { + return LoggerFactory.createLogger(clazz); // Подменяется реализацией + } +} diff --git a/app/src/main/java/logging/LoggerFactory.java b/app/src/main/java/logging/LoggerFactory.java new file mode 100644 index 0000000..63728a4 --- /dev/null +++ b/app/src/main/java/logging/LoggerFactory.java @@ -0,0 +1,21 @@ +package logging; + +public class LoggerFactory { + public static Logger createLogger(Class clazz) { + // Тут выбираешь реализацию по флагу/условию + //if (isAndroid()) { + return new AndroidLogger(clazz); + //} else { + // return new SLF4JLogger(clazz); + //} + } + + private static boolean isAndroid() { + try { + Class.forName("android.os.Build"); + return true; + } catch (ClassNotFoundException e) { + return false; + } + } +} \ No newline at end of file From 930ae8eafb87287d9b37f07d3870989ed276b30d Mon Sep 17 00:00:00 2001 From: Igor I Date: Mon, 25 Aug 2025 09:04:23 +0500 Subject: [PATCH 3/8] Logs --- .../java/kz/istt/locust/MapsActivity.java | 24 ++++++++++++++++++- app/src/main/java/kz/istt/locust/Tools.java | 4 ++-- app/src/main/java/logging/AndroidLogger.java | 16 +++++++++++++ app/src/main/java/logging/Logger.java | 12 ++++++++++ app/src/main/java/logging/LoggerFactory.java | 21 ++++++++++++++++ 5 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/logging/AndroidLogger.java create mode 100644 app/src/main/java/logging/Logger.java create mode 100644 app/src/main/java/logging/LoggerFactory.java diff --git a/app/src/main/java/kz/istt/locust/MapsActivity.java b/app/src/main/java/kz/istt/locust/MapsActivity.java index 324806d..4151211 100644 --- a/app/src/main/java/kz/istt/locust/MapsActivity.java +++ b/app/src/main/java/kz/istt/locust/MapsActivity.java @@ -1,5 +1,6 @@ package kz.istt.locust; +import androidx.core.app.ActivityCompat; import androidx.core.content.res.ResourcesCompat; import androidx.fragment.app.FragmentActivity; @@ -8,6 +9,7 @@ import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.pm.PackageManager; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.graphics.Bitmap; @@ -103,8 +105,28 @@ public class MapsActivity extends FragmentActivity implements OnMapReadyCallback if(g_uid==null) g_uid=""; // Чтоб слушать GPS + + lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); - lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 1, this); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(this, new String[]{ + android.Manifest.permission.ACCESS_FINE_LOCATION, + android.Manifest.permission.ACCESS_COARSE_LOCATION + }, 1001); + }else{ + lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 1, this); + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + if (requestCode == 1) { + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 1, this); + } else { + Toast.makeText(this, getResources().getString(R.string.Please_activate_GPS), Toast.LENGTH_LONG).show(); + } + } } /** diff --git a/app/src/main/java/kz/istt/locust/Tools.java b/app/src/main/java/kz/istt/locust/Tools.java index 623bea2..d2ebd29 100644 --- a/app/src/main/java/kz/istt/locust/Tools.java +++ b/app/src/main/java/kz/istt/locust/Tools.java @@ -51,7 +51,7 @@ public class Tools public static String readInputStream(InputStream is) { try { byte[] buffer = new byte[1024]; - StringBuilder result = new StringBuilder(); + StringBuilder result = new StringBuilder(1024); int length; while ((length = is.read(buffer)) != -1) { result.append(new String(buffer, 0, length, "UTF-8")); // StandardCharsets.UTF_8.name() > JDK 7 @@ -208,7 +208,7 @@ public class Tools public static String convertStreamToString(InputStream is, int size) throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); - StringBuilder sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(1024); String line = null; while ((line = reader.readLine()) != null) { sb.append(line).append("\n"); diff --git a/app/src/main/java/logging/AndroidLogger.java b/app/src/main/java/logging/AndroidLogger.java new file mode 100644 index 0000000..68733de --- /dev/null +++ b/app/src/main/java/logging/AndroidLogger.java @@ -0,0 +1,16 @@ +package logging; + +import android.util.Log; + +public class AndroidLogger implements Logger { + private final String tag; + + public AndroidLogger(Class clazz) { + this.tag = clazz.getSimpleName(); + } + + public void debug(String msg) { Log.d(tag, msg); } + public void info(String msg) { Log.i(tag, msg); } + public void warn(String msg) { Log.w(tag, msg); } + public void error(String msg) { Log.e(tag, msg); } +} diff --git a/app/src/main/java/logging/Logger.java b/app/src/main/java/logging/Logger.java new file mode 100644 index 0000000..02de834 --- /dev/null +++ b/app/src/main/java/logging/Logger.java @@ -0,0 +1,12 @@ +package logging; + +public interface Logger { + void debug(String msg); + void info(String msg); + void warn(String msg); + void error(String msg); + + static Logger getLogger(Class clazz) { + return LoggerFactory.createLogger(clazz); // Подменяется реализацией + } +} diff --git a/app/src/main/java/logging/LoggerFactory.java b/app/src/main/java/logging/LoggerFactory.java new file mode 100644 index 0000000..63728a4 --- /dev/null +++ b/app/src/main/java/logging/LoggerFactory.java @@ -0,0 +1,21 @@ +package logging; + +public class LoggerFactory { + public static Logger createLogger(Class clazz) { + // Тут выбираешь реализацию по флагу/условию + //if (isAndroid()) { + return new AndroidLogger(clazz); + //} else { + // return new SLF4JLogger(clazz); + //} + } + + private static boolean isAndroid() { + try { + Class.forName("android.os.Build"); + return true; + } catch (ClassNotFoundException e) { + return false; + } + } +} \ No newline at end of file From 23c47245b87be4231ccaa4a1165759f76462a257 Mon Sep 17 00:00:00 2001 From: Igor I Date: Mon, 25 Aug 2025 09:16:13 +0500 Subject: [PATCH 4/8] + --- .idea/caches/deviceStreaming.xml | 206 +++++++++++++++++++++++++++++-- 1 file changed, 193 insertions(+), 13 deletions(-) diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml index 9e9ba09..8178718 100644 --- a/.idea/caches/deviceStreaming.xml +++ b/.idea/caches/deviceStreaming.xml @@ -3,6 +3,18 @@ From 2e0893bac41b23c586afc3261ebec03eaaca4ffd Mon Sep 17 00:00:00 2001 From: Igor I Date: Mon, 25 Aug 2025 18:46:38 +0500 Subject: [PATCH 5/8] Order by distance --- .idea/caches/deviceStreaming.xml | 75 ++++++++++- .../kz/istt/locust/LocustDelListActivity.java | 8 +- .../istt/locust/LocustHealthListActivity.java | 126 +++++++++++++++--- .../kz/istt/locust/LocustListActivity.java | 8 +- .../java/kz/istt/locust/SetupActivity.java | 33 ++++- app/src/main/res/layout/activity_setup.xml | 5 + app/src/main/res/values-az/strings.xml | 1 + app/src/main/res/values-hy/strings.xml | 1 + app/src/main/res/values-ka/strings.xml | 1 + app/src/main/res/values-kg/strings.xml | 1 + app/src/main/res/values-kk/strings.xml | 1 + app/src/main/res/values-ps/strings.xml | 3 +- app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values-tg/strings.xml | 1 + app/src/main/res/values-tk/strings.xml | 1 + app/src/main/res/values-uz/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 17 files changed, 235 insertions(+), 33 deletions(-) diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml index 8178718..528f19e 100644 --- a/.idea/caches/deviceStreaming.xml +++ b/.idea/caches/deviceStreaming.xml @@ -75,6 +75,18 @@