2016-11-12 4 views
3

Когда я пытаюсь инициализировать картографическую карту MapFragment из HERE, возникает исключение. На Android 5.0. Android 4.2 отлично работает.ЗДЕСЬ ошибка карты "не может инициализировать двигатель дважды". Android 5.0.1

java.lang.RuntimeException: Cannot initialize the engine twice 
at com.nokia.maps.MapsEngine.<init>(MapsEngine.java:585) 
at com.nokia.maps.MapsEngine.b(MapsEngine.java:874) 
at com.nokia.maps.MapsEngine.b(MapsEngine.java:391) 
at com.nokia.maps.MapsEngine.a(MapsEngine.java:343) 
at com.here.android.mpa.common.MapEngine.init(MapEngine.java:129) 
at com.nokia.maps.br.a(MapFragmentImpl.java:126) 
at com.here.android.mpa.mapping.MapFragment.init(MapFragment.java:108) 
at com.reverllc.rever.map.MapFragment.setUpMapView(MapFragment.java:366) 
at com.reverllc.rever.map.MapFragment.onRideStatusUpdate(MapFragment.java:649) 
at com.reverllc.rever.service.TrackingServiceManager.invokeStatusListeners(TrackingServiceManager.java:135) 
at com.reverllc.rever.service.TrackingServiceManager.access$600(TrackingServiceManager.java:27) 
at com.reverllc.rever.service.TrackingServiceManager$IncomingHandler.handleMessage(TrackingServiceManager.java:276) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:145) 
at android.app.ActivityThread.main(ActivityThread.java:5951) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 

My Map Fragment находится в LinearLayout.

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 

<fragment 
    class="com.here.android.mpa.mapping.MapFragment" 
    android:id="@+id/mapfragment" 
    android:layout_width="match_parent" 
    android:layout_height="100dp" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_below="@+id/relativeLayout" 
    android:layout_centerHorizontal="true"/> 

    ........................................ 

О классе деятельности Я могу получить фрагмент по идентификатору. И я вызываю метод init только один раз. При попытке создания карты инициализации возникает исключение. Я поставил точки останова, и я был убежден, что метод init вызывает только один раз. Я делал все, что написано в official article HEREmap

Метод OnCreate в моей деятельности с MapFragment:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    setUsingEventBus(true); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_map); 


    mapFragment = (com.here.android.mpa.mapping.MapFragment)getFragmentManager().findFragmentById(
      R.id.mapfragment); 
    mapFragment.init(new OnEngineInitListener() { 
     @Override 
     public void onEngineInitializationCompleted(
       OnEngineInitListener.Error error) 
     { 
      if (error == OnEngineInitListener.Error.NONE) { 
       map = mapFragment.getMap(); 
       map.setCenter(new GeoCoordinate(49.196261, -123.004773, 0.0), 
         com.here.android.mpa.mapping.Map.Animation.NONE); 
       map.setZoomLevel(
         (map.getMaxZoomLevel() + map.getMinZoomLevel())/2); 
      } else { 
       Log.d("MapFragment","ERROR: Cannot initialize Map Fragment"); 
      } 
     } 
    }); 

Может кто-нибудь помочь решить эту проблему?

UPDATE

применение LogCat file

+0

Код выглядит хорошо, я думаю, что может быть другим ошибка скрыта в adb logcat. Можете ли вы попытаться собрать несколько журналов и опубликовать их здесь? Наиболее вероятной причиной является то, что собственные библиотеки не упакованы в ваше приложение. –

+0

@ Давид Леонг, я добавил файл приложения logcat. Я хочу напомнить, что на android 4.2 он отлично работает –

+0

Извините, но информации недостаточно. Вместо вызова MapFragment.init() вы можете попробовать использовать MapsEngine.init()? Подпись должна быть идентичной. Использует ли MapEngine.init() ошибку ErrorNone? –

ответ

0

У меня есть некоторые проблемы !! Я нашел аналогичный журнал. I/Хореограф: пропущено 34 кадра! Приложение может делать слишком много работы над своей основной нитью. Мое решение состоит только в том, что mapFragment.init() только в onCreate(). Другие события перемещаются в onStart().

+0

Это нормально, просто означает, что устройство немного медленнее. –

0

В зефира вам нужно добавить 4 разрешения и ваша карта будет работать отлично

ACCESS_NETWORK_STATE); 
int FourthPermission = ContextCompat.checkSelfPermission(getApplicationContext(), ACCESS_WIFI_STATE); 
int SecondPermissionResult = ContextCompat.checkSelfPermission(getApplicationContext(), ACCESS_FINE_LOCATION); 
int ThirdPermissionResult = ContextCompat.checkSelfPermission(getApplicationContext(), WRITE_EXTERNAL_STORAGE); 

Используйте эту ссылку для многократного разрешения

Request Check Multiple Run time Permissions at once in android Marshmallow

Смежные вопросы