LocationManager кодовое имя Android / Iphone проблема? - PullRequest
0 голосов
/ 26 сентября 2018

Я тестировал функциональность GPS на различных устройствах Android, я попробовал простой фрагмент кода, где я просто делаю следующее:

Location position = LocationManager.getLocationManager().getCurrentLocationSync();

и пробовал с таймаутом

Location position = LocationManager.getLocationManager().getCurrentLocationSync(20000);

и устройство только что застряло с сигналом GPS сверху

Поиск GPS

Устройство: Samsung SM-N900 [Samsung GALAXY Note 3], Samsung Note 8, а иногда и на Apple IPhone [IPhone 7]

- на Apple, я думаю, что проблему можно воспроизвести, если вы позвоните

Location position = LocationManager.getLocationManager().getCurrentLocationSync(20000);

более одного раза за короткий промежуток времени [менее 1 минуты или около того], а иногда и на яблоке, это дает неправильные показания, если требуется слишком много времени, чтобы получить результат отGPS


Обновление, где я получаю исключение при получении текущего местоположения от GPS на Android без Wi-Fi:

09-27 07:22:35.668: W/System.err(8801): java.io.IOException: cannot retrieve location try later
09-27 07:22:35.668: W/System.err(8801):     at com.codename1.location.AndroidLocationPlayServiceManager.getCurrentLocation(AndroidLocationPlayServiceManager.java:74)
09-27 07:22:35.668: W/System.err(8801):     at c.a.iF(Unknown Source)
09-27 07:22:35.668: W/System.err(8801):     at b.a.a(Unknown Source)
09-27 07:22:35.668: W/System.err(8801):     at com.codename1.s.l.f$a.a(UIBuilder.java:2835)
09-27 07:22:35.668: W/System.err(8801):     at com.codename1.s.l.c.a(EventDispatcher.java:349)
09-27 07:22:35.668: W/System.err(8801):     at com.codename1.s.d.f(Button.java:570)
09-27 07:22:35.668: W/System.err(8801):     at com.codename1.s.d.g(Button.java:604)
09-27 07:22:35.668: W/System.err(8801):     at com.codename1.s.d.b(Button.java:708)
09-27 07:22:35.668: W/System.err(8801):     at com.codename1.s.u.b(Form.java:3259)
09-27 07:22:35.668: W/System.err(8801):     at com.codename1.s.l.f(Component.java:4288)
09-27 07:22:35.668: W/System.err(8801):     at com.codename1.s.q.a(Display.java:2065)
09-27 07:22:35.668: W/System.err(8801):     at com.codename1.s.q.j(Display.java:1043)
09-27 07:22:35.668: W/System.err(8801):     at com.codename1.s.q.i(Display.java:961)
09-27 07:22:35.668: W/System.err(8801):     at com.codename1.s.ai.run(RunnableWrapper.java:120)
09-27 07:22:35.668: W/System.err(8801):     at com.codename1.impl.b$1.run(CodenameOneThread.java:60)
09-27 07:22:35.668: W/System.err(8801):     at java.lang.Thread.run(Thread.java:818)

благодарю за помощь

С уважением,

1 Ответ

0 голосов
/ 27 сентября 2018

Местоположение не всегда точное.Сигнал GPS может быть недоступен.Мы используем гибридное местоположение, которое объединяет данные от GPS и других датчиков, чтобы дать вам расчетное местоположение быстрее.

Однако, это значение постоянно корректируется, поэтому лучший / самый точный способ получить сигнал GPS - это использоватьслушатель.Обратите внимание, что GPS более точный, если вы двигаетесь.

...