Merge branch 'master' into turn_screen_on_plugin

This commit is contained in:
Alexey 2019-07-06 16:00:57 +03:00 committed by GitHub
commit 50ec2981c8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
748 changed files with 11491 additions and 5580 deletions

View file

@ -1,6 +1,14 @@
package net.osmand; package net.osmand;
import net.osmand.data.QuadRect;
import net.osmand.util.Algorithms;
import org.apache.commons.logging.Log;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
import java.io.BufferedInputStream; import java.io.BufferedInputStream;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
@ -32,14 +40,6 @@ import java.util.Set;
import java.util.Stack; import java.util.Stack;
import java.util.TimeZone; import java.util.TimeZone;
import net.osmand.data.QuadRect;
import net.osmand.util.Algorithms;
import org.apache.commons.logging.Log;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
public class GPXUtilities { public class GPXUtilities {
public final static Log log = PlatformUtil.getLog(GPXUtilities.class); public final static Log log = PlatformUtil.getLog(GPXUtilities.class);
@ -315,7 +315,15 @@ public class GPXUtilities {
} }
public static class Metadata extends GPXExtensions { public static class Metadata extends GPXExtensions {
public String name;
public String desc; public String desc;
public String link;
public String keywords;
public long time = 0;
public Author author = null;
public Copyright copyright = null;
public Bounds bounds = null;
public String getArticleTitle() { public String getArticleTitle() {
return getExtensionsToRead().get("article_title"); return getExtensionsToRead().get("article_title");
@ -326,6 +334,25 @@ public class GPXUtilities {
} }
} }
public static class Author extends GPXExtensions {
public String name;
public String email;
public String link;
}
public static class Copyright extends GPXExtensions {
public String author;
public String year;
public String license;
}
public static class Bounds extends GPXExtensions {
public double minlat;
public double minlon;
public double maxlat;
public double maxlon;
}
public static class GPXTrackAnalysis { public static class GPXTrackAnalysis {
public float totalDistance = 0; public float totalDistance = 0;
public int totalTracks = 0; public int totalTracks = 0;
@ -1399,11 +1426,31 @@ public class GPXUtilities {
serializer.attribute(null, "xsi:schemaLocation", serializer.attribute(null, "xsi:schemaLocation",
"http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"); "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd");
String trackName = getFilename(file.path); String trackName = file.metadata != null ? file.metadata.name : getFilename(file.path);
serializer.startTag(null, "metadata"); serializer.startTag(null, "metadata");
writeNotNullText(serializer, "name", trackName); writeNotNullText(serializer, "name", trackName);
if (file.metadata != null) { if (file.metadata != null) {
writeNotNullText(serializer, "desc", file.metadata.desc); writeNotNullText(serializer, "desc", file.metadata.desc);
if (file.metadata.author != null) {
serializer.startTag(null, "author");
writeAuthor(serializer, file.metadata.author);
serializer.endTag(null, "author");
}
if (file.metadata.copyright != null) {
serializer.startTag(null, "copyright");
writeCopyright(serializer, file.metadata.copyright);
serializer.endTag(null, "copyright");
}
writeNotNullTextWithAttribute(serializer, "link", "href", file.metadata.link);
if (file.metadata.time != 0) {
writeNotNullText(serializer, "time", format.format(new Date(file.metadata.time)));
}
writeNotNullText(serializer, "keywords", file.metadata.keywords);
if (file.metadata.bounds != null) {
serializer.startTag(null, "bounds");
writeBounds(serializer, file.metadata.bounds);
serializer.endTag(null, "bounds");
}
writeExtensions(serializer, file.metadata); writeExtensions(serializer, file.metadata);
} }
serializer.endTag(null, "metadata"); serializer.endTag(null, "metadata");
@ -1472,6 +1519,14 @@ public class GPXUtilities {
return path; return path;
} }
private static void writeNotNullTextWithAttribute(XmlSerializer serializer, String tag, String attribute, String value) throws IOException {
if (value != null) {
serializer.startTag(null, tag);
serializer.attribute(null, attribute, value);
serializer.endTag(null, tag);
}
}
private static void writeNotNullText(XmlSerializer serializer, String tag, String value) throws IOException { private static void writeNotNullText(XmlSerializer serializer, String tag, String value) throws IOException {
if (value != null) { if (value != null) {
serializer.startTag(null, tag); serializer.startTag(null, tag);
@ -1502,11 +1557,7 @@ public class GPXUtilities {
} }
writeNotNullText(serializer, "name", p.name); writeNotNullText(serializer, "name", p.name);
writeNotNullText(serializer, "desc", p.desc); writeNotNullText(serializer, "desc", p.desc);
if (p.link != null) { writeNotNullTextWithAttribute(serializer, "link", "href", p.link);
serializer.startTag(null, "link");
serializer.attribute(null, "href", p.link);
serializer.endTag(null, "link");
}
writeNotNullText(serializer, "type", p.category); writeNotNullText(serializer, "type", p.category);
if (p.comment != null) { if (p.comment != null) {
writeNotNullText(serializer, "cmt", p.comment); writeNotNullText(serializer, "cmt", p.comment);
@ -1520,6 +1571,32 @@ public class GPXUtilities {
writeExtensions(serializer, p); writeExtensions(serializer, p);
} }
private static void writeAuthor(XmlSerializer serializer, Author author) throws IOException {
writeNotNullText(serializer, "name", author.name);
if (author.email != null && author.email.contains("@")) {
String[] idAndDomain = author.email.split("@");
if (idAndDomain.length == 2 && !idAndDomain[0].isEmpty() && !idAndDomain[1].isEmpty()) {
serializer.startTag(null, "email");
serializer.attribute(null, "id", idAndDomain[0]);
serializer.attribute(null, "domain", idAndDomain[1]);
}
}
writeNotNullTextWithAttribute(serializer, "link", "href", author.link);
}
private static void writeCopyright(XmlSerializer serializer, Copyright copyright) throws IOException {
serializer.attribute(null, "author", copyright.author);
writeNotNullText(serializer, "year", copyright.year);
writeNotNullText(serializer, "license", copyright.license);
}
private static void writeBounds(XmlSerializer serializer, Bounds bounds) throws IOException {
serializer.attribute(null, "minlat", latLonFormat.format(bounds.minlat));
serializer.attribute(null, "minlon", latLonFormat.format(bounds.minlon));
serializer.attribute(null, "maxlat", latLonFormat.format(bounds.maxlat));
serializer.attribute(null, "maxlon", latLonFormat.format(bounds.maxlon));
}
public static class GPXFileResult { public static class GPXFileResult {
public ArrayList<List<Location>> locations = new ArrayList<List<Location>>(); public ArrayList<List<Location>> locations = new ArrayList<List<Location>>();
public ArrayList<WptPt> wayPoints = new ArrayList<>(); public ArrayList<WptPt> wayPoints = new ArrayList<>();
@ -1586,6 +1663,22 @@ public class GPXUtilities {
return result; return result;
} }
private static long parseTime(String text,SimpleDateFormat format,SimpleDateFormat formatMillis) {
long time = 0;
if (text != null) {
try {
time = format.parse(text).getTime();
} catch (ParseException e1) {
try {
time = formatMillis.parse(text).getTime();
} catch (ParseException e2) {
}
}
}
return time;
}
public static GPXFile loadGPXFile(File f) { public static GPXFile loadGPXFile(File f) {
FileInputStream fis = null; FileInputStream fis = null;
try { try {
@ -1694,9 +1787,59 @@ public class GPXUtilities {
parserState.push(wptPt); parserState.push(wptPt);
} }
} else if (parse instanceof Metadata) { } else if (parse instanceof Metadata) {
if (tag.equals("name")) {
((Metadata) parse).name = readText(parser, "name");
}
if (tag.equals("desc")) { if (tag.equals("desc")) {
((Metadata) parse).desc = readText(parser, "desc"); ((Metadata) parse).desc = readText(parser, "desc");
} }
if (tag.equals("author")) {
Author author = new Author();
((Metadata) parse).author = author;
parserState.push(author);
}
if (tag.equals("copyright")) {
Copyright copyright = new Copyright();
copyright.author = parser.getAttributeValue("", "author");
((Metadata) parse).copyright = copyright;
parserState.push(copyright);
}
if (tag.equals("link")) {
((Metadata) parse).link = parser.getAttributeValue("", "href");
}
if (tag.equals("time")) {
String text = readText(parser, "time");
((Metadata) parse).time = parseTime(text, format, formatMillis);
}
if (tag.equals("keywords")) {
((Metadata) parse).keywords = readText(parser, "keywords");
}
if (tag.equals("bounds")) {
Bounds bounds = parseBoundsAttributes(parser);
((Metadata) parse).bounds = bounds;
parserState.push(bounds);
}
} else if (parse instanceof Author) {
if (tag.equals("name")) {
((Author) parse).name = readText(parser, "name");
}
if (tag.equals("email")) {
String id = parser.getAttributeValue("", "id");
String domain = parser.getAttributeValue("", "domain");
if (!Algorithms.isEmpty(id) && !Algorithms.isEmpty(domain)) {
((Author) parse).email = id + "@" + domain;
}
}
if (tag.equals("link")) {
((Author) parse).link = parser.getAttributeValue("", "href");
}
} else if (parse instanceof Copyright) {
if (tag.equals("year")) {
((Copyright) parse).year = readText(parser, "year");
}
if (tag.equals("license")) {
((Copyright) parse).license = readText(parser, "license");
}
} else if (parse instanceof Route) { } else if (parse instanceof Route) {
if (tag.equals("name")) { if (tag.equals("name")) {
((Route) parse).name = readText(parser, "name"); ((Route) parse).name = readText(parser, "name");
@ -1798,17 +1941,7 @@ public class GPXUtilities {
} }
} else if (tag.equals("time")) { } else if (tag.equals("time")) {
String text = readText(parser, "time"); String text = readText(parser, "time");
if (text != null) { ((WptPt) parse).time = parseTime(text, format, formatMillis);
try {
((WptPt) parse).time = format.parse(text).getTime();
} catch (ParseException e1) {
try {
((WptPt) parse).time = formatMillis.parse(text).getTime();
} catch (ParseException e2) {
}
}
}
} else if (tag.toLowerCase().equals("subclass")) { } else if (tag.toLowerCase().equals("subclass")) {
endOfTrkSegment = true; endOfTrkSegment = true;
} }
@ -1831,6 +1964,15 @@ public class GPXUtilities {
if (tag.equals("metadata")) { if (tag.equals("metadata")) {
Object pop = parserState.pop(); Object pop = parserState.pop();
assert pop instanceof Metadata; assert pop instanceof Metadata;
} else if (tag.equals("author")) {
Object pop = parserState.pop();
assert pop instanceof Author;
} else if (tag.equals("copyright")) {
Object pop = parserState.pop();
assert pop instanceof Copyright;
} else if (tag.equals("bounds")) {
Object pop = parserState.pop();
assert pop instanceof Bounds;
} else if (tag.equals("trkpt")) { } else if (tag.equals("trkpt")) {
Object pop = parserState.pop(); Object pop = parserState.pop();
assert pop instanceof WptPt; assert pop instanceof WptPt;
@ -1900,6 +2042,18 @@ public class GPXUtilities {
return wpt; return wpt;
} }
private static Bounds parseBoundsAttributes(XmlPullParser parser) {
Bounds bounds = new Bounds();
try {
bounds.minlat = Double.parseDouble(parser.getAttributeValue("", "minlat"));
bounds.minlon = Double.parseDouble(parser.getAttributeValue("", "minlon"));
bounds.maxlat = Double.parseDouble(parser.getAttributeValue("", "maxlat"));
bounds.maxlon = Double.parseDouble(parser.getAttributeValue("", "maxlon"));
} catch (NumberFormatException e) {
}
return bounds;
}
public static void mergeGPXFileInto(GPXFile to, GPXFile from) { public static void mergeGPXFileInto(GPXFile to, GPXFile from) {
if (from == null) { if (from == null) {
return; return;

View file

@ -41,6 +41,8 @@ public class Location {
private float mBearing = 0.0f; private float mBearing = 0.0f;
private boolean mHasAccuracy = false; private boolean mHasAccuracy = false;
private float mAccuracy = 0.0f; private float mAccuracy = 0.0f;
private boolean mHasVerticalAccuracy = false;
private float mVerticalAccuracy = 0.0f;
// Cache the inputs and outputs of computeDistanceAndBearing // Cache the inputs and outputs of computeDistanceAndBearing
// so calls to distanceTo() and bearingTo() can share work // so calls to distanceTo() and bearingTo() can share work
@ -89,6 +91,8 @@ public class Location {
mBearing = l.mBearing; mBearing = l.mBearing;
mHasAccuracy = l.mHasAccuracy; mHasAccuracy = l.mHasAccuracy;
mAccuracy = l.mAccuracy; mAccuracy = l.mAccuracy;
mHasVerticalAccuracy = l.mHasVerticalAccuracy;
mVerticalAccuracy = l.mVerticalAccuracy;
} }
/** /**
@ -494,6 +498,41 @@ public class Location {
mHasAccuracy = false; mHasAccuracy = false;
} }
/**
* Returns true if the provider is able to report vertical accuracy information,
* false otherwise. The default implementation returns false.
*/
public boolean hasVerticalAccuracy() {
return mHasVerticalAccuracy;
}
/**
* Returns the accuracy of the fix in meters. If hasVerticalAccuracy() is false,
* 0.0 is returned.
*/
public float getVerticalAccuracy() {
return mVerticalAccuracy;
}
/**
* Sets the accuracy of this fix. Following this call, hasVerticalAccuracy()
* will return true.
*/
public void setVerticalAccuracy(float verticalAccuracy) {
this.mVerticalAccuracy = verticalAccuracy;
mHasVerticalAccuracy = true;
}
/**
* Clears the vertical accuracy of this fix. Following this call, hasVerticalAccuracy()
* will return false.
*/
public void removeVerticalAccuracy() {
mVerticalAccuracy = 0.0f;
mHasVerticalAccuracy = false;
}
@Override public String toString() { @Override public String toString() {
return "Location[mProvider=" + mProvider + return "Location[mProvider=" + mProvider +
",mTime=" + mTime + ",mTime=" + mTime +
@ -506,7 +545,9 @@ public class Location {
",mHasBearing=" + mHasBearing + ",mHasBearing=" + mHasBearing +
",mBearing=" + mBearing + ",mBearing=" + mBearing +
",mHasAccuracy=" + mHasAccuracy + ",mHasAccuracy=" + mHasAccuracy +
",mAccuracy=" + mAccuracy; ",mAccuracy=" + mAccuracy +
",mHasVerticalAccuracy=" + mHasVerticalAccuracy +
",mVerticalAccuracy=" + mVerticalAccuracy;
} }

View file

@ -28,6 +28,7 @@ public class Amenity extends MapObject {
public static final String WEBSITE = "website"; public static final String WEBSITE = "website";
public static final String PHONE = "phone"; public static final String PHONE = "phone";
public static final String MOBILE = "mobile";
public static final String DESCRIPTION = "description"; public static final String DESCRIPTION = "description";
public static final String ROUTE = "route"; public static final String ROUTE = "route";
public static final String OPENING_HOURS = "opening_hours"; public static final String OPENING_HOURS = "opening_hours";

View file

@ -11,7 +11,7 @@ public class TransportStop extends MapObject {
private static final int DELETED_STOP = -1; private static final int DELETED_STOP = -1;
private int[] referencesToRoutes = null; private int[] referencesToRoutes = null;
private Amenity amenity; private TransportStopAggregated transportStopAggregated;
public int distance; public int distance;
public int x31; public int x31;
public int y31; public int y31;
@ -37,11 +37,53 @@ public class TransportStop extends MapObject {
} }
public Amenity getAmenity() { public Amenity getAmenity() {
return amenity; if (transportStopAggregated != null) {
return transportStopAggregated.getAmenity();
}
return null;
} }
public void setAmenity(Amenity amenity) { public void setAmenity(Amenity amenity) {
this.amenity = amenity; if (transportStopAggregated == null) {
transportStopAggregated = new TransportStopAggregated();
}
transportStopAggregated.setAmenity(amenity);
}
public List<TransportStop> getLocalTransportStops() {
if (transportStopAggregated != null) {
return transportStopAggregated.getLocalTransportStops();
}
return Collections.emptyList();
}
public void addLocalTransportStop(TransportStop stop) {
if (transportStopAggregated == null) {
transportStopAggregated = new TransportStopAggregated();
}
transportStopAggregated.addLocalTransportStop(stop);
}
public List<TransportStop> getNearbyTransportStops() {
if (transportStopAggregated != null) {
return transportStopAggregated.getNearbyTransportStops();
}
return Collections.emptyList();
}
public void addNearbyTransportStop(TransportStop stop) {
if (transportStopAggregated == null) {
transportStopAggregated = new TransportStopAggregated();
}
transportStopAggregated.addNearbyTransportStop(stop);
}
public TransportStopAggregated getTransportStopAggregated() {
return transportStopAggregated;
}
public void setTransportStopAggregated(TransportStopAggregated stopAggregated) {
transportStopAggregated = stopAggregated;
} }
@Override @Override

View file

@ -0,0 +1,65 @@
package net.osmand.data;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class TransportStopAggregated {
private Amenity amenity;
private List<TransportStop> localTransportStops;
private List<TransportStop> nearbyTransportStops;
public TransportStopAggregated() {
}
public Amenity getAmenity() {
return amenity;
}
public void setAmenity(Amenity amenity) {
this.amenity = amenity;
}
public List<TransportStop> getLocalTransportStops() {
if (localTransportStops == null) {
return Collections.emptyList();
}
return this.localTransportStops;
}
public void addLocalTransportStop(TransportStop stop) {
if (localTransportStops == null) {
localTransportStops = new ArrayList<>();
}
localTransportStops.add(stop);
}
public void addLocalTransportStops(List<TransportStop> stops) {
if (localTransportStops == null) {
localTransportStops = new ArrayList<>();
}
localTransportStops.addAll(stops);
}
public List<TransportStop> getNearbyTransportStops() {
if (nearbyTransportStops == null) {
return Collections.emptyList();
}
return this.nearbyTransportStops;
}
public void addNearbyTransportStop(TransportStop stop) {
if (nearbyTransportStops == null) {
nearbyTransportStops = new ArrayList<>();
}
nearbyTransportStops.add(stop);
}
public void addNearbyTransportStops(List<TransportStop> stops) {
if (nearbyTransportStops == null) {
nearbyTransportStops = new ArrayList<>();
}
nearbyTransportStops.addAll(stops);
}
}

View file

@ -48,6 +48,9 @@ public class PoiType extends AbstractPoiType {
if(isReference()) { if(isReference()) {
return referenceType.getOsmTag(); return referenceType.getOsmTag();
} }
if(editTag != null) {
return editTag;
}
if(osmTag != null && osmTag.startsWith("osmand_amenity")) { if(osmTag != null && osmTag.startsWith("osmand_amenity")) {
return "amenity"; return "amenity";
} }

View file

@ -343,12 +343,12 @@ public class BinaryRoutePlanner {
private float estimatedDistance(final RoutingContext ctx, int targetEndX, int targetEndY, private float estimatedDistance(final RoutingContext ctx, int targetEndX, int targetEndY,
int startX, int startY) { int startX, int startY) {
double distance = squareRootDist(startX, startY, targetEndX, targetEndY); double distance = squareRootDist(startX, startY, targetEndX, targetEndY);
return (float) (distance / ctx.getRouter().getMaxDefaultSpeed()); return (float) (distance / ctx.getRouter().getMaxSpeed());
} }
protected static float h(RoutingContext ctx, int begX, int begY, int endX, int endY) { protected static float h(RoutingContext ctx, int begX, int begY, int endX, int endY) {
double distToFinalPoint = squareRootDist(begX, begY, endX, endY); double distToFinalPoint = squareRootDist(begX, begY, endX, endY);
double result = distToFinalPoint / ctx.getRouter().getMaxDefaultSpeed(); double result = distToFinalPoint / ctx.getRouter().getMaxSpeed();
if (ctx.precalculatedRouteDirection != null) { if (ctx.precalculatedRouteDirection != null) {
float te = ctx.precalculatedRouteDirection.timeEstimate(begX, begY, endX, endY); float te = ctx.precalculatedRouteDirection.timeEstimate(begX, begY, endX, endY);
if (te > 0) { if (te > 0) {
@ -480,7 +480,7 @@ public class BinaryRoutePlanner {
// reset to f // reset to f
// distStartObstacles = 0; // distStartObstacles = 0;
// more precise but slower // more precise but slower
distStartObstacles = ctx.precalculatedRouteDirection.getDeviationDistance(x, y) / ctx.getRouter().getMaxDefaultSpeed(); distStartObstacles = ctx.precalculatedRouteDirection.getDeviationDistance(x, y) / ctx.getRouter().getMaxSpeed();
} }
// We don't check if there are outgoing connections // We don't check if there are outgoing connections
@ -584,11 +584,11 @@ public class BinaryRoutePlanner {
float priority = ctx.getRouter().defineSpeedPriority(road); float priority = ctx.getRouter().defineSpeedPriority(road);
float speed = (ctx.getRouter().defineRoutingSpeed(road) * priority); float speed = (ctx.getRouter().defineRoutingSpeed(road) * priority);
if (speed == 0) { if (speed == 0) {
speed = (ctx.getRouter().getMinDefaultSpeed() * priority); speed = (ctx.getRouter().getDefaultSpeed() * priority);
} }
// speed can not exceed max default speed according to A* // speed can not exceed max default speed according to A*
if (speed > ctx.getRouter().getMaxDefaultSpeed()) { if (speed > ctx.getRouter().getMaxSpeed()) {
speed = ctx.getRouter().getMaxDefaultSpeed(); speed = ctx.getRouter().getMaxSpeed();
} }
return obstaclesTime + distOnRoadToPass / speed; return obstaclesTime + distOnRoadToPass / speed;
} }

View file

@ -33,6 +33,9 @@ public class GeneralRouter implements VehicleRouter {
public static final String PREFER_MOTORWAYS = "prefer_motorway"; public static final String PREFER_MOTORWAYS = "prefer_motorway";
public static final String ALLOW_PRIVATE = "allow_private"; public static final String ALLOW_PRIVATE = "allow_private";
public static final String ALLOW_MOTORWAYS = "allow_motorway"; public static final String ALLOW_MOTORWAYS = "allow_motorway";
public static final String DEFAULT_SPEED = "default_speed";
public static final String MIN_SPEED = "min_speed";
public static final String MAX_SPEED = "max_speed";
private final RouteAttributeContext[] objectAttributes; private final RouteAttributeContext[] objectAttributes;
public final Map<String, String> attributes; public final Map<String, String> attributes;
@ -55,9 +58,11 @@ public class GeneralRouter implements VehicleRouter {
private float roundaboutTurn; private float roundaboutTurn;
private float rightTurn; private float rightTurn;
// speed in m/s // speed in m/s
private float minDefaultSpeed = 10; private float minSpeed = 0.28f;
// speed in m/s // speed in m/s
private float maxDefaultSpeed = 10; private float defaultSpeed = 1f;
// speed in m/s
private float maxSpeed = 10f;
private TLongHashSet impassableRoads; private TLongHashSet impassableRoads;
private GeneralRouterProfile profile; private GeneralRouterProfile profile;
@ -161,9 +166,17 @@ public class GeneralRouter implements VehicleRouter {
shortestRoute = params.containsKey(USE_SHORTEST_WAY) && parseSilentBoolean(params.get(USE_SHORTEST_WAY), false); shortestRoute = params.containsKey(USE_SHORTEST_WAY) && parseSilentBoolean(params.get(USE_SHORTEST_WAY), false);
heightObstacles = params.containsKey(USE_HEIGHT_OBSTACLES) && parseSilentBoolean(params.get(USE_HEIGHT_OBSTACLES), false); heightObstacles = params.containsKey(USE_HEIGHT_OBSTACLES) && parseSilentBoolean(params.get(USE_HEIGHT_OBSTACLES), false);
if(shortestRoute) { if(shortestRoute) {
maxDefaultSpeed = Math.min(CAR_SHORTEST_DEFAULT_SPEED, maxDefaultSpeed); maxSpeed = Math.min(CAR_SHORTEST_DEFAULT_SPEED, maxSpeed);
}
if (params.containsKey(DEFAULT_SPEED)) {
defaultSpeed = parseSilentFloat(params.get(DEFAULT_SPEED), defaultSpeed);
}
if (params.containsKey(MIN_SPEED)) {
minSpeed = parseSilentFloat(params.get(MIN_SPEED), minSpeed);
}
if (params.containsKey(MAX_SPEED)) {
maxSpeed = parseSilentFloat(params.get(MAX_SPEED), maxSpeed);
} }
} }
public GeneralRouterProfile getProfile() { public GeneralRouterProfile getProfile() {
@ -188,10 +201,12 @@ public class GeneralRouter implements VehicleRouter {
rightTurn = parseSilentFloat(v, rightTurn); rightTurn = parseSilentFloat(v, rightTurn);
} else if(k.equals("roundaboutTurn")) { } else if(k.equals("roundaboutTurn")) {
roundaboutTurn = parseSilentFloat(v, roundaboutTurn); roundaboutTurn = parseSilentFloat(v, roundaboutTurn);
} else if(k.equals("minDefaultSpeed")) { } else if(k.equals("minDefaultSpeed") || k.equals("defaultSpeed")) {
minDefaultSpeed = parseSilentFloat(v, minDefaultSpeed * 3.6f) / 3.6f; defaultSpeed = parseSilentFloat(v, defaultSpeed * 3.6f) / 3.6f;
} else if(k.equals("maxDefaultSpeed")) { } else if( k.equals("minSpeed")) {
maxDefaultSpeed = parseSilentFloat(v, maxDefaultSpeed * 3.6f) / 3.6f; minSpeed = parseSilentFloat(v, minSpeed * 3.6f) / 3.6f;
} else if(k.equals("maxDefaultSpeed") || k.equals("maxSpeed")) {
maxSpeed = parseSilentFloat(v, maxSpeed * 3.6f) / 3.6f;
} }
} }
@ -377,13 +392,15 @@ public class GeneralRouter implements VehicleRouter {
@Override @Override
public float defineRoutingSpeed(RouteDataObject road) { public float defineRoutingSpeed(RouteDataObject road) {
return Math.min(defineVehicleSpeed(road), maxDefaultSpeed); float spd = getObjContext(RouteDataObjectAttribute.ROAD_SPEED).evaluateFloat(road, defaultSpeed);
return spd;
} }
@Override @Override
public float defineVehicleSpeed(RouteDataObject road) { public float defineVehicleSpeed(RouteDataObject road) {
return getObjContext(RouteDataObjectAttribute.ROAD_SPEED) .evaluateFloat(road, getMinDefaultSpeed()); float spd = getObjContext(RouteDataObjectAttribute.ROAD_SPEED).evaluateFloat(road, defaultSpeed);
return Math.max(Math.min(spd, maxSpeed), minSpeed);
} }
@Override @Override
@ -392,15 +409,19 @@ public class GeneralRouter implements VehicleRouter {
} }
@Override @Override
public float getMinDefaultSpeed() { public float getDefaultSpeed() {
return minDefaultSpeed; return defaultSpeed;
} }
@Override @Override
public float getMaxDefaultSpeed() { public float getMinSpeed() {
return maxDefaultSpeed; return minSpeed;
} }
@Override
public float getMaxSpeed() {
return maxSpeed;
}
public double getLeftTurn() { public double getLeftTurn() {
return leftTurn; return leftTurn;

View file

@ -260,8 +260,8 @@ public class PrecalculatedRouteDirection {
public PrecalculatedRouteDirection adopt(RoutingContext ctx) { public PrecalculatedRouteDirection adopt(RoutingContext ctx) {
int ind1 = getIndex(ctx.startX, ctx.startY); int ind1 = getIndex(ctx.startX, ctx.startY);
int ind2 = getIndex(ctx.targetX, ctx.targetY); int ind2 = getIndex(ctx.targetX, ctx.targetY);
minSpeed = ctx.getRouter().getMinDefaultSpeed(); minSpeed = ctx.getRouter().getDefaultSpeed();
maxSpeed = ctx.getRouter().getMaxDefaultSpeed(); maxSpeed = ctx.getRouter().getMaxSpeed();
if(ind1 == -1) { if(ind1 == -1) {
return null; return null;
} }

View file

@ -196,7 +196,7 @@ public class RoutePlannerFrontEnd {
RoutingContext nctx = buildRoutingContext(ctx.config, ctx.nativeLib, ctx.getMaps(), RouteCalculationMode.BASE); RoutingContext nctx = buildRoutingContext(ctx.config, ctx.nativeLib, ctx.getMaps(), RouteCalculationMode.BASE);
nctx.calculationProgress = ctx.calculationProgress; nctx.calculationProgress = ctx.calculationProgress;
List<RouteSegmentResult> ls = searchRoute(nctx, start, end, intermediates); List<RouteSegmentResult> ls = searchRoute(nctx, start, end, intermediates);
routeDirection = PrecalculatedRouteDirection.build(ls, ctx.config.DEVIATION_RADIUS, ctx.getRouter().getMaxDefaultSpeed()); routeDirection = PrecalculatedRouteDirection.build(ls, ctx.config.DEVIATION_RADIUS, ctx.getRouter().getMaxSpeed());
} }
if (intermediatesEmpty && ctx.nativeLib != null) { if (intermediatesEmpty && ctx.nativeLib != null) {
ctx.startX = MapUtils.get31TileNumberX(start.getLongitude()); ctx.startX = MapUtils.get31TileNumberX(start.getLongitude());
@ -426,7 +426,7 @@ public class RoutePlannerFrontEnd {
ctx.calculationProgress.reverseSegmentQueueSize = 0; ctx.calculationProgress.reverseSegmentQueueSize = 0;
ctx.calculationProgress.directSegmentQueueSize = 0; ctx.calculationProgress.directSegmentQueueSize = 0;
float rd = (float) MapUtils.squareRootDist31(ctx.startX, ctx.startY, ctx.targetX, ctx.targetY); float rd = (float) MapUtils.squareRootDist31(ctx.startX, ctx.startY, ctx.targetX, ctx.targetY);
float speed = 0.9f * ctx.config.router.getMaxDefaultSpeed(); float speed = 0.9f * ctx.config.router.getMaxSpeed();
ctx.calculationProgress.totalEstimatedDistance = (float) (rd / speed); ctx.calculationProgress.totalEstimatedDistance = (float) (rd / speed);
} }

View file

@ -237,7 +237,7 @@ public class RouteResultPreparation {
double distOnRoadToPass = 0; double distOnRoadToPass = 0;
double speed = ctx.getRouter().defineVehicleSpeed(road); double speed = ctx.getRouter().defineVehicleSpeed(road);
if (speed == 0) { if (speed == 0) {
speed = ctx.getRouter().getMinDefaultSpeed(); speed = ctx.getRouter().getDefaultSpeed();
} else { } else {
if (speed > SLOW_DOWN_SPEED_THRESHOLD) { if (speed > SLOW_DOWN_SPEED_THRESHOLD) {
speed = speed - (speed / SLOW_DOWN_SPEED_THRESHOLD - 1) * SLOW_DOWN_SPEED; speed = speed - (speed / SLOW_DOWN_SPEED_THRESHOLD - 1) * SLOW_DOWN_SPEED;

View file

@ -181,7 +181,11 @@ public class RouteStatistics {
@Override @Override
public String getPropertyName(String attribute) { public String getPropertyName(String attribute) {
return attribute; if (attribute.equals(UNDEFINED_ATTR)) {
return UNDEFINED_ATTR;
} else {
return SURFACE_ATTR + "_" + attribute;
}
} }
@Override @Override
@ -222,7 +226,11 @@ public class RouteStatistics {
@Override @Override
public String getPropertyName(String attribute) { public String getPropertyName(String attribute) {
return attribute; if (attribute.equals(UNDEFINED_ATTR)) {
return UNDEFINED_ATTR;
} else {
return SMOOTHNESS_ATTR + "_" + attribute;
}
} }
@Override @Override

View file

@ -62,14 +62,21 @@ public interface VehicleRouter {
* *
* @return minimal speed at road in m/s * @return minimal speed at road in m/s
*/ */
public float getMinDefaultSpeed(); public float getDefaultSpeed();
/**
* Used as minimal threshold of default speed
*
* @return minimal speed at road in m/s
*/
public float getMinSpeed();
/** /**
* Used for A* routing to predict h(x) : it should be great any g(x) * Used for A* routing to predict h(x) : it should be great any g(x)
* *
* @return maximum speed to calculate shortest distance * @return maximum speed to calculate shortest distance
*/ */
public float getMaxDefaultSpeed(); public float getMaxSpeed();
/** /**
* aware of road restrictions * aware of road restrictions

View file

@ -1225,7 +1225,9 @@ public class SearchCoreFactory {
public static class SearchLocationAndUrlAPI extends SearchBaseAPI { public static class SearchLocationAndUrlAPI extends SearchBaseAPI {
private static final int OLC_RECALC_DISTANCE_THRESHOLD = 100000; // 100 km
private int olcPhraseHash; private int olcPhraseHash;
private LatLon olcPhraseLocation;
private ParsedOpenLocationCode cachedParsedCode; private ParsedOpenLocationCode cachedParsedCode;
private final List<String> citySubTypes = Arrays.asList("city", "town", "village"); private final List<String> citySubTypes = Arrays.asList("city", "town", "village");
@ -1328,6 +1330,9 @@ public class SearchCoreFactory {
} }
} }
} }
if (latLon == null && !parsedCode.isFull()) {
latLon = parsedCode.recover(phrase.getSettings().getOriginalLocation());
}
if (latLon != null) { if (latLon != null) {
publishLocation(phrase, resultMatcher, lw, latLon); publishLocation(phrase, resultMatcher, lw, latLon);
} }
@ -1386,8 +1391,15 @@ public class SearchCoreFactory {
return -1; return -1;
} }
int olcPhraseHash = p.getUnknownSearchPhrase().hashCode(); int olcPhraseHash = p.getUnknownSearchPhrase().hashCode();
if (this.olcPhraseHash == olcPhraseHash && this.olcPhraseLocation != null) {
double distance = MapUtils.getDistance(p.getSettings().getOriginalLocation(), this.olcPhraseLocation);
if (distance > OLC_RECALC_DISTANCE_THRESHOLD) {
olcPhraseHash++;
}
}
if (this.olcPhraseHash != olcPhraseHash) { if (this.olcPhraseHash != olcPhraseHash) {
this.olcPhraseHash = olcPhraseHash; this.olcPhraseHash = olcPhraseHash;
this.olcPhraseLocation = p.getSettings().getOriginalLocation();
cachedParsedCode = LocationParser.parseOpenLocationCode(p.getUnknownSearchPhrase()); cachedParsedCode = LocationParser.parseOpenLocationCode(p.getUnknownSearchPhrase());
} }
return cachedParsedCode == null ? SEARCH_LOCATION_PRIORITY : SEARCH_MAX_PRIORITY; return cachedParsedCode == null ? SEARCH_LOCATION_PRIORITY : SEARCH_MAX_PRIORITY;

View file

@ -234,4 +234,12 @@
<string name="proxy">Проксі</string> <string name="proxy">Проксі</string>
<string name="privacy">Прыватнасць</string> <string name="privacy">Прыватнасць</string>
<string name="bearing">Накірунак</string> <string name="bearing">Накірунак</string>
<string name="shared_string_select">Абраць</string>
<string name="min_logging_distance">Мінімальная адлегласць для рэгістрацыі</string>
<string name="min_logging_distance_descr">Фільтр: мінімальная адлегласць для рэгістрацыі новай кропкі</string>
<string name="min_logging_accuracy">Мінімальная дакладнасць для рэгістрацыі</string>
<string name="min_logging_accuracy_descr">Фільтр: не рэгістраваць, калі дакладнасць не дасягнутая</string>
<string name="min_logging_speed">Мінімальная хуткасць для рэгістрацыі</string>
<string name="min_logging_speed_descr">Фільтр: не рэгістраваць пры хуткасці ніжэй за абраную</string>
<string name="gpx_settings">Налады GPX</string>
</resources> </resources>

View file

@ -234,4 +234,12 @@
<string name="proxy_settings">Configuració del servidor intermediari</string> <string name="proxy_settings">Configuració del servidor intermediari</string>
<string name="proxy">Servidor intermediari</string> <string name="proxy">Servidor intermediari</string>
<string name="privacy">Privacitat</string> <string name="privacy">Privacitat</string>
<string name="shared_string_select">Selecciona</string>
<string name="min_logging_distance">Distància mínima d\'enregistrament</string>
<string name="min_logging_distance_descr">Filtre: distància mínima per enregistrar un punt nou</string>
<string name="min_logging_accuracy">Precisió mínima de registre</string>
<string name="min_logging_accuracy_descr">Filtre: no s\'enregistra sense assolir la precisió mínima</string>
<string name="min_logging_speed">Velocitat mínima de registre</string>
<string name="min_logging_speed_descr">Filtre: no s\'enregistra per sota de la velocitat seleccionada</string>
<string name="gpx_settings">Configuració GPX</string>
</resources> </resources>

View file

@ -2,7 +2,7 @@
<resources> <resources>
<string name="background_work_description">Skift indstillinger for batterioptimering, for stabil deling af placering.</string> <string name="background_work_description">Skift indstillinger for batterioptimering, for stabil deling af placering.</string>
<string name="background_work">Baggrundstilstand</string> <string name="background_work">Baggrundstilstand</string>
<string name="battery_optimization_description">Sluk for batterioptimering af OsmAnd Tracker, så det ikke pludseligt bliver slukket, når det er i baggrunden.</string> <string name="battery_optimization_description">Sluk for batterioptimering af OsmAnd Tracker, så den ikke pludseligt bliver slukket, når den er i baggrunden.</string>
<string name="sharing_in_background">Deling i baggrunden</string> <string name="sharing_in_background">Deling i baggrunden</string>
<string name="go_to_settings">Gå til indstillinger</string> <string name="go_to_settings">Gå til indstillinger</string>
<string name="shared_string_later">Senere</string> <string name="shared_string_later">Senere</string>
@ -234,4 +234,12 @@
<string name="proxy">Proxy</string> <string name="proxy">Proxy</string>
<string name="privacy">Privatliv</string> <string name="privacy">Privatliv</string>
<string name="precision">Præcision</string> <string name="precision">Præcision</string>
<string name="shared_string_select">Vælg</string>
<string name="min_logging_distance">Mindste logningsafstand</string>
<string name="min_logging_distance_descr">Filter: mindste afstand for at logge et nyt punkt</string>
<string name="min_logging_accuracy">Minimum logningsnøjagtighed</string>
<string name="min_logging_accuracy_descr">Filter: ingen logføring, medmindre nøjagtigheden er nået</string>
<string name="min_logging_speed">Minimum logningshastighed</string>
<string name="min_logging_speed_descr">Filter: ingen logning under den valgte hastighed</string>
<string name="gpx_settings">GPX-indstillinger</string>
</resources> </resources>

View file

@ -64,7 +64,7 @@
<string name="set_time">Zeit einstellen</string> <string name="set_time">Zeit einstellen</string>
<string name="my_location_search_hint">Suche: Gruppe oder Kontakt</string> <string name="my_location_search_hint">Suche: Gruppe oder Kontakt</string>
<string name="show_on_map">Auf Karte anzeigen</string> <string name="show_on_map">Auf Karte anzeigen</string>
<string name="app_name">OsmAnd Online GPS Tracker</string> <string name="app_name">OsmAnd Online GPS-Tracker</string>
<string name="phone_number_title">Telefonnummer</string> <string name="phone_number_title">Telefonnummer</string>
<string name="phone_number_descr">Telefonnummer in internationalem Format</string> <string name="phone_number_descr">Telefonnummer in internationalem Format</string>
<string name="shared_string_password">Passwort</string> <string name="shared_string_password">Passwort</string>
@ -72,7 +72,7 @@
<string name="authentication_code">Authentifizierungscode</string> <string name="authentication_code">Authentifizierungscode</string>
<string name="authentication_code_descr">Telegram hat Ihnen einen Code für OsmAnd zur Anmeldung an Ihrem Konto gesendet.</string> <string name="authentication_code_descr">Telegram hat Ihnen einen Code für OsmAnd zur Anmeldung an Ihrem Konto gesendet.</string>
<string name="enter_password">Passwort eingeben</string> <string name="enter_password">Passwort eingeben</string>
<string name="shared_string_login">Anmelden</string> <string name="shared_string_login">Anmeldung</string>
<string name="shared_string_logout">Abmelden</string> <string name="shared_string_logout">Abmelden</string>
<string name="not_logged_in">Sie sind nicht angemeldet</string> <string name="not_logged_in">Sie sind nicht angemeldet</string>
<string name="shared_string_continue">Fortfahren</string> <string name="shared_string_continue">Fortfahren</string>
@ -127,7 +127,7 @@
<string name="connecting_to_the_internet">Verbindung zum Internet</string> <string name="connecting_to_the_internet">Verbindung zum Internet</string>
<string name="background_work_description">Akkuoptimierungseinstellungen, um die Standortfreigabe zu stabilisieren.</string> <string name="background_work_description">Akkuoptimierungseinstellungen, um die Standortfreigabe zu stabilisieren.</string>
<string name="password_descr">Telegram-Passwort</string> <string name="password_descr">Telegram-Passwort</string>
<string name="nm">kn</string> <string name="nm">sm</string>
<string name="nm_h">kn/h</string> <string name="nm_h">kn/h</string>
<string name="last_updated_location">Zuletzt aktualisierter Ort:</string> <string name="last_updated_location">Zuletzt aktualisierter Ort:</string>
<string name="not_possible_to_send_to_telegram_chats">Es ist nicht möglich, an Telegram-Chats zu senden:</string> <string name="not_possible_to_send_to_telegram_chats">Es ist nicht möglich, an Telegram-Chats zu senden:</string>
@ -234,4 +234,12 @@
<string name="proxy_settings">Proxy-Einstellungen</string> <string name="proxy_settings">Proxy-Einstellungen</string>
<string name="proxy">Proxy</string> <string name="proxy">Proxy</string>
<string name="privacy">Datenschutz</string> <string name="privacy">Datenschutz</string>
<string name="shared_string_select">Auswählen</string>
<string name="min_logging_distance">Minimaler Protokollierungsabstand</string>
<string name="min_logging_distance_descr">Filter: Mindestabstand zum Protokollieren eines neuen Punktes</string>
<string name="min_logging_accuracy">Minimale Protokollierungsgenauigkeit</string>
<string name="min_logging_accuracy_descr">Filter: keine Protokollierung, es sei denn, die Genauigkeit wird erreicht</string>
<string name="min_logging_speed">Minimale Protokollierungsgeschwindigkeit</string>
<string name="min_logging_speed_descr">Filter: keine Protokollierung unter der gewählten Geschwindigkeit</string>
<string name="gpx_settings">GPX-Einstellungen</string>
</resources> </resources>

View file

@ -84,7 +84,7 @@
<string name="my_location_search_hint">Buscar: Grupo o contacto</string> <string name="my_location_search_hint">Buscar: Grupo o contacto</string>
<string name="start_location_sharing">Compartir ubicación</string> <string name="start_location_sharing">Compartir ubicación</string>
<string name="show_on_map">Mostrar en el mapa</string> <string name="show_on_map">Mostrar en el mapa</string>
<string name="app_name">Rastreador GPS en línea de OsmAnd</string> <string name="app_name">OsmAnd Online GPS Tracker</string>
<string name="phone_number_title">Número de teléfono</string> <string name="phone_number_title">Número de teléfono</string>
<string name="phone_number_descr">Número de teléfono en formato internacional</string> <string name="phone_number_descr">Número de teléfono en formato internacional</string>
<string name="shared_string_password">Contraseña</string> <string name="shared_string_password">Contraseña</string>
@ -233,4 +233,12 @@
<string name="proxy_settings">Ajustes del proxy</string> <string name="proxy_settings">Ajustes del proxy</string>
<string name="proxy">Proxy</string> <string name="proxy">Proxy</string>
<string name="privacy">Privacidad</string> <string name="privacy">Privacidad</string>
<string name="shared_string_select">Elegir</string>
<string name="min_logging_distance">Distancia mínima de registro</string>
<string name="min_logging_distance_descr">Filtro: distancia mínima para registrar un nuevo punto</string>
<string name="min_logging_accuracy">Precisión mínima de registro</string>
<string name="min_logging_accuracy_descr">Filtro: No registrar, a menos que se alcance esta precisión</string>
<string name="min_logging_speed">Velocidad mínima de registro</string>
<string name="min_logging_speed_descr">Filtro: sin registro por debajo de la velocidad elegida</string>
<string name="gpx_settings">Ajustes de GPX</string>
</resources> </resources>

View file

@ -83,7 +83,7 @@
<string name="my_location_search_hint">Buscar: Grupo o contacto</string> <string name="my_location_search_hint">Buscar: Grupo o contacto</string>
<string name="start_location_sharing">Compartir ubicación</string> <string name="start_location_sharing">Compartir ubicación</string>
<string name="show_on_map">Mostrar en el mapa</string> <string name="show_on_map">Mostrar en el mapa</string>
<string name="app_name">Rastreador GPS en línea de OsmAnd</string> <string name="app_name">OsmAnd Online GPS Tracker</string>
<string name="phone_number_title">Número de teléfono</string> <string name="phone_number_title">Número de teléfono</string>
<string name="phone_number_descr">Número de teléfono en formato internacional</string> <string name="phone_number_descr">Número de teléfono en formato internacional</string>
<string name="shared_string_password">Contraseña</string> <string name="shared_string_password">Contraseña</string>
@ -233,4 +233,12 @@
<string name="proxy_settings">Ajustes del proxy</string> <string name="proxy_settings">Ajustes del proxy</string>
<string name="proxy">Proxy</string> <string name="proxy">Proxy</string>
<string name="privacy">Privacidad</string> <string name="privacy">Privacidad</string>
<string name="shared_string_select">Elegir</string>
<string name="min_logging_distance">Distancia mínima de registro</string>
<string name="min_logging_distance_descr">Filtro: distancia mínima para registrar un nuevo punto</string>
<string name="min_logging_accuracy">Precisión mínima de registro</string>
<string name="min_logging_accuracy_descr">Filtro: no registrar, a menos que se alcance esta precisión</string>
<string name="min_logging_speed">Velocidad mínima de registro</string>
<string name="min_logging_speed_descr">Filtro: sin registro por debajo de la velocidad elegida</string>
<string name="gpx_settings">Ajustes de GPX</string>
</resources> </resources>

View file

@ -137,4 +137,20 @@
<string name="my_location">Nire kokapena</string> <string name="my_location">Nire kokapena</string>
<string name="live_now">Zuzenean orain</string> <string name="live_now">Zuzenean orain</string>
<string name="timeline">Denbora-eskala</string> <string name="timeline">Denbora-eskala</string>
<string name="search_contacts_descr">Bilatu zure talde eta kontaktu guztien artean.</string>
<string name="timeline_available_for_free_now">Denbora-lerroa orain doan eskuragarri dagoen ezaugarri bat da.</string>
<string name="proxy_key">Gakoa</string>
<string name="proxy_password">Pasahitza</string>
<string name="proxy_username">Erabiltzaile-izena</string>
<string name="proxy_credentials">Kredentzialak</string>
<string name="proxy_port">Ataka</string>
<string name="proxy_server">Zerbitzaria</string>
<string name="shared_string_connection">Konexioa</string>
<string name="shared_string_enable">Gaitu</string>
<string name="proxy_type">Proxy mota</string>
<string name="proxy_connected">Konektatuta</string>
<string name="proxy_disconnected">Deskonektatuta</string>
<string name="proxy_settings">Proxyaren ezarpenak</string>
<string name="proxy">Proxya</string>
<string name="privacy">Pribatutasuna</string>
</resources> </resources>

View file

@ -1,5 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version="1.0" encoding="utf-8"?>
<resources><string name="last_update_from_telegram">آخرین به‌روزرسانی نسخهٔ تلگرام</string> <resources>
<string name="last_update_from_telegram">آخرین به‌روزرسانی نسخهٔ تلگرام</string>
<string name="device_added_successfully">%1$s اضافه شد.</string> <string name="device_added_successfully">%1$s اضافه شد.</string>
<string name="shared_string_add">افزودن</string> <string name="shared_string_add">افزودن</string>
<string name="error_adding_new_device">نمی‌توان دستگاه جدید اضافه کرد</string> <string name="error_adding_new_device">نمی‌توان دستگاه جدید اضافه کرد</string>
@ -20,4 +21,49 @@
<string name="sharing_enabled">اشتراک‌گذاری: فعال</string> <string name="sharing_enabled">اشتراک‌گذاری: فعال</string>
<string name="shared_string_status">وضعیت</string> <string name="shared_string_status">وضعیت</string>
<string name="shared_string_close">بستن</string> <string name="shared_string_close">بستن</string>
<string name="shared_string_hide">نشان نده</string>
<string name="shared_string_disable">غیرفعال‌کردن</string>
<string name="shared_string_save">ذخیره</string>
<string name="shared_string_name">نام</string>
<string name="shared_string_sort">مرتب‌سازی</string>
<string name="shared_string_exit">خروج</string>
<string name="shared_string_all">همه</string>
<string name="shared_string_off">خاموش</string>
<string name="shared_string_install">نصب</string>
<string name="shared_string_share">اشتراک‌گذاری</string>
<string name="shared_string_back">عقب</string>
<string name="shared_string_continue">ادامه</string>
<string name="shared_string_cancel">لغو</string>
<string name="shared_string_settings">تنظیمات</string>
<string name="osmand_service">حالت پس‌زمینه</string>
<string name="yard">yd</string>
<string name="foot">ft</string>
<string name="mile">mi</string>
<string name="km">km</string>
<string name="m">m</string>
<string name="nm">nmi</string>
<string name="min_mile">min/m</string>
<string name="min_km">min/km</string>
<string name="m_s">m/s</string>
<string name="km_h">km/h</string>
<string name="mile_per_hour">mph</string>
<string name="si_kmh">کیلومتر بر ساعت</string>
<string name="si_mph">مایل بر ساعت</string>
<string name="si_m_s">متر بر ثانیه</string>
<string name="si_min_km">دقیقه بر کیلومتر</string>
<string name="si_min_m">دقیقه بر مایل</string>
<string name="si_mi_feet">مایل/پا</string>
<string name="si_mi_yard">مایل/یارد</string>
<string name="si_km_m">کیلومتر/متر</string>
<string name="si_nm">مایل دریایی</string>
<string name="si_mi_meters">مایل/متر</string>
<string name="shared_string_map">نقشه</string>
<string name="average_altitude">میانگین ارتفاع</string>
<string name="average_speed">میانگین سرعت</string>
<string name="shared_string_update">به‌روزرسانی</string>
<string name="shared_string_ok">خُب</string>
<string name="shared_string_search">جست‌وجو</string>
<string name="altitude">ارتفاع</string>
<string name="shared_string_enable">فعال‌کردن</string>
<string name="shared_string_select">انتخاب</string>
</resources> </resources>

View file

@ -44,9 +44,9 @@
<string name="add_device">הוספת מכשיר</string> <string name="add_device">הוספת מכשיר</string>
<string name="share_location_as">שיתוף מיקום בתור</string> <string name="share_location_as">שיתוף מיקום בתור</string>
<string name="live_now_description">אנשי קשר וקבוצות שמשתפים אתך מיקום.</string> <string name="live_now_description">אנשי קשר וקבוצות שמשתפים אתך מיקום.</string>
<string name="battery_optimization_description">כיבוי מיטוב סוללה עבור טלגרם OsmAnd כדי שהשירות לא יכבה ברקע.</string> <string name="battery_optimization_description">כיבוי מיטוב סוללה עבור עוקב OsmAnd כדי שהשירות לא יכבה ברקע.</string>
<string name="logout_from_osmand_telegram_descr">לצאת מטלגרם OsmAnd כדי לכבות את האפשרות לשתף מיקום או לצפות במיקום של אחרים\?</string> <string name="logout_from_osmand_telegram_descr">לצאת מעוקב OsmAnd כדי לכבות את האפשרות לשתף מיקום או לצפות במיקום של אחרים\?</string>
<string name="logout_from_osmand_telegram">לצאת מטלגרם OsmAnd\?</string> <string name="logout_from_osmand_telegram">לצאת מעוקב OsmAnd\?</string>
<string name="shared_string_name">שם</string> <string name="shared_string_name">שם</string>
<string name="by_distance">לפי מרחק</string> <string name="by_distance">לפי מרחק</string>
<string name="by_name">לפי שם</string> <string name="by_name">לפי שם</string>
@ -72,12 +72,12 @@
<string name="open_in_osmand">הצגה ב־OsmAnd</string> <string name="open_in_osmand">הצגה ב־OsmAnd</string>
<string name="end_date">מועד סיום</string> <string name="end_date">מועד סיום</string>
<string name="start_date">מועד התחלה</string> <string name="start_date">מועד התחלה</string>
<string name="disconnect_from_telegram_desc">כדי לשלול גישה לשיתוף המיקום. יש לפתוח את טלגרם, לגשת להגדרות ← פרטיות ← הפעלות ולסגור את הפעלת הטלגרם של OsmAnd.</string> <string name="disconnect_from_telegram_desc">כדי לשלול גישה לשיתוף המיקום. יש לפתוח את טלגרם, לגשת להגדרות ← פרטיות ← הפעלות ולסגור את הפעלת העוקב של OsmAnd.</string>
<string name="disconnect_from_telegram">איך לכבות את העוקב של OsmAnd מטלגרם</string> <string name="disconnect_from_telegram">איך לכבות את העוקב של OsmAnd מטלגרם</string>
<string name="logout_help_desc">איך לכבות את העוקב של OsmAnd מטלגרם</string> <string name="logout_help_desc">איך לכבות את העוקב של OsmAnd מטלגרם</string>
<string name="connected_account">חשבון מחובר</string> <string name="connected_account">חשבון מחובר</string>
<string name="in_time">בעוד %1$s</string> <string name="in_time">בעוד %1$s</string>
<string name="osmand_connect_desc">נא לבחור את גרסת ה־OsmAnd בה יעשה שימוש OsmAnd טלגרם לטובת הצגת מיקומים.</string> <string name="osmand_connect_desc">נא לבחור את גרסת ה־OsmAnd בה יעשה שימוש עוקב OsmAnd לטובת הצגת מיקומים.</string>
<string name="location_history_desc">להסתיר אנשי קשר שלא זזו במשך זה מסוים.</string> <string name="location_history_desc">להסתיר אנשי קשר שלא זזו במשך זה מסוים.</string>
<string name="location_history">היסטוריית מיקום</string> <string name="location_history">היסטוריית מיקום</string>
<string name="stale_location_desc">הפעם האחרונה שאיש קשר זז.</string> <string name="stale_location_desc">הפעם האחרונה שאיש קשר זז.</string>
@ -115,7 +115,7 @@
<string name="my_location_search_hint">חיפוש: קבוצה או איש קשר</string> <string name="my_location_search_hint">חיפוש: קבוצה או איש קשר</string>
<string name="start_location_sharing">שיתוף מיקום</string> <string name="start_location_sharing">שיתוף מיקום</string>
<string name="show_on_map">הצגה במפה</string> <string name="show_on_map">הצגה במפה</string>
<string name="app_name">OsmAnd Online GPS Tracker</string> <string name="app_name">עוקב GPS מקוון של OsmAnd</string>
<string name="phone_number_title">מספר טלפון</string> <string name="phone_number_title">מספר טלפון</string>
<string name="phone_number_descr">מספר טלפון בתצורה בינלאומית</string> <string name="phone_number_descr">מספר טלפון בתצורה בינלאומית</string>
<string name="shared_string_password">ססמה</string> <string name="shared_string_password">ססמה</string>
@ -138,11 +138,11 @@
<string name="gps_not_available">נא להפעיל את „מיקום” בהגדרות המערכת</string> <string name="gps_not_available">נא להפעיל את „מיקום” בהגדרות המערכת</string>
<string name="location_service_no_gps_available">נא לבחור את אחד מספקי המיקום כדי לשתף את המיקום שלך.</string> <string name="location_service_no_gps_available">נא לבחור את אחד מספקי המיקום כדי לשתף את המיקום שלך.</string>
<string name="osmand_service">מצב רקע</string> <string name="osmand_service">מצב רקע</string>
<string name="osmand_service_descr">OsmAnd טלגרם פועל ברקע בזמן שהמסך כבוי.</string> <string name="osmand_service_descr">עוקב OsmAnd פועל ברקע בזמן שהמסך כבוי.</string>
<string name="shared_string_distance">מרחק</string> <string name="shared_string_distance">מרחק</string>
<string name="share_location">שיתוף מיקום</string> <string name="share_location">שיתוף מיקום</string>
<string name="sharing_location">המיקום משותף</string> <string name="sharing_location">המיקום משותף</string>
<string name="process_service">שירות OsmAnd טלגרם</string> <string name="process_service">שירות עוקב OsmAnd</string>
<string name="osmand_logo">הלוגו של OsmAnd</string> <string name="osmand_logo">הלוגו של OsmAnd</string>
<string name="install_osmand_dialog_message">עליך להתקין את הגרסה החופשית או את הגרסה בתשלום של OsmAnd תחילה</string> <string name="install_osmand_dialog_message">עליך להתקין את הגרסה החופשית או את הגרסה בתשלום של OsmAnd תחילה</string>
<string name="install_osmand">התקנת OsmAnd</string> <string name="install_osmand">התקנת OsmAnd</string>
@ -233,4 +233,12 @@
<string name="proxy_settings">הגדרות מתווך</string> <string name="proxy_settings">הגדרות מתווך</string>
<string name="proxy">מתווך</string> <string name="proxy">מתווך</string>
<string name="privacy">פרטיות</string> <string name="privacy">פרטיות</string>
<string name="shared_string_select">בחירה</string>
<string name="min_logging_distance">מרחק תיעוד מזערי</string>
<string name="min_logging_distance_descr">מסנן: מרחק מזערי לתיעוד נקודה חדשה</string>
<string name="min_logging_accuracy">דיוק תיעוד מזערי</string>
<string name="min_logging_accuracy_descr">מסנן: אין תיעוד עד שרמת הדיוק הושגה</string>
<string name="min_logging_speed">מהירות תיעוד מזערית</string>
<string name="min_logging_speed_descr">מסנן: לא לתעד מתחת למהירות הנבחרת</string>
<string name="gpx_settings">הגדרות GPX</string>
</resources> </resources>

View file

@ -219,4 +219,18 @@
<string name="precision">Pontosság</string> <string name="precision">Pontosság</string>
<string name="altitude">Magasság</string> <string name="altitude">Magasság</string>
<string name="bearing">Tájolás</string> <string name="bearing">Tájolás</string>
<string name="proxy_key">Kulcs</string>
<string name="proxy_password">Jelszó</string>
<string name="proxy_username">Felhasználónév</string>
<string name="proxy_credentials">Hitelesítő adatok</string>
<string name="proxy_port">Port</string>
<string name="proxy_server">Kiszolgáló</string>
<string name="shared_string_connection">Kapcsolat</string>
<string name="shared_string_enable">Engedélyezés</string>
<string name="proxy_type">Proxy típusa</string>
<string name="proxy_connected">Kapcsolódva</string>
<string name="proxy_disconnected">Kapcsolat bontva</string>
<string name="proxy_settings">Proxy beállításai</string>
<string name="proxy">Proxy</string>
<string name="privacy">Adatvédelem</string>
</resources> </resources>

View file

@ -212,4 +212,34 @@
<string name="shared_string_collected">Ricevuti</string> <string name="shared_string_collected">Ricevuti</string>
<string name="gps_points">punti GPS</string> <string name="gps_points">punti GPS</string>
<string name="shared_string_sent">Inviati</string> <string name="shared_string_sent">Inviati</string>
<string name="search_contacts">Cerca nei contatti</string>
<string name="search_contacts_descr">Cerca in tutti i tuoi gruppi e contatti.</string>
<string name="type_contact_or_group_name">Inserisci il nome del gruppo o del contatto</string>
<string name="shared_string_search">Cerca</string>
<string name="direction">Direzione</string>
<string name="precision">Precisione</string>
<string name="altitude">Altitudine</string>
<string name="bearing">Orientamento</string>
<string name="proxy_key">Chiave</string>
<string name="proxy_password">Password</string>
<string name="proxy_username">Nome utente</string>
<string name="proxy_credentials">Credenziali</string>
<string name="proxy_port">Porta</string>
<string name="proxy_server">Server</string>
<string name="shared_string_connection">Connessione</string>
<string name="shared_string_enable">Abilita</string>
<string name="proxy_type">Tipo di Proxy</string>
<string name="proxy_connected">Connesso</string>
<string name="proxy_disconnected">Disconnesso</string>
<string name="proxy_settings">Impostazioni Proxy</string>
<string name="proxy">Proxy</string>
<string name="privacy">Privacy</string>
<string name="shared_string_select">Seleziona</string>
<string name="min_logging_distance">Distanza minima di registrazione</string>
<string name="min_logging_distance_descr">Filtra: distanza minima per registrare un nuovo punto</string>
<string name="min_logging_accuracy">Accuratezza di registrazione minima</string>
<string name="min_logging_accuracy_descr">Filtra: nessuna registrazione se l\'accuratezza non è raggiunta</string>
<string name="min_logging_speed">Velocità minima di registrazione</string>
<string name="min_logging_speed_descr">Filtra: nessuna registrazione al di sotto della velocità selezionata</string>
<string name="gpx_settings">Impostazioni GPX</string>
</resources> </resources>

View file

@ -234,4 +234,12 @@
<string name="proxy_settings">Mellomtjener-innstillinger</string> <string name="proxy_settings">Mellomtjener-innstillinger</string>
<string name="proxy">Mellomtjener</string> <string name="proxy">Mellomtjener</string>
<string name="privacy">Personvern</string> <string name="privacy">Personvern</string>
<string name="shared_string_select">Velg</string>
<string name="min_logging_distance">Minste loggingsavstand</string>
<string name="min_logging_distance_descr">Filter: Minimumsdistanse til neste loggingspunkt</string>
<string name="min_logging_accuracy">Minimumsnøyaktighet for logging</string>
<string name="min_logging_accuracy_descr">Filter: Ingen logging med mindre nøyaktigheten nås</string>
<string name="min_logging_speed">Minimumshastighet ved logging</string>
<string name="min_logging_speed_descr">Filter: Ingen logging under valgt hastighet</string>
<string name="gpx_settings">GPX-innstillinger</string>
</resources> </resources>

View file

@ -0,0 +1,175 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="shared_string_sort">Ordenar</string>
<string name="shared_string_back">Tornar</string>
<string name="shared_string_select">Seleccionar</string>
<string name="min_logging_distance">Distància minimala d\'enregistrament</string>
<string name="min_logging_distance_descr">Filtre: distància minimala per enregistrar un ponch nòu</string>
<string name="min_logging_accuracy">Precision minimala d\'enregistrament</string>
<string name="min_logging_accuracy_descr">Filtre: ges d\'enregistrament se la precision minimala es pas reglada</string>
<string name="min_logging_speed">Velocitat minimala d\'enregistrament</string>
<string name="min_logging_speed_descr">Filtre: ges d\'enregistrament en dessota de la velocitat seleccionada</string>
<string name="gpx_settings">Configuracion GPX</string>
<string name="proxy_key">Clau</string>
<string name="proxy_password">Senhau</string>
<string name="proxy_username">Nom d\'usancier</string>
<string name="proxy_port">Pòrt</string>
<string name="proxy_server">Servidor</string>
<string name="shared_string_connection">Connexion</string>
<string name="shared_string_enable">Activar</string>
<string name="proxy_type">Tipe de servidor intermediari</string>
<string name="proxy_connected">Connectat</string>
<string name="proxy_disconnected">Desconnectat</string>
<string name="proxy_settings">Configuracion dau servidor intermediari</string>
<string name="proxy">Servidor intermediari (Proxy)</string>
<string name="privacy">Vida privada</string>
<string name="direction">Adreiça</string>
<string name="precision">Precision</string>
<string name="altitude">Altitud</string>
<string name="bearing">Trajectòria</string>
<string name="search_contacts">Cercar dins lei contactes</string>
<string name="search_contacts_descr">Cercar per totei lei grops de contactes.</string>
<string name="type_contact_or_group_name">Escrivètz un nom de contacte ò de grop</string>
<string name="shared_string_search">Cercar</string>
<string name="shared_string_ok">D\'acòrd</string>
<string name="timeline_available_for_free_now">La foncion Cronologia es ara un opcion gratuita.</string>
<string name="disable_monitoring">Desactiva lo seguiment</string>
<string name="location_recording_enabled">L\'enregistrament de la localizacion es activa</string>
<string name="timeline_description">Activatz lo seguiment per sauvagardar l\'istoric de localizament.</string>
<string name="app_name_short">Traçador OsmAnd</string>
<string name="shared_string_telegram">Telegrama</string>
<string name="privacy_policy_use_telegram">Telegrama (l\'aplicacion de messatjariá) es emplegat per se connectar e comunicar amb lo monde.</string>
<string name="privacy_policy_telegram_client">Lo Traçador d\'OsmAnd es un dei clients qu\'utiliza la plataforma obèrta Telegrama. Vòstrei contactes se pòdon servir de tot autre client de messatjariá.</string>
<string name="privacy_policy_agree">Cliquant sus contunhar, acceptatz lei condicions de la Politica de la Vida Privada de Telegrama e aquelei d\'OsmAnd.</string>
<string name="shared_string_accept">D\'acòrd</string>
<string name="telegram_privacy_policy">Politica de la Vida Privada de Telegrama</string>
<string name="osmand_privacy_policy">Politica de la Vida Privada d\'OsmAnd</string>
<string name="how_it_works">Coma fonciona</string>
<string name="received_gps_points">Ponchs GPX recebuts: %1$s</string>
<string name="shared_string_appearance">Aparéncia</string>
<string name="show_gps_points">Mostrar lei ponchs GPS</string>
<string name="show_gps_points_descr">Mostrar lo nombre de ponchs GPS recampats e enviats.</string>
<string name="please_update_osmand">Actualizar OsmAnd per veire lei dadas sus la mapa</string>
<string name="shared_string_update">Actualizar</string>
<string name="gps_points_in_buffer">enviat ((%1$d en la memòria intermediària)</string>
<string name="points_size">%1$d ponchs</string>
<string name="shared_string_date">Data</string>
<string name="shared_string_collected">Recebut</string>
<string name="gps_points">Ponchs GPS</string>
<string name="shared_string_sent">Enviat</string>
<string name="monitoring_is_enabled">Lo monitoratge es actiu</string>
<string name="monitoring_is_disabled">Lo monitoratge es inactiu</string>
<string name="time_on_the_move">Temps de movement</string>
<string name="average_altitude">Altitud mejana</string>
<string name="average_speed">Velocitat mejana</string>
<string name="open_in_osmand">Mostrar en OsmAnd</string>
<string name="end_date">Data de fin</string>
<string name="start_date">Data de partença</string>
<string name="send_location_as">Enviar la localizacion per</string>
<string name="send_location_as_descr">Causir l\'aspècte dei messatges segon vòstra localizacion.</string>
<string name="shared_string_map">Mapa</string>
<string name="shared_string_text">Tèxte</string>
<string name="map_and_text">Mapa e tèxte</string>
<string name="last_update_from_telegram">Darriera actualizacion de Telegrama</string>
<string name="enter_another_device_name">Causissètz un nom que siegue pas encar estat emplegat</string>
<string name="device_added_successfully">Ajustat %1$s.</string>
<string name="shared_string_add">Ajustar</string>
<string name="error_adding_new_device">Impossible d\'ajustar un aparelh novèu</string>
<string name="enter_device_name_description">Donatz un nom a l\'aparelh novèu de 200 caractèrs lo mai.</string>
<string name="device_name_is_too_long">Lo nom de l\'aparelh es tròp lòng</string>
<string name="device_name_cannot_be_empty">Lo nom de l\'aparelh se pòt pas laissar vuege</string>
<string name="device_name">Nom de l\'aparelh</string>
<string name="shared_string_hide">Amagar</string>
<string name="share_location_as_description_second_line">Podètz crear e visualizar l\'ID de l\'aparelh dins lo client de Telegrama amb lo bòt %1$s. %2$s</string>
<string name="share_location_as_description">Se volètz connectar mai d\'un aparelh a un còmpte de Telegram, vos fau utilizar un aparelh diferent per partejar vòstra posicion.</string>
<string name="last_updated_location">Darriera actualizacion de la posicion:</string>
<string name="successfully_sent_and_updated">Enviat e actualizat correctament</string>
<string name="not_possible_to_send_to_telegram_chats">"Impossible d\'enviar vèrs lo charrador de Telegrama:"</string>
<string name="waiting_for_response_from_telegram">A l\'espèra de la respònsa de Telegrama</string>
<string name="sending_location_messages">La posicion es estada enviada</string>
<string name="initializing">Aviament</string>
<string name="searching_for_gps">Posicionament…</string>
<string name="connecting_to_the_internet">A se connectar amb l\'Internet</string>
<string name="background_work_description">Cambiatz la configuracion de l\'optimizacion de la batariá per estabilizar lo partatge dau posicionament.</string>
<string name="background_work">Foncionament en degond plan</string>
<string name="battery_optimization_description">Desactivatz l\'optimizacion de la batariá per OsmAnd Traçador de maniera que s\'amòrçe pas d\'un còp quand es en segond plan.</string>
<string name="sharing_in_background">Partatge en segond plan</string>
<string name="go_to_settings">Anar a la configuracion</string>
<string name="shared_string_later">Pus tard</string>
<string name="not_sent_yet">Pas encar enviat</string>
<string name="not_found_yet">Pas encar trobat</string>
<string name="re_send_location">Tornar enviar lo posicion</string>
<string name="last_available_location">Darriera posicion disponibla</string>
<string name="sharing_status">Estat dau partatge</string>
<string name="sharing_enabled">Partatge: activat</string>
<string name="shared_string_status">Estat</string>
<string name="no_gps_connection">Ges de connexion GPS</string>
<string name="no_internet_connection">Ges de connexion a l\'Internet</string>
<string name="shared_string_disable">Desactivar</string>
<string name="shared_string_save">Sauvagardar</string>
<string name="add_device">Ajustar un aparelh</string>
<string name="share_location_as">Partejar la posicion per</string>
<string name="live_now_description">Contactes e grops que partejan la posicion amb vos.</string>
<string name="logout_from_osmand_telegram_descr">Siatz segur que volètz desconnectar lo Traçador d\'OsmAnd que podretz pus partejar la posicion nimai veire aquela deis autres \?</string>
<string name="logout_from_osmand_telegram">Volètz desconnectar lo Traçador d\'OsmAnd \?</string>
<string name="shared_string_name">Nom</string>
<string name="by_distance">Per distància</string>
<string name="by_name">Per nom</string>
<string name="by_group">Per grop</string>
<string name="shared_string_sort_by">Ordena per</string>
<string name="choose_osmand_desc">Seleccionatz la version d\'OsmAnd que localiza lei contactes sus la mapa.</string>
<string name="choose_osmand">Seleccionatz la version d\'OsmAnd d\'emplegar</string>
<string name="disable_all_sharing_desc">Desactivar lo partatge de la posicion per totei lei conversacions seleccionadas (%1$d).</string>
<string name="disable_all_sharing">Desactivar lo partatge</string>
<string name="turn_off_all">Tot desactivar</string>
<string name="shared_string_exit">Sortir</string>
<string name="time_ago">Fach</string>
<string name="last_response">Darriera respònsa</string>
<string name="shared_string_group">Grop</string>
<string name="logout_no_internet_msg">Connectatz-vos a Internet per sortir correctament de Telegrama.</string>
<string name="shared_string_close">Plegar</string>
<string name="disconnect_from_telegram_desc">Per arrestar de partejar la posicion. Obrètz Telegrama, anatz a Configuracion → Seguretat e Vida Privada → Sessions, e arrestatz lo Traçador d\'OsmAnd.</string>
<string name="disconnect_from_telegram">Coma arrestar lo Traçador d\'OsmAnd partent de Telegrama</string>
<string name="logout_help_desc">Coma arrestar lo Traçador d\'OsmAnd partent de Telegrama</string>
<string name="connected_account">Còmpte connectat</string>
<string name="shared_string_account">Còmpte</string>
<string name="in_time">dins %@</string>
<string name="osmand_connect_desc">Seleccionatz la version d\'OsmAnd que lo Traçador emplegarà per indicar la posicion.</string>
<string name="osmand_connect">Connexion OsmAnd</string>
<string name="location_history_desc">Amagar lei contactes quiets d\'un bòn moment.</string>
<string name="location_history">Cronologia de la posicion</string>
<string name="stale_location_desc">Lo darriera còp qu\'un contacte s\'es desplaçat.</string>
<string name="stale_location">Arrestat</string>
<string name="send_my_location_desc">Indicatz la variacion minimala per partejar la posicion.</string>
<string name="send_my_location">Enviar ma posicion</string>
<string name="gps_and_location">Posicion</string>
<string name="sharing_time">Temps de partatge</string>
<string name="expire_at">Expiracion:</string>
<string name="stop_sharing_all">Lo partatge es estat activat (desactivar)</string>
<string name="turn_off_location_sharing">Desactivar lo partatge de la posicion</string>
<string name="open_osmand">Obrir OsmAnd</string>
<string name="shared_string_live">En dirècte</string>
<string name="shared_string_bot">Bòt</string>
<string name="get_telegram_title">Enregistrar Telegrama</string>
<string name="get_telegram_account_first">Vos fau un còmpte Telegrama per partejar la posicion.</string>
<string name="get_telegram_description_continue">Installatz Telegrama e creatz-vos un còmpte.</string>
<string name="get_telegram_after_creating_account">Podretz puei emplegar aquesta aplicacion.</string>
<string name="shared_string_all">Tot</string>
<string name="shared_string_off">Inactivar</string>
<string name="already_registered_in_telegram">Vos fau un còmpte enregistrat de Telegrama e un numèro de telefòn</string>
<string name="do_not_have_telegram">Ai ges de còmpte per Telegrama</string>
<string name="enter_phone_number">Intratz un numèro de telefòn</string>
<string name="enter_authentication_code">Intratz un còde d\'autentificacion</string>
<string name="set_visible_time_for_all">Indicatz un orari visible en totei</string>
<string name="hours_and_minutes_format">%1$d h %2$d min</string>
<string name="minutes_format">%1$d min</string>
<string name="hours_format">%1$d h</string>
<string name="shared_string_install">Installar</string>
<string name="shared_string_share">Partejar</string>
<string name="visible_time_for_all">Orari de visibilitat en totei</string>
<string name="set_time">Indicatz l\'orari</string>
<string name="location_sharing_description">Seleccionatz lei grops de contactes amb cu volètz partejar la posicion.</string>
<string name="my_location_search_hint">Recercar: Grop ò contacte</string>
<string name="start_location_sharing">Parteja la posicion</string>
<string name="show_on_map">Monstrar sus la mapa</string>
</resources>

View file

@ -2,9 +2,7 @@
<resources> <resources>
<string name="background_work_description">Zmień ustawienia optymalizacji baterii, aby zapewnić stabilną lokalizację.</string> <string name="background_work_description">Zmień ustawienia optymalizacji baterii, aby zapewnić stabilną lokalizację.</string>
<string name="background_work">Praca w tle</string> <string name="background_work">Praca w tle</string>
<string name="battery_optimization_description">Aby stabilnie udostępniać swoją pozycję w tle, zaleca się wyłączenie optymalizacji baterii dla Tracker OsmAnd. <string name="battery_optimization_description">Wyłącz optymalizację baterii dla OsmAnd Tracker, aby nie została nagle wyłączona, gdy znajduje się w tle.</string>
\n
\nJeśli włączona jest optymalizacja, system może automatycznie wyłączyć aplikację działającą w tle (gdy ekran jest zablokowany i/lub aplikacja jest zminimalizowana). Dzieje się tak bez powiadomienia i powoduje zatrzymanie położenia geograficznego.</string>
<string name="sharing_in_background">Udostępnianie w tle</string> <string name="sharing_in_background">Udostępnianie w tle</string>
<string name="go_to_settings">Przejdź do ustawień</string> <string name="go_to_settings">Przejdź do ustawień</string>
<string name="shared_string_later">Później</string> <string name="shared_string_later">Później</string>
@ -46,7 +44,7 @@
<string name="connected_account">Połączone konta</string> <string name="connected_account">Połączone konta</string>
<string name="shared_string_account">Konto</string> <string name="shared_string_account">Konto</string>
<string name="in_time">w %1$s</string> <string name="in_time">w %1$s</string>
<string name="osmand_connect_desc">Wybierz wersję OsmAnd, którą Tracker OsmAnd będzie używał do wyświetlaniu pozycji.</string> <string name="osmand_connect_desc">Wybierz wersję OsmAnd, której używa OsmAnd Tracker do wyświetlania pozycji.</string>
<string name="osmand_connect">Połącz OsmAnd</string> <string name="osmand_connect">Połącz OsmAnd</string>
<string name="location_history_desc">Ukryj kontakty, które nie zostały przeniesione w określonym czasie.</string> <string name="location_history_desc">Ukryj kontakty, które nie zostały przeniesione w określonym czasie.</string>
<string name="location_history">Historia lokalizacji</string> <string name="location_history">Historia lokalizacji</string>
@ -236,4 +234,12 @@
<string name="proxy">Serwer proxy</string> <string name="proxy">Serwer proxy</string>
<string name="privacy">Prywatność</string> <string name="privacy">Prywatność</string>
<string name="bearing">Kierunek</string> <string name="bearing">Kierunek</string>
<string name="shared_string_select">Wybierz</string>
<string name="min_logging_distance">Minimalna odległość rejestrowania</string>
<string name="min_logging_distance_descr">Filtr: minimalna odległość do zarejestrowania nowego punktu</string>
<string name="min_logging_accuracy">Minimalna dokładność rejestrowania</string>
<string name="min_logging_accuracy_descr">Filtr: brak rejestrowania, chyba że zostanie osiągnięta dokładność</string>
<string name="min_logging_speed">Minimalna szybkość rejestrowania</string>
<string name="min_logging_speed_descr">Filtr: brak rejestrowania poniżej wybranej prędkości</string>
<string name="gpx_settings">Ustawienia GPX</string>
</resources> </resources>

View file

@ -27,7 +27,7 @@
<string name="connecting_to_the_internet">Conectando-se à Internet</string> <string name="connecting_to_the_internet">Conectando-se à Internet</string>
<string name="background_work_description">Altere as configurações de otimização da bateria para estabilizar o compartilhamento de local.</string> <string name="background_work_description">Altere as configurações de otimização da bateria para estabilizar o compartilhamento de local.</string>
<string name="background_work">"Funcionamento em segundo plano "</string> <string name="background_work">"Funcionamento em segundo plano "</string>
<string name="battery_optimization_description">Desative a otimização da bateria do OsmAnd Tracker para que não seja desligado repentinamente quando estiver em segundo plano.</string> <string name="battery_optimization_description">Desative a otimização da bateria do OsmAnd Tracker para que ele não seja desligado repentinamente quando estiver em segundo plano.</string>
<string name="sharing_in_background">Compartilhando em segundo plano</string> <string name="sharing_in_background">Compartilhando em segundo plano</string>
<string name="go_to_settings">Vá para as configurações</string> <string name="go_to_settings">Vá para as configurações</string>
<string name="shared_string_later">Mais tarde</string> <string name="shared_string_later">Mais tarde</string>
@ -45,7 +45,7 @@
<string name="add_device">Adicionar dispositivo</string> <string name="add_device">Adicionar dispositivo</string>
<string name="share_location_as">Compartilhar localização como</string> <string name="share_location_as">Compartilhar localização como</string>
<string name="live_now_description">Contatos e grupos compartilhando o local para você.</string> <string name="live_now_description">Contatos e grupos compartilhando o local para você.</string>
<string name="logout_from_osmand_telegram_descr">Tem certeza de que deseja sair do OsmAnd Tracker para que você não possa compartilhar a localização ou ver a localização de outras pessoas\?</string> <string name="logout_from_osmand_telegram_descr">Tem certeza de que deseja sair do OsmAnd Tracker para que você não possa compartilhar o local ou ver a localização de outras pessoas\?</string>
<string name="logout_from_osmand_telegram">Sair do OsmAnd Tracker\?</string> <string name="logout_from_osmand_telegram">Sair do OsmAnd Tracker\?</string>
<string name="shared_string_name">Nome</string> <string name="shared_string_name">Nome</string>
<string name="by_distance">Pela distância</string> <string name="by_distance">Pela distância</string>
@ -234,4 +234,12 @@
<string name="proxy_settings">Configurações de proxy</string> <string name="proxy_settings">Configurações de proxy</string>
<string name="proxy">Proxy</string> <string name="proxy">Proxy</string>
<string name="privacy">Privacidade</string> <string name="privacy">Privacidade</string>
<string name="shared_string_select">Selecionar</string>
<string name="min_logging_distance">Distância mínima de registro</string>
<string name="min_logging_distance_descr">Filtro: distância mínima para registrar um novo ponto</string>
<string name="min_logging_accuracy">Precisão mínima de registro</string>
<string name="min_logging_accuracy_descr">Filtro: sem registro, a menos que a precisão seja atingida</string>
<string name="min_logging_speed">Velocidade mínima de registro</string>
<string name="min_logging_speed_descr">Filtro: sem registro abaixo da velocidade selecionada</string>
<string name="gpx_settings">Configurações de GPX</string>
</resources> </resources>

View file

@ -192,7 +192,7 @@
<string name="foot">фут</string> <string name="foot">фут</string>
<string name="km">км</string> <string name="km">км</string>
<string name="m">м</string> <string name="m">м</string>
<string name="nm">nmi</string> <string name="nm">мор. мл</string>
<string name="min_mile">мин/м</string> <string name="min_mile">мин/м</string>
<string name="min_km">мин/км</string> <string name="min_km">мин/км</string>
<string name="nm_h">nmi/ч</string> <string name="nm_h">nmi/ч</string>

View file

@ -135,16 +135,16 @@
<string name="km_h">km/h</string> <string name="km_h">km/h</string>
<string name="mile_per_hour">mph</string> <string name="mile_per_hour">mph</string>
<string name="si_kmh">Chilòmetros a s\'ora</string> <string name="si_kmh">Chilòmetros a s\'ora</string>
<string name="si_mph">glios a s\'ora</string> <string name="si_mph">llias a s\'ora</string>
<string name="si_m_s">Metros a su segundu</string> <string name="si_m_s">Metros a su segundu</string>
<string name="si_min_km">Minutos a su chilòmetru</string> <string name="si_min_km">Minutos a su chilòmetru</string>
<string name="si_min_m">Minutos a su mìgliu</string> <string name="si_min_m">Minutos a su mìlliu</string>
<string name="si_nm_h">Mìglios nàuticos a s\'ora (knot)</string> <string name="si_nm_h">Mìglios nàuticos a s\'ora (knot)</string>
<string name="si_mi_feet">glios/pedes</string> <string name="si_mi_feet">llias/pedes</string>
<string name="si_mi_yard">glios/iardas</string> <string name="si_mi_yard">llias/iardas</string>
<string name="si_km_m">Chilòmetros/metros</string> <string name="si_km_m">Chilòmetros/metros</string>
<string name="si_nm">glios nàuticos</string> <string name="si_nm">llias nàuticas</string>
<string name="si_mi_meters">glios/metros</string> <string name="si_mi_meters">llias/metros</string>
<string name="shared_string_hour_short">h</string> <string name="shared_string_hour_short">h</string>
<string name="shared_string_minute_short">min</string> <string name="shared_string_minute_short">min</string>
<string name="shared_string_second_short">seg</string> <string name="shared_string_second_short">seg</string>
@ -233,4 +233,12 @@
<string name="proxy">Servidore intermediàriu (proxy)</string> <string name="proxy">Servidore intermediàriu (proxy)</string>
<string name="privacy">Privadesa</string> <string name="privacy">Privadesa</string>
<string name="bearing">Andamentu</string> <string name="bearing">Andamentu</string>
<string name="shared_string_select">Seletziona</string>
<string name="min_logging_distance">Distàntzia mìnima de registratzione</string>
<string name="min_logging_distance_descr">FIltru: distàntzia mìnima pro registrare unu puntu nou</string>
<string name="min_logging_accuracy">Pretzisione mìnima de registratzione</string>
<string name="min_logging_accuracy_descr">Filtru: peruna registratzione si sa pretzisione no est istada retzida</string>
<string name="min_logging_speed">Lestresa mìnima de registratzione</string>
<string name="min_logging_speed_descr">Filtru: peruna registratzione in suta de sa lestresa isseberada</string>
<string name="gpx_settings">Impostatziones GPX</string>
</resources> </resources>

View file

@ -64,13 +64,13 @@
<string name="shared_string_group">群組</string> <string name="shared_string_group">群組</string>
<string name="logout_no_internet_msg">連接到網路以正確登出 Telegram。</string> <string name="logout_no_internet_msg">連接到網路以正確登出 Telegram。</string>
<string name="shared_string_close">關閉</string> <string name="shared_string_close">關閉</string>
<string name="disconnect_from_telegram_desc">撤銷位置共用訪問。打開 Telegram進入設定→隱私和安全→會話並終 OsmAnd Tracker 會話</string> <string name="disconnect_from_telegram_desc">要撤銷位置分享的存取權。開啟 Telegram然後到設定→安全與隱私→工作階段然後將 OsmAnd Tracker 工作階段結束掉</string>
<string name="disconnect_from_telegram">如何關閉 Telegram 中的 OsmAnd 追蹤器</string> <string name="disconnect_from_telegram">如何關閉 Telegram 中的 OsmAnd 追蹤器</string>
<string name="logout_help_desc">如何關閉 Telegram 中的 OsmAnd 追蹤器</string> <string name="logout_help_desc">如何關閉 Telegram 中的 OsmAnd 追蹤器</string>
<string name="connected_account">已連接帳戶</string> <string name="connected_account">已連接帳戶</string>
<string name="shared_string_account">帳戶</string> <string name="shared_string_account">帳戶</string>
<string name="in_time">在 %1$s</string> <string name="in_time">在 %1$s</string>
<string name="osmand_connect_desc">選擇 OsmAnd 版本 OsmAnd Tracker 用於顯示位置。</string> <string name="osmand_connect_desc">選擇 OsmAnd 版本 OsmAnd Tracker 用於顯示位置。</string>
<string name="osmand_connect">OsMand 連接</string> <string name="osmand_connect">OsMand 連接</string>
<string name="location_history_desc">隱藏在給定時間內未移動的連絡人。</string> <string name="location_history_desc">隱藏在給定時間內未移動的連絡人。</string>
<string name="location_history">位置歷史記錄</string> <string name="location_history">位置歷史記錄</string>
@ -111,7 +111,7 @@
<string name="my_location_search_hint">搜尋:群組或連絡人</string> <string name="my_location_search_hint">搜尋:群組或連絡人</string>
<string name="start_location_sharing">共用位置</string> <string name="start_location_sharing">共用位置</string>
<string name="show_on_map">在地圖上顯示</string> <string name="show_on_map">在地圖上顯示</string>
<string name="app_name">OsmAnd Online GPS Tracker</string> <string name="app_name">OsmAnd 線上 GPS 追蹤程式</string>
<string name="phone_number_title">電話號碼</string> <string name="phone_number_title">電話號碼</string>
<string name="phone_number_descr">國際格式的電話號碼</string> <string name="phone_number_descr">國際格式的電話號碼</string>
<string name="shared_string_password">密碼</string> <string name="shared_string_password">密碼</string>
@ -134,11 +134,11 @@
<string name="gps_not_available">請在系統設置中打開“位置”</string> <string name="gps_not_available">請在系統設置中打開“位置”</string>
<string name="location_service_no_gps_available">選擇一個位置提供商來共享您的位置。</string> <string name="location_service_no_gps_available">選擇一個位置提供商來共享您的位置。</string>
<string name="osmand_service">背景模式</string> <string name="osmand_service">背景模式</string>
<string name="osmand_service_descr">當螢幕關閉後,讓 OsmAnd 在背景運行。</string> <string name="osmand_service_descr">當螢幕關閉後,讓 OsmAnd Tracker 在背景執行。</string>
<string name="shared_string_distance">距離</string> <string name="shared_string_distance">距離</string>
<string name="share_location">共用位置</string> <string name="share_location">共用位置</string>
<string name="sharing_location">共用位置</string> <string name="sharing_location">共用位置</string>
<string name="process_service">OsmAnd Tracker 伺服器</string> <string name="process_service">OsmAnd Tracker 服務</string>
<string name="osmand_logo">OsmAnd 圖示</string> <string name="osmand_logo">OsmAnd 圖示</string>
<string name="install_osmand_dialog_message">您需要先安裝免費或付費版本的 OsmAnd</string> <string name="install_osmand_dialog_message">您需要先安裝免費或付費版本的 OsmAnd</string>
<string name="install_osmand">安裝 OsMand</string> <string name="install_osmand">安裝 OsMand</string>
@ -235,4 +235,12 @@
<string name="proxy_settings">代理伺服器設定</string> <string name="proxy_settings">代理伺服器設定</string>
<string name="proxy">代理伺服器</string> <string name="proxy">代理伺服器</string>
<string name="privacy">隱私</string> <string name="privacy">隱私</string>
<string name="shared_string_select">選取</string>
<string name="min_logging_distance">最小記錄距離</string>
<string name="min_logging_distance_descr">過濾:記錄新點的最小距離</string>
<string name="min_logging_accuracy">最低記錄精度</string>
<string name="min_logging_accuracy_descr">過濾:除非達到一定的精度否則不記錄</string>
<string name="min_logging_speed">最小記錄速度</string>
<string name="min_logging_speed_descr">過濾:在選定的速度以下不記錄</string>
<string name="gpx_settings">GPX 設定</string>
</resources> </resources>

View file

@ -19,7 +19,7 @@ public class ContextMenuButtonsParams implements Parcelable {
private List<String> pointsIds = new ArrayList<>(); private List<String> pointsIds = new ArrayList<>();
public ContextMenuButtonsParams(AContextMenuButton leftButton, AContextMenuButton rightButton, String id, String appPackage, String layerId, boolean followOpenedPoint, long callbackId, List<String> pointsIds) { public ContextMenuButtonsParams(AContextMenuButton leftButton, AContextMenuButton rightButton, String id, String appPackage, String layerId, long callbackId, List<String> pointsIds) {
this.leftButton = leftButton; this.leftButton = leftButton;
this.rightButton = rightButton; this.rightButton = rightButton;
this.id = id; this.id = id;

View file

@ -1173,7 +1173,7 @@ class OsmandAidlHelper(private val app: TelegramApplication) {
if (mIOsmAndAidlInterface != null) { if (mIOsmAndAidlInterface != null) {
try { try {
val leftButton = AContextMenuButton(buttonId, leftTextCaption, rightTextCaption, leftIconName, rightIconName, needColorizeIcon, enabled) val leftButton = AContextMenuButton(buttonId, leftTextCaption, rightTextCaption, leftIconName, rightIconName, needColorizeIcon, enabled)
val params = ContextMenuButtonsParams(leftButton, null, paramsId, appPackage, MAP_LAYER_ID, true, osmandContextMenuCallbackId, mutableListOf()) val params = ContextMenuButtonsParams(leftButton, null, paramsId, appPackage, MAP_LAYER_ID, osmandContextMenuCallbackId, mutableListOf())
osmandContextMenuCallbackId = mIOsmAndAidlInterface!!.addContextMenuButtons(params, mIOsmAndAidlCallback) osmandContextMenuCallbackId = mIOsmAndAidlInterface!!.addContextMenuButtons(params, mIOsmAndAidlCallback)
return osmandContextMenuCallbackId >= 0 return osmandContextMenuCallbackId >= 0
} catch (e: RemoteException) { } catch (e: RemoteException) {

View file

@ -866,6 +866,11 @@
</intent-filter> </intent-filter>
</service> </service>
<service
android:name="net.osmand.plus.download.DownloadService"
android:label="@string/process_downloading_service"
android:stopWithTask="false" />
<receiver android:name="net.osmand.plus.OnNavigationServiceAlarmReceiver" /> <receiver android:name="net.osmand.plus.OnNavigationServiceAlarmReceiver" />
<receiver android:name="net.osmand.plus.notifications.NotificationDismissReceiver" /> <receiver android:name="net.osmand.plus.notifications.NotificationDismissReceiver" />

View file

@ -46,10 +46,10 @@ android {
defaultConfig { defaultConfig {
minSdkVersion System.getenv("MIN_SDK_VERSION") ? System.getenv("MIN_SDK_VERSION").toInteger() : 14 minSdkVersion System.getenv("MIN_SDK_VERSION") ? System.getenv("MIN_SDK_VERSION").toInteger() : 14
targetSdkVersion 26 targetSdkVersion 26
versionCode 330 versionCode 340
versionCode System.getenv("APK_NUMBER_VERSION") ? System.getenv("APK_NUMBER_VERSION").toInteger() : versionCode versionCode System.getenv("APK_NUMBER_VERSION") ? System.getenv("APK_NUMBER_VERSION").toInteger() : versionCode
multiDexEnabled true multiDexEnabled true
versionName "3.3.0" versionName "3.4.0"
versionName System.getenv("APK_VERSION")? System.getenv("APK_VERSION").toString(): versionName versionName System.getenv("APK_VERSION")? System.getenv("APK_VERSION").toString(): versionName
versionName System.getenv("APK_VERSION_SUFFIX")? versionName + System.getenv("APK_VERSION_SUFFIX").toString(): versionName versionName System.getenv("APK_VERSION_SUFFIX")? versionName + System.getenv("APK_VERSION_SUFFIX").toString(): versionName
} }
@ -236,8 +236,8 @@ task validateTranslate {
if (line.contains("\$ s") || line.contains("\$ d") || line.contains("\$ f") || if (line.contains("\$ s") || line.contains("\$ d") || line.contains("\$ f") ||
line.contains(" \$s") || line.contains(" \$d") || line.contains(" \$f") || line.contains(" \$s") || line.contains(" \$d") || line.contains(" \$f") ||
line.contains("1\$ ") || line.contains("2\$ ") || line.contains("3\$ ") || line.contains("1\$ ") || line.contains("2\$ ") || line.contains("3\$ ") ||
(line.contains("% \$") || line.contains("% 1") || (line.contains("% \$") || line.contains("% 1") || line.contains("% 2") ||
line.contains("% 2") || line.contains("% 3"))) { line.contains("% 3") || line.contains("% s"))) {
throw new GradleException("Incorrect translation " + it.getAbsolutePath() + " " + line); throw new GradleException("Incorrect translation " + it.getAbsolutePath() + " " + line);
} }
} }

View file

@ -1,4 +1,4 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/active_buttons_and_links_text_disabled_dark" android:state_enabled="false" /> <item android:color="@color/active_buttons_and_links_text_disabled_dark" android:state_enabled="false" />
<item android:color="@color/active_buttons_and_links_dark" /> <item android:color="@color/active_color_primary_dark" />
</selector> </selector>

View file

@ -1,4 +1,4 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/active_buttons_and_links_text_disabled_light" android:state_enabled="false" /> <item android:color="@color/active_buttons_and_links_text_disabled_light" android:state_enabled="false" />
<item android:color="@color/active_buttons_and_links_light" /> <item android:color="@color/active_color_primary_light" />
</selector> </selector>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/color_dialog_buttons_dark" android:state_checked="true"/> <item android:color="@color/active_color_primary_dark" android:state_checked="true"/>
<item android:color="@color/ctx_menu_info_text_dark" android:state_checked="false"/> <item android:color="@color/text_color_primary_dark" android:state_checked="false"/>
</selector> </selector>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/dashboard_blue" android:state_checked="true"/> <item android:color="@color/active_color_primary_light" android:state_checked="true"/>
<item android:color="@color/icon_color" android:state_checked="false"/> <item android:color="@color/icon_color_default_light" android:state_checked="false"/>
</selector> </selector>

View file

@ -1,5 +1,5 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/active_buttons_and_links_text_dark" android:state_pressed="true" /> <item android:color="@color/active_buttons_and_links_text_dark" android:state_pressed="true" />
<item android:color="@color/active_buttons_and_links_text_disabled_dark" android:state_enabled="false" /> <item android:color="@color/active_buttons_and_links_text_disabled_dark" android:state_enabled="false" />
<item android:color="@color/active_buttons_and_links_dark" /> <item android:color="@color/active_color_primary_dark" />
</selector> </selector>

View file

@ -1,5 +1,5 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/active_buttons_and_links_text_light" android:state_pressed="true" /> <item android:color="@color/active_buttons_and_links_text_light" android:state_pressed="true" />
<item android:color="@color/active_buttons_and_links_text_disabled_light" android:state_enabled="false" /> <item android:color="@color/active_buttons_and_links_text_disabled_light" android:state_enabled="false" />
<item android:color="@color/active_buttons_and_links_light" /> <item android:color="@color/active_color_primary_light" />
</selector> </selector>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 412 B

After

Width:  |  Height:  |  Size: 424 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 551 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 445 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 B

After

Width:  |  Height:  |  Size: 370 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 504 B

After

Width:  |  Height:  |  Size: 522 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 449 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 402 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 503 B

After

Width:  |  Height:  |  Size: 503 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 568 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 484 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 465 B

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 664 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 498 B

After

Width:  |  Height:  |  Size: 488 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 521 B

After

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 558 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 401 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 412 B

After

Width:  |  Height:  |  Size: 425 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 553 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 443 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 446 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 402 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 503 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 572 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 484 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 523 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 564 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 400 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 B

After

Width:  |  Height:  |  Size: 489 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 713 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 463 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 590 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 568 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 469 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 637 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 705 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 572 B

Some files were not shown because too many files have changed in this diff Show more