ЗДЕСЬ SDK: LocationManager requestLocationUpdates () RuntimeException - PullRequest
0 голосов
/ 13 ноября 2018

Я использую HERE Maps SDK и после вызова navigationManager.startNavigation() я получаю это исключение в журналах, ИНОГДА:

LocationManager: [LocationManager] requestLocationUpdates(), 
    java.lang.RuntimeException
        at android.location.LocationManager.requestLocationUpdates(LocationManager.java:1013)
        at android.location.LocationManager.requestLocationUpdates(LocationManager.java:595)
        at com.nokia.maps.ef.i(PlatformLocation.java:435)
        at com.nokia.maps.ef.start(PlatformLocation.java:112)
        at com.nokia.maps.PositioningManagerImpl.a(PositioningManagerImpl.java:192)
        at com.here.android.mpa.common.PositioningManager.start(PositioningManager.java:212)
        at com.nokia.maps.NavigationManagerImpl.a(NavigationManagerImpl.java:1785)
        at com.nokia.maps.NavigationManagerImpl.a(NavigationManagerImpl.java:1063)
        at com.here.android.mpa.guidance.NavigationManager.startNavigation(NavigationManager.java:1272)
        ...

Похоже, SDK ловит его, потому что try / catch неполучить его, и ничего не вылетает, ответ по-прежнему NavigationManager.Error.NONE, но навигация не запускается.

Не уверен, что вызывает это, но приложение может работать нормально в течение нескольких дней, а затем это появляется и в течение нескольких минут или часов яне удается заставить навигацию работать.

Это исключение возникает только иногда, когда приложение пытается получить местоположение из SDK, но затем оно относится к каждому отдельному запросу в течение определенного времени.

Кто-нибудь сталкивался с этим?Я понятия не имею, как справиться с этим, кроме установки таймера, чтобы проверить, получаю ли я какие-либо обновления местоположения.

1 Ответ

0 голосов
/ 21 ноября 2018

Документация для LocationManager описывает , что requestLocationUpdates выдает два типа исключений - IllegalArgumentException и SecurityException.Возможно, какой-то поставщик добавил свою собственную недокументированную логику, которая выдает RuntimeException.

. В качестве грязного исправления вы можете попробовать остановить / запустить requestLocationUpdates следующим образом:

PositioningManager.start(LocationMethod.NETWORK); // will stop updates for LocationManager.GPS_PROVIDER
PositioningManager.start(LocationMethod.GPS); // will stop updates for LocationManager.NETWORK_PROVIDER
PositioningManager.start(LocationMethod.GPS_NETWORK); // will start updates for both

Во-вторых, если у вас есть соответствующиеразрешение, вы можете попробовать установить ЗДЕСЬ источник данных о местоположении, например:

//SDK will use custom algorithm to calculate device location
//and Android's LocationManager will not be used
PositioningManager.setDataSource(LocationDataSourceHERE.getInstance()); 

Если вы предоставляете дополнительную информацию, например, устройство, предварительные условия, когда это происходит, другие приложения, такие как Google Map, могут определять ваше местоположение и т. д.,возможно тогда это можно будет исправить.

...