Merge branch 'master' into exit_and_shield_widget
|
@ -73,6 +73,7 @@ import net.osmand.aidlapi.customization.SetWidgetsParams;
|
|||
import net.osmand.aidlapi.customization.OsmandSettingsParams;
|
||||
import net.osmand.aidlapi.customization.OsmandSettingsInfoParams;
|
||||
import net.osmand.aidlapi.customization.CustomizationInfoParams;
|
||||
import net.osmand.aidlapi.customization.ProfileSettingsParams;
|
||||
|
||||
import net.osmand.aidlapi.gpx.AGpxFile;
|
||||
import net.osmand.aidlapi.gpx.AGpxFileDetails;
|
||||
|
@ -831,4 +832,6 @@ interface IOsmAndAidlInterface {
|
|||
* Empty class of params
|
||||
*/
|
||||
boolean removeAllActiveMapMarkers(in RemoveMapMarkersParams params);
|
||||
|
||||
boolean importProfile(in ProfileSettingsParams params);
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
package net.osmand.aidlapi.customization;
|
||||
|
||||
parcelable ProfileSettingsParams;
|
|
@ -0,0 +1,62 @@
|
|||
package net.osmand.aidlapi.customization;
|
||||
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Parcel;
|
||||
|
||||
import net.osmand.aidlapi.AidlParams;
|
||||
|
||||
public class ProfileSettingsParams extends AidlParams {
|
||||
|
||||
private Uri profileSettingsUri;
|
||||
private String latestChanges;
|
||||
private int version;
|
||||
|
||||
public ProfileSettingsParams(Uri profileSettingsUri, String latestChanges, int version) {
|
||||
this.profileSettingsUri = profileSettingsUri;
|
||||
this.latestChanges = latestChanges;
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public ProfileSettingsParams(Parcel in) {
|
||||
readFromParcel(in);
|
||||
}
|
||||
|
||||
public static final Creator<ProfileSettingsParams> CREATOR = new Creator<ProfileSettingsParams>() {
|
||||
@Override
|
||||
public ProfileSettingsParams createFromParcel(Parcel in) {
|
||||
return new ProfileSettingsParams(in);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProfileSettingsParams[] newArray(int size) {
|
||||
return new ProfileSettingsParams[size];
|
||||
}
|
||||
};
|
||||
|
||||
public int getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public String getLatestChanges() {
|
||||
return latestChanges;
|
||||
}
|
||||
|
||||
public Uri getProfileSettingsUri() {
|
||||
return profileSettingsUri;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToBundle(Bundle bundle) {
|
||||
bundle.putInt("version", version);
|
||||
bundle.putString("latestChanges", latestChanges);
|
||||
bundle.putParcelable("profileSettingsUri", profileSettingsUri);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void readFromBundle(Bundle bundle) {
|
||||
version = bundle.getInt("version");
|
||||
latestChanges = bundle.getString("latestChanges");
|
||||
profileSettingsUri = bundle.getParcelable("profileSettingsUri");
|
||||
}
|
||||
}
|
|
@ -187,6 +187,7 @@ public class GPXUtilities {
|
|||
public double ele = Double.NaN;
|
||||
public double speed = 0;
|
||||
public double hdop = Double.NaN;
|
||||
public float heading = Float.NaN;
|
||||
public boolean deleted = false;
|
||||
public int colourARGB = 0; // point colour (used for altitude/speed colouring)
|
||||
public double distance = 0.0; // cumulative distance, if in a track
|
||||
|
@ -208,6 +209,7 @@ public class GPXUtilities {
|
|||
this.ele = wptPt.ele;
|
||||
this.speed = wptPt.speed;
|
||||
this.hdop = wptPt.hdop;
|
||||
this.heading = wptPt.heading;
|
||||
this.deleted = wptPt.deleted;
|
||||
this.colourARGB = wptPt.colourARGB;
|
||||
this.distance = wptPt.distance;
|
||||
|
@ -233,14 +235,22 @@ public class GPXUtilities {
|
|||
return lon;
|
||||
}
|
||||
|
||||
public float getHeading() {
|
||||
return heading;
|
||||
}
|
||||
|
||||
public WptPt(double lat, double lon, long time, double ele, double speed, double hdop) {
|
||||
this(lat, lon, time, ele, speed, hdop, Float.NaN);
|
||||
}
|
||||
|
||||
public WptPt(double lat, double lon, long time, double ele, double speed, double hdop, float heading) {
|
||||
this.lat = lat;
|
||||
this.lon = lon;
|
||||
this.time = time;
|
||||
this.ele = ele;
|
||||
this.speed = speed;
|
||||
this.hdop = hdop;
|
||||
this.heading = heading;
|
||||
}
|
||||
|
||||
public boolean isVisible() {
|
||||
|
@ -1606,6 +1616,9 @@ public class GPXUtilities {
|
|||
if (p.speed > 0) {
|
||||
p.getExtensionsToWrite().put("speed", decimalFormat.format(p.speed));
|
||||
}
|
||||
if (!Float.isNaN(p.heading)) {
|
||||
p.getExtensionsToWrite().put("heading", String.valueOf(Math.round(p.heading)));
|
||||
}
|
||||
writeExtensions(serializer, p);
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@ import net.osmand.ResultMatcher;
|
|||
import net.osmand.CollatorStringMatcher.StringMatcherMode;
|
||||
import net.osmand.binary.BinaryMapIndexReader.SearchRequest;
|
||||
import net.osmand.data.Building;
|
||||
import net.osmand.data.Building.BuildingInterpolation;
|
||||
import net.osmand.data.City;
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.data.MapObject;
|
||||
|
@ -22,14 +21,12 @@ import org.apache.commons.logging.Log;
|
|||
import java.io.IOException;
|
||||
import java.text.Collator;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import gnu.trove.set.hash.TLongHashSet;
|
||||
|
||||
|
|
|
@ -629,6 +629,7 @@ public class OsmandRegions {
|
|||
return;
|
||||
}
|
||||
WorldRegion world = new WorldRegion(WorldRegion.WORLD);
|
||||
initWorldRegion(world, WorldRegion.ANTARCTICA_REGION_ID);
|
||||
initWorldRegion(world, WorldRegion.AFRICA_REGION_ID);
|
||||
initWorldRegion(world, WorldRegion.ASIA_REGION_ID);
|
||||
initWorldRegion(world, WorldRegion.CENTRAL_AMERICA_REGION_ID);
|
||||
|
|
|
@ -10,6 +10,7 @@ import java.util.List;
|
|||
public class WorldRegion implements Serializable {
|
||||
|
||||
public static final String WORLD_BASEMAP = "world_basemap";
|
||||
public static final String ANTARCTICA_REGION_ID = "antarctica";
|
||||
public static final String AFRICA_REGION_ID = "africa";
|
||||
public static final String ASIA_REGION_ID = "asia";
|
||||
public static final String AUSTRALIA_AND_OCEANIA_REGION_ID = "australia-oceania";
|
||||
|
|
|
@ -369,9 +369,10 @@ public class BinaryRoutePlanner {
|
|||
|
||||
public void printDebugMemoryInformation(RoutingContext ctx, PriorityQueue<RouteSegment> graphDirectSegments, PriorityQueue<RouteSegment> graphReverseSegments,
|
||||
TLongObjectHashMap<RouteSegment> visitedDirectSegments,TLongObjectHashMap<RouteSegment> visitedOppositeSegments) {
|
||||
printInfo("Time to calculate : " + (System.nanoTime() - ctx.timeToCalculate) / 1e6 +
|
||||
", time to load : " + ctx.timeToLoad / 1e6 + ", time to load headers : " + ctx.timeToLoadHeaders / 1e6 +
|
||||
", time to calc dev : " + ctx.timeNanoToCalcDeviation / 1e6);
|
||||
printInfo(String.format("Time. Total: %.2f, to load: %.2f, to load headers: %.2f, to calc dev: %.2f, to calc rules: %.2f ",
|
||||
(System.nanoTime() - ctx.timeToCalculate) / 1e6, ctx.timeToLoad / 1e6,
|
||||
ctx.timeToLoadHeaders / 1e6, ctx.timeNanoToCalcDeviation / 1e6, GeneralRouter.TIMER / 1e6));
|
||||
GeneralRouter.TIMER = 0;
|
||||
int maxLoadedTiles = Math.max(ctx.maxLoadedTiles, ctx.getCurrentlyLoadedTiles());
|
||||
printInfo("Current loaded tiles : " + ctx.getCurrentlyLoadedTiles() + ", maximum loaded tiles " + maxLoadedTiles);
|
||||
printInfo("Loaded tiles " + ctx.loadedTiles + " (distinct " + ctx.distinctLoadedTiles + "), unloaded tiles " + ctx.unloadedTiles +
|
||||
|
|
|
@ -9,6 +9,7 @@ import net.osmand.util.MapUtils;
|
|||
|
||||
import java.io.PrintStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.BitSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
|
@ -39,6 +40,9 @@ public class GeneralRouter implements VehicleRouter {
|
|||
public static final String VEHICLE_HEIGHT = "height";
|
||||
public static final String VEHICLE_WEIGHT = "weight";
|
||||
public static final String VEHICLE_WIDTH = "width";
|
||||
|
||||
private static boolean USE_CACHE = true;
|
||||
public static long TIMER = 0;
|
||||
|
||||
private final RouteAttributeContext[] objectAttributes;
|
||||
public final Map<String, String> attributes;
|
||||
|
@ -70,6 +74,7 @@ public class GeneralRouter implements VehicleRouter {
|
|||
private TLongHashSet impassableRoads;
|
||||
private GeneralRouterProfile profile;
|
||||
|
||||
Map<RouteRegion, Map<IntHolder, Float>>[] evalCache;
|
||||
|
||||
public enum RouteDataObjectAttribute {
|
||||
ROAD_SPEED("speed"),
|
||||
|
@ -111,41 +116,6 @@ public class GeneralRouter implements VehicleRouter {
|
|||
SYMBOLIC
|
||||
}
|
||||
|
||||
public GeneralRouter(GeneralRouterProfile profile, Map<String, String> attributes) {
|
||||
this.profile = profile;
|
||||
this.attributes = new LinkedHashMap<String, String>();
|
||||
Iterator<Entry<String, String>> e = attributes.entrySet().iterator();
|
||||
while(e.hasNext()){
|
||||
Entry<String, String> next = e.next();
|
||||
addAttribute(next.getKey(), next.getValue());
|
||||
}
|
||||
objectAttributes = new RouteAttributeContext[RouteDataObjectAttribute.values().length];
|
||||
for (int i = 0; i < objectAttributes.length; i++) {
|
||||
objectAttributes[i] = new RouteAttributeContext();
|
||||
}
|
||||
universalRules = new LinkedHashMap<String, Integer>();
|
||||
universalRulesById = new ArrayList<String>();
|
||||
tagRuleMask = new LinkedHashMap<String, BitSet>();
|
||||
ruleToValue = new ArrayList<Object>();
|
||||
parameters = new LinkedHashMap<String, GeneralRouter.RoutingParameter>();
|
||||
}
|
||||
|
||||
public String getFilename() {
|
||||
return filename;
|
||||
}
|
||||
|
||||
public void setFilename(String filename) {
|
||||
this.filename = filename;
|
||||
}
|
||||
|
||||
public String getProfileName() {
|
||||
return profileName;
|
||||
}
|
||||
|
||||
public void setProfileName(String profileName) {
|
||||
this.profileName = profileName;
|
||||
}
|
||||
|
||||
public GeneralRouter(GeneralRouter parent, Map<String, String> params) {
|
||||
this.profile = parent.profile;
|
||||
this.attributes = new LinkedHashMap<String, String>();
|
||||
|
@ -180,8 +150,58 @@ public class GeneralRouter implements VehicleRouter {
|
|||
if (params.containsKey(MAX_SPEED)) {
|
||||
maxSpeed = parseSilentFloat(params.get(MAX_SPEED), maxSpeed);
|
||||
}
|
||||
initCaches();
|
||||
|
||||
}
|
||||
|
||||
public GeneralRouter(GeneralRouterProfile profile, Map<String, String> attributes) {
|
||||
this.profile = profile;
|
||||
this.attributes = new LinkedHashMap<String, String>();
|
||||
Iterator<Entry<String, String>> e = attributes.entrySet().iterator();
|
||||
while(e.hasNext()){
|
||||
Entry<String, String> next = e.next();
|
||||
addAttribute(next.getKey(), next.getValue());
|
||||
}
|
||||
objectAttributes = new RouteAttributeContext[RouteDataObjectAttribute.values().length];
|
||||
for (int i = 0; i < objectAttributes.length; i++) {
|
||||
objectAttributes[i] = new RouteAttributeContext();
|
||||
}
|
||||
universalRules = new LinkedHashMap<String, Integer>();
|
||||
universalRulesById = new ArrayList<String>();
|
||||
tagRuleMask = new LinkedHashMap<String, BitSet>();
|
||||
ruleToValue = new ArrayList<Object>();
|
||||
parameters = new LinkedHashMap<String, GeneralRouter.RoutingParameter>();
|
||||
|
||||
initCaches();
|
||||
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private void initCaches() {
|
||||
int l = RouteDataObjectAttribute.values().length;
|
||||
evalCache = new Map[l];
|
||||
for (int i = 0; i < l; i++) {
|
||||
evalCache[i] = new HashMap<>();
|
||||
}
|
||||
}
|
||||
|
||||
public String getFilename() {
|
||||
return filename;
|
||||
}
|
||||
|
||||
public void setFilename(String filename) {
|
||||
this.filename = filename;
|
||||
}
|
||||
|
||||
public String getProfileName() {
|
||||
return profileName;
|
||||
}
|
||||
|
||||
public void setProfileName(String profileName) {
|
||||
this.profileName = profileName;
|
||||
}
|
||||
|
||||
|
||||
public GeneralRouterProfile getProfile() {
|
||||
return profile;
|
||||
}
|
||||
|
@ -243,7 +263,11 @@ public class GeneralRouter implements VehicleRouter {
|
|||
|
||||
@Override
|
||||
public boolean acceptLine(RouteDataObject way) {
|
||||
int res = getObjContext(RouteDataObjectAttribute.ACCESS).evaluateInt(way, 0);
|
||||
Float res = getCache(RouteDataObjectAttribute.ACCESS, way);
|
||||
if(res == null) {
|
||||
res = (float) getObjContext(RouteDataObjectAttribute.ACCESS).evaluateInt(way, 0);
|
||||
putCache(RouteDataObjectAttribute.ACCESS, way, res);
|
||||
}
|
||||
if(impassableRoads != null && impassableRoads.contains(way.id)) {
|
||||
return false;
|
||||
}
|
||||
|
@ -333,7 +357,12 @@ public class GeneralRouter implements VehicleRouter {
|
|||
public float defineObstacle(RouteDataObject road, int point) {
|
||||
int[] pointTypes = road.getPointTypes(point);
|
||||
if(pointTypes != null) {
|
||||
return getObjContext(RouteDataObjectAttribute.OBSTACLES).evaluateFloat(road.region, pointTypes, 0);
|
||||
Float obst = getCache(RouteDataObjectAttribute.OBSTACLES, road.region, pointTypes);
|
||||
if(obst == null) {
|
||||
obst = getObjContext(RouteDataObjectAttribute.OBSTACLES).evaluateFloat(road.region, pointTypes, 0);
|
||||
putCache(RouteDataObjectAttribute.OBSTACLES, road.region, pointTypes, obst);
|
||||
}
|
||||
return obst;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -342,7 +371,12 @@ public class GeneralRouter implements VehicleRouter {
|
|||
public float defineRoutingObstacle(RouteDataObject road, int point) {
|
||||
int[] pointTypes = road.getPointTypes(point);
|
||||
if(pointTypes != null){
|
||||
return getObjContext(RouteDataObjectAttribute.ROUTING_OBSTACLES).evaluateFloat(road.region, pointTypes, 0);
|
||||
Float obst = getCache(RouteDataObjectAttribute.ROUTING_OBSTACLES, road.region, pointTypes);
|
||||
if(obst == null) {
|
||||
obst = getObjContext(RouteDataObjectAttribute.ROUTING_OBSTACLES).evaluateFloat(road.region, pointTypes, 0);
|
||||
putCache(RouteDataObjectAttribute.ROUTING_OBSTACLES, road.region, pointTypes, obst);
|
||||
}
|
||||
return obst;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -380,7 +414,12 @@ public class GeneralRouter implements VehicleRouter {
|
|||
|
||||
@Override
|
||||
public int isOneWay(RouteDataObject road) {
|
||||
return getObjContext(RouteDataObjectAttribute.ONEWAY).evaluateInt(road, 0);
|
||||
Float res = getCache(RouteDataObjectAttribute.ONEWAY, road);
|
||||
if(res == null) {
|
||||
res = (float) getObjContext(RouteDataObjectAttribute.ONEWAY).evaluateInt(road, 0);
|
||||
putCache(RouteDataObjectAttribute.ONEWAY, road, res);
|
||||
}
|
||||
return res.intValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -390,25 +429,96 @@ public class GeneralRouter implements VehicleRouter {
|
|||
|
||||
@Override
|
||||
public float getPenaltyTransition(RouteDataObject road) {
|
||||
return getObjContext(RouteDataObjectAttribute.PENALTY_TRANSITION).evaluateInt(road, 0);
|
||||
Float vl = getCache(RouteDataObjectAttribute.PENALTY_TRANSITION, road);
|
||||
if (vl == null) {
|
||||
vl = (float) getObjContext(RouteDataObjectAttribute.PENALTY_TRANSITION).evaluateInt(road, 0);
|
||||
putCache(RouteDataObjectAttribute.PENALTY_TRANSITION, road, vl);
|
||||
}
|
||||
return vl;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float defineRoutingSpeed(RouteDataObject road) {
|
||||
float spd = getObjContext(RouteDataObjectAttribute.ROAD_SPEED).evaluateFloat(road, defaultSpeed);
|
||||
return Math.max(Math.min(spd, maxSpeed), minSpeed);
|
||||
Float definedSpd = getCache(RouteDataObjectAttribute.ROAD_SPEED, road);
|
||||
if (definedSpd == null) {
|
||||
float spd = getObjContext(RouteDataObjectAttribute.ROAD_SPEED).evaluateFloat(road, defaultSpeed);
|
||||
definedSpd = Math.max(Math.min(spd, maxSpeed), minSpeed);
|
||||
putCache(RouteDataObjectAttribute.ROAD_SPEED, road, definedSpd);
|
||||
}
|
||||
return definedSpd;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public float defineVehicleSpeed(RouteDataObject road) {
|
||||
float spd = getObjContext(RouteDataObjectAttribute.ROAD_SPEED).evaluateFloat(road, defaultSpeed);
|
||||
return Math.max(Math.min(spd, maxSpeed), minSpeed);
|
||||
Float sp = getCache(RouteDataObjectAttribute.ROAD_SPEED, road);
|
||||
if (sp == null) {
|
||||
float spd = getObjContext(RouteDataObjectAttribute.ROAD_SPEED).evaluateFloat(road, defaultSpeed);
|
||||
sp = Math.max(Math.min(spd, maxSpeed), minSpeed);
|
||||
putCache(RouteDataObjectAttribute.ROAD_SPEED, road, sp);
|
||||
}
|
||||
return sp;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public float defineSpeedPriority(RouteDataObject road) {
|
||||
return getObjContext(RouteDataObjectAttribute.ROAD_PRIORITIES).evaluateFloat(road, 1f);
|
||||
Float sp = getCache(RouteDataObjectAttribute.ROAD_PRIORITIES, road);
|
||||
if(sp == null) {
|
||||
sp = getObjContext(RouteDataObjectAttribute.ROAD_PRIORITIES).evaluateFloat(road, 1f);
|
||||
putCache(RouteDataObjectAttribute.ROAD_PRIORITIES, road, sp);
|
||||
}
|
||||
return sp;
|
||||
}
|
||||
|
||||
private void putCache(RouteDataObjectAttribute attr, RouteDataObject road, Float val) {
|
||||
putCache(attr, road.region, road.types, val);
|
||||
}
|
||||
|
||||
private void putCache(RouteDataObjectAttribute attr, RouteRegion reg, int[] types, Float val) {
|
||||
Map<RouteRegion, Map<IntHolder, Float>> ch = evalCache[attr.ordinal()];
|
||||
if (USE_CACHE) {
|
||||
Map<IntHolder, Float> rM = ch.get(reg);
|
||||
if (rM == null) {
|
||||
rM = new HashMap<IntHolder, Float>();
|
||||
ch.put(reg, rM);
|
||||
}
|
||||
rM.put(new IntHolder(types), val);
|
||||
}
|
||||
TIMER += System.nanoTime();
|
||||
}
|
||||
|
||||
class IntHolder {
|
||||
private final int[] array;
|
||||
IntHolder(int[] ts) { array = ts; }
|
||||
@Override public int hashCode() { return Arrays.hashCode(array); }
|
||||
@Override public boolean equals(Object other) {
|
||||
if (array == other) { return true; }
|
||||
if (! (other instanceof IntHolder) ) {
|
||||
return false;
|
||||
}
|
||||
//noinspection unchecked
|
||||
return Arrays.equals(array, ((IntHolder) other).array);
|
||||
}
|
||||
}
|
||||
|
||||
private Float getCache(RouteDataObjectAttribute attr, RouteDataObject road) {
|
||||
return getCache(attr, road.region, road.types);
|
||||
}
|
||||
|
||||
private Float getCache(RouteDataObjectAttribute attr, RouteRegion reg, int[] types) {
|
||||
Map<RouteRegion, Map<IntHolder, Float>> ch = evalCache[attr.ordinal()];
|
||||
TIMER -= System.nanoTime();
|
||||
if (USE_CACHE) {
|
||||
Map<IntHolder, Float> rM = ch.get(reg);
|
||||
if (rM == null) {
|
||||
return null;
|
||||
}
|
||||
Float vl = rM.get(new IntHolder(types));
|
||||
if(vl != null) {
|
||||
TIMER += System.nanoTime();
|
||||
return vl;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -669,7 +779,7 @@ public class GeneralRouter implements VehicleRouter {
|
|||
}
|
||||
|
||||
public float evaluateFloat(RouteDataObject ro, float defValue) {
|
||||
Object o = evaluate(ro);
|
||||
Object o = evaluate(ro);
|
||||
if(!(o instanceof Number)) {
|
||||
return defValue;
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import java.util.Collections;
|
|||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import net.osmand.Location;
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.data.MapObject;
|
||||
import net.osmand.data.QuadPoint;
|
||||
|
@ -410,6 +411,16 @@ public class MapUtils {
|
|||
}
|
||||
return rotate;
|
||||
}
|
||||
|
||||
public static float normalizeDegrees360(float degrees) {
|
||||
while (degrees < 0.0f) {
|
||||
degrees += 360.0f;
|
||||
}
|
||||
while (degrees >= 360.0f) {
|
||||
degrees -= 360.0f;
|
||||
}
|
||||
return degrees;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param diff align difference between 2 angles ]-PI, PI]
|
||||
|
@ -616,6 +627,12 @@ public class MapUtils {
|
|||
r.bottom = Math.min(r.bottom, latitude);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean areLatLonEqual(Location l1, Location l2) {
|
||||
return l1 == null && l2 == null
|
||||
|| (l1 != null && l2 != null && Math.abs(l1.getLatitude() - l2.getLatitude()) < 0.00001
|
||||
&& Math.abs(l1.getLongitude() - l2.getLongitude()) < 0.00001);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
BIN
OsmAnd-telegram/res/drawable-hdpi/ic_action_ruler_unit.png
Executable file
After Width: | Height: | Size: 336 B |
BIN
OsmAnd-telegram/res/drawable-hdpi/ic_action_speed.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
OsmAnd-telegram/res/drawable-hdpi/ic_world_globe_dark.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
OsmAnd-telegram/res/drawable-mdpi/ic_action_ruler_unit.png
Executable file
After Width: | Height: | Size: 186 B |
BIN
OsmAnd-telegram/res/drawable-mdpi/ic_action_speed.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
OsmAnd-telegram/res/drawable-mdpi/ic_world_globe_dark.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
OsmAnd-telegram/res/drawable-xhdpi/ic_action_ruler_unit.png
Executable file
After Width: | Height: | Size: 294 B |
BIN
OsmAnd-telegram/res/drawable-xhdpi/ic_action_speed.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
OsmAnd-telegram/res/drawable-xhdpi/ic_world_globe_dark.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
OsmAnd-telegram/res/drawable-xxhdpi/ic_action_ruler_unit.png
Executable file
After Width: | Height: | Size: 417 B |
BIN
OsmAnd-telegram/res/drawable-xxhdpi/ic_action_speed.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
OsmAnd-telegram/res/drawable-xxhdpi/ic_world_globe_dark.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
OsmAnd-telegram/res/drawable-xxxhdpi/ic_action_ruler_unit.png
Executable file
After Width: | Height: | Size: 681 B |
|
@ -75,6 +75,35 @@
|
|||
|
||||
<include layout="@layout/list_item_divider"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/card_bg_color"
|
||||
android:orientation="vertical">
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/list_header_height"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center_vertical"
|
||||
android:maxLines="1"
|
||||
android:paddingLeft="@dimen/content_padding_standard"
|
||||
android:paddingRight="@dimen/content_padding_standard"
|
||||
android:text="@string/units_and_formats"
|
||||
android:textColor="?android:textColorPrimary"
|
||||
android:textSize="@dimen/list_item_title_text_size"
|
||||
app:typeface="@string/font_roboto_medium"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/units_and_formats_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<include layout="@layout/list_item_divider"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
|
@ -1,2 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<string name="time_zone">المنطقة الزمنية</string>
|
||||
</resources>
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="km_h">كم/س</string>
|
||||
<string name="shared_string_ok">حسناً</string>
|
||||
<string name="shared_string_ok">موافق</string>
|
||||
<string name="timeline_available_for_free_now">الجدول الزمني ميزة متوفرة الآن مجانا.</string>
|
||||
<string name="disable_monitoring">تعطيل العرض</string>
|
||||
<string name="location_recording_enabled">تسجيل الموقع ممكن</string>
|
||||
|
@ -10,8 +10,63 @@
|
|||
<string name="shared_string_telegram">تيليجرام</string>
|
||||
<string name="privacy_policy_use_telegram">يستخدم تيليجرام (تطبيق المراسلة) للاتصال والتواصل مع الأشخاص.</string>
|
||||
<string name="shared_string_later">لاحقا</string>
|
||||
<string name="osmand_service">وضع الخلفية</string>
|
||||
<string name="nm_h">م.بح/س</string>
|
||||
<string name="osmand_service">حالة وضع السكون</string>
|
||||
<string name="nm_h">ميل بحري</string>
|
||||
<string name="si_nm_h">ميل بحري في الساعة (عقدة)</string>
|
||||
<string name="si_km_m">كم/م</string>
|
||||
<string name="si_km_m">كم ، متر</string>
|
||||
<string name="shared_string_end">نهاية</string>
|
||||
<string name="saved_messages">الرسائل المحفوظة</string>
|
||||
<string name="shared_string_update">تحديث</string>
|
||||
<string name="average_altitude">متوسط الارتفاع</string>
|
||||
<string name="average_speed">متوسط السرعة</string>
|
||||
<string name="shared_string_map">إدارة الخرائط</string>
|
||||
<string name="shared_string_add">إضافة</string>
|
||||
<string name="shared_string_hide">إخفاء</string>
|
||||
<string name="shared_string_status">الحالة</string>
|
||||
<string name="shared_string_disable">تعطيل</string>
|
||||
<string name="shared_string_save">حفظ</string>
|
||||
<string name="shared_string_name">الاسم</string>
|
||||
<string name="by_name">بالاسم</string>
|
||||
<string name="shared_string_sort">فرز</string>
|
||||
<string name="shared_string_exit">مخرج</string>
|
||||
<string name="shared_string_close">إغلاق</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_password">كلمة المرور</string>
|
||||
<string name="shared_string_continue">استمرار</string>
|
||||
<string name="shared_string_cancel">إلغاء</string>
|
||||
<string name="shared_string_settings">الإعدادات</string>
|
||||
<string name="shared_string_distance">المسافة</string>
|
||||
<string name="yard">ياردة</string>
|
||||
<string name="foot">قدم</string>
|
||||
<string name="mile">ميل</string>
|
||||
<string name="km">كلم</string>
|
||||
<string name="m">م</string>
|
||||
<string name="nm">ميل بحري</string>
|
||||
<string name="min_mile">د/م</string>
|
||||
<string name="min_km">د/كم</string>
|
||||
<string name="m_s">م/ث</string>
|
||||
<string name="mile_per_hour">ميل ساعة</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_nm">ميل بحري</string>
|
||||
<string name="si_mi_meters">ميل ، متر</string>
|
||||
<string name="shared_string_search">بحث</string>
|
||||
<string name="altitude">الارتفاع</string>
|
||||
<string name="shared_string_enable">تفعيل</string>
|
||||
<string name="shared_string_select">تحديد</string>
|
||||
<string name="shared_string_start">بدء</string>
|
||||
<string name="shared_string_apply">تطبيق</string>
|
||||
<string name="shared_string_enabled">مفعل</string>
|
||||
<string name="units_and_formats">الوحدات والأشكال</string>
|
||||
<string name="unit_of_length_descr">اختيار الوحدات: كم، ميل، ميل بحري.. إلخ.</string>
|
||||
<string name="unit_of_length">وحدات الطول</string>
|
||||
</resources>
|
|
@ -32,7 +32,7 @@
|
|||
<string name="last_available_location">Апошняе даступнае месца</string>
|
||||
<string name="sharing_status">"Статус абмену "</string>
|
||||
<string name="location_sharing_status">Абмен: %1$s</string>
|
||||
<string name="shared_string_enabled">Уключаны</string>
|
||||
<string name="shared_string_enabled">Уключана</string>
|
||||
<string name="shared_string_status">Статус</string>
|
||||
<string name="no_gps_connection">Злучэнне з GPS адсутнічае</string>
|
||||
<string name="no_internet_connection">Злучэнне з Інтэрнэтам адсутнічае</string>
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
<string name="closing">S\'està tancant</string>
|
||||
<string name="app_name_short">Rastrejador OsmAnd</string>
|
||||
<string name="privacy_policy_telegram_client">El rastrejador d\'OsmAnd és un dels clients que usen la plataforma oberta de Telegram. Els vostres contactes poden usar qualsevol altra client de Telegram.</string>
|
||||
<string name="privacy_policy_agree">En fer clic a continuar, accepteu les condicions de la Política de Privadesa de Telegram i de la Política de Privadesa d\'OsmAnd.</string>
|
||||
<string name="privacy_policy_agree">En clicar \"Continua\" accepteu les condicions de les polítiques de privadesa de Telegram i d\'OsmAnd.</string>
|
||||
<string name="shared_string_accept">D\'acord</string>
|
||||
<string name="telegram_privacy_policy">Política de Privadesa de Telegram</string>
|
||||
<string name="osmand_privacy_policy">Política de Privadesa d\'OsmAnd</string>
|
||||
|
@ -250,4 +250,14 @@
|
|||
<string name="shared_string_apply">Aplica</string>
|
||||
<string name="set_time_timeline_descr">Seleccioneu la durada a mostrar</string>
|
||||
<string name="start_end_date">Data d\' Inici — Fi</string>
|
||||
<string name="saved_messages">Missatges desats</string>
|
||||
<string name="time_zone_descr">Seleccioneu fus horari per mostrar en els vostres missatges d\'ubicació.</string>
|
||||
<string name="time_zone">Fus horari</string>
|
||||
<string name="units_and_formats">Unitats i formats</string>
|
||||
<string name="unit_of_length_descr">Canvieu en què es mesuren les distàncies.</string>
|
||||
<string name="unit_of_length">Unitats de longitud</string>
|
||||
<string name="unit_of_speed_system_descr">Establiu la unitat de velocitat.</string>
|
||||
<string name="unit_of_speed_system">Unitat de velocitat</string>
|
||||
<string name="buffer_time_descr">Temps màxim per mantenir punts a la memòria intermèdia</string>
|
||||
<string name="buffer_time">Temps de caducitat de la memòria intermèdia</string>
|
||||
</resources>
|
|
@ -204,7 +204,7 @@
|
|||
<string name="shared_string_telegram">Telegram</string>
|
||||
<string name="privacy_policy_use_telegram">Telegram (besked app) bruges til at forbinde og kommunikere med mennesker.</string>
|
||||
<string name="privacy_policy_telegram_client">OsmAnd Tracker er en af de klienter, der bruger den åbne Telegram platform. Kontaktpersoner kan bruge enhver anden Telegram klient.</string>
|
||||
<string name="privacy_policy_agree">Ved at klikke på fortsæt accepteres betingelserne i Telegram Privacy Policy og OsmAnd Privacy Policy.</string>
|
||||
<string name="privacy_policy_agree">Ved at klikke på \"Fortsæt\" accepteres betingelserne i Telegram- og OsmAnd privatlivspolitik.</string>
|
||||
<string name="shared_string_accept">Accepter</string>
|
||||
<string name="telegram_privacy_policy">Telegram privatlivspolitik</string>
|
||||
<string name="osmand_privacy_policy">OsmAnd privatlivspolitik</string>
|
||||
|
@ -250,4 +250,13 @@
|
|||
<string name="shared_string_apply">Anvend</string>
|
||||
<string name="set_time_timeline_descr">Vælg tid at vise</string>
|
||||
<string name="start_end_date">Start — slutdato</string>
|
||||
<string name="saved_messages">Gemte beskeder</string>
|
||||
<string name="time_zone_descr">Vælg tidszone, der skal vises i placeringsbeskeder.</string>
|
||||
<string name="time_zone">Tidszone</string>
|
||||
<string name="units_and_formats">Enheder & formater</string>
|
||||
<string name="unit_of_length">Længdeenheder</string>
|
||||
<string name="unit_of_speed_system_descr">Vælg enhed for hastighed.</string>
|
||||
<string name="unit_of_speed_system">Hastighed</string>
|
||||
<string name="buffer_time_descr">Maksimal tid til lagring af punkter i bufferen</string>
|
||||
<string name="buffer_time">Buffer udløbstid</string>
|
||||
</resources>
|
|
@ -210,7 +210,7 @@
|
|||
<string name="disable_monitoring">Aufzeichnung deaktivieren</string>
|
||||
<string name="timeline_description">Aufzeichnung aktivieren, um den Standortverlauf zu speichern.</string>
|
||||
<string name="show_gps_points_descr">Anzahl gesammelter und gesendeter GPS-Punkte anzeigen.</string>
|
||||
<string name="privacy_policy_agree">Wenn Sie fortfahren, willigen Sie in die Bedingungen der Datenschutzerklärungen von Telegram und OsmAnd ein.</string>
|
||||
<string name="privacy_policy_agree">Wenn Sie auf \"Fortfahren\" klicken, willigen Sie in die Bedingungen der Datenschutzerklärungen von Telegram und OsmAnd ein.</string>
|
||||
<string name="privacy_policy_telegram_client">Osmand Tracker ist eine der Apps die Telegrams offene Plattform nutzt. Ihre Kontake können beliebige andere Telegram-Apps nutzen.</string>
|
||||
<string name="timeline_available_for_free_now">Die Timeline ist eine Funktion, die jetzt kostenlos zur Verfügung steht.</string>
|
||||
<string name="search_contacts">Kontakte suchen</string>
|
||||
|
@ -250,4 +250,14 @@
|
|||
<string name="start_end_date">Start — Ende Datum</string>
|
||||
<string name="shared_string_apply">Anwenden</string>
|
||||
<string name="set_time_timeline_descr">Dauer der Anzeige auswählen</string>
|
||||
<string name="saved_messages">Gespeicherte Nachrichten</string>
|
||||
<string name="time_zone">Zeitzone</string>
|
||||
<string name="units_and_formats">Einheiten und Formate</string>
|
||||
<string name="unit_of_length">Längeneinheiten</string>
|
||||
<string name="unit_of_speed_system_descr">Geschwindigkeitseinheit festlegen.</string>
|
||||
<string name="unit_of_speed_system">Geschwindigkeitseinheit</string>
|
||||
<string name="time_zone_descr">Wählen Sie die Zeitzone aus, die in Ihren Standortmeldungen angezeigt werden soll.</string>
|
||||
<string name="unit_of_length_descr">Maß für Entfernungen ändern.</string>
|
||||
<string name="buffer_time_descr">Maximale Zeit zum Speichern von Punkten im Puffer</string>
|
||||
<string name="buffer_time">Verfallszeit des Puffers</string>
|
||||
</resources>
|
|
@ -1,2 +1,46 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<string name="shared_string_ok">Εντάξει</string>
|
||||
<string name="shared_string_update">Ενημέρωση</string>
|
||||
<string name="shared_string_map">Χάρτης</string>
|
||||
<string name="shared_string_add">Προσθήκη</string>
|
||||
<string name="shared_string_hide">Απόκρυψη</string>
|
||||
<string name="shared_string_save">Αποθήκευση</string>
|
||||
<string name="shared_string_sort">Ταξινόμηση</string>
|
||||
<string name="km">χλμ</string>
|
||||
<string name="m">μ</string>
|
||||
<string name="nm">ναυτικό μίλι</string>
|
||||
<string name="min_mile">λεπτά/μίλι</string>
|
||||
<string name="min_km">λεπτά/χιλιόμετρο</string>
|
||||
<string name="m_s">μέτρα/δευτερόλεπτο</string>
|
||||
<string name="km_h">χλμ/ω</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_nm">Ναυτικά μίλια</string>
|
||||
<string name="si_mi_meters">Μίλια/μέτρα</string>
|
||||
<string name="shared_string_all">Όλα</string>
|
||||
<string name="altitude">Υψόμετρο</string>
|
||||
<string name="shared_string_name">Όνομα</string>
|
||||
<string name="osmand_service">Κατάσταση παρασκηνίου</string>
|
||||
<string name="shared_string_apply">Εφαρμογή</string>
|
||||
<string name="shared_string_select">Επιλέξτε</string>
|
||||
<string name="shared_string_enable">Ενεργοποίηση</string>
|
||||
<string name="shared_string_search">Αναζήτηση</string>
|
||||
<string name="average_altitude">Μέσο υψόμετρο</string>
|
||||
<string name="average_speed">Μέση ταχύτητα</string>
|
||||
<string name="shared_string_status">Κατάσταση</string>
|
||||
<string name="shared_string_disable">Απενεργοποίηση</string>
|
||||
<string name="shared_string_close">Κλείσιμο</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="shared_string_enabled">Ενεργοποιημένο</string>
|
||||
<string name="units_and_formats">Μονάδες μέτρησης & φορμά</string>
|
||||
</resources>
|
|
@ -197,7 +197,7 @@
|
|||
<string name="shared_string_telegram">Telegram</string>
|
||||
<string name="privacy_policy_use_telegram">Telegram (la aplicación de mensajería) se utiliza para conectar y comunicar a las personas.</string>
|
||||
<string name="privacy_policy_telegram_client">El rastreador de OsmAnd (en inglés como «OsmAnd Tracker»), es uno de los clientes que utiliza la plataforma abierta de Telegram. Sus contactos pueden utilizar cualquier otro cliente de Telegram.</string>
|
||||
<string name="privacy_policy_agree">Al pulsar en continuar, acepta las Políticas de Privacidad de Telegram y de OsmAnd.</string>
|
||||
<string name="privacy_policy_agree">Al pulsar en «Continuar», acepta las Políticas de Privacidad de Telegram y de OsmAnd.</string>
|
||||
<string name="shared_string_accept">Aceptar</string>
|
||||
<string name="telegram_privacy_policy">Política de privacidad de Telegram</string>
|
||||
<string name="osmand_privacy_policy">Política de privacidad de OsmAnd</string>
|
||||
|
@ -249,4 +249,14 @@
|
|||
<string name="shared_string_apply">Aplicar</string>
|
||||
<string name="set_time_timeline_descr">Elige la hora de visualización</string>
|
||||
<string name="start_end_date">Fecha de inicio — fin</string>
|
||||
<string name="saved_messages">Mensajes guardados</string>
|
||||
<string name="time_zone_descr">Marca la zona horaria que deseas que aparezca en los mensajes de ubicación.</string>
|
||||
<string name="time_zone">Zona horaria</string>
|
||||
<string name="units_and_formats">Unidades y formatos</string>
|
||||
<string name="unit_of_length_descr">Cambia las unidades de longitud.</string>
|
||||
<string name="unit_of_length">Unidades de longitud</string>
|
||||
<string name="unit_of_speed_system_descr">Define la unidad de velocidad.</string>
|
||||
<string name="unit_of_speed_system">Unidad de velocidad</string>
|
||||
<string name="buffer_time_descr">Tiempo máximo para almacenar puntos en el búfer</string>
|
||||
<string name="buffer_time">Tiempo de expiración del búfer</string>
|
||||
</resources>
|
|
@ -12,7 +12,7 @@
|
|||
<string name="last_available_location">Última ubicación disponible</string>
|
||||
<string name="sharing_status">Estado de compartición</string>
|
||||
<string name="location_sharing_status">Compartir: %1$s</string>
|
||||
<string name="shared_string_enabled">Habilitado</string>
|
||||
<string name="shared_string_enabled">Activado</string>
|
||||
<string name="shared_string_status">Estado</string>
|
||||
<string name="no_gps_connection">Sin conexión GPS</string>
|
||||
<string name="no_internet_connection">Sin conexión a Internet</string>
|
||||
|
@ -194,7 +194,7 @@
|
|||
<string name="shared_string_sent">Enviado</string>
|
||||
<string name="please_update_osmand">Actualice OsmAnd para ver datos en el mapa</string>
|
||||
<string name="shared_string_update">Actualizar</string>
|
||||
<string name="shared_string_ok">Aplicar</string>
|
||||
<string name="shared_string_ok">Aceptar</string>
|
||||
<string name="timeline_available_for_free_now">La línea de tiempo es una función disponible ahora de forma gratuita.</string>
|
||||
<string name="disable_monitoring">Desactivar la monitorización</string>
|
||||
<string name="location_recording_enabled">Grabación de ubicación activada</string>
|
||||
|
@ -203,7 +203,7 @@
|
|||
<string name="shared_string_telegram">Telegram</string>
|
||||
<string name="privacy_policy_use_telegram">Telegram (la aplicación de mensajería) se utiliza para conectar y comunicar a las personas.</string>
|
||||
<string name="privacy_policy_telegram_client">El rastreador de OsmAnd (en inglés como «OsmAnd Tracker»), es uno de los clientes que utiliza la plataforma abierta de Telegram. Sus contactos pueden utilizar cualquier otro cliente de Telegram.</string>
|
||||
<string name="privacy_policy_agree">Al pulsar en continuar, acepta las Políticas de Privacidad de Telegram y de OsmAnd.</string>
|
||||
<string name="privacy_policy_agree">Al hacer clic en \"Continuar\", aceptas las condiciones de la política de privacidad de Telegram- y OsmAnd.</string>
|
||||
<string name="shared_string_accept">Aceptar</string>
|
||||
<string name="telegram_privacy_policy">Política de privacidad de Telegram</string>
|
||||
<string name="osmand_privacy_policy">Política de privacidad de OsmAnd</string>
|
||||
|
@ -249,4 +249,14 @@
|
|||
<string name="shared_string_start">Inicio</string>
|
||||
<string name="set_time_timeline_descr">Elige la hora de visualización</string>
|
||||
<string name="start_end_date">Fecha de Inicio — Fin</string>
|
||||
<string name="saved_messages">Mensajes guardados</string>
|
||||
<string name="time_zone_descr">Seleccione la zona horaria que desea mostrar en los mensajes de ubicación.</string>
|
||||
<string name="time_zone">Zona horaria</string>
|
||||
<string name="units_and_formats">Unidades y formatos</string>
|
||||
<string name="unit_of_length_descr">Cambia las unidades de longitud.</string>
|
||||
<string name="unit_of_length">Unidades de longitud</string>
|
||||
<string name="unit_of_speed_system_descr">Definir la unidad de velocidad.</string>
|
||||
<string name="unit_of_speed_system">Unidad de velocidad</string>
|
||||
<string name="buffer_time_descr">Tiempo después del cual se eliminarán los mensajes de ubicación almacenados en búfer</string>
|
||||
<string name="buffer_time">Tiempo de expiración del búfer</string>
|
||||
</resources>
|
88
OsmAnd-telegram/res/values-et/strings.xml
Normal file
|
@ -0,0 +1,88 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="buffer_time_descr">Maksimaalne punktide puhvris säilitamise aeg</string>
|
||||
<string name="buffer_time">Puhvri aegumisaeg</string>
|
||||
<string name="time_zone_descr">Vali oma asukohateadetes kuvatav ajavöönd.</string>
|
||||
<string name="time_zone">Ajavöönd</string>
|
||||
<string name="units_and_formats">Ühikud ja formaadid</string>
|
||||
<string name="unit_of_length_descr">Muuda kauguse mõõtmise ühikuid.</string>
|
||||
<string name="unit_of_length">Pikkusühikud</string>
|
||||
<string name="unit_of_speed_system_descr">Määra kiiruse ühik.</string>
|
||||
<string name="unit_of_speed_system">Kiiruse ühik</string>
|
||||
<string name="saved_messages">Salvestatud sõnumid</string>
|
||||
<string name="shared_string_end">Lõpp</string>
|
||||
<string name="shared_string_start">Algus</string>
|
||||
<string name="shared_string_apply">Rakenda</string>
|
||||
<string name="set_time_timeline_descr">Vali kuvatav aeg</string>
|
||||
<string name="start_end_date">Alguse — Lõpu kuupäev</string>
|
||||
<string name="timeline_no_data_descr">Meil pole valitud päeva kohta andmeid kogutud</string>
|
||||
<string name="timeline_no_data">Andmed puuduvad</string>
|
||||
<string name="shared_string_select">Vali</string>
|
||||
<string name="min_logging_distance">Vähim logimise vahemaa</string>
|
||||
<string name="min_logging_distance_descr">Filter: vähim vahemaa, mille järel uus punkt logida</string>
|
||||
<string name="min_logging_accuracy">Vähim logimise täpsus</string>
|
||||
<string name="min_logging_accuracy_descr">Filter: mitte logida kuni täpsus pole saavutatud</string>
|
||||
<string name="min_logging_speed">Vähim logimise kiirus</string>
|
||||
<string name="min_logging_speed_descr">Filter: mitte logida alla valitud kiiruse</string>
|
||||
<string name="gpx_settings">GPX seaded</string>
|
||||
<string name="proxy_key">Võti</string>
|
||||
<string name="proxy_password">Salasõna</string>
|
||||
<string name="proxy_username">Kasutajanimi</string>
|
||||
<string name="proxy_credentials">Rekvisiidid</string>
|
||||
<string name="proxy_port">Port</string>
|
||||
<string name="proxy_server">Server</string>
|
||||
<string name="shared_string_connection">Ühendus</string>
|
||||
<string name="shared_string_enable">Luba</string>
|
||||
<string name="proxy_type">Puhverserveri liik</string>
|
||||
<string name="proxy_connected">Ühendatud</string>
|
||||
<string name="proxy_disconnected">Ühendus puudub</string>
|
||||
<string name="proxy_settings">Puhverserveri seaded</string>
|
||||
<string name="proxy">Puhverserver</string>
|
||||
<string name="altitude">Kõrgus</string>
|
||||
<string name="shared_string_search">Otsi</string>
|
||||
<string name="shared_string_ok">OK</string>
|
||||
<string name="shared_string_update">Uuenda</string>
|
||||
<string name="average_altitude">Keskmine kõrgus</string>
|
||||
<string name="average_speed">Keskmine kiirus</string>
|
||||
<string name="shared_string_map">Kaart</string>
|
||||
<string name="shared_string_add">Lisa</string>
|
||||
<string name="shared_string_hide">Peida</string>
|
||||
<string name="shared_string_enabled">Lubatud</string>
|
||||
<string name="shared_string_status">Olek</string>
|
||||
<string name="shared_string_disable">Keela</string>
|
||||
<string name="shared_string_save">Salvesta</string>
|
||||
<string name="shared_string_name">Nimi</string>
|
||||
<string name="shared_string_sort">Sorteeri</string>
|
||||
<string name="shared_string_exit">Välju</string>
|
||||
<string name="shared_string_close">Sulge</string>
|
||||
<string name="shared_string_all">Kõik</string>
|
||||
<string name="shared_string_off">Väljas</string>
|
||||
<string name="shared_string_install">Paigalda</string>
|
||||
<string name="shared_string_share">Jaga</string>
|
||||
<string name="shared_string_back">Tagasi</string>
|
||||
<string name="shared_string_continue">Jätka</string>
|
||||
<string name="shared_string_cancel">Tühista</string>
|
||||
<string name="shared_string_settings">Seaded</string>
|
||||
<string name="osmand_service">Taustarežiim</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">mpk</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">Kilomeetrit tunnis</string>
|
||||
<string name="si_mph">Miili tunnis</string>
|
||||
<string name="si_m_s">Meetrit sekundis</string>
|
||||
<string name="si_min_km">Minutit kilomeetri kohta</string>
|
||||
<string name="si_min_m">Minutit miili kohta</string>
|
||||
<string name="si_mi_feet">Miilid/jalad</string>
|
||||
<string name="si_mi_yard">Miilid/jardid</string>
|
||||
<string name="si_km_m">Kilomeetrid/meetrid</string>
|
||||
<string name="si_nm">Meremiilid</string>
|
||||
<string name="si_mi_meters">Miilid/meetrid</string>
|
||||
</resources>
|
|
@ -186,4 +186,5 @@
|
|||
<string name="shared_string_apply">Aplikatu</string>
|
||||
<string name="set_time_timeline_descr">Hautatu bistaratzeko denbora</string>
|
||||
<string name="start_end_date">Hasiera — Amaiera data</string>
|
||||
<string name="shared_string_enabled">Gaituta</string>
|
||||
</resources>
|
|
@ -19,7 +19,7 @@
|
|||
<string name="not_found_yet">هنوز پیدا نشده</string>
|
||||
<string name="re_send_location">بازفرستی موقعیت</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>
|
||||
|
@ -68,4 +68,8 @@
|
|||
<string name="shared_string_apply">بهکارگیری</string>
|
||||
<string name="nm_h">nmi/h</string>
|
||||
<string name="si_nm_h">مایل دریایی بر ساعت (نات)</string>
|
||||
<string name="shared_string_enabled">فعال</string>
|
||||
<string name="units_and_formats">یکاها و قالبها</string>
|
||||
<string name="unit_of_length_descr">یکاهای طول را تغییر دهید.</string>
|
||||
<string name="unit_of_length">یکاهای طول</string>
|
||||
</resources>
|
2
OsmAnd-telegram/res/values-fi/strings.xml
Normal file
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
|
@ -139,7 +139,7 @@
|
|||
<string name="no_location_permission">A aplicación non ten permiso para acceder ós datos da ubicación.</string>
|
||||
<string name="gps_not_available">Activar «Ubicación» nos axustes do sistema</string>
|
||||
<string name="location_service_no_gps_available">Escolle un dos fornecedores da ubicación para compartilla-la túa ubicación.</string>
|
||||
<string name="osmand_service">Modo no segundo plano</string>
|
||||
<string name="osmand_service">Modo en segundo plano</string>
|
||||
<string name="osmand_service_descr">O OsmAnd Tracker execútase no modo en segundo plano ca pantalla apagada.</string>
|
||||
<string name="shared_string_distance">Distancia</string>
|
||||
<string name="share_location">Compartillar ubicación</string>
|
||||
|
|
|
@ -195,7 +195,7 @@
|
|||
<string name="shared_string_telegram">טלגרם</string>
|
||||
<string name="privacy_policy_use_telegram">טלגרם (יישומון ההתכתבות) משמש תשתית להתחברות ולתקשורת עם אנשים.</string>
|
||||
<string name="privacy_policy_telegram_client">העוקב של OsmAnd הוא אחד הלקוחות שמשתמש בפלטפורמה הפתוחה של טלגרם. אנשי הקשר שלך יכולים להשתמש בכל לקוח טלגרם שיבחרו.</string>
|
||||
<string name="privacy_policy_agree">לחיצה על המשך מהווה את הסכמתך לתנאי מדיניות הפרטיות של טלגרם ולתנאי מדיניות הפרטיות של OsmAnd.</string>
|
||||
<string name="privacy_policy_agree">לחיצה על „המשך” מהווה את הסכמתך לתנאי מדיניות הפרטיות של טלגרם ושל OsmAnd.</string>
|
||||
<string name="shared_string_accept">קבלה</string>
|
||||
<string name="telegram_privacy_policy">מדיניות הפרטיות של טלגרם</string>
|
||||
<string name="osmand_privacy_policy">מדיניות הפרטיות של OsmAnd</string>
|
||||
|
@ -249,4 +249,14 @@
|
|||
<string name="start_end_date">תאריך התחלה - סיום</string>
|
||||
<string name="location_sharing_status">משותף: %1$s</string>
|
||||
<string name="shared_string_enabled">מופעל</string>
|
||||
<string name="saved_messages">הודעות שמורות</string>
|
||||
<string name="time_zone_descr">נא לבחור את אזור הזמן בהודעות המיקום שלך.</string>
|
||||
<string name="time_zone">אזור זמן</string>
|
||||
<string name="units_and_formats">יחידות ותבניות</string>
|
||||
<string name="unit_of_length_descr">שינוי היחידות שבהן מודדים מרחק.</string>
|
||||
<string name="unit_of_length">יחידות אורך</string>
|
||||
<string name="unit_of_speed_system_descr">הגדרת יחידת מהירות.</string>
|
||||
<string name="unit_of_speed_system">יחידת מהירות</string>
|
||||
<string name="buffer_time_descr">הזמן המרבי לשמירת נקודות בזיכרון</string>
|
||||
<string name="buffer_time">זמן פקיעת הזיכרון</string>
|
||||
</resources>
|
|
@ -3,7 +3,7 @@
|
|||
<string name="shared_string_telegram">Telegram</string>
|
||||
<string name="privacy_policy_use_telegram">A Telegram (üzenetküldő alkalmazás) a másokkal való összekapcsolódásra és kommunikációra használható.</string>
|
||||
<string name="privacy_policy_telegram_client">A Telegram nyílt platformot használó kliensprogramok egyike az OsmAnd tracker. Partnerei bármelyik másik Telegram kliensprogramot is használhatják.</string>
|
||||
<string name="privacy_policy_agree">A továbbra kattintva elfogadja a Telegram és az OsmAnd adatvédelmi irányelveinek feltételeit.</string>
|
||||
<string name="privacy_policy_agree">A „Tovább”-ra kattintva elfogadja a Telegram és az OsmAnd adatvédelmi irányelveinek feltételeit.</string>
|
||||
<string name="shared_string_accept">Elfogadás</string>
|
||||
<string name="telegram_privacy_policy">Telegram adatvédelmi irányelvei</string>
|
||||
<string name="osmand_privacy_policy">OsmAnd adatvédelmi irányelvei</string>
|
||||
|
@ -62,7 +62,7 @@
|
|||
<string name="last_available_location">Utolsó elérhető tartózkodási hely</string>
|
||||
<string name="sharing_status">Megosztás állapota</string>
|
||||
<string name="location_sharing_status">Megosztás: %1$s</string>
|
||||
<string name="shared_string_enabled">engedélyezve</string>
|
||||
<string name="shared_string_enabled">Engedélyezve</string>
|
||||
<string name="shared_string_status">Állapot</string>
|
||||
<string name="no_gps_connection">Nincs GPS-kapcsolat</string>
|
||||
<string name="no_internet_connection">Nincs internetkapcsolat</string>
|
||||
|
@ -249,4 +249,14 @@
|
|||
<string name="shared_string_apply">Alkalmazás</string>
|
||||
<string name="set_time_timeline_descr">Megjelenítendő időszak kijelölése</string>
|
||||
<string name="start_end_date">Kezdő és záró dátum</string>
|
||||
<string name="saved_messages">Mentett üzenetek</string>
|
||||
<string name="time_zone_descr">Időzóna kijelölése a helyzetjelentésekben való megjelenítéshez.</string>
|
||||
<string name="time_zone">Időzóna</string>
|
||||
<string name="units_and_formats">Mértékegységek & formátumok</string>
|
||||
<string name="unit_of_length_descr">Távolság mértékegységének módosítása</string>
|
||||
<string name="unit_of_length">Hosszmértékegységek</string>
|
||||
<string name="unit_of_speed_system_descr">Sebesség mértékegységének meghatározása</string>
|
||||
<string name="unit_of_speed_system">Sebesség mértékegysége</string>
|
||||
<string name="buffer_time_descr">Az az idő, amely után a pufferelt helyzetjelentések törlődnek</string>
|
||||
<string name="buffer_time">Puffer lejárati ideje</string>
|
||||
</resources>
|
|
@ -32,7 +32,7 @@
|
|||
<string name="last_available_location">Ultima posizione disponibile</string>
|
||||
<string name="sharing_status">Condivisione dello stato</string>
|
||||
<string name="location_sharing_status">Condivisione: %1$s</string>
|
||||
<string name="shared_string_enabled">Attivata</string>
|
||||
<string name="shared_string_enabled">Abilitato</string>
|
||||
<string name="shared_string_status">Stato</string>
|
||||
<string name="no_gps_connection">Nessuna connessione GPS</string>
|
||||
<string name="no_internet_connection">Nessuna connessione ad Internet</string>
|
||||
|
@ -187,9 +187,9 @@
|
|||
<string name="shared_string_text">Testo</string>
|
||||
<string name="map_and_text">Mappa e testo</string>
|
||||
<string name="timeline">Cronologia</string>
|
||||
<string name="shared_string_ok">OK</string>
|
||||
<string name="shared_string_ok">Ok</string>
|
||||
<string name="timeline_available_for_free_now">La funzionalità Timeline è adesso disponibile gratuitamente.</string>
|
||||
<string name="disable_monitoring">Disattivare il monitoraggio</string>
|
||||
<string name="disable_monitoring">Disattiva il monitoraggio</string>
|
||||
<string name="location_recording_enabled">Registrazione della posizione abilitata</string>
|
||||
<string name="timeline_description">Attivare il monitoraggio per salvare lo storico delle locazioni.</string>
|
||||
<string name="app_name_short">Tracker OsmAnd</string>
|
||||
|
@ -228,11 +228,11 @@
|
|||
<string name="proxy_port">Porta</string>
|
||||
<string name="proxy_server">Server</string>
|
||||
<string name="shared_string_connection">Connessione</string>
|
||||
<string name="shared_string_enable">Abilitato</string>
|
||||
<string name="proxy_type">Tipo di Proxy</string>
|
||||
<string name="shared_string_enable">Attiva</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_settings">Impostazioni proxy</string>
|
||||
<string name="proxy">Proxy</string>
|
||||
<string name="privacy">Privacy</string>
|
||||
<string name="shared_string_select">Seleziona</string>
|
||||
|
@ -249,5 +249,11 @@
|
|||
<string name="shared_string_end">Fine</string>
|
||||
<string name="shared_string_start">Avvia</string>
|
||||
<string name="set_time_timeline_descr">Seleziona l\'ora da visualizzare</string>
|
||||
<string name="start_end_date">Inizio - Data di fine</string>
|
||||
<string name="start_end_date">Data di inizio - fine</string>
|
||||
<string name="saved_messages">Messaggi salvati</string>
|
||||
<string name="units_and_formats">Unità e formati</string>
|
||||
<string name="unit_of_length_descr">Cambia l\'unità di misura della distanza.</string>
|
||||
<string name="unit_of_length">Unità di misura di lunghezza</string>
|
||||
<string name="time_zone">Fuso orario</string>
|
||||
<string name="unit_of_speed_system">Unità di misura della velocità</string>
|
||||
</resources>
|
263
OsmAnd-telegram/res/values-ja/strings.xml
Normal file
|
@ -0,0 +1,263 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="shared_string_end">終了</string>
|
||||
<string name="shared_string_start">開始</string>
|
||||
<string name="shared_string_apply">決定</string>
|
||||
<string name="set_time_timeline_descr">表示時間を選択</string>
|
||||
<string name="start_end_date">開始—終了日</string>
|
||||
<string name="timeline_no_data_descr">選択した日のデータは未収集です</string>
|
||||
<string name="timeline_no_data">データなし</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>
|
||||
<string name="proxy_key">キー</string>
|
||||
<string name="proxy_password">パスワード</string>
|
||||
<string name="proxy_username">ユーザー名</string>
|
||||
<string name="proxy_credentials">資格情報</string>
|
||||
<string name="proxy_port">ポート</string>
|
||||
<string name="proxy_server">サーバー</string>
|
||||
<string name="shared_string_connection">接続</string>
|
||||
<string name="shared_string_enable">有効</string>
|
||||
<string name="proxy_type">プロキシタイプ</string>
|
||||
<string name="proxy_connected">接続しました</string>
|
||||
<string name="proxy_disconnected">切断しました</string>
|
||||
<string name="proxy_settings">プロキシ設定</string>
|
||||
<string name="proxy">プロキシ</string>
|
||||
<string name="privacy">プライバシー</string>
|
||||
<string name="direction">方向</string>
|
||||
<string name="precision">精度</string>
|
||||
<string name="altitude">標高</string>
|
||||
<string name="bearing">ベアリング</string>
|
||||
<string name="search_contacts">連絡先を検索</string>
|
||||
<string name="search_contacts_descr">すべてのグループと連絡先を検索します。</string>
|
||||
<string name="type_contact_or_group_name">連絡先またはグループ名を入力</string>
|
||||
<string name="shared_string_search">検索</string>
|
||||
<string name="shared_string_ok">OK</string>
|
||||
<string name="timeline_available_for_free_now">タイムライン機能は現在無料で利用できます。</string>
|
||||
<string name="disable_monitoring">モニタリングを無効化</string>
|
||||
<string name="location_recording_enabled">ロケーション記録が有効になりました</string>
|
||||
<string name="timeline_description">モニタリング機能を有効にして、すべての場所を履歴に保存します。</string>
|
||||
<string name="app_name_short">OsmAndトラッカー</string>
|
||||
<string name="shared_string_telegram">テレグラム</string>
|
||||
<string name="privacy_policy_use_telegram">テレグラム(メッセージングアプリ)は、他の人々と通信するために使用されます。</string>
|
||||
<string name="privacy_policy_telegram_client">OsmAndトラッカーは、Telegramオープンプラットフォームを利用するクライアントの1つです。連絡先は他のTelegramクライアントのものを利用できます。</string>
|
||||
<string name="privacy_policy_agree">続行をクリックすると、TelegramおよびOsmAndプライバシーポリシーの条件に同意したとみなされます。</string>
|
||||
<string name="shared_string_accept">決定</string>
|
||||
<string name="telegram_privacy_policy">Telegramプライバシーポリシー</string>
|
||||
<string name="osmand_privacy_policy">OsmAndプライバシーポリシー</string>
|
||||
<string name="how_it_works">使い方</string>
|
||||
<string name="received_gps_points">GPXポイントを受信しました:%1$s</string>
|
||||
<string name="shared_string_appearance">外観</string>
|
||||
<string name="show_gps_points">GPSポイントの表示</string>
|
||||
<string name="show_gps_points_descr">収集および送信されたGPSポイントの数量を表示します。</string>
|
||||
<string name="please_update_osmand">マップ上でデータを表示するにはOsmAndを更新してください</string>
|
||||
<string name="shared_string_update">更新</string>
|
||||
<string name="gps_points_in_buffer">送信済み(バッファ内 %1$d)</string>
|
||||
<string name="points_size">%1$d地点</string>
|
||||
<string name="shared_string_date">日付</string>
|
||||
<string name="shared_string_collected">収集済み</string>
|
||||
<string name="gps_points">GPSポイント</string>
|
||||
<string name="shared_string_sent">送信済み</string>
|
||||
<string name="monitoring_is_enabled">モニタリングを有効化しました</string>
|
||||
<string name="monitoring_is_disabled">モニタリングを無効化しました</string>
|
||||
<string name="time_on_the_move">移動時間</string>
|
||||
<string name="average_altitude">平均標高</string>
|
||||
<string name="average_speed">平均速度</string>
|
||||
<string name="open_in_osmand">OsmAndで表示</string>
|
||||
<string name="end_date">終了日</string>
|
||||
<string name="start_date">開始日</string>
|
||||
<string name="send_location_as">場所を送信</string>
|
||||
<string name="send_location_as_descr">メッセージと現在地の表示方法を選択します。</string>
|
||||
<string name="shared_string_map">マップ</string>
|
||||
<string name="shared_string_text">テキスト</string>
|
||||
<string name="map_and_text">マップ&テキスト</string>
|
||||
<string name="last_update_from_telegram">Telegramの最終更新</string>
|
||||
<string name="enter_another_device_name">使用されていない名前を選択してください</string>
|
||||
<string name="device_added_successfully">%1$sが追加されました。</string>
|
||||
<string name="shared_string_add">追加</string>
|
||||
<string name="error_adding_new_device">新しいデバイスを追加できませんでした</string>
|
||||
<string name="enter_device_name_description">新しいデバイスに名前をつけます。 最大200文字(半角英文字の場合)。</string>
|
||||
<string name="device_name_is_too_long">デバイス名が長すぎます</string>
|
||||
<string name="device_name_cannot_be_empty">デバイス名を無しにすることはできません</string>
|
||||
<string name="device_name">デバイス名</string>
|
||||
<string name="shared_string_hide">非表示</string>
|
||||
<string name="share_location_as_description_second_line">チャットボット%1$sを利用して、TelegramクライアントのデバイスID作成および表示ができます。%2$s</string>
|
||||
<string name="share_location_as_description">複数のデバイスを1つのTelegramアカウントに接続する場合は、異なるデバイス間にて現在地を共有する必要があります。</string>
|
||||
<string name="last_updated_location">最終更新場所:</string>
|
||||
<string name="successfully_sent_and_updated">送信および更新に成功しました</string>
|
||||
<string name="not_possible_to_send_to_telegram_chats">Telegramチャットに送信できません:</string>
|
||||
<string name="waiting_for_response_from_telegram">Telegramからの応答を待っています</string>
|
||||
<string name="sending_location_messages">送信場所</string>
|
||||
<string name="initializing">起動中</string>
|
||||
<string name="searching_for_gps">位置取得中…</string>
|
||||
<string name="connecting_to_the_internet">インターネットに接続</string>
|
||||
<string name="background_work_description">バッテリー最適化設定を変更し(消費電力を上げて)、位置情報の共有を安定化させます。</string>
|
||||
<string name="background_work">バックグラウンド動作</string>
|
||||
<string name="battery_optimization_description">OsmAnd Trackerのバッテリー最適化をオフにして、バックグラウンド動作時に動作が中断しないようにします。</string>
|
||||
<string name="sharing_in_background">バックグラウンドで共有</string>
|
||||
<string name="go_to_settings">設定に移動</string>
|
||||
<string name="shared_string_later">後で</string>
|
||||
<string name="not_sent_yet">まだ送信されていません</string>
|
||||
<string name="not_found_yet">まだ見つかりません</string>
|
||||
<string name="re_send_location">場所を再送信</string>
|
||||
<string name="last_available_location">最後に有効化されていた場所</string>
|
||||
<string name="sharing_status">共有ステータス</string>
|
||||
<string name="location_sharing_status">共有:%1$s</string>
|
||||
<string name="shared_string_enabled">有効</string>
|
||||
<string name="shared_string_status">ステータス</string>
|
||||
<string name="no_gps_connection">GPS未接続</string>
|
||||
<string name="no_internet_connection">インターネット未接続</string>
|
||||
<string name="shared_string_disable">無効化</string>
|
||||
<string name="shared_string_save">保存</string>
|
||||
<string name="add_device">デバイスの追加</string>
|
||||
<string name="share_location_as">現在地を共有</string>
|
||||
<string name="live_now_description">位置情報を共有する連絡先とグループです。</string>
|
||||
<string name="logout_from_osmand_telegram_descr">自身の居場所や他のユーザーの場所を共有および表示しないよう、OsmAnd Trackerからログアウトしますか?</string>
|
||||
<string name="logout_from_osmand_telegram">OsmAnd Trackerからログアウトしますか?</string>
|
||||
<string name="shared_string_name">名前</string>
|
||||
<string name="by_distance">距離で</string>
|
||||
<string name="by_name">名前で</string>
|
||||
<string name="by_group">グループで</string>
|
||||
<string name="shared_string_sort">並び替え</string>
|
||||
<string name="shared_string_sort_by">並び替え:</string>
|
||||
<string name="choose_osmand_desc">OsmAndのバージョンを選択すると、マップ上に連絡先が表示されます。</string>
|
||||
<string name="choose_osmand">使用するOsmAndバージョンを選択</string>
|
||||
<string name="disable_all_sharing_desc">選択したチャット (%1$d)で、現在地の共有をOFFにします。</string>
|
||||
<string name="disable_all_sharing">すべての共有を無効化</string>
|
||||
<string name="turn_off_all">すべてOFF</string>
|
||||
<string name="shared_string_exit">終了</string>
|
||||
<string name="time_ago">前</string>
|
||||
<string name="last_response">最後の返信</string>
|
||||
<string name="shared_string_group">グループ</string>
|
||||
<string name="logout_no_internet_msg">インターネットに接続すると、Telegramから正しい手順でログアウトします。</string>
|
||||
<string name="shared_string_close">閉じる</string>
|
||||
<string name="disconnect_from_telegram_desc">位置共有アクセスを取り消すためには Telegramを開き、\'設定\'→\'プライバシーとセキュリティ\'→\'セッション\'に移動して、OsmAnd Trackerセッションを終了します。</string>
|
||||
<string name="disconnect_from_telegram">TelegramからOsmAnd TrackerをOFFにする方法</string>
|
||||
<string name="logout_help_desc">TelegramからOsmAnd TrackerをOFFにする方法</string>
|
||||
<string name="connected_account">接続済みアカウント</string>
|
||||
<string name="shared_string_account">アカウント</string>
|
||||
<string name="in_time">%1$s内</string>
|
||||
<string name="osmand_connect_desc">OsmAndのバージョンを選択すると、OsmAnd Trackerにて位置の表示が使用できます。</string>
|
||||
<string name="osmand_connect">OsmAndの接続</string>
|
||||
<string name="location_history_desc">特定の時間内で移動していない場合は、連絡先を非表示にします。</string>
|
||||
<string name="location_history">位置履歴</string>
|
||||
<string name="stale_location_desc">連絡相手が移動した最後の時刻をしめしています。</string>
|
||||
<string name="stale_location">移動していません</string>
|
||||
<string name="send_my_location_desc">位置共有の最小間隔を設定します。</string>
|
||||
<string name="send_my_location">現在地の送信</string>
|
||||
<string name="gps_and_location">GPSでの位置</string>
|
||||
<string name="sharing_time">共有時刻</string>
|
||||
<string name="expire_at">超過時間:</string>
|
||||
<string name="stop_sharing_all">共有はON</string>
|
||||
<string name="turn_off_location_sharing">現在地共有をOFFにする</string>
|
||||
<string name="open_osmand">OsmAndを開く</string>
|
||||
<string name="shared_string_live">Live</string>
|
||||
<string name="shared_string_bot">BOT</string>
|
||||
<string name="get_telegram_title">Telegramへの登録</string>
|
||||
<string name="get_telegram_account_first">現在地の共有をおこなうには、Telegramアカウントが必要です。</string>
|
||||
<string name="get_telegram_description_continue">Telegramをインストールしてアカウントを設定してください。</string>
|
||||
<string name="get_telegram_after_creating_account">その後、このアプリを使用できます。</string>
|
||||
<string name="shared_string_all">全て</string>
|
||||
<string name="shared_string_off">OFF</string>
|
||||
<string name="already_registered_in_telegram">登録済みのTelegramアカウントと電話番号が必要です。</string>
|
||||
<string name="do_not_have_telegram">私はTelegramアカウントを持っていません</string>
|
||||
<string name="enter_phone_number">電話番号を入力</string>
|
||||
<string name="enter_authentication_code">認証コードを入力</string>
|
||||
<string name="set_visible_time_for_all">時間表示を全ユーザーに設定</string>
|
||||
<string name="hours_and_minutes_format">%1$d時間%2$d分</string>
|
||||
<string name="minutes_format">%1$d分</string>
|
||||
<string name="hours_format">%1$d時間</string>
|
||||
<string name="shared_string_install">インストール</string>
|
||||
<string name="shared_string_share">共有</string>
|
||||
<string name="shared_string_back">戻る</string>
|
||||
<string name="visible_time_for_all">時間が全てのユーザーから閲覧されます</string>
|
||||
<string name="set_time_description">選択した連絡先とグループに現在地をリアルタイムで表示する時間を設定します。</string>
|
||||
<string name="set_time">時間の設定</string>
|
||||
<string name="location_sharing_description">現在地を共有する連絡先とグループを選択します。</string>
|
||||
<string name="my_location_search_hint">検索:グループまたは連絡先</string>
|
||||
<string name="start_location_sharing">現在地の共有</string>
|
||||
<string name="show_on_map">マップ上に表示</string>
|
||||
<string name="app_name">OsmAnd Online GPS Tracker</string>
|
||||
<string name="phone_number_title">電話番号</string>
|
||||
<string name="phone_number_descr">国際形式に則った電話番号</string>
|
||||
<string name="shared_string_password">パスワード</string>
|
||||
<string name="enter_code">コードを入力</string>
|
||||
<string name="authentication_code">認証コード</string>
|
||||
<string name="authentication_code_descr">TelegramからOsmAndにコードが送信され、アカウントにログインできるようになります。</string>
|
||||
<string name="enter_password">パスワードを入力</string>
|
||||
<string name="password_descr">Telegramのパスワード</string>
|
||||
<string name="shared_string_login">ログイン</string>
|
||||
<string name="shared_string_logout">ログアウト</string>
|
||||
<string name="initialization">起動</string>
|
||||
<string name="logging_out">ログアウト</string>
|
||||
<string name="closing">クローズ</string>
|
||||
<string name="gps_network_not_enabled">\"位置情報\"をONにしますか?</string>
|
||||
<string name="not_logged_in">ログインしていません</string>
|
||||
<string name="shared_string_continue">続行</string>
|
||||
<string name="shared_string_cancel">キャンセル</string>
|
||||
<string name="shared_string_settings">設定</string>
|
||||
<string name="no_location_permission">アプリに位置データを取得する権限がありません。</string>
|
||||
<string name="gps_not_available">システム設定で\"現在地\"(あるいは位置情報やGPSなど)をONにしてください</string>
|
||||
<string name="location_service_no_gps_available">位置情報を共有するために位置情報提供機能のいずれかを選択してください。</string>
|
||||
<string name="osmand_service">バックグラウンドモード</string>
|
||||
<string name="osmand_service_descr">OsmAnd Trackerは、画面をOFFにしてもバックグラウンドで動作します。</string>
|
||||
<string name="shared_string_distance">距離</string>
|
||||
<string name="share_location">位置情報の共有</string>
|
||||
<string name="sharing_location">位置情報は共有中</string>
|
||||
<string name="process_service">OsmAnd Trackerサービス</string>
|
||||
<string name="osmand_logo">OsmAndロゴ</string>
|
||||
<string name="install_osmand_dialog_message">無料版OsmAnd、または有料版OsmAnd+を先にインストールする必要があります</string>
|
||||
<string name="install_osmand">OsmAndのインストール</string>
|
||||
<string name="show_users_on_map">マップにユーザーを表示</string>
|
||||
<string name="active_chats">アクティブチャット</string>
|
||||
<string name="shared_string_authorization">認証</string>
|
||||
<string name="shared_string_authorization_descr">国際形式でTelegramを利用する端末の電話番号を入力してください(日本の場合+81を先頭につけて電話番号最初の0を除いた番号を入力)</string>
|
||||
<string name="shared_string_welcome">ようこそ</string>
|
||||
<string name="yard">ヤード</string>
|
||||
<string name="foot">フィート</string>
|
||||
<string name="mile">マイル</string>
|
||||
<string name="km">キロメートル</string>
|
||||
<string name="m">メートル</string>
|
||||
<string name="nm">海里</string>
|
||||
<string name="min_mile">min/m</string>
|
||||
<string name="min_km">min/km</string>
|
||||
<string name="nm_h">ノット</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_nm_h">海里毎時(ノット)</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_hour_short">時間</string>
|
||||
<string name="shared_string_minute_short">分</string>
|
||||
<string name="shared_string_second_short">秒</string>
|
||||
<string name="welcome_descr">
|
||||
<b>OsmAnd Tracker</b>OsmAndで現在地を共有して他の人たちの現在地も確認できます。<br/>
|
||||
<br/>アプリはTelegram APIを使用するため、Telegramアカウントが必要です。</string>
|
||||
<string name="my_location">現在地</string>
|
||||
<string name="live_now">今現在</string>
|
||||
<string name="timeline">タイムライン</string>
|
||||
<string name="si_min_km">分/キロメートル</string>
|
||||
<string name="si_min_m">分/マイル</string>
|
||||
<string name="units_and_formats">単位と形式</string>
|
||||
<string name="unit_of_length">長さの単位</string>
|
||||
<string name="saved_messages">保存したメッセージ</string>
|
||||
<string name="time_zone_descr">ロケーションメッセージに表示するタイムゾーンを選択します。</string>
|
||||
<string name="time_zone">タイムゾーン</string>
|
||||
<string name="unit_of_length_descr">測定する距離を変更します。</string>
|
||||
<string name="unit_of_speed_system_descr">速度の単位を指定します。</string>
|
||||
<string name="unit_of_speed_system">速度の単位</string>
|
||||
<string name="buffer_time_descr">バッファー内に保存する時間を指定します</string>
|
||||
<string name="buffer_time">バッファー有効時間</string>
|
||||
</resources>
|
|
@ -121,13 +121,11 @@
|
|||
<string name="si_kmh">Kilometer i timen</string>
|
||||
<string name="si_m_s">Meter i sekunder</string>
|
||||
<string name="si_min_km">Minutter per kilometer</string>
|
||||
<string name="si_nm_h">Nautiske mil per time (knop)</string>
|
||||
<string name="si_nm_h">Nautiske mil i timen (knop)</string>
|
||||
<string name="shared_string_hour_short">t</string>
|
||||
<string name="shared_string_minute_short">min</string>
|
||||
<string name="shared_string_second_short">sek</string>
|
||||
<string name="welcome_descr">
|
||||
<b>OsmAnd-sporer</b> lar deg dele din posisjon og se andres i OsmAnd.<br/>
|
||||
<br/>Programmet belager seg på Telegram-API-et, så du må ha en Telegram-konto.</string>
|
||||
<string name="welcome_descr"><b>OsmAnd-sporer</b> lar deg dele din posisjon og se andres i OsmAnd.<br/> <br/>Programmet belager seg på Telegram-API-et, så du må ha en Telegram-konto.</string>
|
||||
<string name="my_location">Min posisjon</string>
|
||||
<string name="last_updated_location">Sist oppdaterte posisjon:</string>
|
||||
<string name="successfully_sent_and_updated">Sendt og oppdatert</string>
|
||||
|
@ -250,4 +248,5 @@
|
|||
<string name="shared_string_apply">Bruk</string>
|
||||
<string name="set_time_timeline_descr">Velg tid å vise</string>
|
||||
<string name="start_end_date">Start–sluttdato</string>
|
||||
<string name="saved_messages">Lagrede meldinger</string>
|
||||
</resources>
|
|
@ -9,7 +9,7 @@
|
|||
<string name="shared_string_telegram">Telegram</string>
|
||||
<string name="privacy_policy_use_telegram">Telegram (de berichten-app) wordt gebruikt om mensen te verbinden en te communiceren met mensen.</string>
|
||||
<string name="privacy_policy_telegram_client">OsmAnd-tracker is een van de app clients die het open platform van Telegram gebruiken. Uw contactpersonen kunnen elke andere Telegram-client gebruiken.</string>
|
||||
<string name="privacy_policy_agree">Door op Doorgaan te klikken gaat u accoord met het privacy beleid van Telegram en van OsmAnd.</string>
|
||||
<string name="privacy_policy_agree">Door op Doorgaan te klikken gaat u akkoord met het privacy beleid van zowel Telegram als OsmAnd.</string>
|
||||
<string name="shared_string_accept">Aanvaard</string>
|
||||
<string name="telegram_privacy_policy">Telegram privacy beleid</string>
|
||||
<string name="osmand_privacy_policy">OsmAnd privacy beleid</string>
|
||||
|
@ -169,7 +169,7 @@
|
|||
<string name="initialization">Initialiseer</string>
|
||||
<string name="location_service_no_gps_available">Selecteer de locatie provider waarmee u uw locatie deelt.</string>
|
||||
<string name="osmand_service">Achtergrond modus</string>
|
||||
<string name="osmand_service_descr">OsmAnd loopt in de achtergrond met uitgeschakeld scherm.</string>
|
||||
<string name="osmand_service_descr">OsmAnd tracker loopt in de achtergrond met uitgeschakeld scherm.</string>
|
||||
<string name="shared_string_distance">Afstand</string>
|
||||
<string name="share_location">Deel locatie</string>
|
||||
<string name="sharing_location">Locatie wordt gedeeld</string>
|
||||
|
@ -213,4 +213,48 @@
|
|||
<string name="my_location">Mijn locatie</string>
|
||||
<string name="live_now">Nu live</string>
|
||||
<string name="timeline">Tijdlijn</string>
|
||||
<string name="sharing_time">Tijd van delen</string>
|
||||
<string name="set_visible_time_for_all">Zet zichtbare tijd voor iedereen</string>
|
||||
<string name="visible_time_for_all">Zichtbare tijd voor iedereen</string>
|
||||
<string name="direction">Richting</string>
|
||||
<string name="precision">Nauwkeurigheid</string>
|
||||
<string name="altitude">Hoogte</string>
|
||||
<string name="bearing">Richting</string>
|
||||
<string name="proxy_key">Sleutel</string>
|
||||
<string name="proxy_password">Wachtwoord</string>
|
||||
<string name="proxy_username">Gebruikersnaam</string>
|
||||
<string name="proxy_credentials">(Gebruiker)gegevens</string>
|
||||
<string name="proxy_port">Poort</string>
|
||||
<string name="proxy_server">Server</string>
|
||||
<string name="shared_string_connection">Verbinding</string>
|
||||
<string name="shared_string_enable">Activeer</string>
|
||||
<string name="proxy_type">Proxy soort</string>
|
||||
<string name="proxy_connected">Verbonden</string>
|
||||
<string name="proxy_disconnected">Niet verbonden</string>
|
||||
<string name="proxy_settings">Proxy instellingen</string>
|
||||
<string name="proxy">Proxy</string>
|
||||
<string name="privacy">Privacy</string>
|
||||
<string name="shared_string_select">Kies</string>
|
||||
<string name="min_logging_distance">Minimale logging-afstand</string>
|
||||
<string name="min_logging_distance_descr">Filter: minimale afstand voordat een nieuw punt gelogd wordt</string>
|
||||
<string name="min_logging_accuracy">Minimale logging-nauwkeurigheid</string>
|
||||
<string name="min_logging_accuracy_descr">Filter: geen logging tenzij de nauwkeurigheid bereikt is</string>
|
||||
<string name="min_logging_speed">Minimale logging-snelheid</string>
|
||||
<string name="min_logging_speed_descr">Filter: geen logging beneden geselecteerde snelheid</string>
|
||||
<string name="gpx_settings">GPX instellingen</string>
|
||||
<string name="timeline_no_data_descr">We hebben geen data verzameld op de geselecteerde dag</string>
|
||||
<string name="timeline_no_data">Geen data</string>
|
||||
<string name="shared_string_end">Eind</string>
|
||||
<string name="shared_string_start">Start</string>
|
||||
<string name="shared_string_apply">Pas toe</string>
|
||||
<string name="set_time_timeline_descr">Kies te tonen tijd</string>
|
||||
<string name="start_end_date">Start — Eind datum</string>
|
||||
<string name="saved_messages">Bewaarde gesprekken</string>
|
||||
<string name="time_zone_descr">Selecteer de te tonen tijdzone in uw locatie berichten.</string>
|
||||
<string name="time_zone">Tijdzone</string>
|
||||
<string name="units_and_formats">Eenheden & formaten</string>
|
||||
<string name="unit_of_length_descr">Wijzig de eenheid van afstand voor metingen.</string>
|
||||
<string name="unit_of_length">Afstand eenheden</string>
|
||||
<string name="unit_of_speed_system_descr">Definieer de eenheid voor snelheid.</string>
|
||||
<string name="unit_of_speed_system">Eenheid van snelheid</string>
|
||||
</resources>
|
|
@ -25,7 +25,7 @@
|
|||
<string name="logout_from_osmand_telegram">Wylogować się z OsmAnd Tracker\?</string>
|
||||
<string name="shared_string_name">Nazwa</string>
|
||||
<string name="by_distance">Według odległości</string>
|
||||
<string name="by_name">Według nazwy</string>
|
||||
<string name="by_name">Alfabetycznie</string>
|
||||
<string name="by_group">Według grupy</string>
|
||||
<string name="shared_string_sort">Sortuj</string>
|
||||
<string name="shared_string_sort_by">Sortuj według</string>
|
||||
|
@ -203,7 +203,7 @@
|
|||
<string name="shared_string_telegram">Telegram</string>
|
||||
<string name="privacy_policy_use_telegram">Telegram (aplikacji do wysyłania wiadomości) jest używana do łączenia i komunikowania się z ludźmi.</string>
|
||||
<string name="privacy_policy_telegram_client">OsmAnd Tracker to jeden z klientów używających otwartej platformy Telegramu. Twoje kontrakty mogą używać innych klientów Telegramu.</string>
|
||||
<string name="privacy_policy_agree">Klikając \"Kontynuuj\" zgadzam się z warunkami Polityki Prywatności Telegramu i Polityki Prywatności OsmAnd.</string>
|
||||
<string name="privacy_policy_agree">Klikając \"Kontynuuj\" zgadzasz się na warunki polityki prywatności Telegramu i OsmAnd.</string>
|
||||
<string name="shared_string_accept">Akceptuj</string>
|
||||
<string name="telegram_privacy_policy">Polityka prywatności Telegramu</string>
|
||||
<string name="osmand_privacy_policy">Polityka prywatności OsmAnd</string>
|
||||
|
@ -250,4 +250,13 @@
|
|||
<string name="shared_string_start">Start</string>
|
||||
<string name="set_time_timeline_descr">Wybierz czas wyświetlania</string>
|
||||
<string name="start_end_date">Daty rozpoczęcia i zakończenia</string>
|
||||
<string name="saved_messages">Zapisane wiadomości</string>
|
||||
<string name="time_zone">Strefa czasowa</string>
|
||||
<string name="units_and_formats">Jednostki i formaty</string>
|
||||
<string name="unit_of_length_descr">Zmienia jednostki długości.</string>
|
||||
<string name="unit_of_length">Jednostki długości</string>
|
||||
<string name="unit_of_speed_system_descr">Zdefiniuj jednostkę prędkości.</string>
|
||||
<string name="unit_of_speed_system">Jednostka prędkości</string>
|
||||
<string name="buffer_time_descr">Maksymalny czas przechowywania punktów w buforze</string>
|
||||
<string name="buffer_time">Czas ważności bufora</string>
|
||||
</resources>
|
|
@ -102,7 +102,7 @@
|
|||
<string name="minutes_format">%1$d m</string>
|
||||
<string name="hours_format">%1$d h</string>
|
||||
<string name="shared_string_install">Instalar</string>
|
||||
<string name="shared_string_share">Compartilhar</string>
|
||||
<string name="shared_string_share">Enviar</string>
|
||||
<string name="shared_string_back">Voltar</string>
|
||||
<string name="visible_time_for_all">Hora visível para todos</string>
|
||||
<string name="set_time_description">Defina a hora em que seus contatos e grupos selecionados verão sua localização em tempo real.</string>
|
||||
|
@ -198,7 +198,7 @@
|
|||
<string name="shared_string_telegram">Telegram</string>
|
||||
<string name="privacy_policy_use_telegram">Telegrama (o aplicativo de mensagens) é usado para conectar e se comunicar com as pessoas.</string>
|
||||
<string name="privacy_policy_telegram_client">OsmAnd tracker é um dos clientes que usam a Plataforma aberta do Telegram . Seus contatos podem usar qualquer outro cliente Telegram.</string>
|
||||
<string name="privacy_policy_agree">Ao clicar em continuar, você concorda com as condições da política de privacidade do Telegram e da política de privacidade da OsmAnd.</string>
|
||||
<string name="privacy_policy_agree">Ao clicar em \"Continuar\", você concorda com as condições da política de privacidade do Telegram- e OsmAnd.</string>
|
||||
<string name="shared_string_accept">Aceitar</string>
|
||||
<string name="telegram_privacy_policy">Política de privacidade do Telegram</string>
|
||||
<string name="osmand_privacy_policy">"Política de privacidade do OsmAnd "</string>
|
||||
|
@ -250,4 +250,14 @@
|
|||
<string name="shared_string_apply">Aplicar</string>
|
||||
<string name="set_time_timeline_descr">Selecionar a hora para exibir</string>
|
||||
<string name="start_end_date">Data de início - fim</string>
|
||||
<string name="saved_messages">Mensagens salvas</string>
|
||||
<string name="units_and_formats">Unidades e formatos</string>
|
||||
<string name="unit_of_length_descr">Altere as unidades de medida.</string>
|
||||
<string name="unit_of_length">Unidades de medida</string>
|
||||
<string name="time_zone_descr">Selecione o fuso horário para mostrar nas mensagens de localização.</string>
|
||||
<string name="time_zone">Fuso horário</string>
|
||||
<string name="unit_of_speed_system_descr">Defina a unidade de velocidade.</string>
|
||||
<string name="unit_of_speed_system">Unidade de velocidade</string>
|
||||
<string name="buffer_time_descr">Tempo máximo para armazenar pontos no buffer</string>
|
||||
<string name="buffer_time">Tempo de expiração do buffer</string>
|
||||
</resources>
|
|
@ -201,7 +201,7 @@
|
|||
<string name="shared_string_authorization_descr">Por favor, insira o número de telefone do seu Telegram em formato internacional</string>
|
||||
<string name="set_visible_time_for_all">Definir tempo visível para todos</string>
|
||||
<string name="phone_number_title">Número de telefone</string>
|
||||
<string name="privacy_policy_agree">Ao clicar em continuar, você concorda com as condições da política de privacidade do Telegram e da política de privacidade da OsmAnd.</string>
|
||||
<string name="privacy_policy_agree">Ao clicar em \"Continuar\" você concorda com as condições da política de privacidade do Telegram e OsmAnd.</string>
|
||||
<string name="si_mi_feet">Milhas/pés</string>
|
||||
<string name="monitoring_is_enabled">Monitoramento está ativado</string>
|
||||
<string name="osmand_connect_desc">Escolha a versão OsmAnd que OsmAnd Tracker usa para exibir posições.</string>
|
||||
|
@ -250,4 +250,14 @@
|
|||
<string name="choose_osmand_desc">Selecione a versão OsmAnd, onde os contatos serão exibidos no mapa.</string>
|
||||
<string name="si_mi_yard">Milhas/jardas</string>
|
||||
<string name="initializing">Iniciando</string>
|
||||
<string name="saved_messages">Mensagens gravadas</string>
|
||||
<string name="time_zone_descr">Selecione o fuso horário a mostrar nas suas mensagens de localização.</string>
|
||||
<string name="time_zone">Fuso horário</string>
|
||||
<string name="units_and_formats">Unidades e formatos</string>
|
||||
<string name="unit_of_length_descr">Alterar unidade de distância.</string>
|
||||
<string name="unit_of_length">Unidades de comprimento</string>
|
||||
<string name="unit_of_speed_system_descr">Definir unidade de velocidade.</string>
|
||||
<string name="unit_of_speed_system">Unidade de velocidade</string>
|
||||
<string name="buffer_time_descr">Tempo máximo para armazenar pontos no buffer</string>
|
||||
<string name="buffer_time">Tempo de expiração do buffer</string>
|
||||
</resources>
|
|
@ -16,7 +16,7 @@
|
|||
<string name="altitude">Altitude</string>
|
||||
<string name="shared_string_search">Pesquisar</string>
|
||||
<string name="shared_string_ok">Ok</string>
|
||||
<string name="app_name_short">OsmAnd Tracker</string>
|
||||
<string name="app_name_short">Rastreador OsmAnd</string>
|
||||
<string name="shared_string_telegram">Telegram</string>
|
||||
<string name="shared_string_appearance">Aparência</string>
|
||||
<string name="shared_string_update">Atualizar</string>
|
||||
|
@ -60,7 +60,7 @@
|
|||
<string name="timeline_description">Ative o monitoramento para salvar todos os locais no histórico.</string>
|
||||
<string name="privacy_policy_use_telegram">Telegrama (o aplicativo de mensagens) é usado para conectar e se comunicar com as pessoas.</string>
|
||||
<string name="privacy_policy_telegram_client">OsmAnd tracker é um dos clientes que usam a Plataforma aberta do Telegram . Seus contatos podem usar qualquer outro cliente Telegram.</string>
|
||||
<string name="privacy_policy_agree">Ao clicar em continuar, você concorda com as condições da política de privacidade do Telegram e da política de privacidade da OsmAnd.</string>
|
||||
<string name="privacy_policy_agree">Ao clicar em \"Continuar\" você concorda com as condições da política de privacidade do Telegram e OsmAnd.</string>
|
||||
<string name="shared_string_accept">Aceitar</string>
|
||||
<string name="telegram_privacy_policy">Política de privacidade do Telegram</string>
|
||||
<string name="osmand_privacy_policy">Política de privacidade do OsmAnd</string>
|
||||
|
@ -249,4 +249,14 @@
|
|||
<string name="my_location">Minha localização</string>
|
||||
<string name="live_now">Ao vivo agora</string>
|
||||
<string name="timeline">Cronologia</string>
|
||||
<string name="saved_messages">Mensagens gravadas</string>
|
||||
<string name="time_zone_descr">Selecione o fuso horário para mostrar nas suas mensagens de localização.</string>
|
||||
<string name="time_zone">Fuso horário</string>
|
||||
<string name="units_and_formats">Unidades e formatos</string>
|
||||
<string name="unit_of_length_descr">Alterar unidade de medida de distância.</string>
|
||||
<string name="unit_of_length">Unidades de comprimento</string>
|
||||
<string name="unit_of_speed_system_descr">Definir unidade de velocidade.</string>
|
||||
<string name="unit_of_speed_system">Unidade de velocidade</string>
|
||||
<string name="buffer_time_descr">Tempo máximo para armazenar pontos no buffer</string>
|
||||
<string name="buffer_time">Tempo de expiração do buffer</string>
|
||||
</resources>
|
|
@ -1,14 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="timeline_available_for_free_now">"Попробуйте функцию Хронология бесплатно.</string>
|
||||
<string name="timeline_available_for_free_now">Хронология теперь доступна бесплатно.</string>
|
||||
<string name="location_recording_enabled">Запись местоположений включена</string>
|
||||
<string name="privacy_policy_use_telegram">Telegram (менеджер сообщений) используется для связи и общения с людьми.</string>
|
||||
<string name="privacy_policy_telegram_client">OsmAnd Tracker является одним из клиентов, использующих открытую платформу Telegram. Ваши контакты могут использовать любой другой клиент Telegram.</string>
|
||||
<string name="privacy_policy_agree">Нажимая продолжить, вы соглашаетесь с условиями политики конфиденциальности Telegram и OsmAnd.</string>
|
||||
<string name="privacy_policy_agree">Нажимая \"Продолжить\", вы соглашаетесь с условиями политики конфиденциальности Telegram и OsmAnd.</string>
|
||||
<string name="timeline_description">Включите мониторинг, чтобы сохранять все местоположения в истории.</string>
|
||||
<string name="last_update_from_telegram">Последнее обновление в Telegram</string>
|
||||
<string name="device_name">Имя устройства</string>
|
||||
<string name="shared_string_hide">Спрятать</string>
|
||||
<string name="shared_string_hide">Скрыть</string>
|
||||
<string name="share_location_as_description_second_line">Вы можете создать и просмотреть идентификатор устройства в клиенте telegram, используя %1$s чат бота. %2$s</string>
|
||||
<string name="logout_no_internet_msg">Подключитесь к Интернету, чтобы правильно выйти из Telegram.</string>
|
||||
<string name="set_visible_time_for_all">Установить видимое время для всех</string>
|
||||
|
@ -25,7 +25,7 @@
|
|||
<string name="no_location_permission">Приложение не имеет разрешения на доступ к данным о местоположении.</string>
|
||||
<string name="gps_not_available">Пожалуйста, включите «Местоположение» в системных настройках</string>
|
||||
<string name="location_service_no_gps_available">Выберите один из провайдеров определения местоположения, чтобы поделиться своим местоположением.</string>
|
||||
<string name="background_work">Работа в фоне</string>
|
||||
<string name="background_work">Фоновый режим</string>
|
||||
<string name="battery_optimization_description">Отключите оптимизацию батареи для OsmAnd Tracker, чтобы не было внезапного отключения в фоновом режиме.</string>
|
||||
<string name="osmand_service">Фоновый режим</string>
|
||||
<string name="osmand_service_descr">OsmAnd Tracker работает в фоновом режиме с выключенным экраном.</string>
|
||||
|
@ -95,7 +95,7 @@
|
|||
<string name="show_on_map">Показать на карте</string>
|
||||
<string name="open_osmand">Открыть OsmAnd</string>
|
||||
<string name="shared_string_all">Все</string>
|
||||
<string name="shared_string_off">Отключить</string>
|
||||
<string name="shared_string_off">Выкл.</string>
|
||||
<string name="shared_string_settings">Настройки</string>
|
||||
<string name="sharing_time">Время трансляции</string>
|
||||
<string name="turn_off_location_sharing">Отключить трансляцию</string>
|
||||
|
@ -109,7 +109,7 @@
|
|||
<string name="successfully_sent_and_updated">Успешно отправлено и обновлено</string>
|
||||
<string name="not_possible_to_send_to_telegram_chats">Невозможно отправить Telegram чаты:</string>
|
||||
<string name="waiting_for_response_from_telegram">Ожидание ответа от Telegram</string>
|
||||
<string name="searching_for_gps">Поиск GPS</string>
|
||||
<string name="searching_for_gps">Поиск GPS…</string>
|
||||
<string name="connecting_to_the_internet">Подключение к Интернету</string>
|
||||
<string name="background_work_description">Измените настройки оптимизации батареи, чтобы обеспечить стабильную отправку местоположения.</string>
|
||||
<string name="location_history">История местоположений</string>
|
||||
|
@ -121,7 +121,7 @@
|
|||
<string name="location_history_desc">Скройте контакты, которые не обновили свое местоположение за определенный промежуток времени.</string>
|
||||
<string name="share_location_as">Поделиться местоположением как</string>
|
||||
<string name="share_location_as_description">Если вы хотите подключить несколько устройств к одной учетной записи Telegram, вам необходимо использовать другое устройство для трансляции местоположения.</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="connected_account">Связанная учетная запись</string>
|
||||
<string name="shared_string_account">Учетная запись</string>
|
||||
|
@ -129,21 +129,21 @@
|
|||
<string name="install_osmand_dialog_message">Вам необходимо сначала установить бесплатную или платную версию OsmAnd</string>
|
||||
<string name="disconnect_from_telegram">Как отключить OsmAnd Tracker от Telegram</string>
|
||||
<string name="logout_help_desc">Как отключить OsmAnd Tracker от Telegram</string>
|
||||
<string name="disconnect_from_telegram_desc">Отмена доступа к отправке локаций. Откройте Telegram, перейдите в Настройки - Конфиденциальность и безопасность - Сессии и завершите сеанс OsmAnd Tracker.</string>
|
||||
<string name="disconnect_from_telegram_desc">Для отзыва доступа к трансляции местоположения. Откройте Telegram, перейдите в Настройки → Конфиденциальность и безопасность → Активные сессии, и завершите сессию OsmAnd Tracker.</string>
|
||||
<string name="logout_from_osmand_telegram">Выйти из OsmAnd Tracker?</string>
|
||||
<string name="shared_string_login">Войти</string>
|
||||
<string name="shared_string_logout">Выйти</string>
|
||||
<string name="logout_from_osmand_telegram_descr">Вы уверены, что хотите выйти из OsmAnd Tracker, так вы не сможете делиться местоположением или не видеть местоположения других?</string>
|
||||
<string name="logout_from_osmand_telegram_descr">Вы уверены, что хотите выйти из OsmAnd Tracker\? Выйдя из приложения, вы не сможете делиться местоположением или не видеть местоположения других.</string>
|
||||
<string name="not_found_yet">Не найдено</string>
|
||||
<string name="re_send_location">Отправить местоположение</string>
|
||||
<string name="last_available_location">Последнее местоположение</string>
|
||||
<string name="sharing_status">Статус отправки</string>
|
||||
<string name="location_sharing_status">Трансляция: %1$s</string>
|
||||
<string name="shared_string_enabled">включена</string>
|
||||
<string name="shared_string_enabled">Включен</string>
|
||||
<string name="shared_string_status">Статус</string>
|
||||
<string name="no_gps_connection">Отсутствует GPS</string>
|
||||
<string name="no_internet_connection">Отсутствует интернет</string>
|
||||
<string name="shared_string_disable">Выкл.</string>
|
||||
<string name="shared_string_disable">Выключить</string>
|
||||
<string name="shared_string_save">Сохранить</string>
|
||||
<string name="add_device">Добавить устройство</string>
|
||||
<string name="go_to_settings">Перейти в настройки</string>
|
||||
|
@ -181,7 +181,7 @@
|
|||
<string name="shared_string_map">Карта</string>
|
||||
<string name="shared_string_text">Текст</string>
|
||||
<string name="map_and_text">Карта и текст</string>
|
||||
<string name="stop_sharing_all">Совместное использование включено (выключено)</string>
|
||||
<string name="stop_sharing_all">Совместное использование включено (выключить)</string>
|
||||
<string name="my_location_search_hint">Поиск: группа или контакт</string>
|
||||
<string name="app_name">OsmAnd Online GPS Tracker</string>
|
||||
<string name="logging_out">Выход</string>
|
||||
|
@ -193,7 +193,7 @@
|
|||
<string name="foot">фут</string>
|
||||
<string name="km">км</string>
|
||||
<string name="m">м</string>
|
||||
<string name="nm">мор. мл</string>
|
||||
<string name="nm">мор. миля</string>
|
||||
<string name="min_mile">мин/м</string>
|
||||
<string name="min_km">мин/км</string>
|
||||
<string name="nm_h">nmi/ч</string>
|
||||
|
@ -222,14 +222,42 @@
|
|||
<string name="proxy_server">Сервер</string>
|
||||
<string name="shared_string_connection">Соединение</string>
|
||||
<string name="proxy_type">Тип прокси</string>
|
||||
<string name="proxy_connected">Подключено</string>
|
||||
<string name="proxy_disconnected">Отключено</string>
|
||||
<string name="proxy_connected">Соединено</string>
|
||||
<string name="proxy_disconnected">Разъединено</string>
|
||||
<string name="proxy_settings">Настройки прокси</string>
|
||||
<string name="proxy">Прокси</string>
|
||||
<string name="gpx_settings">настройки GPX</string>
|
||||
<string name="gpx_settings">Настройки GPX</string>
|
||||
<string name="timeline_no_data_descr">Нет собранных данных за выбранный день</string>
|
||||
<string name="timeline_no_data">Нет данных</string>
|
||||
<string name="shared_string_apply">Применить</string>
|
||||
<string name="start_end_date">Дата начала - окончания</string>
|
||||
<string name="shared_string_enable">Вкл.</string>
|
||||
<string name="start_end_date">Дата начала — окончания</string>
|
||||
<string name="shared_string_enable">Включить</string>
|
||||
<string name="mile">миля</string>
|
||||
<string name="mile_per_hour">миль/ч</string>
|
||||
<string name="altitude">Высота</string>
|
||||
<string name="bearing">Ориентация</string>
|
||||
<string name="proxy_key">Ключ</string>
|
||||
<string name="proxy_password">Пароль</string>
|
||||
<string name="proxy_username">Имя пользователя</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="shared_string_end">Конец</string>
|
||||
<string name="shared_string_start">Начало</string>
|
||||
<string name="set_time_timeline_descr">Выберите время для отображения</string>
|
||||
<string name="saved_messages">Сохраненные сообщения</string>
|
||||
<string name="time_zone_descr">Выберите часовой пояс, чтобы показывать время вашего местоположения в сообщениях.</string>
|
||||
<string name="time_zone">Часовой пояс</string>
|
||||
<string name="units_and_formats">Единицы измерения и форматы</string>
|
||||
<string name="unit_of_length_descr">Изменить единицу измерения расстояния.</string>
|
||||
<string name="unit_of_length">Единицы измерения расстояния</string>
|
||||
<string name="unit_of_speed_system_descr">Выберите единицу измерения скорости.</string>
|
||||
<string name="unit_of_speed_system">Единица измерения скорости</string>
|
||||
<string name="buffer_time_descr">Максимальное время хранения точек в буфере</string>
|
||||
<string name="buffer_time">Срок действия буфера</string>
|
||||
</resources>
|
|
@ -68,7 +68,7 @@
|
|||
<string name="last_available_location">Ùrtima positzione disponìbile</string>
|
||||
<string name="sharing_status">Istadu de cumpartzidura</string>
|
||||
<string name="location_sharing_status">Cumpartzidura: %1$s</string>
|
||||
<string name="shared_string_enabled">Abilitada</string>
|
||||
<string name="shared_string_enabled">Abilitadu</string>
|
||||
<string name="no_gps_connection">Peruna connessione GPS</string>
|
||||
<string name="no_internet_connection">Peruna connessione a ìnternet</string>
|
||||
<string name="add_device">Annanghe unu dispositivu</string>
|
||||
|
@ -197,7 +197,7 @@
|
|||
<string name="shared_string_telegram">Telegram</string>
|
||||
<string name="privacy_policy_use_telegram">Telegram (s\'aplicatzione pro sos messàgios) benit impreadu pro cunnètere e fàghere comunicare sa gente.</string>
|
||||
<string name="privacy_policy_telegram_client">OsmAnd Tracker est una de sas aplicatziones clientes chi impreant sa prataforma aberta de Telegram. Sos cuntatos tuos podent impreare cale si siat àtera aplicatzione cliente de Telegram.</string>
|
||||
<string name="privacy_policy_agree">Incarchende \"sighi\" atzetas sas cunditziones de sa Polìtica de Riservadesa de Telegram e de cussa de OsmAnd.</string>
|
||||
<string name="privacy_policy_agree">Incarchende \"Sighi\" atzetas sas cunditziones de sa Polìtica de Riservadesa de Telegram e de OsmAnd.</string>
|
||||
<string name="shared_string_accept">Atzeta</string>
|
||||
<string name="telegram_privacy_policy">Polìtica de riservadesa de Telegram</string>
|
||||
<string name="osmand_privacy_policy">Polìtica de riservadesa de OsmAnd</string>
|
||||
|
@ -233,7 +233,7 @@
|
|||
<string name="proxy_settings">Impostatziones de su servidore intermediàriu</string>
|
||||
<string name="proxy">Servidore intermediàriu (proxy)</string>
|
||||
<string name="privacy">Privadesa</string>
|
||||
<string name="bearing">Andamentu</string>
|
||||
<string name="bearing">Orientamentu</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>
|
||||
|
@ -249,4 +249,14 @@
|
|||
<string name="shared_string_apply">Àplica</string>
|
||||
<string name="set_time_timeline_descr">Ischerta su tempus de ammustrare</string>
|
||||
<string name="start_end_date">Data de incumintzu — de acabu</string>
|
||||
<string name="saved_messages">Messàgios sarvados</string>
|
||||
<string name="time_zone_descr">Issèbera su fusu oràriu de ammustrare in sos messàgios de positzione tuos.</string>
|
||||
<string name="time_zone">Fusu oràriu</string>
|
||||
<string name="units_and_formats">Unidades e formados</string>
|
||||
<string name="unit_of_length_descr">Muda s\'unidade de mèdida pro sa distàntzia.</string>
|
||||
<string name="unit_of_length">Unidades de longària</string>
|
||||
<string name="unit_of_speed_system_descr">Issèbera s\'unidade de letresa.</string>
|
||||
<string name="unit_of_speed_system">Unidade de lestresa</string>
|
||||
<string name="buffer_time_descr">Tempus a pustis de su cale sos messàgios de positzione in sa memòria tampone (buffer) ant a èssere iscantzellados</string>
|
||||
<string name="buffer_time">Tempus de iscadidura de sa memòria tampone</string>
|
||||
</resources>
|
|
@ -49,4 +49,8 @@
|
|||
<string name="si_nm">Наутичке миље</string>
|
||||
<string name="si_mi_meters">Миље/метри</string>
|
||||
<string name="shared_string_apply">Примени</string>
|
||||
<string name="shared_string_enabled">Укључен</string>
|
||||
<string name="units_and_formats">Мерне јединице & форматирања</string>
|
||||
<string name="unit_of_length_descr">Промени јединице за дужину.</string>
|
||||
<string name="unit_of_length">Јединице дужине</string>
|
||||
</resources>
|
263
OsmAnd-telegram/res/values-tr/strings.xml
Normal file
|
@ -0,0 +1,263 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="shared_string_apply">Uygula</string>
|
||||
<string name="shared_string_select">Seç</string>
|
||||
<string name="shared_string_enable">Etkinleştir</string>
|
||||
<string name="altitude">Rakım</string>
|
||||
<string name="shared_string_search">Arama</string>
|
||||
<string name="shared_string_ok">Tamam</string>
|
||||
<string name="shared_string_update">Güncelle</string>
|
||||
<string name="average_altitude">Ortalama yükseklik</string>
|
||||
<string name="average_speed">Ortalama hız</string>
|
||||
<string name="shared_string_map">Harita</string>
|
||||
<string name="shared_string_add">Ekle</string>
|
||||
<string name="shared_string_hide">Gizle</string>
|
||||
<string name="shared_string_later">Daha sonra</string>
|
||||
<string name="shared_string_enabled">Etkin</string>
|
||||
<string name="shared_string_status">Durum</string>
|
||||
<string name="shared_string_disable">Devre dışı bırak</string>
|
||||
<string name="shared_string_save">Kaydet</string>
|
||||
<string name="shared_string_name">İsim</string>
|
||||
<string name="shared_string_sort">Sırala</string>
|
||||
<string name="shared_string_exit">Çıkış</string>
|
||||
<string name="shared_string_close">Kapat</string>
|
||||
<string name="shared_string_all">Tümü</string>
|
||||
<string name="shared_string_off">Kapalı</string>
|
||||
<string name="shared_string_install">Yükle</string>
|
||||
<string name="shared_string_share">Paylaş</string>
|
||||
<string name="shared_string_back">Geri</string>
|
||||
<string name="shared_string_continue">Devam et</string>
|
||||
<string name="shared_string_cancel">İptal</string>
|
||||
<string name="shared_string_settings">Ayarlar</string>
|
||||
<string name="osmand_service">Arka plan modu</string>
|
||||
<string name="shared_string_distance">Mesafe</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="nm_h">nmi/h</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">Kilometre/saat</string>
|
||||
<string name="si_mph">Mil/saat</string>
|
||||
<string name="si_m_s">Metre/saniye</string>
|
||||
<string name="si_min_km">Dakika/kilometre</string>
|
||||
<string name="si_min_m">Dakika/mil</string>
|
||||
<string name="si_nm_h">Deniz mili/saat (knot)</string>
|
||||
<string name="si_mi_feet">Mil/feet</string>
|
||||
<string name="si_mi_yard">Mil/yard</string>
|
||||
<string name="si_km_m">Kilometre/metre</string>
|
||||
<string name="si_nm">Deniz mili</string>
|
||||
<string name="si_mi_meters">Mil/metre</string>
|
||||
<string name="shared_string_end">Bitiş</string>
|
||||
<string name="shared_string_start">Başlangıç</string>
|
||||
<string name="set_time_timeline_descr">Görüntülemek için zaman seçin</string>
|
||||
<string name="start_end_date">Başlangıç — Bitiş tarihi</string>
|
||||
<string name="timeline_no_data_descr">Seçilen gün için toplanan veri yok</string>
|
||||
<string name="timeline_no_data">Veri yok</string>
|
||||
<string name="min_logging_distance">Minimum kayıt mesafesi</string>
|
||||
<string name="min_logging_distance_descr">Filtre: yeni bir nokta kaydetmek için minimum mesafe</string>
|
||||
<string name="min_logging_accuracy">Minimum kayıt hassasiyeti</string>
|
||||
<string name="min_logging_accuracy_descr">Filtre: hassasiyete ulaşılmadığı sürece kaydetme yok</string>
|
||||
<string name="min_logging_speed">Minimum kayıt hızı</string>
|
||||
<string name="min_logging_speed_descr">Filtre: seçili hızın altında kaydetme yok</string>
|
||||
<string name="gpx_settings">GPX ayarları</string>
|
||||
<string name="proxy_key">Anahtar</string>
|
||||
<string name="proxy_password">Parola</string>
|
||||
<string name="proxy_username">Kullanıcı adı</string>
|
||||
<string name="proxy_credentials">Kimlik bilgileri</string>
|
||||
<string name="proxy_port">Port</string>
|
||||
<string name="proxy_server">Sunucu</string>
|
||||
<string name="shared_string_connection">Bağlantı</string>
|
||||
<string name="proxy_type">Proxy türü</string>
|
||||
<string name="proxy_connected">Bağlandı</string>
|
||||
<string name="proxy_disconnected">Bağlantı kesildi</string>
|
||||
<string name="proxy_settings">Proxy Ayarları</string>
|
||||
<string name="proxy">Proxy</string>
|
||||
<string name="privacy">Gizlilik</string>
|
||||
<string name="direction">Yön</string>
|
||||
<string name="precision">Hassaslık</string>
|
||||
<string name="search_contacts">Kişileri ara</string>
|
||||
<string name="search_contacts_descr">Tüm gruplarınızda ve kişilerinizde arayın.</string>
|
||||
<string name="type_contact_or_group_name">Kişi veya grup adı yazın</string>
|
||||
<string name="timeline_available_for_free_now">Zaman çizelgesi artık ücretsiz olarak kullanılabilen bir özelliktir.</string>
|
||||
<string name="disable_monitoring">İzlemeyi devre dışı bırak</string>
|
||||
<string name="location_recording_enabled">Konum kaydı etkin</string>
|
||||
<string name="timeline_description">Tüm konumları geçmişe kaydetmek için izlemeyi etkinleştirin.</string>
|
||||
<string name="app_name_short">OsmAnd Tracker</string>
|
||||
<string name="shared_string_telegram">Telegram</string>
|
||||
<string name="privacy_policy_use_telegram">Telegram (mesajlaşma uygulaması) insanlarla bağlantı ve iletişim kurmak için kullanılmaktadır.</string>
|
||||
<string name="privacy_policy_telegram_client">OsmAnd Tracker, Telegram açık platformunu kullanan istemcilerden biridir. Kişileriniz başka herhangi bir Telegram istemcisini kullanabilir.</string>
|
||||
<string name="privacy_policy_agree">\"Devam et\" butonuna tıklayarak, Telegram ve OsmAnd Gizlilik Politikası koşullarını kabul etmiş olursunuz.</string>
|
||||
<string name="shared_string_accept">Kabul et</string>
|
||||
<string name="telegram_privacy_policy">Telegram Gizlilik Politikası</string>
|
||||
<string name="osmand_privacy_policy">OsmAnd Gizlilik Politikası</string>
|
||||
<string name="how_it_works">Nasıl çalışır</string>
|
||||
<string name="received_gps_points">Alınan GPX noktaları: %1$s</string>
|
||||
<string name="shared_string_appearance">Görünüm</string>
|
||||
<string name="show_gps_points">GPS noktalarını göster</string>
|
||||
<string name="show_gps_points_descr">Toplanan ve gönderilen GPS noktalarının miktarını göster.</string>
|
||||
<string name="please_update_osmand">Verileri haritada görüntülemek için lütfen OsmAnd\'ı güncelleyin</string>
|
||||
<string name="bearing">Konum açısı</string>
|
||||
<string name="gps_points_in_buffer">gönderilen (%1$d arabellekte)</string>
|
||||
<string name="points_size">%1$d nokta</string>
|
||||
<string name="shared_string_date">Tarih</string>
|
||||
<string name="shared_string_collected">Toplanmış</string>
|
||||
<string name="gps_points">GPS noktaları</string>
|
||||
<string name="shared_string_sent">Gönderilen</string>
|
||||
<string name="monitoring_is_enabled">İzleme etkin</string>
|
||||
<string name="monitoring_is_disabled">İzleme devre dışı</string>
|
||||
<string name="time_on_the_move">Hareket zamanı</string>
|
||||
<string name="open_in_osmand">OsmAnd\'da göster</string>
|
||||
<string name="end_date">Bitiş tarihi</string>
|
||||
<string name="start_date">Başlangıç tarihi</string>
|
||||
<string name="send_location_as">Konum gönderme biçimi</string>
|
||||
<string name="send_location_as_descr">Konumunuzdaki mesajların nasıl görüneceğini seçin.</string>
|
||||
<string name="shared_string_text">Metin</string>
|
||||
<string name="map_and_text">Harita ve metin</string>
|
||||
<string name="last_update_from_telegram">Telegram\'dan son güncelleme</string>
|
||||
<string name="enter_another_device_name">Daha önce kullanmadığınız bir isim seçin</string>
|
||||
<string name="device_added_successfully">%1$s eklendi.</string>
|
||||
<string name="error_adding_new_device">Yeni cihaz eklenemedi</string>
|
||||
<string name="enter_device_name_description">Yeni cihazınıza en fazla 200 sembolden oluşan bir isim verin.</string>
|
||||
<string name="device_name_is_too_long">Cihaz adı çok uzun</string>
|
||||
<string name="device_name_cannot_be_empty">Cihaz adı boş olamaz</string>
|
||||
<string name="device_name">Cihaz adı</string>
|
||||
<string name="share_location_as_description_second_line">%1$s sohbet botunu kullanarak Cihaz kimliğini Telegram istemcisinde oluşturabilir ve görüntüleyebilirsiniz. %2$s</string>
|
||||
<string name="share_location_as_description">Bir Telegram hesabına birden fazla cihaz bağlamak istiyorsanız, konumunuzu paylaşmak için farklı Cihaz kullanmanız gerekmektedir.</string>
|
||||
<string name="last_updated_location">Son güncellenen konum:</string>
|
||||
<string name="successfully_sent_and_updated">Başarıyla gönderildi ve güncellendi</string>
|
||||
<string name="not_possible_to_send_to_telegram_chats">Telegram sohbetlerine göndermek mümkün değil:</string>
|
||||
<string name="waiting_for_response_from_telegram">Telegram\'dan cevap bekleniyor</string>
|
||||
<string name="sending_location_messages">Konum gönderiliyor</string>
|
||||
<string name="initializing">Başlatılıyor</string>
|
||||
<string name="searching_for_gps">Konumlandırılıyor…</string>
|
||||
<string name="connecting_to_the_internet">İnternete bağlanılıyor</string>
|
||||
<string name="background_work_description">Konum paylaşımını stabilize etmek için pil optimizasyon ayarlarını değiştirin.</string>
|
||||
<string name="background_work">Arka plan çalışması</string>
|
||||
<string name="battery_optimization_description">Arka planda iken aniden kapanmaması için OsmAnd Tracker için pil optimizasyonunu kapatın.</string>
|
||||
<string name="sharing_in_background">Arka planda paylaşma</string>
|
||||
<string name="go_to_settings">Ayarlara git</string>
|
||||
<string name="not_sent_yet">Henüz gönderilmedi</string>
|
||||
<string name="not_found_yet">Henüz bulunamadı</string>
|
||||
<string name="re_send_location">Konumu tekrar gönder</string>
|
||||
<string name="last_available_location">Son kullanılabilir konum</string>
|
||||
<string name="sharing_status">Paylaşım durumu</string>
|
||||
<string name="location_sharing_status">Paylaşım: %1$s</string>
|
||||
<string name="no_gps_connection">GPS bağlantısı yok</string>
|
||||
<string name="no_internet_connection">İnternet bağlantısı yok</string>
|
||||
<string name="add_device">Cihaz ekle</string>
|
||||
<string name="share_location_as">Konum paylaşma biçimi</string>
|
||||
<string name="live_now_description">Sizinle konum paylaşımı yapan kişi ve gruplar.</string>
|
||||
<string name="logout_from_osmand_telegram_descr">OsmAnd Tracker uygulamasından çıkış yapmak istediğinize emin misiniz, böylece konum paylaşamaz veya başkalarının yerlerini göremezsiniz\?</string>
|
||||
<string name="logout_from_osmand_telegram">OsmAnd Tracker oturumu kapatılsın mı\?</string>
|
||||
<string name="by_distance">Mesafeye göre</string>
|
||||
<string name="by_name">Ada göre</string>
|
||||
<string name="by_group">Gruba göre</string>
|
||||
<string name="shared_string_sort_by">Sıralama kriteri</string>
|
||||
<string name="choose_osmand_desc">Kişilerin haritada görüntüleneceği OsmAnd versiyonunu seçin.</string>
|
||||
<string name="choose_osmand">Kullanılacak OsmAnd versiyonunu seçin</string>
|
||||
<string name="disable_all_sharing_desc">Konum paylaşımını tüm seçili sohbetlere kapatır (%1$d).</string>
|
||||
<string name="disable_all_sharing">Tüm paylaşımı devre dışı bırak</string>
|
||||
<string name="turn_off_all">Hepsini kapat</string>
|
||||
<string name="time_ago">önce</string>
|
||||
<string name="last_response">Son cevap</string>
|
||||
<string name="shared_string_group">Grup</string>
|
||||
<string name="logout_no_internet_msg">Telegram\'dan düzgün bir şekilde çıkış yapmak için Internet\'e bağlanın.</string>
|
||||
<string name="disconnect_from_telegram_desc">Konum paylaşma erişimini iptal etmek için. Telegram\'ı açın, Ayarlar → Gizlilik ve Güvenlik → Oturumlar\'a gidin ve OsmAnd Tracker oturumunu sonlandırın.</string>
|
||||
<string name="saved_messages">Kaydedilen mesajlar</string>
|
||||
<string name="disconnect_from_telegram">Telegram\'dan OsmAnd Tracker nasıl kapatılır</string>
|
||||
<string name="logout_help_desc">Telegram\'dan OsmAnd Tracker nasıl kapatılır</string>
|
||||
<string name="connected_account">Bağlı hesap</string>
|
||||
<string name="shared_string_account">Hesap</string>
|
||||
<string name="in_time">%1$s içinde</string>
|
||||
<string name="osmand_connect_desc">Konumları görüntülemek için OsmAnd Tracker\'ın kullandığı OsmAnd versiyonunu seçin.</string>
|
||||
<string name="osmand_connect">OsmAnd bağlan</string>
|
||||
<string name="location_history_desc">Belirli bir süre içinde hareket etmemiş kişileri gizle.</string>
|
||||
<string name="location_history">Konum geçmişi</string>
|
||||
<string name="stale_location_desc">Bir kişinin en son hareket ettiği zaman.</string>
|
||||
<string name="stale_location">Hareket etmiyor</string>
|
||||
<string name="send_my_location_desc">Konum paylaşımı için minimum aralığı ayarlayın.</string>
|
||||
<string name="send_my_location">Konumumu gönder</string>
|
||||
<string name="gps_and_location">Konum</string>
|
||||
<string name="sharing_time">Paylaşım zamanı</string>
|
||||
<string name="expire_at">Süre sonu</string>
|
||||
<string name="stop_sharing_all">Paylaşım açık (kapat)</string>
|
||||
<string name="turn_off_location_sharing">Konum paylaşımını kapat</string>
|
||||
<string name="open_osmand">OsmAnd\'ı Aç</string>
|
||||
<string name="shared_string_live">Canlı</string>
|
||||
<string name="shared_string_bot">Bot</string>
|
||||
<string name="get_telegram_title">Telegram kaydı</string>
|
||||
<string name="get_telegram_account_first">Konum paylaşımını kullanmak için bir Telegram hesabına ihtiyacınız var.</string>
|
||||
<string name="get_telegram_description_continue">Lütfen Telegram\'ı yükleyin ve bir hesap oluşturun.</string>
|
||||
<string name="get_telegram_after_creating_account">Daha sonra bu uygulamayı kullanabilirsiniz.</string>
|
||||
<string name="already_registered_in_telegram">Kayıtlı bir Telegram hesabına ve telefon numarasına ihtiyacınız var</string>
|
||||
<string name="do_not_have_telegram">Telegram hesabım yok</string>
|
||||
<string name="enter_phone_number">Telefon numarasını girin</string>
|
||||
<string name="enter_authentication_code">Kimlik doğrulama kodunu girin</string>
|
||||
<string name="set_visible_time_for_all">Herkes için görünür zamanı ayarla</string>
|
||||
<string name="hours_and_minutes_format">%1$d sa %2$d dk</string>
|
||||
<string name="minutes_format">%1$d dk</string>
|
||||
<string name="hours_format">%1$d sa</string>
|
||||
<string name="visible_time_for_all">Herkes için görünür zaman</string>
|
||||
<string name="set_time_description">Seçtiğiniz kişilerin ve grupların konumunuzu gerçek zamanlı olarak göreceği zamanı ayarlayın.</string>
|
||||
<string name="set_time">Zamanı ayarla</string>
|
||||
<string name="location_sharing_description">Konumunuzu paylaşmak istediğiniz kişileri ve grupları seçin.</string>
|
||||
<string name="my_location_search_hint">Ara: Grup veya kişi</string>
|
||||
<string name="start_location_sharing">Konumu paylaş</string>
|
||||
<string name="show_on_map">Haritada göster</string>
|
||||
<string name="app_name">OsmAnd Çevrimiçi GPS İzleyici</string>
|
||||
<string name="phone_number_title">Telefon numarası</string>
|
||||
<string name="phone_number_descr">Uluslararası formatta telefon numarası</string>
|
||||
<string name="shared_string_password">Parola</string>
|
||||
<string name="enter_code">Kodu girin</string>
|
||||
<string name="authentication_code">Kimlik doğrulama kodu</string>
|
||||
<string name="authentication_code_descr">Telegram, OsmAnd için hesabınıza bir giriş yapma kodu gönderdi.</string>
|
||||
<string name="enter_password">Parola girin</string>
|
||||
<string name="password_descr">Telegram parolası</string>
|
||||
<string name="shared_string_login">Oturum aç</string>
|
||||
<string name="shared_string_logout">Oturumu kapat</string>
|
||||
<string name="initialization">Başlatılıyor</string>
|
||||
<string name="logging_out">Çıkış yapılıyor</string>
|
||||
<string name="closing">Kapatılıyor</string>
|
||||
<string name="gps_network_not_enabled">\"Konum\" açılsın mı\?</string>
|
||||
<string name="not_logged_in">Oturum açmadınız</string>
|
||||
<string name="no_location_permission">Uygulamanın konum verilerine erişim izni yok.</string>
|
||||
<string name="gps_not_available">Lütfen sistem ayarlarından \"Konum\"u açın</string>
|
||||
<string name="location_service_no_gps_available">Konumunuzu paylaşmak için konum sağlayıcılardan birini seçin.</string>
|
||||
<string name="osmand_service_descr">OsmAnd Tracker, ekran kapalıyken arka planda çalışır.</string>
|
||||
<string name="share_location">Konumu paylaş</string>
|
||||
<string name="sharing_location">Konum paylaşılıyor</string>
|
||||
<string name="process_service">OsmAnd Tracker servisi</string>
|
||||
<string name="osmand_logo">OsmAnd logosu</string>
|
||||
<string name="install_osmand_dialog_message">Önce OsmAnd\'ın ücretsiz veya ücretli sürümünü yüklemeniz gerekmektedir</string>
|
||||
<string name="install_osmand">OsmAnd\'ı yükle</string>
|
||||
<string name="show_users_on_map">Kullanıcıları haritada göster</string>
|
||||
<string name="active_chats">Aktif sohbetler</string>
|
||||
<string name="shared_string_authorization">Yetkilendirme</string>
|
||||
<string name="shared_string_authorization_descr">Lütfen Telegram telefon numaranızı uluslararası formatta girin</string>
|
||||
<string name="shared_string_welcome">Hoşgeldiniz</string>
|
||||
<string name="shared_string_hour_short">sa</string>
|
||||
<string name="shared_string_minute_short">dk</string>
|
||||
<string name="shared_string_second_short">sn</string>
|
||||
<string name="welcome_descr">
|
||||
<b>OsmAnd Tracker</b> konumunuzu paylaşmanıza ve OsmAnd\'daki diğer kişileri görmenize olanak sağlar.<br/>
|
||||
<br/>Uygulama Telegram API\'sini kullanmaktadır, bu nedenle bir Telegram hesabına ihtiyacınız vardır.</string>
|
||||
<string name="my_location">Konumum</string>
|
||||
<string name="live_now">Şimdi canlı</string>
|
||||
<string name="timeline">Zaman çizelgesi</string>
|
||||
<string name="time_zone_descr">Konum mesajlarınızda gösterilecek saat dilimini seçin.</string>
|
||||
<string name="time_zone">Saat dilimi</string>
|
||||
<string name="units_and_formats">Birimler ve formatlar</string>
|
||||
<string name="unit_of_length_descr">Mesafe ölçüm birimini değiştir.</string>
|
||||
<string name="unit_of_length">Uzunluk birimleri</string>
|
||||
<string name="unit_of_speed_system_descr">Hız birimini tanımlayın.</string>
|
||||
<string name="unit_of_speed_system">Hız birimi</string>
|
||||
<string name="buffer_time_descr">Noktaların arabellekte saklanacağı maksimum süre</string>
|
||||
<string name="buffer_time">Arabellek zaman aşım süresi</string>
|
||||
</resources>
|
|
@ -31,7 +31,7 @@
|
|||
<string name="last_available_location">Крайнє доступне позиціювання</string>
|
||||
<string name="sharing_status">Стан трансляції</string>
|
||||
<string name="location_sharing_status">Трансляція: %1$s</string>
|
||||
<string name="shared_string_enabled">Увімкнута</string>
|
||||
<string name="shared_string_enabled">Увімкнено</string>
|
||||
<string name="shared_string_status">Статус</string>
|
||||
<string name="no_gps_connection">Немає зʼєднання із GPS</string>
|
||||
<string name="no_internet_connection">Немає зʼєднання із інтернетом</string>
|
||||
|
@ -81,7 +81,7 @@
|
|||
<string name="get_telegram_description_continue">Будь ласка, встановіть Telegram та налаштуйте обліковий запис.</string>
|
||||
<string name="get_telegram_after_creating_account">Тоді Ви зможете використовувати цей додаток.</string>
|
||||
<string name="shared_string_all">Всі</string>
|
||||
<string name="shared_string_off">Вимкнути</string>
|
||||
<string name="shared_string_off">Вимк.</string>
|
||||
<string name="already_registered_in_telegram">Вам необхідно мати зареєстрований обліковий запис Telegram та номер телефону</string>
|
||||
<string name="do_not_have_telegram">Я не маю облікового запису Telegram</string>
|
||||
<string name="enter_phone_number">Введіть номер телефону</string>
|
||||
|
@ -249,5 +249,15 @@
|
|||
<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="min_logging_speed_descr">Фільтр: не реєструвати, якщо швидкість менша за обрану</string>
|
||||
<string name="saved_messages">Збережені повідомлення</string>
|
||||
<string name="time_zone_descr">Оберіть часовий пояс щоб відобразити повідомлення у вашому розташуванні.</string>
|
||||
<string name="time_zone">Часовий пояс</string>
|
||||
<string name="units_and_formats">Одиниця вимірювання та формати</string>
|
||||
<string name="unit_of_length">Одиниці вимірювання довжини</string>
|
||||
<string name="unit_of_length_descr">Змінити одиницю вимірювання відстані.</string>
|
||||
<string name="unit_of_speed_system_descr">Визначити одиницю швидкості.</string>
|
||||
<string name="unit_of_speed_system">Одиниця вимірювання швидкості</string>
|
||||
<string name="buffer_time_descr">Найбільший час зберігання точок у буфері</string>
|
||||
<string name="buffer_time">Термін дії буфера</string>
|
||||
</resources>
|
|
@ -189,7 +189,7 @@
|
|||
<string name="shared_string_telegram">Telegram</string>
|
||||
<string name="privacy_policy_use_telegram">Telegram(即時通訊應用程式)用以與人們連線與溝通。</string>
|
||||
<string name="privacy_policy_telegram_client">OsmAnd 追蹤器是其中一個使用 Telegram 開放平臺的客戶。您的聯絡人可以使用其他任何 Telegram 客戶端。</string>
|
||||
<string name="privacy_policy_agree">點選繼續就代表您同意 Telegram 隱私權政策與 OsmAnd 隱私權政策。</string>
|
||||
<string name="privacy_policy_agree">點選「繼續」就代表您同意 Telegram 與 OsmAnd 的隱私權政策。</string>
|
||||
<string name="shared_string_accept">接受</string>
|
||||
<string name="telegram_privacy_policy">Telegram 隱私權政策</string>
|
||||
<string name="osmand_privacy_policy">OsmAnd 隱私權政策</string>
|
||||
|
@ -249,4 +249,16 @@
|
|||
<string name="shared_string_apply">套用</string>
|
||||
<string name="set_time_timeline_descr">選取要顯示的時間</string>
|
||||
<string name="start_end_date">開始到結束日期</string>
|
||||
<string name="location_sharing_status">正在分享:%1$s</string>
|
||||
<string name="shared_string_enabled">已啟用</string>
|
||||
<string name="saved_messages">已儲存的訊息</string>
|
||||
<string name="time_zone_descr">選取要在您位置訊息中顯示的時區。</string>
|
||||
<string name="time_zone">時區</string>
|
||||
<string name="units_and_formats">單位與格式</string>
|
||||
<string name="unit_of_length_descr">變更距離的測量方式。</string>
|
||||
<string name="unit_of_length">長度單位</string>
|
||||
<string name="unit_of_speed_system_descr">定義速度單位。</string>
|
||||
<string name="unit_of_speed_system">速度單位</string>
|
||||
<string name="buffer_time_descr">在緩衝中儲存點的最長時間</string>
|
||||
<string name="buffer_time">緩衝過期時間</string>
|
||||
</resources>
|
|
@ -1,5 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="buffer_time_descr">Maximum time to store points in the buffer</string>
|
||||
<string name="buffer_time">Buffer expiration time</string>
|
||||
<string name="time_zone_descr">Select time zone to show in your location messages.</string>
|
||||
<string name="time_zone">Time zone</string>
|
||||
<string name="units_and_formats">Units & formats</string>
|
||||
<string name="unit_of_length_descr">Change what distance is measured in.</string>
|
||||
<string name="unit_of_length">Units of length</string>
|
||||
<string name="unit_of_speed_system_descr">Define unit of speed.</string>
|
||||
<string name="unit_of_speed_system">Unit of speed</string>
|
||||
<string name="saved_messages">Saved messages</string>
|
||||
<string name="shared_string_end">End</string>
|
||||
<string name="shared_string_start">Start</string>
|
||||
<string name="shared_string_apply">Apply</string>
|
||||
|
@ -46,7 +56,7 @@
|
|||
<string name="shared_string_telegram">Telegram</string>
|
||||
<string name="privacy_policy_use_telegram">Telegram (the messaging app) is used to connect and communicate with people.</string>
|
||||
<string name="privacy_policy_telegram_client">OsmAnd tracker is one of the clients that use the Telegram open platform. Your contacts can use any other Telegram client.</string>
|
||||
<string name="privacy_policy_agree">By clicking continue you agree to the conditions of Telegram Privacy Policy and OsmAnd Privacy Policy.</string>
|
||||
<string name="privacy_policy_agree">By clicking \"Continue\" you agree to the conditions of the Telegram- and OsmAnd privacy policy.</string>
|
||||
<string name="shared_string_accept">Accept</string>
|
||||
<string name="telegram_privacy_policy">Telegram Privacy Policy</string>
|
||||
<string name="osmand_privacy_policy">OsmAnd Privacy Policy</string>
|
||||
|
|
|
@ -11,9 +11,7 @@ import net.osmand.PlatformUtil
|
|||
import net.osmand.telegram.helpers.OsmandAidlHelper
|
||||
import net.osmand.telegram.helpers.ShowLocationHelper
|
||||
import net.osmand.telegram.helpers.TelegramHelper
|
||||
import net.osmand.telegram.utils.AndroidUtils
|
||||
import net.osmand.telegram.utils.OsmandApiUtils
|
||||
import net.osmand.telegram.utils.OsmandFormatter
|
||||
import net.osmand.telegram.utils.*
|
||||
import net.osmand.telegram.utils.OsmandFormatter.MetricsConstants
|
||||
import net.osmand.telegram.utils.OsmandFormatter.SpeedConstants
|
||||
import net.osmand.telegram.utils.OsmandLocationUtils
|
||||
|
@ -63,6 +61,11 @@ private const val MIN_LOCATION_DISTANCE_INDEX = 0
|
|||
private const val MIN_LOCATION_ACCURACY_INDEX = 0
|
||||
private const val MIN_LOCATION_SPEED_INDEX = 0
|
||||
|
||||
private val BUFFER_TIME = listOf(60 * 60L, 2 * 60 * 60L, 4 * 60 * 60L, 8 * 60 * 60L,
|
||||
12 * 60 * 60L, 24 * 60 * 60L)
|
||||
private const val BUFFER_TIME_INDEX = 0
|
||||
private const val BUFFER_TIME_KEY = "buffer_time"
|
||||
|
||||
private const val SETTINGS_NAME = "osmand_telegram_settings"
|
||||
|
||||
private const val SHARE_LOCATION_CHATS_KEY = "share_location_chats"
|
||||
|
@ -72,6 +75,7 @@ private const val SHARING_MODE_KEY = "current_sharing_mode"
|
|||
|
||||
private const val METRICS_CONSTANTS_KEY = "metrics_constants"
|
||||
private const val SPEED_CONSTANTS_KEY = "speed_constants"
|
||||
private const val UTC_OFFSET_CONSTANTS_KEY = "utc_offset_constants"
|
||||
|
||||
private const val SEND_MY_LOC_INTERVAL_KEY = "send_my_loc_interval"
|
||||
private const val STALE_LOC_TIME_KEY = "stale_loc_time"
|
||||
|
@ -125,6 +129,7 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
|
||||
var metricsConstants = MetricsConstants.KILOMETERS_AND_METERS
|
||||
var speedConstants = SpeedConstants.KILOMETERS_PER_HOUR
|
||||
var utcOffset = DataConstants.UTC_FORMAT
|
||||
|
||||
var sendMyLocInterval = SEND_MY_LOC_VALUES_SEC[SEND_MY_LOC_DEFAULT_INDEX]
|
||||
var staleLocTime = STALE_LOC_VALUES_SEC[STALE_LOC_DEFAULT_INDEX]
|
||||
|
@ -140,8 +145,10 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
|
||||
var liveNowSortType = LiveNowSortType.SORT_BY_DISTANCE
|
||||
|
||||
val gpsAndLocPrefs = listOf(SendMyLocPref(), StaleLocPref(), LocHistoryPref(), ShareTypePref())
|
||||
val gpsAndLocPrefs = listOf(SendMyLocPref(), StaleLocPref(), LocHistoryPref(), ShareTypePref(),
|
||||
BufferTimePref())
|
||||
val gpxLoggingPrefs = listOf(MinLocationDistance(), MinLocationAccuracy(), MinLocationSpeed())
|
||||
val unitsAndFormatsPrefs = listOf(UnitsOfSpeed(), UnitsOfLength(), UtcOffset())
|
||||
|
||||
var batteryOptimisationAsked = false
|
||||
|
||||
|
@ -151,6 +158,8 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
|
||||
var proxyEnabled = false
|
||||
|
||||
var bufferTime = BUFFER_TIME[BUFFER_TIME_INDEX]
|
||||
|
||||
init {
|
||||
updatePrefs()
|
||||
read()
|
||||
|
@ -606,6 +615,7 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
|
||||
edit.putString(METRICS_CONSTANTS_KEY, metricsConstants.name)
|
||||
edit.putString(SPEED_CONSTANTS_KEY, speedConstants.name)
|
||||
edit.putString(UTC_OFFSET_CONSTANTS_KEY, utcOffset)
|
||||
|
||||
edit.putLong(SEND_MY_LOC_INTERVAL_KEY, sendMyLocInterval)
|
||||
edit.putLong(STALE_LOC_TIME_KEY, staleLocTime)
|
||||
|
@ -629,6 +639,8 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
|
||||
edit.putBoolean(PROXY_ENABLED, proxyEnabled)
|
||||
|
||||
edit.putLong(BUFFER_TIME_KEY, bufferTime)
|
||||
|
||||
val jArray = convertShareChatsInfoToJson()
|
||||
if (jArray != null) {
|
||||
edit.putString(SHARE_CHATS_INFO_KEY, jArray.toString())
|
||||
|
@ -668,6 +680,7 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
speedConstants = SpeedConstants.valueOf(
|
||||
prefs.getString(SPEED_CONSTANTS_KEY, SpeedConstants.KILOMETERS_PER_HOUR.name)
|
||||
)
|
||||
utcOffset = prefs.getString(UTC_OFFSET_CONSTANTS_KEY, DataConstants.UTC_FORMAT)
|
||||
|
||||
try {
|
||||
parseShareChatsInfo(JSONArray(prefs.getString(SHARE_CHATS_INFO_KEY, "")))
|
||||
|
@ -710,6 +723,9 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
showGpsPoints = prefs.getBoolean(SHOW_GPS_POINTS, false)
|
||||
|
||||
proxyEnabled = prefs.getBoolean(PROXY_ENABLED, false)
|
||||
|
||||
bufferTime = prefs.getLong(BUFFER_TIME_KEY, BUFFER_TIME[BUFFER_TIME_INDEX])
|
||||
|
||||
try {
|
||||
parseProxyPreferences(JSONObject(prefs.getString(PROXY_PREFERENCES_KEY, "")))
|
||||
} catch (e: JSONException) {
|
||||
|
@ -895,68 +911,64 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
}
|
||||
}
|
||||
|
||||
inner class SendMyLocPref : NumericPref(
|
||||
inner class SendMyLocPref : ListPreference(
|
||||
R.drawable.ic_action_share_location,
|
||||
R.string.send_my_location,
|
||||
R.string.send_my_location_desc,
|
||||
SEND_MY_LOC_VALUES_SEC
|
||||
R.string.send_my_location_desc
|
||||
) {
|
||||
|
||||
override fun getCurrentValue() =
|
||||
OsmandFormatter.getFormattedDuration(app, sendMyLocInterval)
|
||||
|
||||
override fun setCurrentValue(index: Int) {
|
||||
sendMyLocInterval = values[index].toLong()
|
||||
sendMyLocInterval = SEND_MY_LOC_VALUES_SEC[index]
|
||||
app.updateSendLocationInterval()
|
||||
}
|
||||
|
||||
override fun getMenuItems() =
|
||||
values.map { OsmandFormatter.getFormattedDuration(app, it.toLong()) }
|
||||
SEND_MY_LOC_VALUES_SEC.map { OsmandFormatter.getFormattedDuration(app, it) }
|
||||
}
|
||||
|
||||
inner class StaleLocPref : NumericPref(
|
||||
inner class StaleLocPref : ListPreference(
|
||||
R.drawable.ic_action_time_span,
|
||||
R.string.stale_location,
|
||||
R.string.stale_location_desc,
|
||||
STALE_LOC_VALUES_SEC
|
||||
R.string.stale_location_desc
|
||||
) {
|
||||
|
||||
override fun getCurrentValue() =
|
||||
OsmandFormatter.getFormattedDuration(app, staleLocTime)
|
||||
|
||||
override fun setCurrentValue(index: Int) {
|
||||
staleLocTime = values[index].toLong()
|
||||
staleLocTime = STALE_LOC_VALUES_SEC[index]
|
||||
}
|
||||
|
||||
override fun getMenuItems() =
|
||||
values.map { OsmandFormatter.getFormattedDuration(app, it.toLong()) }
|
||||
STALE_LOC_VALUES_SEC.map { OsmandFormatter.getFormattedDuration(app, it) }
|
||||
}
|
||||
|
||||
inner class LocHistoryPref : NumericPref(
|
||||
inner class LocHistoryPref : ListPreference(
|
||||
R.drawable.ic_action_location_history,
|
||||
R.string.location_history,
|
||||
R.string.location_history_desc,
|
||||
LOC_HISTORY_VALUES_SEC
|
||||
R.string.location_history_desc
|
||||
) {
|
||||
|
||||
override fun getCurrentValue() =
|
||||
OsmandFormatter.getFormattedDuration(app, locHistoryTime)
|
||||
|
||||
override fun setCurrentValue(index: Int) {
|
||||
val value = values[index]
|
||||
locHistoryTime = value.toLong()
|
||||
app.telegramHelper.messageActiveTimeSec = value.toLong()
|
||||
val value = LOC_HISTORY_VALUES_SEC[index]
|
||||
locHistoryTime = value
|
||||
app.telegramHelper.messageActiveTimeSec = value
|
||||
}
|
||||
|
||||
override fun getMenuItems() =
|
||||
values.map { OsmandFormatter.getFormattedDuration(app, it.toLong()) }
|
||||
LOC_HISTORY_VALUES_SEC.map { OsmandFormatter.getFormattedDuration(app, it) }
|
||||
}
|
||||
|
||||
inner class ShareTypePref : NumericPref(
|
||||
inner class ShareTypePref : ListPreference(
|
||||
R.drawable.ic_action_location_history,
|
||||
R.string.send_location_as,
|
||||
R.string.send_location_as_descr,
|
||||
emptyList()
|
||||
R.string.send_location_as_descr
|
||||
) {
|
||||
|
||||
override fun getCurrentValue(): String {
|
||||
|
@ -988,20 +1000,16 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
}
|
||||
}
|
||||
|
||||
inner class MinLocationDistance : NumericPref(
|
||||
0, R.string.min_logging_distance,
|
||||
R.string.min_logging_distance_descr,
|
||||
MIN_LOCATION_DISTANCE
|
||||
) {
|
||||
inner class MinLocationDistance :
|
||||
ListPreference(0, R.string.min_logging_distance, R.string.min_logging_distance_descr) {
|
||||
|
||||
override fun getCurrentValue() = getFormattedValue(minLocationDistance)
|
||||
|
||||
override fun setCurrentValue(index: Int) {
|
||||
val value = values[index]
|
||||
minLocationDistance = value.toFloat()
|
||||
minLocationDistance = MIN_LOCATION_DISTANCE[index]
|
||||
}
|
||||
|
||||
override fun getMenuItems() = values.map { getFormattedValue(it.toFloat()) }
|
||||
override fun getMenuItems() = MIN_LOCATION_DISTANCE.map { getFormattedValue(it) }
|
||||
|
||||
private fun getFormattedValue(value: Float): String {
|
||||
return if (value == 0f) app.getString(R.string.shared_string_select)
|
||||
|
@ -1009,20 +1017,16 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
}
|
||||
}
|
||||
|
||||
inner class MinLocationAccuracy : NumericPref(
|
||||
0, R.string.min_logging_accuracy,
|
||||
R.string.min_logging_accuracy_descr,
|
||||
MIN_LOCATION_ACCURACY
|
||||
) {
|
||||
inner class MinLocationAccuracy :
|
||||
ListPreference(0, R.string.min_logging_accuracy, R.string.min_logging_accuracy_descr) {
|
||||
|
||||
override fun getCurrentValue() = getFormattedValue(minLocationAccuracy)
|
||||
|
||||
override fun setCurrentValue(index: Int) {
|
||||
val value = values[index]
|
||||
minLocationAccuracy = value.toFloat()
|
||||
minLocationAccuracy = MIN_LOCATION_ACCURACY[index]
|
||||
}
|
||||
|
||||
override fun getMenuItems() = values.map { getFormattedValue(it.toFloat()) }
|
||||
override fun getMenuItems() = MIN_LOCATION_ACCURACY.map { getFormattedValue(it) }
|
||||
|
||||
private fun getFormattedValue(value: Float): String {
|
||||
return if (value == 0f) app.getString(R.string.shared_string_select)
|
||||
|
@ -1030,20 +1034,16 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
}
|
||||
}
|
||||
|
||||
inner class MinLocationSpeed : NumericPref(
|
||||
0, R.string.min_logging_speed,
|
||||
R.string.min_logging_speed_descr,
|
||||
MIN_LOCATION_SPEED
|
||||
) {
|
||||
inner class MinLocationSpeed :
|
||||
ListPreference(0, R.string.min_logging_speed, R.string.min_logging_speed_descr) {
|
||||
|
||||
override fun getCurrentValue() = getFormattedValue(minLocationSpeed)
|
||||
|
||||
override fun setCurrentValue(index: Int) {
|
||||
val value = values[index]
|
||||
minLocationSpeed = value.toFloat()
|
||||
minLocationSpeed = MIN_LOCATION_SPEED[index]
|
||||
}
|
||||
|
||||
override fun getMenuItems() = values.map { getFormattedValue(it.toFloat()) }
|
||||
override fun getMenuItems() = MIN_LOCATION_SPEED.map { getFormattedValue(it) }
|
||||
|
||||
private fun getFormattedValue(value: Float): String {
|
||||
return when (value) {
|
||||
|
@ -1054,11 +1054,67 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
}
|
||||
}
|
||||
|
||||
abstract inner class NumericPref(
|
||||
inner class UnitsOfSpeed : ListPreference(
|
||||
R.drawable.ic_action_speed,
|
||||
R.string.unit_of_speed_system,
|
||||
R.string.unit_of_speed_system_descr
|
||||
) {
|
||||
|
||||
override fun getCurrentValue() = speedConstants.toShortString(app)
|
||||
|
||||
override fun setCurrentValue(index: Int) {
|
||||
speedConstants = SpeedConstants.values()[index]
|
||||
}
|
||||
|
||||
override fun getMenuItems() = SpeedConstants.values().map { it.toShortString(app) }
|
||||
}
|
||||
|
||||
inner class UnitsOfLength : ListPreference(
|
||||
R.drawable.ic_action_ruler_unit, R.string.unit_of_length,
|
||||
R.string.unit_of_length_descr
|
||||
) {
|
||||
|
||||
override fun getCurrentValue() = metricsConstants.toHumanString(app)
|
||||
|
||||
override fun setCurrentValue(index: Int) {
|
||||
metricsConstants = MetricsConstants.values()[index]
|
||||
}
|
||||
|
||||
override fun getMenuItems() = MetricsConstants.values().map { it.toHumanString(app) }
|
||||
}
|
||||
|
||||
inner class UtcOffset : ListPreference(
|
||||
R.drawable.ic_world_globe_dark, R.string.time_zone,
|
||||
R.string.time_zone_descr
|
||||
) {
|
||||
private val formattedUtcOffsets = DataConstants.utcOffsets.keys.toList()
|
||||
|
||||
override fun getCurrentValue() = utcOffset
|
||||
|
||||
override fun setCurrentValue(index: Int) {
|
||||
utcOffset = formattedUtcOffsets[index]
|
||||
}
|
||||
|
||||
override fun getMenuItems() = formattedUtcOffsets
|
||||
}
|
||||
|
||||
inner class BufferTimePref : ListPreference(R.drawable.ic_action_time_span, R.string.buffer_time,
|
||||
R.string.buffer_time_descr) {
|
||||
override fun getCurrentValue() = OsmandFormatter.getFormattedDuration(app, bufferTime)
|
||||
|
||||
override fun setCurrentValue(index: Int) {
|
||||
bufferTime = BUFFER_TIME[index]
|
||||
}
|
||||
|
||||
override fun getMenuItems(): List<String> {
|
||||
return BUFFER_TIME.map { OsmandFormatter.getFormattedDuration(app, it) }
|
||||
}
|
||||
}
|
||||
|
||||
abstract inner class ListPreference(
|
||||
@DrawableRes val iconId: Int,
|
||||
@StringRes val titleId: Int,
|
||||
@StringRes val descriptionId: Int,
|
||||
val values: List<Number>
|
||||
@StringRes val descriptionId: Int
|
||||
) {
|
||||
|
||||
abstract fun getCurrentValue(): String
|
||||
|
|
|
@ -23,6 +23,8 @@ class LocationMessages(val app: TelegramApplication) {
|
|||
|
||||
private val dbHelper: SQLiteHelper
|
||||
|
||||
private var lastRemoveTime: Long? = null
|
||||
|
||||
init {
|
||||
dbHelper = SQLiteHelper(app)
|
||||
readBufferedMessages()
|
||||
|
@ -30,30 +32,37 @@ class LocationMessages(val app: TelegramApplication) {
|
|||
}
|
||||
|
||||
fun getBufferedMessages(): List<BufferMessage> {
|
||||
removeOldBufferedMessages()
|
||||
return bufferedMessages.sortedBy { it.time }
|
||||
}
|
||||
|
||||
fun getBufferedMessagesCount(): Int {
|
||||
removeOldBufferedMessages()
|
||||
return bufferedMessages.size
|
||||
}
|
||||
|
||||
fun getBufferedMessagesCountForChat(chatId: Long, type: Int): Int {
|
||||
removeOldBufferedMessages()
|
||||
return bufferedMessages.count { it.chatId == chatId && it.type == type }
|
||||
}
|
||||
|
||||
fun getBufferedMessagesCountForChat(chatId: Long): Int {
|
||||
removeOldBufferedMessages()
|
||||
return bufferedMessages.count { it.chatId == chatId}
|
||||
}
|
||||
|
||||
fun getBufferedMessagesForChat(chatId: Long): List<BufferMessage> {
|
||||
removeOldBufferedMessages()
|
||||
return bufferedMessages.filter { it.chatId == chatId }.sortedBy { it.time }
|
||||
}
|
||||
|
||||
fun getBufferedTextMessagesForChat(chatId: Long): List<BufferMessage> {
|
||||
removeOldBufferedMessages()
|
||||
return bufferedMessages.filter { it.chatId == chatId && it.type == TYPE_TEXT }.sortedBy { it.time }
|
||||
}
|
||||
|
||||
fun getBufferedMapMessagesForChat(chatId: Long): List<BufferMessage> {
|
||||
removeOldBufferedMessages()
|
||||
return bufferedMessages.filter { it.chatId == chatId && it.type == TYPE_MAP }.sortedBy { it.time }
|
||||
}
|
||||
|
||||
|
@ -84,7 +93,7 @@ class LocationMessages(val app: TelegramApplication) {
|
|||
|
||||
fun addBufferedMessage(message: BufferMessage) {
|
||||
log.debug("addBufferedMessage $message")
|
||||
val messages = mutableListOf(*this.bufferedMessages.toTypedArray())
|
||||
val messages = this.bufferedMessages.toMutableList()
|
||||
messages.add(message)
|
||||
this.bufferedMessages = messages
|
||||
dbHelper.addBufferedMessage(message)
|
||||
|
@ -134,14 +143,38 @@ class LocationMessages(val app: TelegramApplication) {
|
|||
|
||||
fun removeBufferedMessage(message: BufferMessage) {
|
||||
log.debug("removeBufferedMessage $message")
|
||||
val messages = mutableListOf(*this.bufferedMessages.toTypedArray())
|
||||
val messages = this.bufferedMessages.toMutableList()
|
||||
messages.remove(message)
|
||||
this.bufferedMessages = messages
|
||||
dbHelper.removeBufferedMessage(message)
|
||||
}
|
||||
|
||||
private fun removeOldBufferedMessages() {
|
||||
val currentTime = System.currentTimeMillis()
|
||||
if (this.bufferedMessages.isNotEmpty() && isTimeToDelete(currentTime)) {
|
||||
val bufferExpirationTime = app.settings.bufferTime * 1000
|
||||
val messages = this.bufferedMessages.toMutableList()
|
||||
val expiredList = messages.filter {
|
||||
currentTime - it.time > bufferExpirationTime
|
||||
}
|
||||
expiredList.forEach { message ->
|
||||
dbHelper.removeBufferedMessage(message)
|
||||
}
|
||||
messages.removeAll(expiredList)
|
||||
this.bufferedMessages = messages.toList()
|
||||
lastRemoveTime = currentTime
|
||||
}
|
||||
}
|
||||
|
||||
private fun isTimeToDelete(currentTime: Long) = if (lastRemoveTime != null) {
|
||||
currentTime - lastRemoveTime!! > 60000L
|
||||
} else {
|
||||
true
|
||||
}
|
||||
|
||||
private fun readBufferedMessages() {
|
||||
this.bufferedMessages = dbHelper.getBufferedMessages()
|
||||
removeOldBufferedMessages()
|
||||
}
|
||||
|
||||
private fun readLastMessages() {
|
||||
|
|
|
@ -7,6 +7,7 @@ import net.osmand.telegram.helpers.LocationMessages.BufferMessage
|
|||
import net.osmand.telegram.notifications.TelegramNotification.NotificationType
|
||||
import net.osmand.telegram.utils.AndroidNetworkUtils
|
||||
import net.osmand.telegram.utils.BASE_URL
|
||||
import net.osmand.telegram.utils.OsmandLocationUtils
|
||||
import net.osmand.util.MapUtils
|
||||
import org.drinkless.td.libcore.telegram.TdApi
|
||||
import org.json.JSONException
|
||||
|
@ -14,8 +15,6 @@ import org.json.JSONObject
|
|||
|
||||
private const val USER_SET_LIVE_PERIOD_DELAY_MS = 5000 // 5 sec
|
||||
|
||||
private const val UPDATE_LOCATION_ACCURACY = 150 // 150 meters
|
||||
|
||||
private const val SENT_LOCATIONS_INTERVAL_TIME_MS = 4000 // 4 sec
|
||||
|
||||
class ShareLocationHelper(private val app: TelegramApplication) {
|
||||
|
@ -142,7 +141,8 @@ class ShareLocationHelper(private val app: TelegramApplication) {
|
|||
if (it.deviceName.isEmpty()) {
|
||||
if (!shareInfo.pendingTextMessage && shareInfo.currentTextMessageId != -1L) {
|
||||
lastLocationSentTime = System.currentTimeMillis()
|
||||
app.telegramHelper.editTextLocation(shareInfo, it)
|
||||
val content = OsmandLocationUtils.getTextMessageContent(shareInfo.updateTextMessageId, it, app)
|
||||
app.telegramHelper.editTextLocation(shareInfo, content)
|
||||
app.locationMessages.removeBufferedMessage(it)
|
||||
}
|
||||
} else {
|
||||
|
@ -263,7 +263,8 @@ class ShareLocationHelper(private val app: TelegramApplication) {
|
|||
sendLocationToBot(message, shareInfo, SHARE_TYPE_TEXT)
|
||||
} else {
|
||||
lastLocationSentTime = System.currentTimeMillis()
|
||||
app.telegramHelper.sendNewTextLocation(shareInfo, message)
|
||||
val content = OsmandLocationUtils.getTextMessageContent(shareInfo.updateTextMessageId, message, app)
|
||||
app.telegramHelper.sendNewTextLocation(shareInfo, content)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -276,7 +277,8 @@ class ShareLocationHelper(private val app: TelegramApplication) {
|
|||
} else {
|
||||
if (shareInfo.pendingTdLibText < MAX_MESSAGES_IN_TDLIB_PER_CHAT) {
|
||||
lastLocationSentTime = System.currentTimeMillis()
|
||||
app.telegramHelper.editTextLocation(shareInfo, message)
|
||||
val content = OsmandLocationUtils.getTextMessageContent(shareInfo.updateTextMessageId, message, app)
|
||||
app.telegramHelper.editTextLocation(shareInfo, content)
|
||||
} else {
|
||||
app.locationMessages.addBufferedMessage(message)
|
||||
}
|
||||
|
|
|
@ -926,9 +926,8 @@ class TelegramHelper private constructor() {
|
|||
}
|
||||
}
|
||||
|
||||
fun sendNewTextLocation(shareInfo: TelegramSettings.ShareChatInfo, location: LocationMessages.BufferMessage) {
|
||||
fun sendNewTextLocation(shareInfo: TelegramSettings.ShareChatInfo, content: TdApi.InputMessageText) {
|
||||
shareInfo.updateTextMessageId = 1
|
||||
val content = OsmandLocationUtils.getTextMessageContent(shareInfo.updateTextMessageId, location)
|
||||
if (!shareInfo.pendingTextMessage) {
|
||||
shareInfo.pendingTextMessage = true
|
||||
shareInfo.pendingTdLibText++
|
||||
|
@ -940,8 +939,7 @@ class TelegramHelper private constructor() {
|
|||
}
|
||||
}
|
||||
|
||||
fun editTextLocation(shareInfo: TelegramSettings.ShareChatInfo, location: LocationMessages.BufferMessage) {
|
||||
val content = OsmandLocationUtils.getTextMessageContent(shareInfo.updateTextMessageId, location)
|
||||
fun editTextLocation(shareInfo: TelegramSettings.ShareChatInfo, content: TdApi.InputMessageText) {
|
||||
if (shareInfo.currentTextMessageId!=-1L) {
|
||||
shareInfo.pendingTdLibText++
|
||||
shareInfo.lastSendTextMessageTime = (System.currentTimeMillis() / 1000).toInt()
|
||||
|
|
|
@ -489,7 +489,6 @@ class MyLocationTabFragment : Fragment(), TelegramListener {
|
|||
private fun updateList() {
|
||||
val items: MutableList<TdApi.Object> = mutableListOf()
|
||||
val chats: MutableList<TdApi.Chat> = mutableListOf()
|
||||
val currentUser = telegramHelper.getCurrentUser()
|
||||
val contacts = telegramHelper.getContacts()
|
||||
val chatList = if (sharingMode) {
|
||||
settings.getShareLocationChats()
|
||||
|
@ -501,10 +500,6 @@ class MyLocationTabFragment : Fragment(), TelegramListener {
|
|||
if (chat != null) {
|
||||
if (!sharingMode && settings.isSharingLocationToChat(chatId)) {
|
||||
continue
|
||||
} else if (telegramHelper.isPrivateChat(chat)) {
|
||||
if ((chat.type as TdApi.ChatTypePrivate).userId == currentUser?.id) {
|
||||
continue
|
||||
}
|
||||
}
|
||||
chats.add(chat)
|
||||
}
|
||||
|
@ -512,9 +507,8 @@ class MyLocationTabFragment : Fragment(), TelegramListener {
|
|||
items.addAll(chats)
|
||||
if (!sharingMode) {
|
||||
for (user in contacts.values) {
|
||||
val containsInChats =
|
||||
chats.any { telegramHelper.getUserIdFromChatType(it.type) == user.id }
|
||||
if ((!sharingMode && settings.isSharingLocationToUser(user.id)) || user.id == currentUser?.id || containsInChats) {
|
||||
val containsInChats = chats.any { telegramHelper.getUserIdFromChatType(it.type) == user.id }
|
||||
if ((!sharingMode && settings.isSharingLocationToUser(user.id)) || containsInChats) {
|
||||
continue
|
||||
}
|
||||
items.add(user)
|
||||
|
@ -606,9 +600,18 @@ class MyLocationTabFragment : Fragment(), TelegramListener {
|
|||
|
||||
TelegramUiHelper.setupPhoto(app, holder.icon, photoPath, placeholderId, false)
|
||||
|
||||
val currentUserId = telegramHelper.getCurrentUserId()
|
||||
val title = when (item) {
|
||||
is TdApi.Chat -> item.title
|
||||
is TdApi.User -> TelegramUiHelper.getUserName(item)
|
||||
is TdApi.Chat -> {
|
||||
if (telegramHelper.isPrivateChat(item) && (item.type as TdApi.ChatTypePrivate).userId == currentUserId) {
|
||||
getString(R.string.saved_messages)
|
||||
} else {
|
||||
item.title
|
||||
}
|
||||
}
|
||||
is TdApi.User -> {
|
||||
if (item.id == currentUserId) getString(R.string.saved_messages) else TelegramUiHelper.getUserName(item)
|
||||
}
|
||||
else -> null
|
||||
}
|
||||
|
||||
|
|
|
@ -322,9 +322,18 @@ class SetTimeDialogFragment : BaseDialogFragment(), TelegramLocationListener, Te
|
|||
|
||||
TelegramUiHelper.setupPhoto(app, holder.icon, photoPath, placeholderId, false)
|
||||
|
||||
val currentUserId = telegramHelper.getCurrentUserId()
|
||||
val title = when (item) {
|
||||
is TdApi.Chat -> item.title
|
||||
is TdApi.User -> TelegramUiHelper.getUserName(item)
|
||||
is TdApi.Chat -> {
|
||||
if (telegramHelper.isPrivateChat(item) && (item.type as TdApi.ChatTypePrivate).userId == currentUserId) {
|
||||
getString(R.string.saved_messages)
|
||||
} else {
|
||||
item.title
|
||||
}
|
||||
}
|
||||
is TdApi.User -> {
|
||||
if (item.id == currentUserId) getString(R.string.saved_messages) else TelegramUiHelper.getUserName(item)
|
||||
}
|
||||
else -> null
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ import android.view.ViewGroup
|
|||
import android.widget.*
|
||||
import net.osmand.telegram.R
|
||||
import net.osmand.telegram.TelegramSettings
|
||||
import net.osmand.telegram.TelegramSettings.NumericPref
|
||||
import net.osmand.telegram.TelegramSettings.ListPreference
|
||||
import net.osmand.telegram.helpers.TelegramHelper.Companion.OSMAND_BOT_USERNAME
|
||||
import net.osmand.telegram.helpers.TelegramUiHelper
|
||||
import net.osmand.telegram.utils.AndroidUtils
|
||||
|
@ -50,7 +50,7 @@ class SettingsDialogFragment : BaseDialogFragment() {
|
|||
}
|
||||
var container = mainView.findViewById<ViewGroup>(R.id.gps_and_loc_container)
|
||||
settings.gpsAndLocPrefs.forEach {
|
||||
createNumericPref(inflater, container, it)
|
||||
createListPref(inflater, container, it)
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 26) {
|
||||
|
@ -66,6 +66,11 @@ class SettingsDialogFragment : BaseDialogFragment() {
|
|||
}
|
||||
}
|
||||
|
||||
container = mainView.findViewById<ViewGroup>(R.id.units_and_formats_container)
|
||||
settings.unitsAndFormatsPrefs.forEach {
|
||||
createListPref(inflater, container, it)
|
||||
}
|
||||
|
||||
container = mainView.findViewById<ViewGroup>(R.id.gps_points_container)
|
||||
inflater.inflate(R.layout.item_with_descr_and_right_switch, container, false).apply {
|
||||
findViewById<ImageView>(R.id.icon).setImageDrawable(uiUtils.getThemedIcon(R.drawable.ic_action_connect))
|
||||
|
@ -139,7 +144,7 @@ class SettingsDialogFragment : BaseDialogFragment() {
|
|||
|
||||
container = mainView.findViewById<ViewGroup>(R.id.gpx_settings_container)
|
||||
settings.gpxLoggingPrefs.forEach {
|
||||
createNumericPref(inflater, container, it)
|
||||
createListPref(inflater, container, it)
|
||||
}
|
||||
|
||||
container = mainView.findViewById(R.id.osmand_connect_container)
|
||||
|
@ -243,7 +248,7 @@ class SettingsDialogFragment : BaseDialogFragment() {
|
|||
}
|
||||
}
|
||||
|
||||
private fun createNumericPref(inflater: LayoutInflater, container: ViewGroup, pref: NumericPref) {
|
||||
private fun createListPref(inflater: LayoutInflater, container: ViewGroup, pref: ListPreference) {
|
||||
inflater.inflate(R.layout.item_with_desc_and_right_value, container, false).apply {
|
||||
findViewById<ImageView>(R.id.icon).apply {
|
||||
if (pref.iconId != 0) {
|
||||
|
@ -284,14 +289,14 @@ class SettingsDialogFragment : BaseDialogFragment() {
|
|||
}
|
||||
}
|
||||
|
||||
private fun showPopupMenu(pref: NumericPref, valueView: TextView) {
|
||||
private fun showPopupMenu(pref: ListPreference, valueView: TextView) {
|
||||
val menuList = pref.getMenuItems()
|
||||
val ctx = valueView.context
|
||||
ListPopupWindow(ctx).apply {
|
||||
isModal = true
|
||||
anchorView = valueView
|
||||
setContentWidth(AndroidUtils.getPopupMenuWidth(ctx, menuList))
|
||||
height = if (menuList.size < 6) {
|
||||
height = if (menuList.size <= 6) {
|
||||
ListPopupWindow.WRAP_CONTENT
|
||||
} else {
|
||||
AndroidUtils.getPopupMenuHeight(ctx)
|
||||
|
|
|
@ -2,6 +2,8 @@ package net.osmand.telegram.utils
|
|||
|
||||
object DataConstants {
|
||||
|
||||
const val UTC_FORMAT = "UTC"
|
||||
|
||||
val countryPhoneCodes = mapOf("AB" to "+7840,+7940,+99544", "AF" to "+93", "AX" to "+35818",
|
||||
"AL" to "+355","DZ" to "+213", "AS" to "+1684", "AD" to "+376", "AO" to "+244","AI" to "+1264",
|
||||
"AG" to "+1268", "AR" to "+54", "AM" to "+374","AW" to "+297", "SH" to "+247", "AU" to "+61",
|
||||
|
@ -44,4 +46,46 @@ object DataConstants {
|
|||
"TM" to "+993", "TC" to "+1649", "TV" to "+688", "UG" to "+256","UA" to "+380", "AE" to "+971",
|
||||
"UK" to "+44", "US" to "+1","UY" to "+598", "VI" to "+1340", "UZ" to "+998", "VU" to "+678", "VE" to "+58",
|
||||
"VA" to "+3906698,+379", "VN" to "+84", "WF" to "+681","YE" to "+967", "ZM" to "+260", "ZW" to "+263")
|
||||
|
||||
val utcOffsets = mapOf(
|
||||
"$UTC_FORMAT-12" to -12f,
|
||||
"$UTC_FORMAT-11" to -11f,
|
||||
"$UTC_FORMAT-10" to -10f,
|
||||
"$UTC_FORMAT-09:30" to -9.5f,
|
||||
"$UTC_FORMAT-9" to -9f,
|
||||
"$UTC_FORMAT-8" to -8f,
|
||||
"$UTC_FORMAT-7" to -7f,
|
||||
"$UTC_FORMAT-6" to -6f,
|
||||
"$UTC_FORMAT-5" to -5f,
|
||||
"$UTC_FORMAT-4" to -4f,
|
||||
"$UTC_FORMAT-03:30" to -3.5f,
|
||||
"$UTC_FORMAT-3" to -3f,
|
||||
"$UTC_FORMAT-2" to -2f,
|
||||
"$UTC_FORMAT-1" to -1f,
|
||||
UTC_FORMAT to 0f,
|
||||
"$UTC_FORMAT+1" to 1f,
|
||||
"$UTC_FORMAT+2" to 2f,
|
||||
"$UTC_FORMAT+3" to 3f,
|
||||
"$UTC_FORMAT+03:30" to 3.5f,
|
||||
"$UTC_FORMAT+4" to 4f,
|
||||
"$UTC_FORMAT+04:30" to 4.5f,
|
||||
"$UTC_FORMAT+5" to 5f,
|
||||
"$UTC_FORMAT+05:30" to 5.5f,
|
||||
"$UTC_FORMAT+05:45" to 5.75f,
|
||||
"$UTC_FORMAT+6" to 6f,
|
||||
"$UTC_FORMAT+06:30" to 6.5f,
|
||||
"$UTC_FORMAT+7" to 7f,
|
||||
"$UTC_FORMAT+8" to 8f,
|
||||
"$UTC_FORMAT+08:45" to 8.75f,
|
||||
"$UTC_FORMAT+9" to 9f,
|
||||
"$UTC_FORMAT+09:30" to 9.5f,
|
||||
"$UTC_FORMAT+10" to 10f,
|
||||
"$UTC_FORMAT+10:30" to 10.5f,
|
||||
"$UTC_FORMAT+11" to 11f,
|
||||
"$UTC_FORMAT+12" to 12f,
|
||||
"$UTC_FORMAT+12:45" to 12.75f,
|
||||
"$UTC_FORMAT+13" to 13f,
|
||||
"$UTC_FORMAT+13:45" to 13.75f,
|
||||
"$UTC_FORMAT+14" to 14f
|
||||
)
|
||||
}
|
|
@ -17,6 +17,14 @@ object OsmandFormatter {
|
|||
|
||||
val YARDS_IN_ONE_METER = 1.0936f
|
||||
val FEET_IN_ONE_METER = YARDS_IN_ONE_METER * 3f
|
||||
|
||||
val FORMAT_METERS_KEY = "m"
|
||||
val FORMAT_FEET_KEY = "ft"
|
||||
val FORMAT_YARDS_KEY = "yd"
|
||||
val FORMAT_KILOMETERS_KEY = "km"
|
||||
val FORMAT_NAUTICALMILES_KEY = "nmi"
|
||||
val FORMAT_MILES_KEY = "mi"
|
||||
|
||||
private val fixed2 = DecimalFormat("0.00")
|
||||
private val fixed1 = DecimalFormat("0.0")
|
||||
|
||||
|
@ -166,118 +174,94 @@ object OsmandFormatter {
|
|||
}
|
||||
|
||||
@JvmOverloads
|
||||
fun getFormattedDistance(meters: Float, ctx: TelegramApplication, forceTrailingZeros: Boolean = true): String {
|
||||
fun getFormattedDistance(meters: Float, ctx: TelegramApplication, forceTrailingZeros: Boolean = true, useLocalizedString: Boolean = true): String {
|
||||
val format1 = if (forceTrailingZeros) "{0,number,0.0} " else "{0,number,0.#} "
|
||||
val format2 = if (forceTrailingZeros) "{0,number,0.00} " else "{0,number,0.##} "
|
||||
|
||||
val mc = ctx.settings.metricsConstants
|
||||
val mainUnitStr: Int
|
||||
val mainUnitStr: String
|
||||
val mainUnitInMeters: Float
|
||||
if (mc == MetricsConstants.KILOMETERS_AND_METERS) {
|
||||
mainUnitStr = R.string.km
|
||||
mainUnitInMeters = METERS_IN_KILOMETER
|
||||
} else if (mc == MetricsConstants.NAUTICAL_MILES) {
|
||||
mainUnitStr = R.string.nm
|
||||
mainUnitInMeters = METERS_IN_ONE_NAUTICALMILE
|
||||
} else {
|
||||
mainUnitStr = R.string.mile
|
||||
mainUnitInMeters = METERS_IN_ONE_MILE
|
||||
when (mc) {
|
||||
MetricsConstants.KILOMETERS_AND_METERS -> {
|
||||
mainUnitStr = if (useLocalizedString) ctx.getString(R.string.km) else FORMAT_KILOMETERS_KEY
|
||||
mainUnitInMeters = METERS_IN_KILOMETER
|
||||
}
|
||||
MetricsConstants.NAUTICAL_MILES -> {
|
||||
mainUnitStr = if (useLocalizedString) ctx.getString(R.string.nm) else FORMAT_NAUTICALMILES_KEY
|
||||
mainUnitInMeters = METERS_IN_ONE_NAUTICALMILE
|
||||
}
|
||||
else -> {
|
||||
mainUnitStr = if (useLocalizedString) ctx.getString(R.string.mile) else FORMAT_MILES_KEY
|
||||
mainUnitInMeters = METERS_IN_ONE_MILE
|
||||
}
|
||||
}
|
||||
|
||||
if (meters >= 100 * mainUnitInMeters) {
|
||||
return (meters / mainUnitInMeters + 0.5).toInt().toString() + " " + ctx.getString(mainUnitStr) //$NON-NLS-1$
|
||||
return (meters / mainUnitInMeters + 0.5).toInt().toString() + " " + mainUnitStr //$NON-NLS-1$
|
||||
} else if (meters > 9.99f * mainUnitInMeters) {
|
||||
return MessageFormat.format(format1 + ctx.getString(mainUnitStr), meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
return MessageFormat.format(format1 + mainUnitStr, meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
} else if (meters > 0.999f * mainUnitInMeters) {
|
||||
return MessageFormat.format(format2 + ctx.getString(mainUnitStr), meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
return MessageFormat.format(format2 + mainUnitStr, meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
} else if (mc == MetricsConstants.MILES_AND_FEET && meters > 0.249f * mainUnitInMeters) {
|
||||
return MessageFormat.format(format2 + ctx.getString(mainUnitStr), meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
return MessageFormat.format(format2 + mainUnitStr, meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
} else if (mc == MetricsConstants.MILES_AND_METERS && meters > 0.249f * mainUnitInMeters) {
|
||||
return MessageFormat.format(format2 + ctx.getString(mainUnitStr), meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
return MessageFormat.format(format2 + mainUnitStr, meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
} else if (mc == MetricsConstants.MILES_AND_YARDS && meters > 0.249f * mainUnitInMeters) {
|
||||
return MessageFormat.format(format2 + ctx.getString(mainUnitStr), meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
return MessageFormat.format(format2 + mainUnitStr, meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
} else if (mc == MetricsConstants.NAUTICAL_MILES && meters > 0.99f * mainUnitInMeters) {
|
||||
return MessageFormat.format(format2 + ctx.getString(mainUnitStr), meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
return MessageFormat.format(format2 + mainUnitStr, meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
} else {
|
||||
if (mc == MetricsConstants.KILOMETERS_AND_METERS || mc == MetricsConstants.MILES_AND_METERS) {
|
||||
return (meters + 0.5).toInt().toString() + " " + ctx.getString(R.string.m) //$NON-NLS-1$
|
||||
return (meters + 0.5).toInt().toString() + if (useLocalizedString) " " + ctx.getString(R.string.m) else " $FORMAT_METERS_KEY" //$NON-NLS-1$
|
||||
} else if (mc == MetricsConstants.MILES_AND_FEET) {
|
||||
val feet = (meters * FEET_IN_ONE_METER + 0.5).toInt()
|
||||
return feet.toString() + " " + ctx.getString(R.string.foot) //$NON-NLS-1$
|
||||
return feet.toString() + if (useLocalizedString) " " + ctx.getString(R.string.foot) else " $FORMAT_FEET_KEY" //$NON-NLS-1$
|
||||
} else if (mc == MetricsConstants.MILES_AND_YARDS) {
|
||||
val yards = (meters * YARDS_IN_ONE_METER + 0.5).toInt()
|
||||
return yards.toString() + " " + ctx.getString(R.string.yard) //$NON-NLS-1$
|
||||
return yards.toString() + if (useLocalizedString) " " + ctx.getString(R.string.yard) else " $FORMAT_YARDS_KEY" //$NON-NLS-1$
|
||||
}
|
||||
return (meters + 0.5).toInt().toString() + " " + ctx.getString(R.string.m) //$NON-NLS-1$
|
||||
return (meters + 0.5).toInt().toString() + if (useLocalizedString) " " + ctx.getString(R.string.m) else " $FORMAT_METERS_KEY" //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
|
||||
fun getFormattedAlt(alt: Double, ctx: TelegramApplication): String {
|
||||
fun getFormattedAlt(alt: Double, ctx: TelegramApplication, useLocalizedString: Boolean = true): String {
|
||||
val mc = ctx.settings.metricsConstants
|
||||
return if (mc == MetricsConstants.KILOMETERS_AND_METERS) {
|
||||
(alt + 0.5).toInt().toString() + " " + ctx.getString(R.string.m)
|
||||
val useFeet = mc == MetricsConstants.MILES_AND_FEET || mc == MetricsConstants.MILES_AND_YARDS
|
||||
return if (!useFeet) {
|
||||
(alt + 0.5).toInt().toString() + if (useLocalizedString) " " + ctx.getString(R.string.m) else " $FORMAT_METERS_KEY"
|
||||
} else {
|
||||
(alt * FEET_IN_ONE_METER + 0.5).toInt().toString() + " " + ctx.getString(R.string.foot)
|
||||
(alt * FEET_IN_ONE_METER + 0.5).toInt().toString() + if (useLocalizedString) " " + ctx.getString(R.string.foot) else " $FORMAT_FEET_KEY"
|
||||
}
|
||||
}
|
||||
|
||||
fun getFormattedSpeed(metersperseconds: Float, ctx: TelegramApplication): String {
|
||||
fun getFormattedSpeed(metersPerSeconds: Float, ctx: TelegramApplication, useLocalizedString: Boolean = true): String {
|
||||
val mc = ctx.settings.speedConstants
|
||||
val kmh = metersperseconds * 3.6f
|
||||
if (mc == SpeedConstants.KILOMETERS_PER_HOUR) {
|
||||
val kmh = metersPerSeconds * 3.6f
|
||||
val convertedSpeed: Float = when (mc) {
|
||||
SpeedConstants.KILOMETERS_PER_HOUR -> kmh
|
||||
SpeedConstants.MILES_PER_HOUR -> kmh * METERS_IN_KILOMETER / METERS_IN_ONE_MILE
|
||||
SpeedConstants.NAUTICALMILES_PER_HOUR -> kmh * METERS_IN_KILOMETER / METERS_IN_ONE_NAUTICALMILE
|
||||
SpeedConstants.MINUTES_PER_KILOMETER -> {
|
||||
if (metersPerSeconds < 0.111111111) {
|
||||
return "-" + if (useLocalizedString) mc.toShortString(ctx) else mc.getDefaultString()
|
||||
}
|
||||
METERS_IN_KILOMETER / (metersPerSeconds * 60)
|
||||
}
|
||||
SpeedConstants.MINUTES_PER_MILE -> {
|
||||
if (metersPerSeconds < 0.111111111) {
|
||||
return "-" + if (useLocalizedString) mc.toShortString(ctx) else mc.getDefaultString()
|
||||
}
|
||||
METERS_IN_ONE_MILE / (metersPerSeconds * 60)
|
||||
}
|
||||
else -> metersPerSeconds /*if (mc == SpeedConstants.METERS_PER_SECOND) */
|
||||
}
|
||||
|
||||
return if (convertedSpeed >= mc.speedThreshold) {
|
||||
// e.g. car case and for high-speeds: Display rounded to 1 km/h (5% precision at 20 km/h)
|
||||
if (kmh >= 20) {
|
||||
return Math.round(kmh).toString() + " " + mc.toShortString(ctx)
|
||||
}
|
||||
"${Math.round(convertedSpeed)} " + if (useLocalizedString) mc.toShortString(ctx) else mc.getDefaultString()
|
||||
} else {
|
||||
// for smaller values display 1 decimal digit x.y km/h, (0.5% precision at 20 km/h)
|
||||
val kmh10 = Math.round(kmh * 10f)
|
||||
return (kmh10 / 10f).toString() + " " + mc.toShortString(ctx)
|
||||
} else if (mc == SpeedConstants.MILES_PER_HOUR) {
|
||||
val mph = kmh * METERS_IN_KILOMETER / METERS_IN_ONE_MILE
|
||||
if (mph >= 20) {
|
||||
return Math.round(mph).toString() + " " + mc.toShortString(ctx)
|
||||
} else {
|
||||
val mph10 = Math.round(mph * 10f)
|
||||
return (mph10 / 10f).toString() + " " + mc.toShortString(ctx)
|
||||
}
|
||||
} else if (mc == SpeedConstants.NAUTICALMILES_PER_HOUR) {
|
||||
val mph = kmh * METERS_IN_KILOMETER / METERS_IN_ONE_NAUTICALMILE
|
||||
if (mph >= 20) {
|
||||
return Math.round(mph).toString() + " " + mc.toShortString(ctx)
|
||||
} else {
|
||||
val mph10 = Math.round(mph * 10f)
|
||||
return (mph10 / 10f).toString() + " " + mc.toShortString(ctx)
|
||||
}
|
||||
} else if (mc == SpeedConstants.MINUTES_PER_KILOMETER) {
|
||||
if (metersperseconds < 0.111111111) {
|
||||
return "-" + mc.toShortString(ctx)
|
||||
}
|
||||
val minperkm = METERS_IN_KILOMETER / (metersperseconds * 60)
|
||||
if (minperkm >= 10) {
|
||||
return Math.round(minperkm).toString() + " " + mc.toShortString(ctx)
|
||||
} else {
|
||||
val mph10 = Math.round(minperkm * 10f)
|
||||
return (mph10 / 10f).toString() + " " + mc.toShortString(ctx)
|
||||
}
|
||||
} else if (mc == SpeedConstants.MINUTES_PER_MILE) {
|
||||
if (metersperseconds < 0.111111111) {
|
||||
return "-" + mc.toShortString(ctx)
|
||||
}
|
||||
val minperm = METERS_IN_ONE_MILE / (metersperseconds * 60)
|
||||
if (minperm >= 10) {
|
||||
return Math.round(minperm).toString() + " " + mc.toShortString(ctx)
|
||||
} else {
|
||||
val mph10 = Math.round(minperm * 10f)
|
||||
return (mph10 / 10f).toString() + " " + mc.toShortString(ctx)
|
||||
}
|
||||
} else
|
||||
/*if (mc == SpeedConstants.METERS_PER_SECOND) */ {
|
||||
if (metersperseconds >= 10) {
|
||||
return Math.round(metersperseconds).toString() + " " + SpeedConstants.METERS_PER_SECOND.toShortString(ctx)
|
||||
}
|
||||
// for smaller values display 1 decimal digit x.y km/h, (0.5% precision at 20 km/h)
|
||||
val kmh10 = Math.round(metersperseconds * 10f)
|
||||
return (kmh10 / 10f).toString() + " " + SpeedConstants.METERS_PER_SECOND.toShortString(ctx)
|
||||
"${Math.round(convertedSpeed * 10f) / 10f} " + if (useLocalizedString) mc.toShortString(ctx) else mc.getDefaultString()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -311,20 +295,27 @@ object OsmandFormatter {
|
|||
}
|
||||
}
|
||||
|
||||
enum class SpeedConstants private constructor(private val key: Int, private val descr: Int) {
|
||||
KILOMETERS_PER_HOUR(R.string.km_h, R.string.si_kmh),
|
||||
MILES_PER_HOUR(R.string.mile_per_hour, R.string.si_mph),
|
||||
METERS_PER_SECOND(R.string.m_s, R.string.si_m_s),
|
||||
MINUTES_PER_MILE(R.string.min_mile, R.string.si_min_m),
|
||||
MINUTES_PER_KILOMETER(R.string.min_km, R.string.si_min_km),
|
||||
NAUTICALMILES_PER_HOUR(R.string.nm_h, R.string.si_nm_h);
|
||||
enum class SpeedConstants private constructor(
|
||||
private val key: String,
|
||||
private val title: Int,
|
||||
private val descr: Int,
|
||||
val speedThreshold: Int
|
||||
) {
|
||||
KILOMETERS_PER_HOUR("km/h", R.string.km_h, R.string.si_kmh, 20),
|
||||
MILES_PER_HOUR("mph", R.string.mile_per_hour, R.string.si_mph, 20),
|
||||
METERS_PER_SECOND("m/s", R.string.m_s, R.string.si_m_s, 10),
|
||||
MINUTES_PER_MILE("min/m", R.string.min_mile, R.string.si_min_m, 10),
|
||||
MINUTES_PER_KILOMETER("min/km", R.string.min_km, R.string.si_min_km, 10),
|
||||
NAUTICALMILES_PER_HOUR("nmi/h", R.string.nm_h, R.string.si_nm_h, 20);
|
||||
|
||||
fun toHumanString(ctx: Context): String {
|
||||
return ctx.getString(descr)
|
||||
}
|
||||
|
||||
fun toShortString(ctx: Context): String {
|
||||
return ctx.getString(key)
|
||||
return ctx.getString(title)
|
||||
}
|
||||
|
||||
fun getDefaultString() = key
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,7 +42,9 @@ object OsmandLocationUtils {
|
|||
const val SECONDS_AGO_SUFFIX = " seconds ago"
|
||||
const val MINUTES_AGO_SUFFIX = " minutes ago"
|
||||
const val HOURS_AGO_SUFFIX = " hours ago"
|
||||
const val UTC_FORMAT_SUFFIX = " UTC"
|
||||
const val UTC_FORMAT_PATTERN = "yyyy-MM-dd HH:mm:ss"
|
||||
|
||||
const val ONE_HOUR_TIME_MS = 60 * 60 * 1000 // 1 hour
|
||||
|
||||
val UTC_DATE_FORMAT = SimpleDateFormat("yyyy-MM-dd", Locale.US).apply {
|
||||
timeZone = TimeZone.getTimeZone("UTC")
|
||||
|
@ -163,9 +165,17 @@ object OsmandLocationUtils {
|
|||
return String.format(Locale.US, "%.5f, %.5f", sig.lat, sig.lon)
|
||||
}
|
||||
|
||||
fun formatFullTime(ti: Long): String {
|
||||
fun formatFullTime(ti: Long, app: TelegramApplication): String {
|
||||
val dt = Date(ti)
|
||||
return UTC_DATE_FORMAT.format(dt) + " " + UTC_TIME_FORMAT.format(dt) + " UTC"
|
||||
val offsetKey = app.settings.utcOffset
|
||||
val utcOffset = DataConstants.utcOffsets[offsetKey] ?: 0f
|
||||
val simpleDateFormat = SimpleDateFormat(UTC_FORMAT_PATTERN, Locale.US)
|
||||
|
||||
simpleDateFormat.timeZone = TimeZone.getTimeZone(DataConstants.UTC_FORMAT).apply {
|
||||
rawOffset = (utcOffset * ONE_HOUR_TIME_MS).toInt()
|
||||
}
|
||||
|
||||
return "${simpleDateFormat.format(dt)} $offsetKey"
|
||||
}
|
||||
|
||||
fun parseOsmAndBotLocationContent(oldContent: MessageOsmAndBotLocation, content: TdApi.MessageContent): MessageOsmAndBotLocation {
|
||||
|
@ -242,21 +252,11 @@ object OsmandLocationUtils {
|
|||
}
|
||||
s.startsWith(ALTITUDE_PREFIX) -> {
|
||||
val altStr = s.removePrefix(ALTITUDE_PREFIX)
|
||||
try {
|
||||
val alt = altStr.split(" ").first()
|
||||
res.altitude = alt.toDouble()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
res.altitude = parseDistance(altStr)
|
||||
}
|
||||
s.startsWith(SPEED_PREFIX) -> {
|
||||
val speedStr = s.removePrefix(SPEED_PREFIX)
|
||||
try {
|
||||
val speed = speedStr.split(" ").first()
|
||||
res.speed = speed.toDouble()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
res.speed = parseSpeed(speedStr)
|
||||
}
|
||||
s.startsWith(BEARING_PREFIX) -> {
|
||||
val bearingStr = s.removePrefix(BEARING_PREFIX)
|
||||
|
@ -269,12 +269,7 @@ object OsmandLocationUtils {
|
|||
}
|
||||
s.startsWith(HDOP_PREFIX) -> {
|
||||
val hdopStr = s.removePrefix(HDOP_PREFIX)
|
||||
try {
|
||||
val hdop = hdopStr.split(" ").first()
|
||||
res.hdop = hdop.toDouble()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
res.hdop = parseDistance(hdopStr)
|
||||
}
|
||||
s.startsWith(UPDATED_PREFIX) -> {
|
||||
if (res.lastUpdated == 0) {
|
||||
|
@ -314,13 +309,19 @@ object OsmandLocationUtils {
|
|||
val hours = locStr.toLong()
|
||||
return (System.currentTimeMillis() - hours * 60 * 60 * 1000)
|
||||
}
|
||||
timeS.endsWith(UTC_FORMAT_SUFFIX) -> {
|
||||
val locStr = timeS.removeSuffix(UTC_FORMAT_SUFFIX)
|
||||
val (latS, lonS) = locStr.split(" ")
|
||||
val date = UTC_DATE_FORMAT.parse(latS)
|
||||
val time = UTC_TIME_FORMAT.parse(lonS)
|
||||
val res = date.time + time.time
|
||||
return res
|
||||
timeS.contains(DataConstants.UTC_FORMAT) -> {
|
||||
val utcIndex = timeS.indexOf(DataConstants.UTC_FORMAT)
|
||||
if (utcIndex != -1) {
|
||||
val locStr = timeS.substring(0, utcIndex)
|
||||
val utcOffset = timeS.substring(utcIndex)
|
||||
val utcTimeOffset = DataConstants.utcOffsets[utcOffset] ?: 0f
|
||||
val simpleDateFormat = SimpleDateFormat(UTC_FORMAT_PATTERN, Locale.US)
|
||||
simpleDateFormat.timeZone = TimeZone.getTimeZone(DataConstants.UTC_FORMAT).apply {
|
||||
rawOffset = (utcTimeOffset * ONE_HOUR_TIME_MS).toInt()
|
||||
}
|
||||
val res = simpleDateFormat.parse(locStr)
|
||||
return res.time
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
|
@ -329,50 +330,48 @@ object OsmandLocationUtils {
|
|||
return 0
|
||||
}
|
||||
|
||||
fun getTextMessageContent(updateId: Int, location: LocationMessage): TdApi.InputMessageText {
|
||||
val entities = mutableListOf<TdApi.TextEntity>()
|
||||
val builder = StringBuilder()
|
||||
val locationMessage = formatLocation(location)
|
||||
|
||||
val firstSpace = USER_TEXT_LOCATION_TITLE.indexOf(' ')
|
||||
val secondSpace = USER_TEXT_LOCATION_TITLE.indexOf(' ', firstSpace + 1)
|
||||
entities.add(TdApi.TextEntity(builder.length + firstSpace + 1, secondSpace - firstSpace, TdApi.TextEntityTypeTextUrl(SHARING_LINK)))
|
||||
builder.append("$USER_TEXT_LOCATION_TITLE\n")
|
||||
|
||||
entities.add(TdApi.TextEntity(builder.lastIndex, LOCATION_PREFIX.length, TdApi.TextEntityTypeBold()))
|
||||
builder.append(LOCATION_PREFIX)
|
||||
|
||||
entities.add(TdApi.TextEntity(builder.length, locationMessage.length,
|
||||
TdApi.TextEntityTypeTextUrl("$BASE_SHARING_URL?lat=${location.lat}&lon=${location.lon}")))
|
||||
builder.append("$locationMessage\n")
|
||||
|
||||
if (location.altitude != 0.0) {
|
||||
entities.add(TdApi.TextEntity(builder.lastIndex, ALTITUDE_PREFIX.length, TdApi.TextEntityTypeBold()))
|
||||
builder.append(String.format(Locale.US, "$ALTITUDE_PREFIX%.1f m\n", location.altitude))
|
||||
fun parseSpeed(speedS: String): Double {
|
||||
try {
|
||||
if (!speedS.contains(" ")) {
|
||||
return 0.0
|
||||
}
|
||||
val speedSplit = speedS.split(" ")
|
||||
val speedVal = speedSplit.first().toDouble()
|
||||
val speedFormat = OsmandFormatter.SpeedConstants.values().firstOrNull { it.getDefaultString() == speedSplit.last() }
|
||||
return when (speedFormat) {
|
||||
OsmandFormatter.SpeedConstants.KILOMETERS_PER_HOUR -> speedVal / 3.6f
|
||||
OsmandFormatter.SpeedConstants.MILES_PER_HOUR -> (speedVal / 3.6f) / (OsmandFormatter.METERS_IN_KILOMETER / OsmandFormatter.METERS_IN_ONE_MILE)
|
||||
OsmandFormatter.SpeedConstants.NAUTICALMILES_PER_HOUR -> (speedVal / 3.6f) / (OsmandFormatter.METERS_IN_KILOMETER / OsmandFormatter.METERS_IN_ONE_NAUTICALMILE)
|
||||
OsmandFormatter.SpeedConstants.MINUTES_PER_KILOMETER -> (OsmandFormatter.METERS_IN_KILOMETER / speedVal) / 60
|
||||
OsmandFormatter.SpeedConstants.MINUTES_PER_MILE -> (OsmandFormatter.METERS_IN_ONE_MILE / speedVal) / 60
|
||||
else -> speedVal
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
if (location.speed > 0) {
|
||||
entities.add(TdApi.TextEntity(builder.lastIndex, SPEED_PREFIX.length, TdApi.TextEntityTypeBold()))
|
||||
builder.append(String.format(Locale.US, "$SPEED_PREFIX%.1f m/s\n", location.speed))
|
||||
}
|
||||
if (location.bearing > 0) {
|
||||
entities.add(TdApi.TextEntity(builder.lastIndex, BEARING_PREFIX.length, TdApi.TextEntityTypeBold()))
|
||||
builder.append(String.format(Locale.US, "$BEARING_PREFIX%.1f$BEARING_SUFFIX\n", location.bearing))
|
||||
}
|
||||
if (location.hdop != 0.0 && location.speed == 0.0) {
|
||||
entities.add(TdApi.TextEntity(builder.lastIndex, HDOP_PREFIX.length, TdApi.TextEntityTypeBold()))
|
||||
builder.append(String.format(Locale.US, "$HDOP_PREFIX%d m\n", location.hdop.toInt()))
|
||||
}
|
||||
if (updateId == 0) {
|
||||
builder.append(String.format("$UPDATED_PREFIX%s\n", formatFullTime(location.time)))
|
||||
} else {
|
||||
builder.append(String.format("$UPDATED_PREFIX%s (%d)\n", formatFullTime(location.time), updateId))
|
||||
}
|
||||
val textMessage = builder.toString().trim()
|
||||
|
||||
return TdApi.InputMessageText(TdApi.FormattedText(textMessage, entities.toTypedArray()), true, true)
|
||||
return 0.0
|
||||
}
|
||||
|
||||
fun getTextMessageContent(updateId: Int, location: BufferMessage): TdApi.InputMessageText {
|
||||
fun parseDistance(distanceS: String): Double {
|
||||
try {
|
||||
val distanceSplit = distanceS.split(" ")
|
||||
val distanceVal = distanceSplit.first().toDouble()
|
||||
return when (distanceSplit.last()) {
|
||||
OsmandFormatter.FORMAT_METERS_KEY -> return distanceVal
|
||||
OsmandFormatter.FORMAT_FEET_KEY -> return distanceVal / OsmandFormatter.FEET_IN_ONE_METER
|
||||
OsmandFormatter.FORMAT_YARDS_KEY -> return distanceVal / OsmandFormatter.YARDS_IN_ONE_METER
|
||||
OsmandFormatter.FORMAT_KILOMETERS_KEY -> return distanceVal * OsmandFormatter.METERS_IN_KILOMETER
|
||||
OsmandFormatter.FORMAT_NAUTICALMILES_KEY -> return distanceVal * OsmandFormatter.METERS_IN_ONE_NAUTICALMILE
|
||||
OsmandFormatter.FORMAT_MILES_KEY -> return distanceVal * OsmandFormatter.METERS_IN_ONE_MILE
|
||||
else -> distanceVal
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
return 0.0
|
||||
}
|
||||
|
||||
fun getTextMessageContent(updateId: Int, location: BufferMessage, app: TelegramApplication): TdApi.InputMessageText {
|
||||
val entities = mutableListOf<TdApi.TextEntity>()
|
||||
val builder = StringBuilder()
|
||||
val locationMessage = formatLocation(location)
|
||||
|
@ -391,11 +390,13 @@ object OsmandLocationUtils {
|
|||
|
||||
if (location.altitude != 0.0) {
|
||||
entities.add(TdApi.TextEntity(builder.lastIndex, ALTITUDE_PREFIX.length, TdApi.TextEntityTypeBold()))
|
||||
builder.append(String.format(Locale.US, "$ALTITUDE_PREFIX%.1f m\n", location.altitude))
|
||||
val formattedAltitude = OsmandFormatter.getFormattedAlt(location.altitude, app, false)
|
||||
builder.append(String.format(Locale.US, "$ALTITUDE_PREFIX%s\n", formattedAltitude))
|
||||
}
|
||||
if (location.speed > 0) {
|
||||
entities.add(TdApi.TextEntity(builder.lastIndex, SPEED_PREFIX.length, TdApi.TextEntityTypeBold()))
|
||||
builder.append(String.format(Locale.US, "$SPEED_PREFIX%.1f m/s\n", location.speed))
|
||||
val formattedSpeed = OsmandFormatter.getFormattedSpeed(location.speed.toFloat(), app, false)
|
||||
builder.append(String.format(Locale.US, "$SPEED_PREFIX%s\n", formattedSpeed))
|
||||
}
|
||||
if (location.bearing > 0) {
|
||||
entities.add(TdApi.TextEntity(builder.lastIndex, BEARING_PREFIX.length, TdApi.TextEntityTypeBold()))
|
||||
|
@ -403,12 +404,13 @@ object OsmandLocationUtils {
|
|||
}
|
||||
if (location.hdop != 0.0 && location.speed == 0.0) {
|
||||
entities.add(TdApi.TextEntity(builder.lastIndex, HDOP_PREFIX.length, TdApi.TextEntityTypeBold()))
|
||||
builder.append(String.format(Locale.US, "$HDOP_PREFIX%d m\n", location.hdop.toInt()))
|
||||
val formattedHdop = OsmandFormatter.getFormattedDistance(location.hdop.toFloat(), app, false, false)
|
||||
builder.append(String.format(Locale.US, "$HDOP_PREFIX%s\n", formattedHdop))
|
||||
}
|
||||
if (updateId == 0) {
|
||||
builder.append(String.format("$UPDATED_PREFIX%s\n", formatFullTime(location.time)))
|
||||
builder.append(String.format("$UPDATED_PREFIX%s\n", formatFullTime(location.time, app)))
|
||||
} else {
|
||||
builder.append(String.format("$UPDATED_PREFIX%s (%d)\n", formatFullTime(location.time), updateId))
|
||||
builder.append(String.format("$UPDATED_PREFIX%s (%d)\n", formatFullTime(location.time, app), updateId))
|
||||
}
|
||||
val textMessage = builder.toString().trim()
|
||||
|
||||
|
|
25
OsmAnd/AndroidManifest-freehuawei.xml
Normal file
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<application>
|
||||
<activity android:name="com.huawei.android.sdk.drm.DrmDialogActivity"
|
||||
android:configChanges="screenSize|orientation|keyboardHidden"
|
||||
android:exported="false"
|
||||
android:theme="@android:style/Theme.Translucent">
|
||||
<meta-data
|
||||
android:name="hwc-theme"
|
||||
android:value="androidhwext:style/Theme.Emui.Translucent" />
|
||||
</activity>
|
||||
|
||||
<provider
|
||||
android:name="android.support.v4.content.FileProvider"
|
||||
android:authorities="net.osmand.huawei.fileprovider"
|
||||
tools:replace="android:authorities" />
|
||||
<service
|
||||
android:name="net.osmand.plus.NavigationService"
|
||||
android:process="net.osmand.huawei"
|
||||
tools:replace="android:process" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
|
@ -48,6 +48,7 @@
|
|||
<asset source="voice/uk/uk_tts.js" destination="voice/uk-tts/uk_tts.js" mode="overwriteOnlyIfExists" />
|
||||
<asset source="voice/zh/zh_tts.js" destination="voice/zh-tts/zh_tts.js" mode="alwaysOverwriteOrCopy" />
|
||||
<asset source="voice/zh-hk/zh-hk_tts.js" destination="voice/zh-hk-tts/zh-hk_tts.js" mode="overwriteOnlyIfExists" />
|
||||
<asset source="voice/zh-tw/zh-tw_tts.js" destination="voice/zh-tw-tts/zh-tw_tts.js" mode="overwriteOnlyIfExists" />
|
||||
|
||||
<asset source="fonts/05_NotoSans-Regular.ttf" destination="fonts/05_NotoSans-Regular.ttf" mode="alwaysOverwriteOrCopy" />
|
||||
<asset source="fonts/10_NotoSans-Bold.ttf" destination="fonts/10_NotoSans-Bold.ttf" mode="alwaysOverwriteOrCopy" />
|
||||
|
|
|
@ -116,6 +116,9 @@ android {
|
|||
huawei {
|
||||
manifest.srcFile "AndroidManifest-huawei.xml"
|
||||
}
|
||||
freehuawei {
|
||||
manifest.srcFile "AndroidManifest-freehuawei.xml"
|
||||
}
|
||||
|
||||
legacy {
|
||||
jniLibs.srcDirs = ["libc++"]
|
||||
|
@ -189,6 +192,10 @@ android {
|
|||
dimension "version"
|
||||
applicationId "net.osmand.plus.huawei"
|
||||
}
|
||||
freehuawei {
|
||||
dimension "version"
|
||||
applicationId "net.osmand.huawei"
|
||||
}
|
||||
|
||||
// CoreVersion
|
||||
legacy {
|
||||
|
@ -493,4 +500,5 @@ dependencies {
|
|||
}
|
||||
|
||||
huaweiImplementation files('libs/huawei-android-drm_v2.5.2.300.jar')
|
||||
freehuaweiImplementation files('libs/huawei-android-drm_v2.5.2.300.jar')
|
||||
}
|
||||
|
|
3
OsmAnd/libs/.gitignore
vendored
|
@ -2,4 +2,5 @@ armeabi/
|
|||
x86/
|
||||
armeabi-v7a/
|
||||
mips/
|
||||
arm64-v8a/
|
||||
arm64-v8a/
|
||||
x86_64/
|
BIN
OsmAnd/res/drawable-hdpi/ic_action_add.png
Normal file
After Width: | Height: | Size: 607 B |
BIN
OsmAnd/res/drawable-hdpi/ic_action_remove.png
Normal file
After Width: | Height: | Size: 556 B |
BIN
OsmAnd/res/drawable-hdpi/ic_action_undo.png
Normal file
After Width: | Height: | Size: 798 B |
BIN
OsmAnd/res/drawable-hdpi/widget_location_sharing_day.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
OsmAnd/res/drawable-hdpi/widget_location_sharing_night.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
OsmAnd/res/drawable-hdpi/widget_location_sharing_off_day.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
OsmAnd/res/drawable-hdpi/widget_location_sharing_off_night.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
OsmAnd/res/drawable-large-hdpi/widget_location_sharing_day.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
OsmAnd/res/drawable-large-hdpi/widget_location_sharing_night.png
Normal file
After Width: | Height: | Size: 4 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 4 KiB |
BIN
OsmAnd/res/drawable-large-xhdpi/widget_location_sharing_day.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.4 KiB |
BIN
OsmAnd/res/drawable-large/widget_location_sharing_day.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
OsmAnd/res/drawable-large/widget_location_sharing_night.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
OsmAnd/res/drawable-large/widget_location_sharing_off_day.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
OsmAnd/res/drawable-large/widget_location_sharing_off_night.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
OsmAnd/res/drawable-mdpi/ic_action_add.png
Normal file
After Width: | Height: | Size: 396 B |
BIN
OsmAnd/res/drawable-mdpi/ic_action_remove.png
Normal file
After Width: | Height: | Size: 382 B |
BIN
OsmAnd/res/drawable-mdpi/ic_action_undo.png
Normal file
After Width: | Height: | Size: 541 B |
BIN
OsmAnd/res/drawable-mdpi/widget_location_sharing_day.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
OsmAnd/res/drawable-mdpi/widget_location_sharing_night.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
OsmAnd/res/drawable-mdpi/widget_location_sharing_off_day.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
OsmAnd/res/drawable-mdpi/widget_location_sharing_off_night.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
OsmAnd/res/drawable-xhdpi/ic_action_add.png
Normal file
After Width: | Height: | Size: 839 B |
BIN
OsmAnd/res/drawable-xhdpi/ic_action_remove.png
Normal file
After Width: | Height: | Size: 766 B |
BIN
OsmAnd/res/drawable-xhdpi/ic_action_undo.png
Normal file
After Width: | Height: | Size: 1 KiB |
BIN
OsmAnd/res/drawable-xhdpi/widget_location_sharing_day.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
OsmAnd/res/drawable-xhdpi/widget_location_sharing_night.png
Normal file
After Width: | Height: | Size: 2.4 KiB |