forked from organicmaps/organicmaps
[android] Removed location predictor
This commit is contained in:
parent
a6d68560d1
commit
5c4967ae89
4 changed files with 0 additions and 145 deletions
|
@ -1039,20 +1039,6 @@ Java_com_mapswithme_maps_Framework_nativeDeactivatePopup(JNIEnv * env, jclass)
|
|||
return g_framework->DeactivatePopup();
|
||||
}
|
||||
|
||||
JNIEXPORT jdoubleArray JNICALL
|
||||
Java_com_mapswithme_maps_Framework_nativePredictLocation(JNIEnv * env, jclass, jdouble lat, jdouble lon, jdouble accuracy,
|
||||
jdouble bearing, jdouble speed, jdouble elapsedSeconds)
|
||||
{
|
||||
double latitude = lat;
|
||||
double longitude = lon;
|
||||
::Framework::PredictLocation(lat, lon, accuracy, bearing, speed, elapsedSeconds);
|
||||
double latlon[] = { lat, lon };
|
||||
jdoubleArray jLatLon = env->NewDoubleArray(2);
|
||||
env->SetDoubleArrayRegion(jLatLon, 0, 2, latlon);
|
||||
|
||||
return jLatLon;
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_com_mapswithme_maps_Framework_nativeSetMapStyle(JNIEnv * env, jclass, jint mapStyle)
|
||||
{
|
||||
|
|
|
@ -194,8 +194,6 @@ public class Framework
|
|||
|
||||
public static native void nativeShowCountry(String countryId, boolean zoomToDownloadButton);
|
||||
|
||||
public static native double[] nativePredictLocation(double lat, double lon, double accuracy, double bearing, double speed, double elapsedSeconds);
|
||||
|
||||
public static native void nativeSetMapStyle(int mapStyle);
|
||||
|
||||
/**
|
||||
|
|
|
@ -59,8 +59,6 @@ public enum LocationHelper
|
|||
return;
|
||||
}
|
||||
|
||||
mPredictor.onLocationUpdated(location);
|
||||
|
||||
nativeLocationUpdated(location.getTime(),
|
||||
location.getLatitude(),
|
||||
location.getLongitude(),
|
||||
|
@ -119,8 +117,6 @@ public enum LocationHelper
|
|||
private final SensorHelper mSensorHelper = new SensorHelper();
|
||||
@Nullable
|
||||
private BaseLocationProvider mLocationProvider;
|
||||
@NonNull
|
||||
private final LocationPredictor mPredictor = new LocationPredictor(mCoreLocationListener);
|
||||
@Nullable
|
||||
private UiCallback mUiCallback;
|
||||
private long mInterval;
|
||||
|
@ -311,8 +307,6 @@ public enum LocationHelper
|
|||
|
||||
if (mUiCallback != null)
|
||||
mUiCallback.onMyPositionModeChanged(newMode);
|
||||
|
||||
mPredictor.onMyPositionModeChanged(newMode);
|
||||
}
|
||||
|
||||
private void notifyLocationNotFound()
|
||||
|
@ -496,7 +490,6 @@ public enum LocationHelper
|
|||
{
|
||||
if (!mInFirstRun && getMyPositionMode() == LocationState.NOT_FOLLOW_NO_POSITION)
|
||||
switchToNextMode();
|
||||
mPredictor.resume();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -520,7 +513,6 @@ public enum LocationHelper
|
|||
//noinspection ConstantConditions
|
||||
mLocationProvider.stop();
|
||||
mSensorHelper.stop();
|
||||
mPredictor.pause();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,121 +0,0 @@
|
|||
package com.mapswithme.maps.location;
|
||||
|
||||
import android.location.Location;
|
||||
|
||||
import com.mapswithme.maps.Framework;
|
||||
import com.mapswithme.util.concurrency.UiThread;
|
||||
|
||||
class LocationPredictor
|
||||
{
|
||||
private static final String PREDICTOR_PROVIDER = "LocationPredictorProvider";
|
||||
private static final long PREDICTION_INTERVAL = 200;
|
||||
private static final long MAX_PREDICTION_COUNT = 20;
|
||||
|
||||
private final LocationListener mListener;
|
||||
private Location mLastLocation;
|
||||
private boolean mGeneratePredictions;
|
||||
private int mPredictionCount;
|
||||
|
||||
private final Runnable mRunnable = new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
if (generatePrediction())
|
||||
schedule();
|
||||
}
|
||||
};
|
||||
|
||||
private void schedule()
|
||||
{
|
||||
UiThread.runLater(mRunnable, PREDICTION_INTERVAL);
|
||||
}
|
||||
|
||||
LocationPredictor(LocationListener listener)
|
||||
{
|
||||
mListener = listener;
|
||||
}
|
||||
|
||||
void resume()
|
||||
{
|
||||
onMyPositionModeChanged(LocationHelper.INSTANCE.getMyPositionMode());
|
||||
}
|
||||
|
||||
void pause()
|
||||
{
|
||||
mGeneratePredictions = false;
|
||||
mLastLocation = null;
|
||||
stop();
|
||||
}
|
||||
|
||||
void onMyPositionModeChanged(int mode)
|
||||
{
|
||||
if (!LocationState.hasLocation(mode))
|
||||
mLastLocation = null;
|
||||
|
||||
mGeneratePredictions = (mode == LocationState.FOLLOW_AND_ROTATE);
|
||||
|
||||
stop();
|
||||
start();
|
||||
}
|
||||
|
||||
void onLocationUpdated(Location location)
|
||||
{
|
||||
if (location.getProvider().equals(PREDICTOR_PROVIDER))
|
||||
return;
|
||||
|
||||
if (location.hasBearing() && location.hasSpeed())
|
||||
{
|
||||
mLastLocation = new Location(location);
|
||||
mLastLocation.setTime(System.currentTimeMillis());
|
||||
mLastLocation.setProvider(PREDICTOR_PROVIDER);
|
||||
start();
|
||||
}
|
||||
else
|
||||
{
|
||||
mLastLocation = null;
|
||||
stop();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean shouldStart()
|
||||
{
|
||||
return (mLastLocation != null && mGeneratePredictions);
|
||||
}
|
||||
|
||||
private void start()
|
||||
{
|
||||
if (shouldStart())
|
||||
schedule();
|
||||
}
|
||||
|
||||
private void stop()
|
||||
{
|
||||
mPredictionCount = 0;
|
||||
UiThread.cancelDelayedTasks(mRunnable);
|
||||
}
|
||||
|
||||
private boolean generatePrediction()
|
||||
{
|
||||
if (!shouldStart() || mPredictionCount >= MAX_PREDICTION_COUNT)
|
||||
return false;
|
||||
|
||||
mPredictionCount++;
|
||||
|
||||
Location info = new Location(mLastLocation);
|
||||
info.setTime(System.currentTimeMillis());
|
||||
|
||||
double elapsed = (info.getTime() - mLastLocation.getTime()) / 1000.0;
|
||||
double[] newLatLon = Framework.nativePredictLocation(info.getLatitude(),
|
||||
info.getLongitude(),
|
||||
info.getAccuracy(),
|
||||
info.getBearing(),
|
||||
info.getSpeed(),
|
||||
elapsed);
|
||||
info.setLatitude(newLatLon[0]);
|
||||
info.setLongitude(newLatLon[1]);
|
||||
|
||||
mListener.onLocationUpdated(info);
|
||||
return true;
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue