diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9c36dce..f81b423 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -35,6 +35,10 @@
+
+
+
+
diff --git a/app/src/main/java/com/utsmm/kbz/MainActivity.java b/app/src/main/java/com/utsmm/kbz/MainActivity.java
index 390c62f..160f115 100644
--- a/app/src/main/java/com/utsmm/kbz/MainActivity.java
+++ b/app/src/main/java/com/utsmm/kbz/MainActivity.java
@@ -32,6 +32,7 @@ import com.nexgo.downloadkey.downloadflow.DownloadFlowResultEntity;
import com.nexgo.downloadkey.downloadflow.DownloadResult;
import com.nexgo.oaf.apiv3.device.pinpad.PinPad;
import com.nexgo.oaf.apiv3.device.pinpad.WorkKeyTypeEnum;
+import com.utsmm.kbz.util.LocationUtil;
import com.utsmyanmar.baselib.BaseApplication;
import com.utsmyanmar.baselib.repo.Repository;
import com.utsmyanmar.baselib.ui.AnimationDialog;
@@ -428,6 +429,22 @@ public class MainActivity extends AppCompatActivity implements
public void onResume() {
super.onResume();
+ LocationUtil.getCurrentLocation(this, new LocationUtil.LocationCallback() {
+ @Override
+ public void onSuccess(double lat, double lng) {
+ LogUtil.d("Location", "Location received: " + lat + ", " + lng);
+ LocationUtil.setLat(lat);
+ LocationUtil.setLng(lng);
+ }
+
+ @Override
+ public void onError(String reason) {
+ LogUtil.e("Location", "Error getting location: " + reason);
+ LocationUtil.setLat(0.00);
+ LocationUtil.setLng(0.00);
+ }
+ });
+
SystemParamsOperation.getInstance().setSetupEcr(false);
SystemParamsOperation.getInstance().setDownloadedParams(false);
diff --git a/app/src/main/java/com/utsmm/kbz/ui/core_ui/TransactionResultFragment.java b/app/src/main/java/com/utsmm/kbz/ui/core_ui/TransactionResultFragment.java
index 7e27c51..472c6d3 100644
--- a/app/src/main/java/com/utsmm/kbz/ui/core_ui/TransactionResultFragment.java
+++ b/app/src/main/java/com/utsmm/kbz/ui/core_ui/TransactionResultFragment.java
@@ -10,6 +10,7 @@ import androidx.appcompat.app.AppCompatActivity;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.google.gson.stream.MalformedJsonException;
+import com.utsmm.kbz.util.LocationUtil;
import com.utsmyanmar.baselib.emv.EmvParamOperation;
import com.utsmyanmar.baselib.fragment.DataBindingFragment;
import com.utsmyanmar.baselib.network.model.sirius.SiriusError;
diff --git a/app/src/main/java/com/utsmm/kbz/util/LocationUtil.java b/app/src/main/java/com/utsmm/kbz/util/LocationUtil.java
new file mode 100644
index 0000000..96984af
--- /dev/null
+++ b/app/src/main/java/com/utsmm/kbz/util/LocationUtil.java
@@ -0,0 +1,109 @@
+package com.utsmm.kbz.util;
+
+import android.Manifest;
+import android.app.Activity;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+
+import androidx.annotation.NonNull;
+import androidx.core.app.ActivityCompat;
+
+public class LocationUtil {
+ public interface LocationCallback {
+ void onSuccess(double lat, double lng);
+ void onError(String reason);
+ }
+
+ private static LocationListener listener;
+ private static double lat = 0.00;
+ private static double lng = 0.00;
+
+ public static void getCurrentLocation(
+ @NonNull Activity activity,
+ @NonNull LocationCallback callback) {
+
+ LocationManager lm =
+ (LocationManager) activity.getSystemService(Context.LOCATION_SERVICE);
+
+ if (lm == null) {
+ callback.onError("LocationManager is null");
+ return;
+ }
+
+ if (ActivityCompat.checkSelfPermission(activity,
+ Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
+
+ ActivityCompat.requestPermissions(
+ activity,
+ new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
+ 201
+ );
+ callback.onError("Permission not granted");
+ return;
+ }
+
+ boolean gpsEnabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
+ boolean netEnabled = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+
+ if (!gpsEnabled && !netEnabled) {
+ callback.onError("No location provider enabled");
+ return;
+ }
+
+ Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location == null) {
+ location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+ }
+
+ if (location != null) {
+ callback.onSuccess(location.getLatitude(), location.getLongitude());
+ return;
+ }
+
+ listener = new LocationListener() {
+ @Override
+ public void onLocationChanged(@NonNull Location location) {
+ callback.onSuccess(
+ location.getLatitude(),
+ location.getLongitude()
+ );
+ lm.removeUpdates(this); // 🔥 stop GPS
+ }
+ };
+
+ lm.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER,
+ 2000,
+ 1,
+ listener
+ );
+ }
+
+ public static void stop(Context context) {
+ if (listener != null) {
+ LocationManager lm =
+ (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
+ if (lm != null) lm.removeUpdates(listener);
+ listener = null;
+ }
+ }
+
+ public static double getLat() {
+ return lat;
+ }
+
+ public static double getLng() {
+ return lng;
+ }
+
+ public static void setLat(double lat) {
+ LocationUtil.lat = lat;
+ }
+
+ public static void setLng(double lng) {
+ LocationUtil.lng = lng;
+ }
+}
diff --git a/app/src/main/java/com/utsmm/kbz/util/tms/TMSUtil.java b/app/src/main/java/com/utsmm/kbz/util/tms/TMSUtil.java
index a3a8b4c..d91bb71 100644
--- a/app/src/main/java/com/utsmm/kbz/util/tms/TMSUtil.java
+++ b/app/src/main/java/com/utsmm/kbz/util/tms/TMSUtil.java
@@ -7,6 +7,7 @@ import android.text.TextUtils;
import android.util.Log;
import com.kizzy.xpay.XPay;
+import com.utsmm.kbz.util.LocationUtil;
import com.utsmyanmar.baselib.emv.EmvParamOperation;
import com.utsmyanmar.baselib.network.model.sirius.SiriusRequest;
import com.utsmyanmar.baselib.network.model.sirius.SiriusResponse;
@@ -139,6 +140,7 @@ public class TMSUtil {
public SiriusRequest generateRequestParams(Context context,String lastTransName,String lastTransTime) {
+
SiriusRequest siriusRequest = new SiriusRequest();
siriusRequest.setSerial(getSerialNumber());
siriusRequest.setAppPackage(BuildConfig.APPLICATION_ID);
@@ -148,6 +150,8 @@ public class TMSUtil {
siriusRequest.setCurrentNetwork(getNetworkType(context));
siriusRequest.setLastTransaction(lastTransName);
siriusRequest.setLastTranTime(Long.parseLong(lastTransTime));
+// siriusRequest.setLatitude(LocationUtil.getLat());
+// siriusRequest.setLongitude(LocationUtil.getLng());
siriusRequest.setValue("YourValueHere");
return siriusRequest;
diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/network/model/sirius/SiriusRequest.java b/baselib/src/main/java/com/utsmyanmar/baselib/network/model/sirius/SiriusRequest.java
index aef258e..4db1534 100644
--- a/baselib/src/main/java/com/utsmyanmar/baselib/network/model/sirius/SiriusRequest.java
+++ b/baselib/src/main/java/com/utsmyanmar/baselib/network/model/sirius/SiriusRequest.java
@@ -18,9 +18,14 @@ public class SiriusRequest {
private Long lastTranTime;
private String value;
+// private double latitude;
+// private double longitude;
public SiriusRequest() {}
- public SiriusRequest(String serial, String appPackage, String androidVersion, String firmwareVersion, String applicationVersion, String currentNetwork, String lastTransaction, Long lastTranTime, String value) {
+ public SiriusRequest(String serial, String appPackage, String androidVersion, String firmwareVersion, String applicationVersion, String currentNetwork, String lastTransaction, Long lastTranTime,
+// double latitude,
+// double longitude,
+ String value) {
this.serial = serial;
this.appPackage = appPackage;
this.androidVersion = androidVersion;
@@ -29,6 +34,8 @@ public class SiriusRequest {
this.currentNetwork = currentNetwork;
this.lastTransaction = lastTransaction;
this.lastTranTime = lastTranTime;
+// this.latitude = latitude;
+// this.longitude = longitude;
this.value = value;
}
@@ -100,6 +107,22 @@ public class SiriusRequest {
return value;
}
+// public double getLatitude(){
+// return latitude;
+// }
+//
+// public double getLongitude(){
+// return longitude;
+// }
+//
+// public void setLatitude(double latitude){
+// this.longitude = latitude;
+// }
+//
+// public void setLongitude(double longitude){
+// this.longitude = longitude;
+// }
+
public void setValue(String value) {
this.value = value;
}