diff --git a/OsmAnd/res/values-ca/strings.xml b/OsmAnd/res/values-ca/strings.xml
index 80eb244fe8..4fe292a900 100644
--- a/OsmAnd/res/values-ca/strings.xml
+++ b/OsmAnd/res/values-ca/strings.xml
@@ -1890,17 +1890,17 @@ La llista de països inclosos (bàsicament tot el món!): Afganistan, Albània,
Velocitat màxima
Control de fronteres
Estació de peatge
- Senyal de stop
+ Senyal d\'stop
Ressalt
Càmera de control de velocitat
Avís de circulació
Premeu qualsevol indicació existent per veure més detalls, mantingueu premuda per desactivar o esborrar. Dades actuals al dispositiu (%1$s lliure):
Definiu la mida del text en el mapa.
Mida del text
- Aquest nom de punt preferit ja s\'ha utilitzat
+ Nom de punt preferit duplicat
S\'ha canviat el nom del vostre punt preferit a %1$s per evitar duplicitats.
Prova de renderització nativa
- Iniciar activitat amb renderització nativa
- Utilitzar renderització nativa
- Ús de renderitzacio C++ en comptes de Java
+ Inicia l\'activitat amb renderització nativa
+ Utilitza la renderització nativa
+ Ús de renderització C++ en comptes de Java
diff --git a/OsmAnd/res/values-cs/strings.xml b/OsmAnd/res/values-cs/strings.xml
index 32d0523aea..83f2e7b196 100644
--- a/OsmAnd/res/values-cs/strings.xml
+++ b/OsmAnd/res/values-cs/strings.xml
@@ -1738,4 +1738,8 @@ s často kladenými otázkami.
Nastavit velikost písma na mapě.
Název oblíbeného bodu je již použit
Aby nevznikla duplicita, oblíbený bod byl uložen jako %1$s.
+ Test nativního vykreslování
+ Spustí činnost s nativním vykreslováním
+ Použít nativní vykreslování
+ Použít C++ vykreslování místo Javy
diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml
index 6f6f75d082..0a11c43fd6 100644
--- a/OsmAnd/res/values-de/strings.xml
+++ b/OsmAnd/res/values-de/strings.xml
@@ -1976,4 +1976,8 @@ Afghanistan, Ägypten, Albanien, Algerien, Andorra, Angola, Anguilla, Antigua an
Schriftgröße
Doppelung beim Favoriten-Namen
Name des Favoriten bereits vergeben, er wurde auf %1$s geändert.
+ Nativen Renderer testen
+ Nutzt den nativen Renderer
+ Nativen Renderer benutzen
+ C++ Renderer statt Java-Renderer nutzen
diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml
index ffae5c6752..a0440a09b2 100644
--- a/OsmAnd/res/values-it/strings.xml
+++ b/OsmAnd/res/values-it/strings.xml
@@ -1991,4 +1991,10 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz
Clicca su un oggetto per visualizzare maggiori dettagli, tieni premuto per disattivarlo o cancellarlo. Dati attualmente nel dispositivo (%1$s liberi):
Imposta la dimensione del testo sulla mappa.
Dimensione del testo
+ Prova la rappresentazione nativa
+ Inizia l\'attività con la rappresentazione nativa
+ Nome del punto preferito duplicato
+ Per evitare duplicati il nome del vostro punto preferito è stato modificato in %1$s.
+ Utilizza la rappresentazione nativa
+ Usa la rappresentazione C++ anziché Java
diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml
index 71ae4ed082..5758bd9f31 100644
--- a/OsmAnd/res/values-tr/strings.xml
+++ b/OsmAnd/res/values-tr/strings.xml
@@ -1,4 +1,5 @@
-Değişiklik listesini kapat
+
+Değişiklik listesini kapat
ZXing Barcode Scanner uygulaması kurulu değil. Uygulama marketinde aramak ister misiniz?
Yol renk şemasını seç:
Yol renk şeması
@@ -353,7 +354,7 @@
Hayır, teşekkürler
Sil
Sd card\'tan tekrar yükle
- İndiriliyor…
+ İndir
Yeni Arama
Haritadaki yer adları için yazı boyutunu seçin
Harita yazı karakteri boyutu
@@ -788,7 +789,7 @@
Buraya yakın ara
Rotayı GPX olarak kaydet
Rota \'%1$s\' olarak kaydedildi.
- Dosya adı:…
+ "Dosya adı: "
Tarifi Kaydet
OSM Comunity üzerine haritaları geliştirmek için kullanılacak GPX dosyaları yükleyin.
%2$d/%1$d nesne yüklendi.
@@ -906,7 +907,7 @@
Eliptik izdüşümü
Sona erecek (dakika)
Adres
- Mevcut olanı seç...
+ Varolanı seçin…
İsim
Tanımla/Düzenle…
Ara noktaları temizle
@@ -1204,4 +1205,4 @@
\n\t* Yeniden tasarlanmış arayüz↵
→→\n\t* Ashklat düzeltmek ↵
-
\ No newline at end of file
+
diff --git a/OsmAnd/src/net/osmand/core/android/GLActivity.java b/OsmAnd/src/net/osmand/core/android/GLActivity.java
index a6d627d426..241aad4598 100644
--- a/OsmAnd/src/net/osmand/core/android/GLActivity.java
+++ b/OsmAnd/src/net/osmand/core/android/GLActivity.java
@@ -14,7 +14,7 @@ import net.osmand.data.RotatedTileBox;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
-import net.osmand.plus.helpers.SimpleTwoFingerTapDetector;
+import net.osmand.plus.helpers.TwoFingerTapDetector;
import net.osmand.plus.render.NativeOsmandLibrary;
import android.app.Activity;
import android.content.Context;
@@ -75,7 +75,7 @@ public class GLActivity extends Activity {
}
private boolean afterTwoFingerTap = false;
- SimpleTwoFingerTapDetector twoFingerTapDetector = new SimpleTwoFingerTapDetector() {
+ TwoFingerTapDetector twoFingerTapDetector = new TwoFingerTapDetector() {
@Override
public void onTwoFingerTap() {
afterTwoFingerTap = true;
diff --git a/OsmAnd/src/net/osmand/plus/OsmandApplication.java b/OsmAnd/src/net/osmand/plus/OsmandApplication.java
index 0f90105a4c..2923082cc8 100644
--- a/OsmAnd/src/net/osmand/plus/OsmandApplication.java
+++ b/OsmAnd/src/net/osmand/plus/OsmandApplication.java
@@ -12,6 +12,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
+import android.os.*;
+import android.view.View;
import net.osmand.IndexConstants;
import net.osmand.PlatformUtil;
import net.osmand.access.AccessibilityPlugin;
@@ -54,9 +56,6 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Configuration;
import android.graphics.Shader.TileMode;
import android.graphics.drawable.BitmapDrawable;
-import android.os.Build;
-import android.os.Handler;
-import android.os.Message;
import android.text.format.DateFormat;
import android.util.TypedValue;
import android.view.accessibility.AccessibilityManager;
@@ -127,7 +126,7 @@ public class OsmandApplication extends Application {
}
}
super.onCreate();
- new Toast(this); // activate in UI thread to avoid further exceptions
+ createInUiThread();
sqliteAPI = new SQLiteAPIImpl(this);
try {
bRouterServiceConnection = BRouterServiceConnection.connect(this);
@@ -183,7 +182,20 @@ public class OsmandApplication extends Application {
}
-
+
+ private void createInUiThread() {
+ new Toast(this); // activate in UI thread to avoid further exceptions
+ new AsyncTask() {
+ @Override
+ protected Void doInBackground(View... params) {
+ return null;
+ }
+
+ protected void onPostExecute(Void result) {
+ }
+ }.execute();
+ }
+
@Override
public void onTerminate() {
super.onTerminate();
diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java
index a90f81a685..12aa0c7f6a 100644
--- a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java
+++ b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java
@@ -777,4 +777,9 @@ public class MapActivity extends AccessibleActivity {
public View getLayout() {
return getWindow().getDecorView().findViewById(android.R.id.content);
}
+
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ return mapViewController.onTouchEvent(event);
+ }
}
diff --git a/OsmAnd/src/net/osmand/plus/helpers/SimpleTwoFingerTapDetector.java b/OsmAnd/src/net/osmand/plus/helpers/TwoFingerTapDetector.java
similarity index 96%
rename from OsmAnd/src/net/osmand/plus/helpers/SimpleTwoFingerTapDetector.java
rename to OsmAnd/src/net/osmand/plus/helpers/TwoFingerTapDetector.java
index b5a7cfec73..f31fb4d8f9 100644
--- a/OsmAnd/src/net/osmand/plus/helpers/SimpleTwoFingerTapDetector.java
+++ b/OsmAnd/src/net/osmand/plus/helpers/TwoFingerTapDetector.java
@@ -6,7 +6,7 @@ import android.view.ViewConfiguration;
/**
* Created by Barsik on 24.06.2014.
*/
-public abstract class SimpleTwoFingerTapDetector {
+public abstract class TwoFingerTapDetector {
private static final int TIMEOUT = ViewConfiguration.getTapTimeout() + 100;
private long mFirstDownTime = 0;
private byte mTwoFingerTapCount = 0;
diff --git a/OsmAnd/src/net/osmand/plus/render/NativeCppLibrary.java b/OsmAnd/src/net/osmand/plus/render/NativeCppLibrary.java
new file mode 100644
index 0000000000..20cbb7662d
--- /dev/null
+++ b/OsmAnd/src/net/osmand/plus/render/NativeCppLibrary.java
@@ -0,0 +1,23 @@
+package net.osmand.plus.render;
+
+import net.osmand.NativeLibrary;
+
+/**
+ * Created by Denis on 02.10.2014.
+ */
+public class NativeCppLibrary extends NativeLibrary {
+
+ public NativeCppLibrary(boolean newLibrary) {
+ super(newLibrary);
+ }
+
+ public static void loadLibrary(String name) {
+ try {
+ System.out.println("Loading " + name);
+ System.loadLibrary(name);
+ } catch( UnsatisfiedLinkError e ) {
+ System.err.println("Failed to load '"+name + "':" + e);
+ throw e;
+ }
+ }
+}
diff --git a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java
index adf8a9176d..e093344e93 100644
--- a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java
+++ b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java
@@ -23,7 +23,7 @@ import net.osmand.plus.OsmAndFormatter;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
-import net.osmand.plus.helpers.SimpleTwoFingerTapDetector;
+import net.osmand.plus.helpers.TwoFingerTapDetector;
import net.osmand.plus.views.MultiTouchSupport.MultiTouchZoomListener;
import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
import net.osmand.plus.views.controllers.JavaViewController;
@@ -81,9 +81,6 @@ public class OsmandMapTileView extends SurfaceView implements IMapDownloaderCall
protected static final int emptyTileDivisor = 16;
-
-
-
public interface OnLongClickListener {
public boolean onLongPressEvent(PointF point);
}
@@ -148,7 +145,7 @@ public class OsmandMapTileView extends SurfaceView implements IMapDownloaderCall
private Paint paintImg;
private boolean afterTwoFingerTap = false;
- SimpleTwoFingerTapDetector twoFingerTapDetector = new SimpleTwoFingerTapDetector() {
+ TwoFingerTapDetector twoFingerTapDetector = new TwoFingerTapDetector() {
@Override
public void onTwoFingerTap() {
afterTwoFingerTap = true;
diff --git a/OsmAnd/src/net/osmand/plus/views/controllers/JavaViewController.java b/OsmAnd/src/net/osmand/plus/views/controllers/JavaViewController.java
index 191b4217e2..d21e61674c 100644
--- a/OsmAnd/src/net/osmand/plus/views/controllers/JavaViewController.java
+++ b/OsmAnd/src/net/osmand/plus/views/controllers/JavaViewController.java
@@ -24,7 +24,6 @@ import java.util.List;
* Created by Натали on 29.09.2014.
*/
public class JavaViewController extends MapViewBaseController {
- private GLSurfaceView glSurfaceView;
private OsmandMapTileView mapTileView;
private OsmandSettings settings;
private MapActivity mapActivity;
diff --git a/OsmAnd/src/net/osmand/plus/views/controllers/NativeViewController.java b/OsmAnd/src/net/osmand/plus/views/controllers/NativeViewController.java
index e42bdb9b0e..33502ab7c0 100644
--- a/OsmAnd/src/net/osmand/plus/views/controllers/NativeViewController.java
+++ b/OsmAnd/src/net/osmand/plus/views/controllers/NativeViewController.java
@@ -22,7 +22,8 @@ import net.osmand.plus.OsmandSettings;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.MapActivityLayers;
import net.osmand.plus.base.MapViewTrackingUtilities;
-import net.osmand.plus.helpers.SimpleTwoFingerTapDetector;
+import net.osmand.plus.helpers.TwoFingerTapDetector;
+import net.osmand.plus.render.NativeCppLibrary;
import net.osmand.plus.render.NativeOsmandLibrary;
import net.osmand.plus.views.OsmandMapLayer;
import net.osmand.plus.views.OsmandMapTileView;
@@ -36,14 +37,6 @@ import java.util.List;
*/
public class NativeViewController extends MapViewBaseController {
- static {
- NativeOsmandLibrary.loadLibrary("gnustl_shared");
- NativeOsmandLibrary.loadLibrary("Qt5Core");
- NativeOsmandLibrary.loadLibrary("Qt5Network");
- NativeOsmandLibrary.loadLibrary("Qt5Sql");
- NativeOsmandLibrary.loadLibrary("OsmAndCoreWithJNI");
- }
-
private GLSurfaceView glSurfaceView;
private OsmandSettings settings;
private MapActivity mapActivity;
@@ -74,7 +67,7 @@ public class NativeViewController extends MapViewBaseController {
public static final String NATIVE_TAG = "NativeRender";
private CoreResourcesFromAndroidAssetsCustom coreResources;
- SimpleTwoFingerTapDetector twoFingerTapDetector = new SimpleTwoFingerTapDetector() {
+ TwoFingerTapDetector twoFingerTapDetector = new TwoFingerTapDetector() {
@Override
public void onTwoFingerTap() {
currentViewport.setZoom(currentViewport.getZoom() - 1);
@@ -87,9 +80,18 @@ public class NativeViewController extends MapViewBaseController {
this.glSurfaceView = surfaceView;
this.settings = activity.getMyApplication().getSettings();
this.mapActivity = activity;
+ loadLibraries();
setupView();
}
+ private void loadLibraries() {
+ NativeCppLibrary.loadLibrary("gnustl_shared");
+ NativeCppLibrary.loadLibrary("Qt5Core");
+ NativeCppLibrary.loadLibrary("Qt5Network");
+ NativeCppLibrary.loadLibrary("Qt5Sql");
+ NativeCppLibrary.loadLibrary("OsmAndCoreWithJNI");
+ }
+
private void setupView() {
WindowManager mgr = (WindowManager)mapActivity.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics dm = new DisplayMetrics();
@@ -252,8 +254,8 @@ public class NativeViewController extends MapViewBaseController {
}
private class EGLContextFactory implements GLSurfaceView.EGLContextFactory {
- private EGLContext _gpuWorkerContext;
- private EGLSurface _gpuWorkerFakeSurface;
+ private EGLContext gpuWorkerContext;
+ private EGLSurface gpuWorkerFakeSurface;
public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig) {
final String eglExtensions = egl.eglQueryString(display, EGL10.EGL_EXTENSIONS);
@@ -280,7 +282,7 @@ public class NativeViewController extends MapViewBaseController {
Log.i(NATIVE_TAG, "Creating GPU worker context...");
try {
- _gpuWorkerContext = egl.eglCreateContext(
+ gpuWorkerContext = egl.eglCreateContext(
display,
eglConfig,
mainContext,
@@ -288,13 +290,13 @@ public class NativeViewController extends MapViewBaseController {
} catch (Exception e) {
Log.e(NATIVE_TAG, "Failed to create GPU worker context", e);
}
- if (_gpuWorkerContext == null || _gpuWorkerContext == EGL10.EGL_NO_CONTEXT)
+ if (gpuWorkerContext == null || gpuWorkerContext == EGL10.EGL_NO_CONTEXT)
{
Log.e(NATIVE_TAG, "Failed to create GPU worker context: " + egl.eglGetError());
- _gpuWorkerContext = null;
+ gpuWorkerContext = null;
}
- if (_gpuWorkerContext != null)
+ if (gpuWorkerContext != null)
{
Log.i(NATIVE_TAG, "Creating GPU worker fake surface...");
try {
@@ -302,21 +304,21 @@ public class NativeViewController extends MapViewBaseController {
EGL10.EGL_WIDTH, 1,
EGL10.EGL_HEIGHT, 1,
EGL10.EGL_NONE };
- _gpuWorkerFakeSurface = egl.eglCreatePbufferSurface(display, eglConfig, surfaceAttribList);
+ gpuWorkerFakeSurface = egl.eglCreatePbufferSurface(display, eglConfig, surfaceAttribList);
} catch (Exception e) {
Log.e(NATIVE_TAG, "Failed to create GPU worker fake surface", e);
}
- if (_gpuWorkerFakeSurface == null || _gpuWorkerFakeSurface == EGL10.EGL_NO_SURFACE)
+ if (gpuWorkerFakeSurface == null || gpuWorkerFakeSurface == EGL10.EGL_NO_SURFACE)
{
Log.e(NATIVE_TAG, "Failed to create GPU worker fake surface: " + egl.eglGetError());
- _gpuWorkerFakeSurface = null;
+ gpuWorkerFakeSurface = null;
}
}
MapRendererSetupOptions rendererSetupOptions = new MapRendererSetupOptions();
- if (_gpuWorkerContext != null && _gpuWorkerFakeSurface != null) {
+ if (gpuWorkerContext != null && gpuWorkerFakeSurface != null) {
rendererSetupOptions.setGpuWorkerThreadEnabled(true);
- gpuWorkerThreadPrologue = new GpuWorkerThreadPrologue(egl, display, _gpuWorkerContext, _gpuWorkerFakeSurface);
+ gpuWorkerThreadPrologue = new GpuWorkerThreadPrologue(egl, display, gpuWorkerContext, gpuWorkerFakeSurface);
rendererSetupOptions.setGpuWorkerThreadPrologue(gpuWorkerThreadPrologue.getBinding());
gpuWorkerThreadEpilogue = new GpuWorkerThreadEpilogue(egl);
rendererSetupOptions.setGpuWorkerThreadEpilogue(gpuWorkerThreadEpilogue.getBinding());
@@ -333,14 +335,14 @@ public class NativeViewController extends MapViewBaseController {
public void destroyContext(EGL10 egl, EGLDisplay display, EGLContext context) {
egl.eglDestroyContext(display, context);
- if (_gpuWorkerContext != null) {
- egl.eglDestroyContext(display, _gpuWorkerContext);
- _gpuWorkerContext = null;
+ if (gpuWorkerContext != null) {
+ egl.eglDestroyContext(display, gpuWorkerContext);
+ gpuWorkerContext = null;
}
- if (_gpuWorkerFakeSurface != null) {
- egl.eglDestroySurface(display, _gpuWorkerFakeSurface);
- _gpuWorkerFakeSurface = null;
+ if (gpuWorkerFakeSurface != null) {
+ egl.eglDestroySurface(display, gpuWorkerFakeSurface);
+ gpuWorkerFakeSurface = null;
}
}
}