From 930ae8eafb87287d9b37f07d3870989ed276b30d Mon Sep 17 00:00:00 2001 From: Igor I Date: Mon, 25 Aug 2025 09:04:23 +0500 Subject: [PATCH] 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