使用百度地图定位SDK,获取到的经纬度数据是4.9E-324的解决办法

本文总结了Android应用中出现定位失败的原因及解决方案,包括权限设置、.SO文件缺失、AK配置错误等问题,并提供了获取SHA1的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

造成这个问题的原因,我总结了下:

一、权限问题
      下面这这段话引用自百度地图文档。

 在Android 6.0之后,Android系统增加了动态权限授予的控制,定位权限需用户确认后,App才能拿到如基站、WIFI等信息,从而实现定位。
 在Android系统升级到7.0之后,我们发现,即使用户授予了App定位权限,App依然存在无法定位成功的问题。追查原因为:授予权限与初始化位置相关类之间存在时续逻辑问题,即如果先初始化如WifiManager、TelephonyManager,再请求确认定位权限,则即使用户确认可以授予App定位权限,App后续仍然拿不到基站、WIFI等信息,从而无法定位;反之,则可以在授予权限之后正常使用定位。
 针对这个情况,定位SDK自v7.2版本起,新增加了重启接口,LocationClient.reStart(),您可以在用户确认授予App定位权限之后,调用该接口,定位SDK将会进行重新初始化的操作,从而规避上述问题。您如果存在长时间后台定位的需求,推荐在应用回到前台的时候调用一次该接口,我们了解到有些手机系统会回收长时间后台获取用户位置的位置权限。

二、.SO文件问题
 从官网上下载sdk,检查libs文件夹下是否缺少.so库。

三、AK问题
 我在集成百度地图的时候,就遇到这个问题。
 申请好ak之后,里面要配置SHA的值,如下图:

 由于疏忽,我把获取到的开发版SHA1填到发布版SHA1上了,这样就导致了一个问题,自己调试的时候,通过android studio直接运行,没有问题,但是发了正式带签名的apk时候,就拿不到经纬度,获取到的就是4.9E-324。
  所以当大家通过一番调试后,还是获取到4.9E-324,这时候就要看看自己在百度上填的SHA1是不是正确的。
四、获取SHA1的方法
获取开发版SHA1

 1、win+r,输入cmd打开命令提示符界面;
 2、 输入命令  C:    进入c盘;
 3、接着 输入命令   cd Users\Administrator   其中Administrator是自己的用户名  Administrator文件下有个.adnroid文  件, 输入命令   cd .android,最后就找到了.android;
 4、输入命令  keytool -list -v -keystoredebug.keystore  其中debug.keystore是studio默认的keystore,按回车,然后  输入秘钥:android(系统默认)    回车(秘钥库口令是看不到的),得到开发版SHA1。

获取发布版SHA1

 获取发布版的SHA1,跟获取开发版的SHA1的1、2、3步骤一样,不一样的地方就是第4步稍微不同而已。

 1、同上;

 2、同上;

 3、同上;

 4、输入命令  keytool -list -v -keystore 文件目录\自己的签名文件 比如我的:keytool -list -v -keystore E:\签名文件\android.keystore ,  接着按回车,然后输入秘钥:(自己的)    回车(秘钥库口令是看不到的),得到发布版SHA1:







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值