diff --git a/app/build.gradle b/app/build.gradle index dee2000..131996d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,8 +14,8 @@ android { applicationId "com.utsmm.kbz" minSdk 24 targetSdk 33 - versionCode 1 - versionName "1.0" + versionCode 21 + versionName "2.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } 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 1ee0326..38ed677 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 d174a43..5bf4e2b 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; }