added workmanager background location updates, but not sending to API
This commit is contained in:
parent
2f802ad64f
commit
3fd04b220d
@ -45,4 +45,7 @@ dependencies {
|
|||||||
implementation "com.squareup.okhttp3:okhttp:3.11.0"
|
implementation "com.squareup.okhttp3:okhttp:3.11.0"
|
||||||
implementation "com.squareup.okhttp3:okhttp-urlconnection:3.10.0"
|
implementation "com.squareup.okhttp3:okhttp-urlconnection:3.10.0"
|
||||||
implementation "com.squareup.okhttp3:logging-interceptor:3.11.0"
|
implementation "com.squareup.okhttp3:logging-interceptor:3.11.0"
|
||||||
|
implementation "android.arch.work:work-runtime:1.0.0-alpha09"
|
||||||
|
implementation "com.google.android.gms:play-services-location:15.0.1"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
|
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
|
||||||
|
|
||||||
|
|
||||||
<application
|
<application
|
||||||
|
@ -20,8 +20,15 @@ import com.uam.wmi.findmytutor.R;
|
|||||||
import com.uam.wmi.findmytutor.model.Coordinate;
|
import com.uam.wmi.findmytutor.model.Coordinate;
|
||||||
import com.uam.wmi.findmytutor.network.ApiClient;
|
import com.uam.wmi.findmytutor.network.ApiClient;
|
||||||
import com.uam.wmi.findmytutor.service.CoordinateService;
|
import com.uam.wmi.findmytutor.service.CoordinateService;
|
||||||
|
import com.uam.wmi.findmytutor.utils.LocationPushWorker;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import androidx.work.PeriodicWorkRequest;
|
||||||
|
import androidx.work.WorkManager;
|
||||||
|
|
||||||
|
import static java.util.concurrent.TimeUnit.SECONDS;
|
||||||
|
|
||||||
|
|
||||||
public class MainActivity extends AppCompatActivity {
|
public class MainActivity extends AppCompatActivity {
|
||||||
@ -32,7 +39,7 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
private MapFragment mapFragment;
|
private MapFragment mapFragment;
|
||||||
private NotificationFragment notificationFragment;
|
private NotificationFragment notificationFragment;
|
||||||
private ProfileFragment profileFragment;
|
private ProfileFragment profileFragment;
|
||||||
|
private PeriodicWorkRequest localizationUpdateRequest;
|
||||||
|
|
||||||
|
|
||||||
private MapView mapView;
|
private MapView mapView;
|
||||||
@ -110,6 +117,11 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
// CoordinateService service = ApiClient.getClient(getApplicationContext())
|
// CoordinateService service = ApiClient.getClient(getApplicationContext())
|
||||||
// .create(CoordinateService.class);
|
// .create(CoordinateService.class);
|
||||||
|
|
||||||
|
if(isTutor){
|
||||||
|
|
||||||
|
localizationUpdateRequest = new PeriodicWorkRequest.Builder(LocationPushWorker.class,60, SECONDS).build();
|
||||||
|
WorkManager.getInstance().enqueue(localizationUpdateRequest);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,49 @@
|
|||||||
|
package com.uam.wmi.findmytutor.utils;
|
||||||
|
|
||||||
|
|
||||||
|
import android.location.Location;
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.google.android.gms.location.FusedLocationProviderClient;
|
||||||
|
import com.google.android.gms.location.LocationServices;
|
||||||
|
import com.google.android.gms.tasks.OnSuccessListener;
|
||||||
|
import com.uam.wmi.findmytutor.network.ApiClient;
|
||||||
|
import com.uam.wmi.findmytutor.service.CoordinateService;
|
||||||
|
|
||||||
|
import java.util.concurrent.Executor;
|
||||||
|
|
||||||
|
import androidx.work.Worker;
|
||||||
|
|
||||||
|
public class LocationPushWorker extends Worker {
|
||||||
|
private CoordinateService CoordinateService;
|
||||||
|
//private FusedLocationProviderClient fusedLocationClient;
|
||||||
|
LocationPushWorker(){
|
||||||
|
this.CoordinateService = ApiClient.getClient(getApplicationContext()).create(CoordinateService.class);
|
||||||
|
}
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public Result doWork() {
|
||||||
|
//TODO add check if User agreed to sharing location, exception handling
|
||||||
|
try{
|
||||||
|
FusedLocationProviderClient fusedLocationClient = LocationServices.getFusedLocationProviderClient(getApplicationContext());
|
||||||
|
fusedLocationClient.getLastLocation()
|
||||||
|
.addOnSuccessListener(new OnSuccessListener<Location>() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess(Location location) {
|
||||||
|
// Got last known location. In some rare situations this can be null.
|
||||||
|
if (location != null) {
|
||||||
|
// Logic to handle location object
|
||||||
|
Log.d("LocationUpload", "Location updated: long -> " + location.getLongitude() + "latit - >"+ location.getLatitude());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(SecurityException e){
|
||||||
|
Log.d("LocationException","Location not sent due to perrmision exception ");
|
||||||
|
return Result.FAILURE;
|
||||||
|
}
|
||||||
|
return Result.SUCCESS;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user