From 280e3674aa0ec8cf875337718b372a81deb74623 Mon Sep 17 00:00:00 2001
From: Nezumi <123229563+Nez27@users.noreply.github.com>
Date: Sat, 8 Apr 2023 15:23:09 +0700
Subject: [PATCH] Send location to server
---
app/build.gradle | 1 +
.../shipper/Activity/OrderDetailActivity.java | 47 +++++++++++++------
.../foodify/shipper/LocationService.java | 19 +++++++-
.../main/res/layout/activity_order_detail.xml | 10 ++--
4 files changed, 58 insertions(+), 19 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 0275b58..b227441 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -44,6 +44,7 @@ dependencies {
implementation 'com.google.firebase:firebase-auth:21.0.3'
implementation 'com.google.firebase:firebase-storage:20.0.1'
implementation 'com.google.android.gms:play-services-maps:18.1.0'
+ implementation 'com.google.firebase:firebase-database:20.0.4'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
diff --git a/app/src/main/java/com/capstone/foodify/shipper/Activity/OrderDetailActivity.java b/app/src/main/java/com/capstone/foodify/shipper/Activity/OrderDetailActivity.java
index c429294..54cd3f1 100644
--- a/app/src/main/java/com/capstone/foodify/shipper/Activity/OrderDetailActivity.java
+++ b/app/src/main/java/com/capstone/foodify/shipper/Activity/OrderDetailActivity.java
@@ -20,6 +20,7 @@ import android.content.pm.PackageManager;
import android.location.Location;
import android.net.Uri;
import android.os.Bundle;
+import android.os.Handler;
import android.os.Looper;
import android.provider.Settings;
import android.util.Log;
@@ -104,8 +105,7 @@ public class OrderDetailActivity extends AppCompatActivity {
private LocationRequest mLocationRequest;
private LocationSettingsRequest mLocationSettingsRequest;
private LocationCallback mLocationCallBack;
- private Location mCurrentLocation;
- private boolean mRequestingLocationUpdates = false;
+ private Location mCurrentLocation = null;
private ImageView back_image;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -141,6 +141,8 @@ public class OrderDetailActivity extends AppCompatActivity {
back_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
+ Common.CURRENT_LOCATION = null;
+ stopLocationService();
startActivity(new Intent(OrderDetailActivity.this, MainActivity.class));
finish();
}
@@ -175,15 +177,14 @@ public class OrderDetailActivity extends AppCompatActivity {
btn_confirm_ship_completed.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- changeOrderStatus(COMPLETE_STATUS);
- stopLocationService();
+ updateStatus(COMPLETE_STATUS);
}
});
btn_cancel_order.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- changeOrderStatus(CANCEL_STATUS);
+ updateStatus(CANCEL_STATUS);
}
});
@@ -191,8 +192,34 @@ public class OrderDetailActivity extends AppCompatActivity {
geofencingClient = LocationServices.getGeofencingClient(this);
geofenceHelper = new GeofenceHelper(this);
+ if(!order.getStatus().equals(COMPLETE_STATUS) && !order.getStatus().equals(CANCEL_STATUS)){
+ getLocation();
- getLocation();
+ final Handler handler = new Handler(Looper.getMainLooper());
+ handler.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ if(mCurrentLocation != null){
+ stopLocationUpdates();
+ Common.CURRENT_LOCATION = mCurrentLocation;
+ getDistanceAndCalculateShipCost(order.getAddress());
+ changeLayoutButton(mCurrentLocation.getLatitude(), mCurrentLocation.getLongitude());
+ } else {
+ Toast.makeText(OrderDetailActivity.this, "Chưa thể lấy được vị trí!", Toast.LENGTH_SHORT).show();
+ }
+ }
+ }, 5000);
+ } else {
+ btn_shipping.setVisibility(View.GONE);
+ layoutConfirmOrder.setVisibility(View.GONE);
+ progressLayout.setVisibility(View.GONE);
+ }
+ }
+
+ private void updateStatus(String status) {
+ Common.CURRENT_LOCATION = null;
+ changeOrderStatus(status);
+ stopLocationService();
}
private void changeOrderStatus(String status){
@@ -414,15 +441,7 @@ public class OrderDetailActivity extends AppCompatActivity {
public void onLocationResult(@NonNull LocationResult locationResult) {
super.onLocationResult(locationResult);
- stopLocationUpdates();
mCurrentLocation = locationResult.getLastLocation();
-
- Common.CURRENT_LOCATION = mCurrentLocation;
- getDistanceAndCalculateShipCost(order.getAddress());
-
- changeLayoutButton(mCurrentLocation.getLatitude(), mCurrentLocation.getLongitude());
-
- progressLayout.setVisibility(View.GONE);
}
};
diff --git a/app/src/main/java/com/capstone/foodify/shipper/LocationService.java b/app/src/main/java/com/capstone/foodify/shipper/LocationService.java
index b568615..63fce5a 100644
--- a/app/src/main/java/com/capstone/foodify/shipper/LocationService.java
+++ b/app/src/main/java/com/capstone/foodify/shipper/LocationService.java
@@ -25,11 +25,14 @@ import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.core.app.NotificationCompat;
+import com.capstone.foodify.shipper.Model.GoogleMap.Location;
import com.google.android.gms.location.LocationCallback;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationResult;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.location.Priority;
+import com.google.firebase.database.DatabaseReference;
+import com.google.firebase.database.FirebaseDatabase;
public class LocationService extends Service {
private static final String TAG = "LocationService";
@@ -43,9 +46,11 @@ public class LocationService extends Service {
double lat = locationResult.getLastLocation().getLatitude();
double lng = locationResult.getLastLocation().getLongitude();
- Log.d(TAG, lat + ", " + lng);
+ Log.d(TAG, "Location: " + lat + ", " + lng);
Common.CURRENT_LOCATION = locationResult.getLastLocation();
+
+ updateLocationShipper(lat, lng);
}
}
};
@@ -115,4 +120,16 @@ public class LocationService extends Service {
}
return super.onStartCommand(intent, flags, startId);
}
+
+ private void updateLocationShipper(double lat, double lng){
+ FirebaseDatabase database = FirebaseDatabase.getInstance();
+ DatabaseReference order = database.getReference("Order");
+
+ if(Common.CURRENT_ORDER != null){
+ Location location = new Location();
+ location.setLat(lat);
+ location.setLng(lng);
+ order.child(Common.CURRENT_ORDER.getOrderTrackingNumber()).setValue(location);
+ }
+ }
}
diff --git a/app/src/main/res/layout/activity_order_detail.xml b/app/src/main/res/layout/activity_order_detail.xml
index c20ebcf..add93d2 100644
--- a/app/src/main/res/layout/activity_order_detail.xml
+++ b/app/src/main/res/layout/activity_order_detail.xml
@@ -295,9 +295,11 @@
/>