Don't use GPS when manual sharing has been choosen

This commit is contained in:
Mieszko Wrzeszczyński 2019-01-02 09:03:44 +01:00
parent 4fd2795377
commit 0bf3d147f0

View File

@ -65,11 +65,17 @@ public class BackgroundLocalizationService extends Service {
private Handler mHandler = new Handler(); private Handler mHandler = new Handler();
private Runnable mStatusChecker; private Runnable mStatusChecker;
private FusedLocationProviderClient mFusedLocationClient; private FusedLocationProviderClient mFusedLocationClient;
private Location fakeLoc = null;
public BackgroundLocalizationService() { public BackgroundLocalizationService() {
providers.add(LocationManager.GPS_PROVIDER); providers.add(LocationManager.GPS_PROVIDER);
providers.add(LocationManager.NETWORK_PROVIDER); providers.add(LocationManager.NETWORK_PROVIDER);
providers.add(LocationManager.PASSIVE_PROVIDER); providers.add(LocationManager.PASSIVE_PROVIDER);
fakeLoc = new Location("");
fakeLoc.setLatitude(0);
fakeLoc.setLongitude(0);
fakeLoc.setAltitude(0);
} }
@Override @Override
@ -112,9 +118,13 @@ public class BackgroundLocalizationService extends Service {
if (!stopService) { if (!stopService) {
mStatusChecker = () -> { mStatusChecker = () -> {
try { try {
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this); if (PrefUtils.getLocationLevel(getApplicationContext()).equals(SharingLevel.MANUAL.toString())) {
getLocalizationFromListeners(); sendCoordinateToBackend(fakeLoc);
changeBackgroundMode(); } else {
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
getLocalizationFromListeners();
changeBackgroundMode();
}
} finally { } finally {
mFusedLocationClient = null; mFusedLocationClient = null;
destroyLocationListeners(); destroyLocationListeners();
@ -200,7 +210,7 @@ public class BackgroundLocalizationService extends Service {
destroyLocationListeners(); destroyLocationListeners();
} }
private void destroyLocationListeners(){ private void destroyLocationListeners() {
} }
@ -230,10 +240,9 @@ public class BackgroundLocalizationService extends Service {
String locationLevel = PrefUtils.getLocationLevel(getApplicationContext()); String locationLevel = PrefUtils.getLocationLevel(getApplicationContext());
String status = (PrefUtils.isStatusEnabled(getApplicationContext())) ? PrefUtils.getUserStatus(getApplicationContext()) : ""; String status = (PrefUtils.isStatusEnabled(getApplicationContext())) ? PrefUtils.getUserStatus(getApplicationContext()) : "";
if (locationLevel.equals(SharingLevel.PRESENCE.toString())) { if (locationLevel.equals(SharingLevel.PRESENCE.toString())) {
if(!MapUtils.checkIfCoordinateIsValid(latitude,longitude)){ if (!MapUtils.checkIfCoordinateIsValid(latitude, longitude)) {
return null; return null;
} }
@ -277,7 +286,7 @@ public class BackgroundLocalizationService extends Service {
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
Log.e(TAG,"onErr" + valueOf(e)); Log.e(TAG, "onErr" + valueOf(e));
} }
})); }));