mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-21 05:43:37 +00:00
[android][sdk] Fix location provider
Signed-off-by: Andrei Shkrob <github@shkrob.dev>
This commit is contained in:
committed by
Konstantin Pastbin
parent
d4863643f7
commit
802f54494a
@@ -11,6 +11,7 @@ import app.organicmaps.sdk.bookmarks.data.Icon;
|
||||
import app.organicmaps.sdk.downloader.Android7RootCertificateWorkaround;
|
||||
import app.organicmaps.sdk.editor.OsmOAuth;
|
||||
import app.organicmaps.sdk.location.LocationHelper;
|
||||
import app.organicmaps.sdk.location.LocationProviderFactory;
|
||||
import app.organicmaps.sdk.location.SensorHelper;
|
||||
import app.organicmaps.sdk.maplayer.isolines.IsolinesManager;
|
||||
import app.organicmaps.sdk.maplayer.subway.SubwayManager;
|
||||
@@ -77,12 +78,12 @@ public final class OrganicMaps implements DefaultLifecycleObserver
|
||||
}
|
||||
|
||||
public OrganicMaps(@NonNull Context context, @NonNull String flavor, @NonNull String applicationId, int versionCode,
|
||||
@NonNull String versionName, @NonNull String fileProviderAuthority)
|
||||
@NonNull String versionName, @NonNull String fileProviderAuthority,
|
||||
@NonNull LocationProviderFactory locationProviderFactory)
|
||||
{
|
||||
mFlavor = flavor;
|
||||
mContext = context.getApplicationContext();
|
||||
mPreferences = mContext.getSharedPreferences(context.getString(R.string.pref_file_name),
|
||||
Context.MODE_PRIVATE);
|
||||
mPreferences = mContext.getSharedPreferences(context.getString(R.string.pref_file_name), Context.MODE_PRIVATE);
|
||||
|
||||
// Set configuration directory as early as possible.
|
||||
// Other methods may explicitly use Config, which requires settingsDir to be set.
|
||||
@@ -102,7 +103,7 @@ public final class OrganicMaps implements DefaultLifecycleObserver
|
||||
Icon.loadDefaultIcons(mContext.getResources(), mContext.getPackageName());
|
||||
|
||||
mSensorHelper = new SensorHelper(mContext);
|
||||
mLocationHelper = new LocationHelper(mContext, mSensorHelper);
|
||||
mLocationHelper = new LocationHelper(mContext, mSensorHelper, locationProviderFactory);
|
||||
mIsolinesManager = new IsolinesManager();
|
||||
mSubwayManager = new SubwayManager(mContext);
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ import app.organicmaps.sdk.util.log.Logger;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
class AndroidNativeProvider extends BaseLocationProvider
|
||||
public class AndroidNativeProvider extends BaseLocationProvider
|
||||
{
|
||||
private static final String TAG = AndroidNativeProvider.class.getSimpleName();
|
||||
|
||||
@@ -60,7 +60,7 @@ class AndroidNativeProvider extends BaseLocationProvider
|
||||
@NonNull
|
||||
final private NativeLocationListener mNativeLocationListener = new NativeLocationListener();
|
||||
|
||||
AndroidNativeProvider(@NonNull Context context, @NonNull BaseLocationProvider.Listener listener)
|
||||
public AndroidNativeProvider(@NonNull Context context, @NonNull BaseLocationProvider.Listener listener)
|
||||
{
|
||||
super(listener);
|
||||
mLocationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
|
||||
|
||||
@@ -9,9 +9,9 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.RequiresPermission;
|
||||
import androidx.annotation.UiThread;
|
||||
|
||||
abstract class BaseLocationProvider
|
||||
public abstract class BaseLocationProvider
|
||||
{
|
||||
interface Listener
|
||||
public interface Listener
|
||||
{
|
||||
@UiThread
|
||||
void onLocationChanged(@NonNull Location location);
|
||||
|
||||
@@ -96,11 +96,11 @@ public class LocationHelper implements BaseLocationProvider.Listener
|
||||
}
|
||||
};
|
||||
|
||||
public LocationHelper(@NonNull Context context, @NonNull SensorHelper sensorHelper)
|
||||
public LocationHelper(@NonNull Context context, @NonNull SensorHelper sensorHelper, @NonNull LocationProviderFactory locationProviderFactory)
|
||||
{
|
||||
mContext = context;
|
||||
mSensorHelper = sensorHelper;
|
||||
mLocationProvider = LocationProviderFactory.getProvider(mContext, this);
|
||||
mLocationProvider = locationProviderFactory.getProvider(mContext, this);
|
||||
mHandler = new Handler();
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package app.organicmaps.sdk.location;
|
||||
|
||||
import android.content.Context;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
public interface LocationProviderFactory
|
||||
{
|
||||
boolean isGoogleLocationAvailable(@NonNull Context context);
|
||||
|
||||
BaseLocationProvider getProvider(@NonNull Context context, @NonNull BaseLocationProvider.Listener listener);
|
||||
}
|
||||
Reference in New Issue
Block a user