美文网首页Android TipsAndroid开发经验谈Android开发
百度定位中出现4.9E-324问题的原因和解决办法

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

作者: 前山饭店 | 来源:发表于2018-04-07 17:58 被阅读87次

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

    定位过程中出现经纬度为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值

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/zmbyhftx.html