[android] Removed location predictor

This commit is contained in:
alexzatsepin 2017-02-15 16:50:44 +03:00
parent a6d68560d1
commit 5c4967ae89
4 changed files with 0 additions and 145 deletions

View file

@ -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)
{

View file

@ -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);
/**

View file

@ -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();
}
/**

View file

@ -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;
}
}