在 IBM MobileFirst Platform 上获取位置时出错
Posted
技术标签:
【中文标题】在 IBM MobileFirst Platform 上获取位置时出错【英文标题】:Error getting location on IBM MobileFirst Platform 【发布时间】:2018-11-05 07:06:03 【问题描述】:我正在 ibm mobile first 平台上开发一个移动应用程序。我使用的是 7.0 版。我正在尝试获取android设备的位置信息,但是虽然我尝试了几种方法,但我没有得到位置信息。 我在 android 清单文件中的权限是正确且完整的。我的代码和我在下面得到的 logcat 错误。谢谢。
我的代码:
var showPosition = function(position)
WL.Logger.debug("got a position");
var latitude = Number(position.coords.latitude).toFixed(2);
var longitude = Number(position.coords.longitude).toFixed(2);
alert('<b>Longitude:</b> ' + position.coords.longitude + '<b>Latitude:</b> ' + position.coords.latitude);
//$("#currentLocation").text(latitude + " / " + longitude);
;
var positionError = function(err)
WL.Logger.debug("failed to get a position");
$("#status").text("position error" + err);
;
WL.Device.Geo.acquirePosition(showPosition, positionError,
timeout : 30000,
enableHighAccuracy: true,
maximumAge:15000
);
Logcat 错误:
V/GpsLocationProvider( 918): reportStatus status: 3
V/GpsLocationProvider( 918): reportStatus status: 1
I/System.out( 3766): IntentService[CrashUploaderService] calls detatch()
I/com.dropbox.android.exception.d( 3766): Error uploading log:
I/com.dropbox.android.exception.d( 3766): dbxyzptlk.db240408.I.h:
javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
I/com.dropbox.android.exception.d( 3766): at
dbxyzptlk.db240408.H.y.a(panda.py:424)
I/com.dropbox.android.exception.d( 3766): at
dbxyzptlk.db240408.H.y.a(panda.py:346)
I/com.dropbox.android.exception.d( 3766): at
dbxyzptlk.db240408.L.K.a(panda.py:472)
I/com.dropbox.android.exception.d( 3766): at
com.dropbox.android.exception.d.a(panda.py:129)
I/com.dropbox.android.exception.d( 3766): at
com.dropbox.android.exception.d.a(panda.py:52)
I/com.dropbox.android.exception.d( 3766): at
com.dropbox.android.exception.CrashUploaderService.onHandleIntent
(panda.py:33)
I/com.dropbox.android.exception.d( 3766): at
android.app.IntentService$ServiceHandler.handleMessage
(IntentService.java:65)
I/com.dropbox.android.exception.d( 3766): at
android.os.Handler.dispatchMessage(Handler.java:102)
I/com.dropbox.android.exception.d( 3766): at
android.os.Looper.loop(Looper.java:145)
I/com.dropbox.android.exception.d( 3766): at
android.os.HandlerThread.run(HandlerThread.java:61)
I/com.dropbox.android.exception.d( 3766): Caused by:
javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
I/com.dropbox.android.exception.d( 3766): at
com.android.org.conscrypt.SSLNullSession.getPeerCertificates
(SSLNullSession.java:104)
I/com.dropbox.android.exception.d( 3766): at
org.apache.http.conn.ssl.AbstractVerifier.verify (AbstractVerifier.java:93)
I/com.dropbox.android.exception.d( 3766): at
dbxyzptlk.db240408.L.Q.createSocket(panda.py:173)
I/com.dropbox.android.exception.d( 3766): at
org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection
(DefaultClientConnectionOperator.java:214)
I/com.dropbox.android.exception.d( 3766): at
org.apache.http.impl.conn.AbstractPoolEntry.open
(AbstractPoolEntry.java:167)
I/com.dropbox.android.exception.d( 3766): at
org.apache.http.impl.conn.AbstractPooledConnAdapter.open
(AbstractPooledConnAdapter.java:125)
I/com.dropbox.android.exception.d( 3766): at
org.apache.http.impl.client.DefaultRequestDirector.executeOriginal
(DefaultRequestDirector.java:1312)
I/com.dropbox.android.exception.d( 3766): at
org.apache.http.impl.client.DefaultRequestDirector.execute
(DefaultRequestDirector.java:702)
I/com.dropbox.android.exception.d( 3766): at
org.apache.http.impl.client.AbstractHttpClient.execute
(AbstractHttpClient.java:694)
I/com.dropbox.android.exception.d( 3766): at
org.apache.http.impl.client.AbstractHttpClient.execute
(AbstractHttpClient.java:516)
I/com.dropbox.android.exception.d( 3766): at
org.apache.http.impl.client.AbstractHttpClient.execute
(AbstractHttpClient.java:494)
I/com.dropbox.android.exception.d( 3766): at
dbxyzptlk.db240408.H.y.a(panda.py:394)
I/com.dropbox.android.exception.d( 3766): ... 9 more
【问题讨论】:
如果您转到设置 -> 应用程序 -> -> 权限并启用位置权限(如果还没有的话)怎么办?此外,如果您在建筑物外尝试应用程序会怎样 - 假设这是获取地理坐标的问题。 感谢您的回复。我的设备有此应用程序的位置权限。我目前的环境中也有 GPS 信号。 先生。正如你所说,Vivin 在我离开大楼时能够获得位置信息。感谢您的帮助。 尝试更改定位模式,例如高精度、省电和仅设备,您可能会在建筑物内获得位置 【参考方案1】:高精度设置使用和查找 GPS 信号以及网络、wifi 进行位置三角测量。有时人们知道,当无法获得 GPS 锁定时,不要在室内工作。
在户外尝试应用程序,或回退到主要依靠蜂窝网络获取位置的较低精度模式。这应该会给你在室内更好的结果。
【讨论】:
很遗憾,我获取位置的问题没有完全恢复。在许多不同的 Android 版本中,我无法在我的实验中获得 GPS 信号。还有一个有趣的情况:我在我的移动设备上安装了一个名为 GPS Test 的应用程序。此应用程序测试您是否可以从您的环境中接收 GPS 信号。当我在收到 GPS 测试应用程序的信号后立即尝试从我自己的应用程序中获取坐标时,我可以在几秒钟内接收到坐标而没有任何问题。有人可以帮忙吗?以上是关于在 IBM MobileFirst Platform 上获取位置时出错的主要内容,如果未能解决你的问题,请参考以下文章
在 IBM Containers 上运行 MobileFirst 服务器