forked from jens/Automation
Manage POI
This commit is contained in:
parent
722750b724
commit
49a48fc371
@ -13,6 +13,7 @@ import android.location.LocationListener;
|
|||||||
import android.location.LocationManager;
|
import android.location.LocationManager;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.Looper;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
import android.view.inputmethod.InputMethodManager;
|
import android.view.inputmethod.InputMethodManager;
|
||||||
@ -113,7 +114,7 @@ public class ActivityManagePoi extends Activity
|
|||||||
myLocationManager.removeUpdates(myLocationListenerGps);
|
myLocationManager.removeUpdates(myLocationListenerGps);
|
||||||
ActivityMainPoi.poiToEdit = new PointOfInterest();
|
ActivityMainPoi.poiToEdit = new PointOfInterest();
|
||||||
ActivityMainPoi.poiToEdit.setLocation(new Location("POINT_LOCATION"));
|
ActivityMainPoi.poiToEdit.setLocation(new Location("POINT_LOCATION"));
|
||||||
if(loadFormValuesToVariable())
|
if(loadFormValuesToVariable(false))
|
||||||
if(ActivityMainPoi.poiToEdit.create(this))
|
if(ActivityMainPoi.poiToEdit.create(this))
|
||||||
{
|
{
|
||||||
this.setResult(RESULT_OK);
|
this.setResult(RESULT_OK);
|
||||||
@ -123,7 +124,7 @@ public class ActivityManagePoi extends Activity
|
|||||||
private void changePoi()
|
private void changePoi()
|
||||||
{
|
{
|
||||||
myLocationManager.removeUpdates(myLocationListenerGps);
|
myLocationManager.removeUpdates(myLocationListenerGps);
|
||||||
if(loadFormValuesToVariable())
|
if(loadFormValuesToVariable(false))
|
||||||
if(ActivityMainPoi.poiToEdit.change(this))
|
if(ActivityMainPoi.poiToEdit.change(this))
|
||||||
{
|
{
|
||||||
this.setResult(RESULT_OK);
|
this.setResult(RESULT_OK);
|
||||||
@ -162,8 +163,13 @@ public class ActivityManagePoi extends Activity
|
|||||||
locationSearchStart = Calendar.getInstance();
|
locationSearchStart = Calendar.getInstance();
|
||||||
startTimeout();
|
startTimeout();
|
||||||
|
|
||||||
Miscellaneous.logEvent("i", "POI Manager", getResources().getString(R.string.logGettingPositionWithProvider) + " " + provider1, 3);
|
if(!Settings.privacyLocationing)
|
||||||
myLocationManager.requestLocationUpdates(provider1, 500, Settings.satisfactoryAccuracyNetwork, myLocationListenerNetwork);
|
{
|
||||||
|
Miscellaneous.logEvent("i", "POI Manager", getResources().getString(R.string.logGettingPositionWithProvider) + " " + provider1, 3);
|
||||||
|
myLocationManager.requestLocationUpdates(provider1, 500, Settings.satisfactoryAccuracyNetwork, myLocationListenerNetwork);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Miscellaneous.logEvent("i", "POI Manager", "Skipping network location query because private locationing is active.", 4);
|
||||||
|
|
||||||
Miscellaneous.logEvent("i", "POI Manager", getResources().getString(R.string.logGettingPositionWithProvider) + " " + provider2, 3);
|
Miscellaneous.logEvent("i", "POI Manager", getResources().getString(R.string.logGettingPositionWithProvider) + " " + provider2, 3);
|
||||||
myLocationManager.requestLocationUpdates(provider2, 500, Settings.satisfactoryAccuracyGps, myLocationListenerGps);
|
myLocationManager.requestLocationUpdates(provider2, 500, Settings.satisfactoryAccuracyGps, myLocationListenerGps);
|
||||||
@ -181,7 +187,7 @@ public class ActivityManagePoi extends Activity
|
|||||||
{
|
{
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
//calculate the new position of myBall
|
evaluateLocationResults();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -202,9 +208,16 @@ public class ActivityManagePoi extends Activity
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void compareLocations()
|
private void evaluateLocationResults()
|
||||||
{
|
{
|
||||||
Miscellaneous.logEvent("i", "POI Manager", getResources().getString(R.string.comparing), 4);
|
/*
|
||||||
|
Procedure:
|
||||||
|
If we get a GPS result we take it and suggest a default minimum radius.
|
||||||
|
If private locationing is active that's the only possible outcome other than a timeout.
|
||||||
|
|
||||||
|
If private locationing is not active
|
||||||
|
If we get a network
|
||||||
|
*/
|
||||||
|
|
||||||
// We have GPS
|
// We have GPS
|
||||||
if(locationGps != null)
|
if(locationGps != null)
|
||||||
@ -217,18 +230,18 @@ public class ActivityManagePoi extends Activity
|
|||||||
String text;
|
String text;
|
||||||
if(locationNetwork != null)
|
if(locationNetwork != null)
|
||||||
{
|
{
|
||||||
|
Miscellaneous.logEvent("i", "POI Manager", getResources().getString(R.string.comparing), 4);
|
||||||
double variance = locationGps.distanceTo(locationNetwork);
|
double variance = locationGps.distanceTo(locationNetwork);
|
||||||
|
|
||||||
text = String.format(getResources().getString(R.string.distanceBetween), Math.round(variance));
|
text = String.format(getResources().getString(R.string.distanceBetween), Math.round(variance));
|
||||||
getDialog(text, Math.round(variance) + 1).show();
|
getRadiusConfirmationDialog(text, Math.round(variance) + 1).show();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
text = String.format(getResources().getString(R.string.locationFound), defaultRadius);
|
text = String.format(getResources().getString(R.string.locationFound), defaultRadius);
|
||||||
getDialog(text, defaultRadius).show();
|
getRadiusConfirmationDialog(text, defaultRadius).show();
|
||||||
}
|
}
|
||||||
Miscellaneous.logEvent("i", "POI Manager", text, 4);
|
Miscellaneous.logEvent("i", "POI Manager", text, 4);
|
||||||
} // we have a great network signal
|
} // we have a great network signal:
|
||||||
else if(locationNetwork != null && locationNetwork.getAccuracy() <= Settings.satisfactoryAccuracyGps && locationNetwork.getAccuracy() <= defaultRadius)
|
else if(locationNetwork != null && locationNetwork.getAccuracy() <= Settings.satisfactoryAccuracyGps && locationNetwork.getAccuracy() <= defaultRadius)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -242,9 +255,9 @@ public class ActivityManagePoi extends Activity
|
|||||||
String text = String.format(getResources().getString(R.string.locationFound), defaultRadius);
|
String text = String.format(getResources().getString(R.string.locationFound), defaultRadius);
|
||||||
Miscellaneous.logEvent("i", "POI Manager", text, 4);
|
Miscellaneous.logEvent("i", "POI Manager", text, 4);
|
||||||
|
|
||||||
getDialog(text, defaultRadius).show();
|
getRadiusConfirmationDialog(text, defaultRadius).show();
|
||||||
} // we have a bad network signal
|
}
|
||||||
else if(
|
else if( // we have a bad network signal
|
||||||
locationNetwork != null
|
locationNetwork != null
|
||||||
&&
|
&&
|
||||||
Calendar.getInstance().getTimeInMillis()
|
Calendar.getInstance().getTimeInMillis()
|
||||||
@ -258,11 +271,20 @@ public class ActivityManagePoi extends Activity
|
|||||||
guiPoiLongitude.setText(String.valueOf(locationNetwork.getLongitude()));
|
guiPoiLongitude.setText(String.valueOf(locationNetwork.getLongitude()));
|
||||||
|
|
||||||
String text = String.format(getResources().getString(R.string.locationFoundInaccurate), defaultRadius);
|
String text = String.format(getResources().getString(R.string.locationFoundInaccurate), defaultRadius);
|
||||||
getDialog(text, defaultRadius).show();
|
getRadiusConfirmationDialog(text, defaultRadius).show();
|
||||||
Miscellaneous.logEvent("i", "POI Manager", text, 4);
|
Miscellaneous.logEvent("i", "POI Manager", text, 4);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Miscellaneous.logEvent("i", "POI Manager", getResources().getString(R.string.logNotAllMeasurings), 4);
|
{
|
||||||
|
String text = String.format(getResources().getString(R.string.noLocationCouldBeFound), searchTimeout);
|
||||||
|
Miscellaneous.logEvent("i", "POI Manager", text, 2);
|
||||||
|
|
||||||
|
if(myLocationListenerNetwork != null)
|
||||||
|
myLocationManager.removeUpdates(myLocationListenerNetwork);
|
||||||
|
|
||||||
|
myLocationManager.removeUpdates(myLocationListenerGps);
|
||||||
|
getErrorDialog(text).show();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private AlertDialog getNotificationDialog(String text)
|
private AlertDialog getNotificationDialog(String text)
|
||||||
@ -284,8 +306,11 @@ public class ActivityManagePoi extends Activity
|
|||||||
|
|
||||||
return alertDialog;
|
return alertDialog;
|
||||||
}
|
}
|
||||||
private AlertDialog getDialog(String text, final double value)
|
|
||||||
|
private AlertDialog getRadiusConfirmationDialog(String text, final double value)
|
||||||
{
|
{
|
||||||
|
stopTimeout();
|
||||||
|
|
||||||
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
|
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
|
||||||
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener()
|
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener()
|
||||||
{
|
{
|
||||||
@ -311,6 +336,24 @@ public class ActivityManagePoi extends Activity
|
|||||||
return alertDialog;
|
return alertDialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private AlertDialog getErrorDialog(String text)
|
||||||
|
{
|
||||||
|
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
|
||||||
|
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which)
|
||||||
|
{
|
||||||
|
progressDialog.dismiss();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
alertDialogBuilder.setMessage(text);
|
||||||
|
Looper.prepare();
|
||||||
|
AlertDialog alertDialog = alertDialogBuilder.create();
|
||||||
|
|
||||||
|
return alertDialog;
|
||||||
|
}
|
||||||
|
|
||||||
public class MyLocationListenerGps implements LocationListener
|
public class MyLocationListenerGps implements LocationListener
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
@ -326,7 +369,7 @@ public class ActivityManagePoi extends Activity
|
|||||||
myLocationManager.removeUpdates(this);
|
myLocationManager.removeUpdates(this);
|
||||||
locationGps = location;
|
locationGps = location;
|
||||||
|
|
||||||
compareLocations();
|
evaluateLocationResults();
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -370,7 +413,7 @@ public class ActivityManagePoi extends Activity
|
|||||||
myLocationManager.removeUpdates(myLocationListenerGps);
|
myLocationManager.removeUpdates(myLocationListenerGps);
|
||||||
}
|
}
|
||||||
|
|
||||||
compareLocations();
|
evaluateLocationResults();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -403,18 +446,21 @@ public class ActivityManagePoi extends Activity
|
|||||||
guiPoiRadius.setText(String.valueOf(poi.getRadius()));
|
guiPoiRadius.setText(String.valueOf(poi.getRadius()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean loadFormValuesToVariable()
|
public boolean loadFormValuesToVariable(boolean checkOnlyCoordinates)
|
||||||
{
|
{
|
||||||
if(ActivityMainPoi.poiToEdit == null)
|
if(ActivityMainPoi.poiToEdit == null)
|
||||||
ActivityMainPoi.poiToEdit = new PointOfInterest();
|
ActivityMainPoi.poiToEdit = new PointOfInterest();
|
||||||
|
|
||||||
if(guiPoiName.getText().length() == 0)
|
if(!checkOnlyCoordinates)
|
||||||
{
|
{
|
||||||
Toast.makeText(this, getResources().getString(R.string.pleaseEnterValidName), Toast.LENGTH_LONG).show();
|
if (guiPoiName.getText().length() == 0)
|
||||||
return false;
|
{
|
||||||
|
Toast.makeText(this, getResources().getString(R.string.pleaseEnterValidName), Toast.LENGTH_LONG).show();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ActivityMainPoi.poiToEdit.setName(guiPoiName.getText().toString());
|
||||||
}
|
}
|
||||||
else
|
|
||||||
ActivityMainPoi.poiToEdit.setName(guiPoiName.getText().toString());
|
|
||||||
|
|
||||||
if(ActivityMainPoi.poiToEdit.getLocation() == null)
|
if(ActivityMainPoi.poiToEdit.getLocation() == null)
|
||||||
ActivityMainPoi.poiToEdit.setLocation(new Location("POINT_LOCATION"));
|
ActivityMainPoi.poiToEdit.setLocation(new Location("POINT_LOCATION"));
|
||||||
@ -439,19 +485,22 @@ public class ActivityManagePoi extends Activity
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
if(!checkOnlyCoordinates)
|
||||||
{
|
{
|
||||||
ActivityMainPoi.poiToEdit.setRadius(Double.parseDouble(guiPoiRadius.getText().toString()), this);
|
try
|
||||||
}
|
{
|
||||||
catch(NumberFormatException e)
|
ActivityMainPoi.poiToEdit.setRadius(Double.parseDouble(guiPoiRadius.getText().toString()), this);
|
||||||
{
|
}
|
||||||
Toast.makeText(this, getResources().getString(R.string.pleaseEnterValidRadius), Toast.LENGTH_LONG).show();
|
catch (NumberFormatException e)
|
||||||
return false;
|
{
|
||||||
}
|
Toast.makeText(this, getResources().getString(R.string.pleaseEnterValidRadius), Toast.LENGTH_LONG).show();
|
||||||
catch (Exception e)
|
return false;
|
||||||
{
|
}
|
||||||
Toast.makeText(this, getResources().getString(R.string.unknownError), Toast.LENGTH_LONG).show();
|
catch (Exception e)
|
||||||
return false;
|
{
|
||||||
|
Toast.makeText(this, getResources().getString(R.string.unknownError), Toast.LENGTH_LONG).show();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -459,7 +508,7 @@ public class ActivityManagePoi extends Activity
|
|||||||
|
|
||||||
private void showOnMap()
|
private void showOnMap()
|
||||||
{
|
{
|
||||||
if(loadFormValuesToVariable())
|
if(loadFormValuesToVariable(true))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -681,4 +681,5 @@
|
|||||||
<string name="locationFound">Location found. The suggested minimum radius for locations is %1$d m.</string>
|
<string name="locationFound">Location found. The suggested minimum radius for locations is %1$d m.</string>
|
||||||
<string name="locationFoundInaccurate">Only a location with a limited accuracy could be found. It might not work reliably. The suggested minimum radius for locations is %1$d."</string>
|
<string name="locationFoundInaccurate">Only a location with a limited accuracy could be found. It might not work reliably. The suggested minimum radius for locations is %1$d."</string>
|
||||||
<string name="clone">Clone</string>
|
<string name="clone">Clone</string>
|
||||||
|
<string name="noLocationCouldBeFound">No position could be found after a timeout of %1$o seconds.</string>
|
||||||
</resources>
|
</resources>
|
Loading…
Reference in New Issue
Block a user