From 48a210db9bf8c75cd8cb5964488280b33c1d3cd1 Mon Sep 17 00:00:00 2001 From: TCFDONMEZ Date: Wed, 30 Sep 2026 11:30:13 +0300 Subject: [PATCH] Add readable charging curve and SOC power table --- FatihsMG4-unstable-2.2.22.apk.sha256 | 1 + app/build.gradle | 4 +-- .../com/evsuite/abrp/ChargingGraphView.java | 27 ++++++++++++++----- .../java/com/evsuite/abrp/MainActivity.java | 8 ++++-- app/src/main/res/layout/pane_charging.xml | 1 + 5 files changed, 30 insertions(+), 11 deletions(-) create mode 100644 FatihsMG4-unstable-2.2.22.apk.sha256 diff --git a/FatihsMG4-unstable-2.2.22.apk.sha256 b/FatihsMG4-unstable-2.2.22.apk.sha256 new file mode 100644 index 0000000..85bbe4d --- /dev/null +++ b/FatihsMG4-unstable-2.2.22.apk.sha256 @@ -0,0 +1 @@ +db95c341f6b975d9b4b9dceea79adb0b3829a0bafe8a86ea31d5b7e4012206b0 FatihsMG4-unstable-2.2.22.apk diff --git a/app/build.gradle b/app/build.gradle index 7c529a6..0f24401 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -34,8 +34,8 @@ android { applicationId "com.evsuite.abrp" minSdk 27 targetSdk 36 - versionCode 38 - versionName "2.2.21" + versionCode 39 + versionName "2.2.22" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/evsuite/abrp/ChargingGraphView.java b/app/src/main/java/com/evsuite/abrp/ChargingGraphView.java index eb71751..bfb61bc 100644 --- a/app/src/main/java/com/evsuite/abrp/ChargingGraphView.java +++ b/app/src/main/java/com/evsuite/abrp/ChargingGraphView.java @@ -7,23 +7,36 @@ import android.util.AttributeSet; import android.view.View; import java.util.ArrayList; import java.util.List; +import java.util.Locale; /** Lightweight SOC/power charging curve, avoiding a heavy chart dependency on AAOS 9. */ public final class ChargingGraphView extends View { private final Paint grid = new Paint(1), line = new Paint(1), text = new Paint(1); private final List points = new ArrayList<>(); - public ChargingGraphView(Context c, AttributeSet a) { super(c,a); grid.setColor(0x3348C7D9); line.setColor(0xFFFFC857); line.setStrokeWidth(4); text.setColor(0xFFBDC4C6); text.setTextSize(24); } + private final float[] socPower = new float[101]; + public ChargingGraphView(Context c, AttributeSet a) { super(c,a); java.util.Arrays.fill(socPower, Float.NaN); grid.setColor(0x5548C7D9); line.setColor(0xFFFFC857); line.setStrokeWidth(4); text.setColor(0xFFBDC4C6); text.setTextSize(20); } synchronized void add(Float soc, Float power) { if (soc == null || power == null || power >= 0) return; float p = Math.abs(power); if (!points.isEmpty() && Math.abs(points.get(points.size()-1)[0] - soc) < .1f) points.remove(points.size()-1); - points.add(new float[]{soc,p}); if (points.size() > 500) points.remove(0); invalidate(); + points.add(new float[]{soc,p}); if (points.size() > 500) points.remove(0); + socPower[Math.max(0, Math.min(100, Math.round(soc)))] = p; invalidate(); + } + synchronized String tableText() { + StringBuilder out = new StringBuilder("SOC Şarj gücü\n"); + boolean found = false; + for (int soc=0; soc<=100; soc++) if (!Float.isNaN(socPower[soc])) { + found = true; + out.append(String.format(Locale.getDefault(), "%3d %% %6.1f kW\n", soc, socPower[soc])); + } + return found ? out.toString().trim() : "Henüz şarj ölçümü yok"; } @Override protected synchronized void onDraw(Canvas c) { - super.onDraw(c); float w=getWidth(), h=getHeight()-34; - for(int i=0;i<=4;i++) c.drawLine(0,h*i/4,w,h*i/4,grid); - c.drawText("SOC % → Şarj gücü (kW)",12,getHeight()-5,text); - float max=20; for(float[] p:points) max=Math.max(max,p[1]); - for(int i=1;i +