百度定位中出现4.9E-324问题的原因和解决办法

百度定位请查看官方开发文档

定位过程中出现经纬度为4.9E-324错误的可能情况,目前收集到四种:

1.权限错误

什么是权限错误呢?分为两种情况:

  • 一是权限没有添加完全,没有从开发文档中完全拷贝到项目中,所以建议不要手写权限代码,copy就好
  • 二是添加的权限在Android6.0以及以上版本中含有危险权限,没有动态申请,所以建议查看需要权限中哪些需要动态申请,然后再按照动态权限申请的方式获取权限,否则提示不能使用

2.so库加载错误

什么是so库呢?为什么会加载错误?
第一个问题:so库一般是用C或者C++编写的代码,Android通过JNI来调用。
第二个问题:因为so库中的代码是可以直接调用底层的硬件,而定位的so库需要和处理器关联,不同移动端的处理器又不一样 ,所以需要不同的so库对应的使用。所以建议把开发文档中的so库全部copy到项目中,不用考虑各种不同处理器手机的情况。

然后需要注意几个点:

  1. so库一定要和jar包是同一版本的,要不然可能会有问题;
  2. 如果so库和jar包放在一块,即libs包下,则需要再module的gradle中,表示JNI调用libs包下的文件。
android {
  ...
  sourceSets {
    main {
        jniLibs.srcDirs = ['libs']
    }
    }
}

当然也可以直接在项目src/main的目录下,创建jni包,将so库全部copy进来也可以,就不用修改module的gradle了。

3.Android的模拟器是不能定位的,所以建议再测试定位时不要用模拟器,一定要使用真机。

4.第一次定位能够获取到正确的经纬度,但是后面获取的经纬度都是4.9E-324

最诡异的一个但也是不容易出现的一个,却上当了…

回顾百度定位的整个流程,从百度账号进入,根据应用申请AK,然后输入开发版sha,发布版sha。原因就在这,就是这两个密钥搞错了,才出现上面的错误。如果开发版sha和发布版sha填写的都是发布版sha时,则再开发的过程中,首次定位获取到的经纬度是正确的,后面全是4.9E-324的错误;而发布版则任何时候定位都是正确的。

额外的知识:在Window下如何获取开发版sha和发布版sha呢?另外说明开发版即debug版,发布版即release版。
第一步:window+R,做下角弹出一个运行的弹框,输入cmd,点击确认。
第二步:输入 cd .android,定位到.android文件夹下
第三步:输入 keytool -list -v -keystore debug.keystore,debug.keystore是debug版的签名,如果是发布版,则 cd 到发布版签名的文件夹下,同样输入该行命令,将debug.keystore替换为发布版的签名,例如这个样子:release.jks
第四步:输入密钥库口令,一般是默认的口令:android
即可获取到一系列的信息,其中证书指纹下有个SHA1就是你需要的东西,copy即可。

分享不谢,不准偷盗。

感谢分享:

百度地图定位迷之报错
Android百度地图关于开发版SHA1值和发布版SHA1值

    原文作者:前山饭店
    原文地址: https://www.jianshu.com/p/b394de3d989c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞