diff --git a/Android.mk b/Android.mk index df42899..29f4422 100644 --- a/Android.mk +++ b/Android.mk @@ -54,12 +54,13 @@ LOCAL_MODULE_TAGS := optional LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dir)) LOCAL_SRC_FILES := $(call all-java-files-under, src) -# Remove LocationProvider V1 as it does not work with gms package name -LOCAL_SRC_FILES := $(filter-out src/org/microg/nlp/location/LocationProviderV1.java, $(LOCAL_SRC_FILES)) -LOCAL_SRC_FILES := $(filter-out src/org/microg/nlp/location/LocationServiceV1.java, $(LOCAL_SRC_FILES)) - LOCAL_JAVA_LIBRARIES := framework com.android.location.provider +# Include compat v9 files if necassary +ifeq ($(shell [ $(PLATFORM_SDK_VERSION) -ge 17 ] && echo true), true) +LOCAL_JAVA_LIBRARIES += UnifiedNlpCompatV9 +endif + LOCAL_STATIC_JAVA_LIBRARIES := UnifiedNlpApi android-support-v4 android-support-v7-appcompat LOCAL_PACKAGE_NAME := NetworkLocation LOCAL_SDK_VERSION := current diff --git a/src/org/microg/nlp/PackageReceiver.java b/src/org/microg/nlp/PackageReceiver.java index 071329c..f120e80 100644 --- a/src/org/microg/nlp/PackageReceiver.java +++ b/src/org/microg/nlp/PackageReceiver.java @@ -4,6 +4,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; +import org.microg.nlp.geocode.GeocodeService; import org.microg.nlp.location.LocationService; public class PackageReceiver extends BroadcastReceiver { @@ -14,5 +15,6 @@ public class PackageReceiver extends BroadcastReceiver { Log.d(TAG, "Intent received: " + intent); Log.d(TAG, "Reloading location service..."); LocationService.reloadLocationService(context); + GeocodeService.reloadLocationService(context); } } diff --git a/src/org/microg/nlp/geocode/BackendFuser.java b/src/org/microg/nlp/geocode/BackendFuser.java index f4a3cd1..4ac4e14 100644 --- a/src/org/microg/nlp/geocode/BackendFuser.java +++ b/src/org/microg/nlp/geocode/BackendFuser.java @@ -26,6 +26,18 @@ class BackendFuser { } } } + + public void bind() { + for (BackendHelper backendHelper : backendHelpers) { + backendHelper.bind(); + } + } + + public void unbind() { + for (BackendHelper backendHelper : backendHelpers) { + backendHelper.unbind(); + } + } public List
getFromLocation(double latitude, double longitude, int maxResults, String locale) { diff --git a/src/org/microg/nlp/geocode/GeocodeProviderV1.java b/src/org/microg/nlp/geocode/GeocodeProviderV1.java index c70ad5a..71468fb 100644 --- a/src/org/microg/nlp/geocode/GeocodeProviderV1.java +++ b/src/org/microg/nlp/geocode/GeocodeProviderV1.java @@ -47,6 +47,10 @@ class GeocodeProviderV1 extends GeocodeProvider implements org.microg.nlp.geocod @Override public void reload() { + if (backendFuser != null) { + backendFuser.unbind(); + } backendFuser = new BackendFuser(context); + backendFuser.bind(); } } diff --git a/src/org/microg/nlp/geocode/GeocodeService.java b/src/org/microg/nlp/geocode/GeocodeService.java index 6bb584c..1dfc38a 100644 --- a/src/org/microg/nlp/geocode/GeocodeService.java +++ b/src/org/microg/nlp/geocode/GeocodeService.java @@ -1,11 +1,18 @@ package org.microg.nlp.geocode; +import android.content.Context; import android.content.Intent; import org.microg.nlp.ProviderService; import static org.microg.nlp.api.NlpApiConstants.ACTION_RELOAD_SETTINGS; public abstract class GeocodeService extends ProviderService