diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index df6a993444..d77c29803f 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -31,6 +31,7 @@ #include "base/math.hpp" #include "base/logging.hpp" +#include "base/visual_scale.hpp" android::Framework * g_framework = 0; @@ -102,35 +103,6 @@ void Framework::UpdateCompassSensor(int ind, float * arr) m_sensors[ind].Next(arr); } -float Framework::GetBestDensity(int densityDpi) -{ - typedef pair P; - P dens[] = { - P(120, 0.75f), - P(160, 1.0f), - P(240, 1.5f), - P(320, 2.0f), - P(480, 3.0f) - }; - - int prevRange = numeric_limits::max(); - int bestRangeIndex = 0; - for (int i = 0; i < ARRAY_SIZE(dens); i++) - { - int currRange = abs(densityDpi - dens[i].first); - if (currRange <= prevRange) - { - // it is better, take index - bestRangeIndex = i; - prevRange = currRange; - } - else - break; - } - - return dens[bestRangeIndex].second; -} - void Framework::MyPositionModeChanged(location::EMyPositionMode mode) { if (m_myPositionModeSignal != nullptr) @@ -144,11 +116,10 @@ bool Framework::CreateDrapeEngine(JNIEnv * env, jobject jSurface, int densityDpi if (!factory->IsValid()) return false; - float visualScale = GetBestDensity(densityDpi); ::Framework::DrapeCreationParams p; p.m_surfaceWidth = factory->GetWidth(); p.m_surfaceHeight = factory->GetHeight(); - p.m_visualScale = visualScale; + p.m_visualScale = VisualScale(densityDpi); p.m_hasMyPositionState = m_isCurrentModeInitialized; p.m_initialMyPositionState = m_currentMode; ASSERT(!m_guiPositions.empty(), ("GUI elements must be set-up before engine is created")); diff --git a/android/jni/com/mapswithme/maps/Framework.hpp b/android/jni/com/mapswithme/maps/Framework.hpp index c528f79cf1..7d1ffe9700 100644 --- a/android/jni/com/mapswithme/maps/Framework.hpp +++ b/android/jni/com/mapswithme/maps/Framework.hpp @@ -50,8 +50,6 @@ namespace android map m_guiPositions; - float GetBestDensity(int densityDpi); - void MyPositionModeChanged(location::EMyPositionMode mode); location::TMyPositionModeChanged m_myPositionModeSignal; diff --git a/android/src/com/mapswithme/maps/MapFragment.java b/android/src/com/mapswithme/maps/MapFragment.java index 097e846cd2..95e7e4acce 100644 --- a/android/src/com/mapswithme/maps/MapFragment.java +++ b/android/src/com/mapswithme/maps/MapFragment.java @@ -145,10 +145,10 @@ public class MapFragment extends BaseMwmFragment final Rect rect = surfaceHolder.getSurfaceFrame(); setupWidgets(rect.width(), rect.height()); - final DisplayMetrics metrics = new DisplayMetrics(); - getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics); + final DisplayMetrics dm = getActivity().getResources().getDisplayMetrics(); + final float exactDensityDpi = (dm.xdpi + dm.ydpi) / 2; - mEngineCreated = nativeCreateEngine(surface, metrics.densityDpi); + mEngineCreated = nativeCreateEngine(surface, (int)exactDensityDpi); if (mEngineCreated) onRenderingInitialized(); else