Merge branch 'master' of ssh://github.com/osmandapp/Osmand into js_voice_routing

This commit is contained in:
PaulStets 2018-08-08 09:06:00 +03:00
commit 3abf742456
21 changed files with 280 additions and 104 deletions

View file

@ -444,6 +444,14 @@ public class GeneralRouter implements VehicleRouter {
return attributes.get(attribute);
}
public float getFloatAttribute(String attribute, float v) {
return parseSilentFloat(getAttribute(attribute), v);
}
public int getIntAttribute(String attribute, int v) {
return (int) parseSilentFloat(getAttribute(attribute), v);
}
private static boolean parseSilentBoolean(String t, boolean v) {
if (t == null || t.length() == 0) {
return v;

View file

@ -5,9 +5,7 @@ import gnu.trove.list.array.TIntArrayList;
import gnu.trove.map.hash.TIntObjectHashMap;
import gnu.trove.map.hash.TLongObjectHashMap;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@ -28,24 +26,6 @@ import net.osmand.util.MapUtils;
public class TransportRoutePlanner {
public static void main(String[] args) throws IOException {
File fl = new File(System.getProperty("maps.dir"), "Netherlands_noord-holland_europe_2.obf");
RandomAccessFile raf = new RandomAccessFile(fl, "r");
BinaryMapIndexReader reader = new BinaryMapIndexReader(raf, fl);
LatLon start = new LatLon(52.28094, 4.853248);
// LatLon end = new LatLon(52.320988, 4.87256);
LatLon end = new LatLon(52.349308, 4.9017425);
TransportRoutingConfiguration cfg = new TransportRoutingConfiguration();
cfg.maxNumberOfChanges = 3;
cfg.walkRadius = 1500;
// cfg.walkChangeRadius = 500;
TransportRoutingContext ctx = new TransportRoutingContext(cfg, reader);
TransportRoutePlanner planner = new TransportRoutePlanner();
planner.buildRoute(ctx, start, end);
}
public List<TransportRouteResult> buildRoute(TransportRoutingContext ctx, LatLon start, LatLon end) throws IOException {
ctx.startCalcTime = System.currentTimeMillis();
@ -150,8 +130,6 @@ public class TransportRoutePlanner {
private List<TransportRouteResult> prepareResults(TransportRoutingContext ctx, List<TransportRouteSegment> results) {
Collections.sort(results, new SegmentsComparator(ctx));
List<TransportRouteResult> lst = new ArrayList<TransportRouteResult>();
System.out.println("FIX !!! " + ctx.wrongLoadedWays + " " + ctx.loadedWays + " " +
(ctx.loadTime / (1000 * 1000)) + " ms");
System.out.println(String.format("Calculated %.1f seconds, found %d results, visited %d routes, loaded %d tiles (%d ms read, %d ms total),",
(System.currentTimeMillis() - ctx.startCalcTime) / 1000.0, results.size(), ctx.visitedRoutesCount,
ctx.quadTree.size(), ctx.readTime / (1000 * 1000), ctx.loadTime / (1000 * 1000)));

View file

@ -2,6 +2,7 @@ package net.osmand.router;
public class TransportRoutingConfiguration {
public static final String KEY = "public_transport";
public int ZOOM_TO_LOAD_TILES = 14;
@ -23,4 +24,23 @@ public class TransportRoutingConfiguration {
public int maxRouteTime = 60 * 60 * 1000; // 1000 hours
public TransportRoutingConfiguration(RoutingConfiguration.Builder builder) {
GeneralRouter router = builder == null ? null : builder.getRouter("public_transport");
if(router != null) {
walkRadius = router.getIntAttribute("walkRadius", walkRadius);
walkChangeRadius = router.getIntAttribute("walkChangeRadius", walkRadius);
ZOOM_TO_LOAD_TILES = router.getIntAttribute("zoomToLoadTiles", ZOOM_TO_LOAD_TILES);
maxNumberOfChanges = router.getIntAttribute("maxNumberOfChanges", maxNumberOfChanges);
finishTimeSeconds = router.getIntAttribute("delayForAlternativesRoutes", finishTimeSeconds);
travelSpeed = router.getFloatAttribute("defaultTravelSpeed", (float) travelSpeed);
walkSpeed = router.getFloatAttribute("defaultWalkSpeed", (float) walkSpeed);
stopTime = router.getIntAttribute("defaultStopTime", stopTime);
changeTime = router.getIntAttribute("defaultChangeTime", changeTime);
}
}
}

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>

View file

@ -1,6 +1,5 @@
package net.osmand.telegram.ui
import android.graphics.Paint
import android.os.Bundle
import android.support.v4.app.Fragment
import android.support.v7.widget.LinearLayoutManager
@ -346,17 +345,10 @@ class LiveNowTabFragment : Fragment(), TelegramListener, TelegramIncomingMessage
private fun showPopupMenu(holder: ChatViewHolder, chatId: Long) {
val ctx = holder.itemView.context
val paint = Paint()
paint.textSize =
resources.getDimensionPixelSize(R.dimen.list_item_title_text_size).toFloat()
val textWidth = Math.max(paint.measureText(menuList[0]), paint.measureText(menuList[1]))
val itemWidth = textWidth.toInt() + AndroidUtils.dpToPx(ctx, 32F)
val minWidth = AndroidUtils.dpToPx(ctx, 100F)
ListPopupWindow(ctx).apply {
isModal = true
anchorView = holder.showOnMapState
setContentWidth(Math.max(minWidth, itemWidth))
setContentWidth(AndroidUtils.getPopupMenuWidth(ctx, menuList))
setDropDownGravity(Gravity.END or Gravity.TOP)
setAdapter(ArrayAdapter(ctx, R.layout.popup_list_text_item, menuList))
setOnItemClickListener { _, _, position, _ ->

View file

@ -2,7 +2,6 @@ package net.osmand.telegram.ui
import android.animation.*
import android.content.Intent
import android.graphics.Paint
import android.graphics.drawable.GradientDrawable
import android.os.Build
import android.os.Bundle
@ -221,30 +220,28 @@ class MyLocationTabFragment : Fragment(), TelegramListener {
val ctx = context ?: return
val menuList = ArrayList<String>()
val settings = getString(R.string.shared_string_settings)
val logout = getString(R.string.shared_string_logout)
val login = getString(R.string.shared_string_login)
menuList.add(settings)
@Suppress("NON_EXHAUSTIVE_WHEN")
when (telegramHelper.getTelegramAuthorizationState()) {
TelegramHelper.TelegramAuthorizationState.READY -> menuList.add(logout)
TelegramHelper.TelegramAuthorizationState.CLOSED -> menuList.add(login)
else -> return
}
val paint = Paint()
paint.textSize =
resources.getDimensionPixelSize(R.dimen.list_item_title_text_size).toFloat()
val textWidth = paint.measureText(menuList[0])
val itemWidth = textWidth.toInt() + AndroidUtils.dpToPx(ctx, 32F)
val minWidth = AndroidUtils.dpToPx(ctx, 100F)
ListPopupWindow(ctx).apply {
isModal = true
anchorView = optionsBtn
setContentWidth(Math.max(minWidth, itemWidth))
setContentWidth(AndroidUtils.getPopupMenuWidth(ctx, menuList))
setDropDownGravity(Gravity.END or Gravity.TOP)
setAdapter(ArrayAdapter(ctx, R.layout.popup_list_text_item, menuList))
setOnItemClickListener { _, _, position, _ ->
when (position) {
menuList.indexOf(settings) -> {
fragmentManager?.also { SettingsDialogFragment.showInstance(it) }
}
menuList.indexOf(logout) -> logoutTelegram()
menuList.indexOf(login) -> loginTelegram()
}

View file

@ -0,0 +1,39 @@
package net.osmand.telegram.ui
import android.os.Bundle
import android.support.v4.app.DialogFragment
import android.support.v4.app.FragmentManager
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import net.osmand.telegram.R
class SettingsDialogFragment : DialogFragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setStyle(android.support.v4.app.DialogFragment.STYLE_NO_FRAME, R.style.AppTheme_NoActionbar)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return inflater.inflate(R.layout.fragement_settings_dialog, container)
}
companion object {
private const val TAG = "SettingsDialogFragment"
fun showInstance(fm: FragmentManager): Boolean {
return try {
SettingsDialogFragment().show(fm, TAG)
true
} catch (e: RuntimeException) {
false
}
}
}
}

View file

@ -6,6 +6,7 @@ import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.content.res.Configuration
import android.graphics.Paint
import android.net.Uri
import android.os.Build
import android.support.annotation.AttrRes
@ -16,6 +17,7 @@ import android.util.TypedValue
import android.util.TypedValue.COMPLEX_UNIT_DIP
import android.view.View
import android.view.inputmethod.InputMethodManager
import net.osmand.telegram.R
import java.io.File
object AndroidUtils {
@ -83,6 +85,18 @@ object AndroidUtils {
}
}
fun getPopupMenuWidth(ctx: Context, titles: Collection<String>): Int {
val txtSize = ctx.resources.getDimensionPixelSize(R.dimen.list_item_title_text_size)
val paint = Paint().apply { textSize = txtSize.toFloat() }
val maxTextWidth = titles.map { paint.measureText(it) }.max()
if (maxTextWidth != null) {
val maxItemWidth = maxTextWidth.toInt() + AndroidUtils.dpToPx(ctx, 32f)
val minWidth = AndroidUtils.dpToPx(ctx, 100f)
return maxOf(minWidth, maxItemWidth)
}
return 0
}
@ColorInt
fun getAttrColor(ctx: Context, @AttrRes attrId: Int, @ColorInt defaultColor: Int = 0): Int {
val ta = ctx.theme.obtainStyledAttributes(intArrayOf(attrId))

1
OsmAnd/.gitignore vendored
View file

@ -27,6 +27,7 @@ local.properties
raw/
obj/
libgnustl/
libc++/
cpd.xml
jni/Local.mk
out/

View file

@ -103,7 +103,7 @@ android {
}
legacy {
jniLibs.srcDirs = ["libgnustl"]
jniLibs.srcDirs = ["libc++"]
}
}
@ -312,14 +312,12 @@ task cleanupDuplicatesInCore() {
dependsOn buildOsmAndCore
// doesn't work for legacy debug builds
doLast {
file("libgnustl/armeabi").mkdirs()
file("libs/armeabi/libgnustl_shared.so").renameTo(file("libgnustl/armeabi/libgnustl_shared.so"))
file("libgnustl/armeabi-v7a").mkdirs()
file("libs/armeabi-v7a/libgnustl_shared.so").renameTo(file("libgnustl/armeabi-v7a/libgnustl_shared.so"))
file("libgnustl/mips").mkdirs()
file("libs/mips/libgnustl_shared.so").renameTo(file("libgnustl/mips/libgnustl_shared.so"))
file("libgnustl/x86").mkdirs()
file("libs/x86/libgnustl_shared.so").renameTo(file("libgnustl/x86/libgnustl_shared.so"))
file("libc++/armeabi-v7a").mkdirs()
file("libs/armeabi-v7a/libc++_shared.so").renameTo(file("libc++/armeabi-v7a/libc++_shared.so"))
file("libc++/arm64-v8a").mkdirs()
file("libs/arm64-v8a/libc++_shared.so").renameTo(file("libc++/arm64-v8a/libc++_shared.so"))
file("libc++/x86").mkdirs()
file("libs/x86/libc++_shared.so").renameTo(file("libc++/x86/libc++_shared.so"))
}
}
afterEvaluate {

View file

@ -1,5 +1,5 @@
APP_STL := gnustl_shared
# APP_STL := c++_shared
# APP_STL := gnustl_shared
APP_STL := c++_shared
APP_CPPFLAGS := -std=c++11 -fexceptions -frtti
APP_SHORT_COMMANDS := true

View file

@ -1,4 +1,5 @@
armeabi/
x86/
armeabi-v7a/
mips/
mips/
arm64-v8a/

View file

@ -740,7 +740,7 @@
<string name="poi_floating_dock">Plovoucí dok</string>
<string name="poi_fog_signal">Zvukový maják</string>
<string name="poi_harbour_basin">Přístavní zátoka</string>
<string name="poi_standpipe">Hydrant</string>
<string name="poi_standpipe">Požární hydrant</string>
<string name="poi_beacon_safe_water">Maják bezpečných vod</string>
<string name="poi_landmark">Orientační bod</string>
<string name="poi_seamark_light">Plavební znak: světlo</string>
@ -787,7 +787,7 @@
<string name="poi_piste_nordic">Trať pro klasické lyžování</string>
<string name="poi_hunting_lodge">Lovecká chata</string>
<string name="poi_hanami">Hanami</string>
<string name="poi_hanami">Japonské Hanami</string>
<string name="poi_camera">Foto a optika</string>
<string name="poi_wiki_place">Wikipedie</string>
<string name="poi_wiki_lang_en">Anglická wiki</string>
@ -3010,7 +3010,7 @@
<string name="poi_piste_grooming">Úprava sjezdovky</string>
<string name="poi_theatre_genre">Žánr</string>
<string name="poi_fee">Poplatek</string>
<string name="poi_drive_through">Průjezd</string>
<string name="poi_drive_through">Drive through</string>
<string name="poi_cocktails">Koktejly</string>
<string name="poi_beauty_salon_service">Služba</string>
<string name="poi_recycling_accepted_waste">Přijímaný odpad</string>
@ -3606,18 +3606,18 @@
<string name="poi_socket_cee_blue">Počet zásuvek typu CEE modrá (kulatá karavanová)</string>
<string name="poi_socket_cee_blue_current">Maximální proud zásuvky CEE Modrá (tzv. karavanová) [A]</string>
<string name="poi_socket_cee_blue_output">Maximální výkon zásuvky CEE Modrá (tzv. karavanová) [kW]</string>
<string name="poi_socket_cee_red_16a">Počet zásuvek typu CEE červená 16A (pětikolík malý)</string>
<string name="poi_socket_cee_red_16a_current">Konektor: CEE Červený 16A (pětikolík malý): Maximální proud</string>
<string name="poi_socket_cee_red_16a_output">Konektor: CEE Červený 16A (pětikolík malý): Maximální výkon</string>
<string name="poi_socket_cee_red_32a">Konektor: CEE Červený 32A (pětikolík velký)</string>
<string name="poi_socket_cee_red_32a_current">Konektor: CEE Červený 32A (pětikolík velký): Maximální proud</string>
<string name="poi_socket_cee_red_32a_output">Konektor: CEE Červený 32A (pětikolík velký): Maximální výkon</string>
<string name="poi_socket_cee_red_64a">Konektor: CEE Červený 64A (pětikolík obrovský)</string>
<string name="poi_socket_cee_red_64a_current">Konektor: CEE Červený 64A (pětikolík obrovský): Maximální proud</string>
<string name="poi_socket_cee_red_64a_output">Konektor: CEE Červený 64A (pětikolík obrovský): Maximální výkon</string>
<string name="poi_socket_cee_red_125a">Konektor: CEE Červený 125A</string>
<string name="poi_socket_cee_red_125a_current">Konektor: CEE Červený 125A : Maximální proud</string>
<string name="poi_socket_cee_red_125a_output">Konektor: CEE Červený 125A: Maximální výkon</string>
<string name="poi_socket_cee_red_16a">Počet zásuvek typu CEE 5-kolík 16A malý</string>
<string name="poi_socket_cee_red_16a_current">Maximální proud zásuvky CEE 5-kolík 16A malý [A]</string>
<string name="poi_socket_cee_red_16a_output">Maximální výkon zásuvky CEE 5-kolík 16A malý [kW]</string>
<string name="poi_socket_cee_red_32a">Počet zásuvek typu CEE 5-kolík 32A velký</string>
<string name="poi_socket_cee_red_32a_current">Maximální proud zásuvky CEE 5-kolík 32A velký [A]</string>
<string name="poi_socket_cee_red_32a_output">Maximální výkon zásuvky CEE 5-kolík 32A velký [kW]</string>
<string name="poi_socket_cee_red_64a">Počet zásuvek typu CEE 5-kolík 64A</string>
<string name="poi_socket_cee_red_64a_current">Maximální proud zásuvky CEE 5-kolík 64A [A]</string>
<string name="poi_socket_cee_red_64a_output">Maximální výkon zásuvky CEE 5-kolík 64A [kW]</string>
<string name="poi_socket_cee_red_125a">Počet zásuvek typu CEE 5-kolík 125A</string>
<string name="poi_socket_cee_red_125a_current">Maximální proud zásuvky CEE 5-kolík 125A [A]</string>
<string name="poi_socket_cee_red_125a_output">Maximální výkon zásuvky CEE 5-kolík 125A [kW]</string>
<string name="poi_service_vehicle_car_repair_yes">Autoservis</string>
<string name="poi_service_vehicle_oil_change_yes">Výměna oleje</string>
<string name="poi_service_vehicle_used_car_sales_yes">Autobazar</string>
@ -3668,18 +3668,18 @@
<string name="poi_payment_contactless_yes">Lze platit bezkontaktně</string>
<string name="poi_payment_contactless_no">Nelze platit bezkontaktně</string>
<string name="poi_socket_type1">Počet konektorů typu 1 (tzv. Yazaki, SAE J1772)</string>
<string name="poi_socket_type1_current">Maximální proud konektoru Typu 1 (tzv. Yazaki, SAE J1772) [A]</string>
<string name="poi_socket_type1_output">Maximální výkon konektoru Typu 1 (tzv. Yazaki, SAE J1772) [kW]</string>
<string name="poi_socket_type2">Počet konektorů typu 2 (tzv.Mennekes)</string>
<string name="poi_socket_type2_current">Maximální proud konektoru typu 2 (tzv. Mennekes) [A]</string>
<string name="poi_socket_type2_output">Maximální výkon konektoru typu 2 (tzv. Mennekes) [kW]</string>
<string name="poi_socket_type1_combo">"Počet konektorů typu 1 combo "</string>
<string name="poi_socket_type1_combo_current">Maximální proud konektoru 1 combo [A]</string>
<string name="poi_socket_type1_combo_output">Maximální výkon konektoru typu 1 combo [kW]</string>
<string name="poi_socket_type2_combo">Počet konektorů typu CCS (Typ 2 kombinovaný)</string>
<string name="poi_socket_type2_combo_current">Maximální proud konektoru CCS (Typ 2 kombinovaný) [A]</string>
<string name="poi_socket_type2_combo_output">Maximální výkon konektoru CCS (Typ 2 kombinovaný) [kW]</string>
<string name="poi_socket_type1">Počet konektorů Yazaki (Typ 1, SAE J1772)</string>
<string name="poi_socket_type1_current">Maximální proud konektoru Yazaki (Typ 1, SAE J1772) [A]</string>
<string name="poi_socket_type1_output">Maximální výkon konektoru Yazaki (Typ 1, SAE J1772) [kW]</string>
<string name="poi_socket_type2">Počet konektorů Mennekes (Typ 2, IEC 62196-2)</string>
<string name="poi_socket_type2_current">Maximální proud konektoru Mennekes (Typ 2, IEC 62196-2) [A]</string>
<string name="poi_socket_type2_output">Maximální výkon konektoru Mennekes (Typ 2, IEC 62196-2) [kW]</string>
<string name="poi_socket_type1_combo">Počet konektorů CCS1 (Typ 1 Combo)</string>
<string name="poi_socket_type1_combo_current">Maximální proud konektoru CCS1 (Typ 1 Combo) [A]</string>
<string name="poi_socket_type1_combo_output">Maximální výkon konektoru CCS1 (Typ 1 Combo) [kW]</string>
<string name="poi_socket_type2_combo">Počet konektorů CCS2 (Typ 2 Combo)</string>
<string name="poi_socket_type2_combo_current">Maximální proud konektoru CCS2 (Typ 2 Combo) [A]</string>
<string name="poi_socket_type2_combo_output">Maximální výkon konektoru CCS2 (Typ 2 Combo) [kW]</string>
<string name="poi_socket_chademo">Počet konektorů CHAdeMO</string>
<string name="poi_socket_chademo_current">Maximální proud konektoru CHAdeMO [A]</string>
<string name="poi_socket_chademo_output">Maximální výkon konektoru CHAdeMO [kW]</string>
@ -3700,29 +3700,29 @@
<string name="poi_socket_as3112_current">Maximální proud zásuvky australského typu AS 3112 [A]</string>
<string name="poi_socket_as3112_output">Maximální výkon zásuvky australského typu AS 3112 [kW]</string>
<string name="poi_car_yes">Vjezd autem povolen</string>
<string name="poi_car_no">Vjezd autem zakázán</string>
<string name="poi_bicycle_yes">Vjezd na kole povolen</string>
<string name="poi_bicycle_no">Vjezd na kole zakázán</string>
<string name="poi_scooter_yes">Vjezd na skútru povolen</string>
<string name="poi_scooter_no">Vjezd na skútru zakázán</string>
<string name="poi_truck_yes">Vjezd nákladním autem povolen</string>
<string name="poi_truck_no">Vjezd nákladním autem zakázán</string>
<string name="poi_car_yes">Vhodné pro Osobní automobily</string>
<string name="poi_car_no">Nevhodné pro Osobní automobily</string>
<string name="poi_bicycle_yes">Vhodné pro jízdní kola</string>
<string name="poi_bicycle_no">Nevhodné pro jízdní kola</string>
<string name="poi_scooter_yes">Vhodné pro skútry</string>
<string name="poi_scooter_no">Nevhodné pro skútry</string>
<string name="poi_truck_yes">Vhodné pro nákladní automobily</string>
<string name="poi_truck_no">Nevhodné pro nákladní automobily</string>
<string name="poi_parking_fee_yes">Parkoviště s poplatkem</string>
<string name="poi_parking_fee_no">Parkoviště bez poplatku</string>
<string name="poi_parking_fee_yes">S poplatkem za parkování</string>
<string name="poi_parking_fee_no">Bez poplatku za parkování</string>
<string name="poi_parking_fee">Poplatek za parkování</string>
<string name="poi_amperage">Maximální proud [A]</string>
<string name="poi_amperage">Maximální nabíjecí proud [A]</string>
<string name="poi_charging_station_output">Maximální výkon nabíjecí stanice [kW]</string>
<string name="poi_map_type_topo">Topografická mapa</string>
<string name="poi_map_type_street">Podrobná mapa okolí</string>
<string name="poi_map_type_scheme">Schematická mapa</string>
<string name="poi_map_type_toposcope">Toposkop (tabulka s významnými body nadohled)</string>
<string name="poi_map_size_site">Zobrazuje jen nejbližší okolí</string>
<string name="poi_map_size_city">Zobrazuje celou obec</string>
<string name="poi_map_size_region">Zobrazuje okolní region</string>
<string name="poi_map_size_site">Mapa jen nejbližšího okolí</string>
<string name="poi_map_size_city">Mapa celé obce</string>
<string name="poi_map_size_region">Mapa okolního regionu</string>
<string name="poi_charging_station_filter">Nabíjecí stanice</string>
@ -3741,10 +3741,28 @@
<string name="poi_hazard_minefield">Minové pole</string>
<string name="poi_socket_type3">Počet konektorů typu 3</string>
<string name="poi_socket_type3_current">Maximální proud konektoru typ 3 [A]</string>
<string name="poi_socket_type3_output">Maximální výkon konektoru typ 3 [kW]</string>
<string name="poi_socket_type3">Počet konektorů Scame (Typ 3)</string>
<string name="poi_socket_type3_current">Maximální proud konektoru Scame (Typ 3) [A]</string>
<string name="poi_socket_type3_output">Maximální výkon konektoru Scame (Typ 3) [kW]</string>
<string name="poi_socket_tesla_standard">Počet stanic Tesla Destination Charger</string>
<string name="poi_socket_tesla_standard_current">Maximální proud stanice Tesla Destination Charger [A]</string>
<string name="poi_socket_tesla_standard_output">Maximální výkon stanice Tesla Destination Charger [kW]</string>
<string name="poi_socket_tesla_roadster">Počet stanic Tesla Roadster</string>
<string name="poi_socket_tesla_roadster_current">Maximální proud stanice Tesla Roadster [A]</string>
<string name="poi_socket_tesla_roadster_output">Maximální výkon stanice Tesla Roadster [kW]</string>
<string name="poi_socket_nema_5_15_current">Maximální proud zásuvky NEMA 5-15R [A]</string>
<string name="poi_socket_nema_5_15_output">Maximální výkon zásuvky NEMA 5-15R [kW]</string>
<string name="poi_socket_nema_5_20_current">Maximální proud zásuvky NEMA 5-20 [A]</string>
<string name="poi_socket_nema_5_20_output">Maximální výkon zásuvky NEMA 5-20 [kW]</string>
<string name="poi_socket_nema_14_30_current">Maximální proud zásuvky NEMA 14-30 [A]</string>
<string name="poi_socket_nema_14_30_output">Maximální výkon zásuvky NEMA 14-30 [kW]</string>
<string name="poi_socket_nema_14_50_current">Maximální proud zásuvky NEMA 14-50 [A]</string>
<string name="poi_socket_nema_14_50_output">Maximální výkon zásuvky NEMA 14-50 [kW]</string>
<string name="poi_post_flats">Byt</string>
<string name="poi_payment_centre">Platební centrum</string>
<string name="poi_money_transfer">Služba převodu peněz</string>
<string name="poi_climbing_sport_yes">Sport: Ano</string>
<string name="poi_climbing_sport_no">Sport: Ne</string>
</resources>

View file

@ -2820,4 +2820,7 @@ Zobrazená oblast: %1$s x %2$s</string>
\n • Mapové značky: import vybraných skupin z GPX souborů, nový vzhled zadávání souřadnic
\n
\n • Předplatné OsmAnd Live nyní zahrnuje všechny funkce OsmAnd</string>
<string name="error_notification_desc">Zašlete prosím kopii obrazovky s touto chybou na email support@osmand.net</string>
<string name="quick_action_edit_actions">Upravit akce</string>
<string name="get_osmand_live">Získejte OsmAnd Live pro odemknutí všech funkcí: Denní aktulizace mapových podkladů s neomezeným počtem stahování, všechny placené zásuvné moduly, propojení s Wikipedia, Wikivoyage a mnoho dalšího.</string>
</resources>

View file

@ -3060,4 +3060,28 @@
<string name="coord_input_save_as_track">Αποθήκευση ως ίχνος</string>
<string name="coord_input_save_as_track_descr">Προσθέσατε %1$s σημεία. Πληκτρολογήστε ένα όνομα αρχείου και πατήστε \"Αποθήκευση\".</string>
<string name="point_deleted">Διαγράφηκε το σημείο %1$s</string>
<string name="thank_you_for_feedback">Σας ευχαριστούμε για την ανάδραση</string>
<string name="poi_cannot_be_found">Δεν μπορεί να βρεθεί κόμβος ή δρόμος.</string>
<string name="search_no_results_feedback">Χωρίς αποτελέσματα αναζήτησης;
\nΑνατροφοδοτήστε μας</string>
<string name="release_3_1">• Πλοήγηση: Διόρθωση γραμμής προόδου, γρήγορη εναλλαγή του αρχικού και τελικού σημείου της διαδρομής
\n
\n • Δείκτες χαρτών: διόρθωση ενεργοποίησης/απενεργοποίησης ομάδων, δυνατότητα απόκρυψης δεικτών από τον χάρτη
\n
\n • Επεξεργασία OSM: Δυνατότητα επεξεργασίας ετικετών για αντικείμενα και δρόμους, διόρθωση σχολίων που λείπουν σε σημειώσεις, αντίγραφα επεξεργασιών
\n
\n • Βελτίωση ανάλυσης βικιπαίδειας και βικιταξιδιών, τα ενημερωμένα αρχεία είναι ήδη διαθέσιμα
\n
\n • Μενού περιβάλλοντος: διόρθωση χρώματος πινακίδων μετακίνησης στην νυχτερινή κατάσταση, διόρθωση πρόσθετων μεγεθών μενού
\n
\n • Πλοήγηση με σκάφος: υποστήριξη για δίαυλο ασφαλούς πορείας
\n
\n • Άλλες διορθώσεις σφαλμάτων
\n
\n</string>
<string name="commiting_way">Υποβολή διαδρομής…</string>
<string name="increase_search_radius_to">Αύξηση ακτίνας αναζήτησης σε %1$s</string>
<string name="send_search_query_description">Θα στείλουμε το ερώτημα αναζήτησής σας:<b>\"%1$s\"</b>,καθώς και την τοποθεσία σας.<br/><br/> Δεν συλλέγουμε προσωπικές πληροφορίες, χρειαζόμαστε μόνο δεδομένα αναζήτησης για να βελτιώσουμε τον αλγόριθμο αναζήτησης.<br/></string>
<string name="send_search_query">Αποστολή ερωτήματος αναζήτησης;</string>
<string name="shared_string_world">Κόσμος</string>
</resources>

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><resources><string name="map_widget_gps_info">GPS informacije</string>
<?xml version='1.0' encoding='UTF-8'?>
<resources><string name="map_widget_gps_info">GPS informacije</string>
<string name="access_arrival_time">Vrijeme dolaska</string>
<string name="item_checked">provjereno</string>
<string name="item_unchecked">neprovjereno</string>
@ -1568,4 +1569,69 @@
<string name="new_filter_desc">Upišite naziv za novi filtar, on će biti dodan na karticu kategorije.</string>
<string name="si_mi_meters">Milje/metri</string>
<string name="skip_map_downloading">Preskoči Preuzimanje karata</string>
</resources>
<string name="thank_you_for_feedback">Hvala vam na povratnim informacijama</string>
<string name="increase_search_radius_to">Povećajte radijus pretraživanja na %1$s</string>
<string name="send_search_query">Pošaljite upit za pretraživanje?</string>
<string name="shared_string_world">Svijet</string>
<string name="point_deleted">Točka %1$s izbrisana</string>
<string name="coord_input_edit_point">Uređivanje točke</string>
<string name="coord_input_add_point">Dodaj točku</string>
<string name="coord_input_save_as_track">Spremi kao trag</string>
<string name="coord_input_save_as_track_descr">Dodali ste %1$s točke. Upišite naziv datoteke i dodirnite \"Spremi\".</string>
<string name="get_osmand_live">Nabavite OsmAnd Live za otključavanje svih značajki: ažuriranja dnevnih karata uz neograničeno preuzimanje, sve plaćene i besplatne dodatke, Wikipediju, Wikivoyage i još mnogo toga.</string>
<string name="shared_string_bookmark">oznaka</string>
<string name="hide_full_description">Sakrij opis</string>
<string name="show_full_description">Prikaži cijeli opis</string>
<string name="open_wikipedia_link_online_description">Veza će biti otvorena u web pregledniku.</string>
<string name="how_to_open_link">Kako otvoriti link?</string>
<string name="download_all">Preuzmi sve</string>
<string name="shared_string_restart">Ponovno pokretanje aplikacije</string>
<string name="show_images">Prikaži slike</string>
<string name="purchase_cancelled_dialog_title">Otkazali ste OsmAnd Live pretplatu</string>
<string name="purchase_cancelled_dialog_descr">Obnovite pretplatu za nastavak korištenja svih značajki:</string>
<string name="maps_you_need">Karte koje trebate</string>
<string name="osmand_team">OsmAnd tim</string>
<string name="popular_destinations">Popularna odredišta</string>
<string name="paid_app">Plaćena aplikacija</string>
<string name="paid_plugin">Plaćeni dodatak</string>
<string name="update_is_available">Dostupno je ažuriranje</string>
<string name="download_file">Preuzmi datoteku</string>
<string name="start_editing">Započnite uređivanje</string>
<string name="get_unlimited_access">Neograničen pristup</string>
<string name="wikivoyage_travel_guide">Turistički vodiči</string>
<string name="monthly_map_updates">Ažuriranja karata: <b>svaki mjesec</b></string>
<string name="daily_map_updates">Ažuriranja karata: <b>svaki sat</b></string>
<string name="in_app_purchase_desc">Jednokratno plaćanje</string>
<string name="purchase_unlim_title">Kupi - %1$s</string>
<string name="purchase_subscription_title">Pretplatite se - %1$s</string>
<string name="unlock_all_features">Otključati sve OsmAnd značajke</string>
<string name="purchase_dialog_title">Odaberite plan</string>
<string name="shared_string_only_with_wifi">Samo na Wi-Fi mreži</string>
<string name="wikivoyage_download_pics">Preuzmite slike</string>
<string name="shared_string_wifi_only">Samo na Wi-Fi mreži</string>
<string name="delete_search_history">Brisanje povijesti pretraživanja</string>
<string name="download_images">Preuzmite slike</string>
<string name="shared_string_wikivoyage">Wikivoyage</string>
<string name="wikivoyage_search_hint">Pretraživanje: zemlja, grad, pokrajina</string>
<string name="shared_string_read">Pročitajte</string>
<string name="shared_string_explore">Istražite</string>
<string name="shared_string_contents">Sadržaj</string>
<string name="shared_string_result">Rezultat</string>
<string name="shared_string_travel_guides">Turistički vodiči</string>
<string name="shared_string_total">Ukupno</string>
<string name="group_deleted">Grupa izbrisana</string>
<string name="enter_lon">Unesite zemljopisnu dužinu</string>
<string name="enter_lat">Unesite zemljopisnu širinu</string>
<string name="enter_lat_and_lon">Unesite širinu i dužinu</string>
<string name="shared_string_gpx_file">GPX datoteka</string>
<string name="osc_file">OSC datoteka</string>
<string name="choose_file_type">Odaberite vrstu datoteke</string>
<string name="all_data">Svi podaci</string>
<string name="osm_notes">OSM bilješke</string>
<string name="what_is_here">Što je ovdje:</string>
<string name="parked_at">parkiran na</string>
<string name="without_time_limit">Bez vremenskog ograničenja</string>
<string name="context_menu_read_full_article">Pročitajte cijeli članak</string>
<string name="context_menu_read_article">Pročitajte članak</string>
</resources>

View file

@ -3068,4 +3068,12 @@ voor Gebied: %1$s x %2$s</string>
<string name="coord_input_add_point">Punt toevoegen</string>
<string name="coord_input_save_as_track_descr">Je hebt %1$s punten toegevoegd. Geef een bestandsnaam en tik op \"Opslaan\".</string>
<string name="error_notification_desc">Stuur alsjeblieft een screenshot van deze melding naar support@osmand.net</string>
<string name="thank_you_for_feedback">"Dank voor feedback "</string>
<string name="poi_cannot_be_found">"Knoop of weg kan niet worden gevonden. "</string>
<string name="search_no_results_feedback">Geen zoekresultaten ?
\nGeef ons jouw feedback</string>
<string name="increase_search_radius_to">Vergroot het zoekgebied tot %1$s</string>
<string name="send_search_query_description">We gebruiken uw zoekterm: <b>\"%1$s\"</b>, en uw locatie.<br/><br/> om ons zoekalgoritme te verbeteren. We verzamelen geen persoonlijke informatie <br/></string>
<string name="send_search_query">"Zoekterm versturen? "</string>
<string name="shared_string_world">Wereld</string>
</resources>

View file

@ -2919,7 +2919,7 @@ Reprezentuje obszar: %1$s x %2$s</string>
<string name="distance_nearest">Odległość: najpierw najbliższe</string>
<string name="day_off_label">poza</string>
<string name="osm_edits_export_desc">Wybierz typ zapisu: notatki OSM, POI, lub obie.</string>
<string name="osm_edits_export_desc">Wybierz rodzaj eksportu: uwagi OSM, POI lub oba.</string>
<string name="empty_state_osm_edits_descr">Twórz lub modyfikuj OSM POI, otwórz lub skomentuj notatki OSM, oraz udostępniaj nagrane pliki GPX.</string>
<string name="empty_state_markers_groups_desc">Importowanie grup z ulubionych lub punktów jako znaczniki.</string>
<string name="rendering_attr_whiteWaterSports_name">Sporty spływowe</string>

View file

@ -33,8 +33,8 @@ public class NativeOsmandLibrary extends NativeLibrary {
if (!isLoaded()) {
isNativeSupported = false;
try {
log.debug("Loading native gnustl_shared..."); //$NON-NLS-1$
System.loadLibrary("gnustl_shared");
log.debug("Loading native c++_shared..."); //$NON-NLS-1$
System.loadLibrary("c++_shared");
log.debug("Loading native libraries..."); //$NON-NLS-1$
System.loadLibrary("osmand");
log.debug("Creating NativeOsmandLibrary instance..."); //$NON-NLS-1$

View file

@ -7,7 +7,7 @@ buildscript {
}
dependencies {
//classpath 'com.android.tools.build:gradle:2.+'
classpath 'com.android.tools.build:gradle:3.1.3'
classpath 'com.android.tools.build:gradle:3.1.4'
classpath 'com.google.gms:google-services:3.0.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}

View file

@ -17,4 +17,5 @@
# for enableD8=true min sdk must be > 22
# UPDATE: temporairly commented since gradle plugin updated to 3.1.3 and claims INSTALL_FAILED_DEXOPT is fixed
# android.enableD8=false
# UPDATE 2: D8 causes problems on arm64 devices with Android 6.0 (API 23)
android.enableD8=false