Android:使用百度地图SDK实现定位打卡功能:下载SDK、申请密钥、动态获得Android权限

最近想实现一个打卡的功能,想到可以利用百度地图的SDK。网上有很多关于百度地图SDK定位、地图功能应用的demo,这部分倒不是很困难。但网上很多博客写的内容一般都着重于代码部分,很多下载配置和编译器设置的过程没有涉及,官方的文档也基本没有这类的介绍。这篇博文就主要记录一下遇到的非代码部分的坑,虽然大多数问题都被博学的网友解决了,但统一整理一下,可以让之后想简单使用百度SDK的朋友少花点时间。

下载SDK至libs

在百度地图SDK的网站上选择自己需要的功能下载。
Android:使用百度地图SDK实现定位打卡功能:下载SDK、申请密钥、动态获得Android权限_第1张图片
然后照常放进libs中,并且添加依赖。
Android:使用百度地图SDK实现定位打卡功能:下载SDK、申请密钥、动态获得Android权限_第2张图片
但这样编译运行后会跳出found libBaiduMapSDK_base_vx_x_x.so error的错误,我看了看.so文件都在libs里呀,那是为什么呢?
查阅后发现需要在app:build.gradle里添加这样几行。

sourceSets{
        main{
            jniLibs.srcDir 'libs'
            //说明so的路径为该libs路径,关联所有地图SDK的so文件
        }
    }

申请密钥

百度地图SDK为了防止被恶意攻击,需要开发者申请密钥使用。但好在申请过程很简单并且免费,同时可以申请多个。
Android:使用百度地图SDK实现定位打卡功能:下载SDK、申请密钥、动态获得Android权限_第3张图片

申请密钥时需要提供SHA1和包名,SHA1是安全哈希算法,应用于数字签名。包名就是APP的包名,如果多个APP要使用,就需要申请多个密钥,但在同一台计算机上编译运行,SHA1似乎都是一样的。AndroidStudio可以通过如图的操作查看SHA1,很方便。

Android:使用百度地图SDK实现定位打卡功能:下载SDK、申请密钥、动态获得Android权限_第4张图片

Android:使用百度地图SDK实现定位打卡功能:下载SDK、申请密钥、动态获得Android权限_第5张图片

随后将获得的密钥填入AndroidManifest中。
填写配置

申请权限

做完以上配置后,准备试着运行一下网上找到的代码demo。
(我这里参考的是https://blog.csdn.net/csdn_aiyang/article/details/80407123)
发现可以显示地图,但是没有定位功能,遂想到是不是跟定位有关的权限没有申请,随后查阅了一下百度地图SDK所需要的权限,在AndroidManifest中填写了以下权限申请。


    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

其中,

    
    

是跟定位有关的权限,很多网上的博文不知道为啥没有涉及。
但添加以后发现还是没有定位功能,查阅资料后发现,Android6.0以后版本很多权限需要动态申请,也就是你得手动调出相关权限设置的界面。我测试的手机就是MIUI6+,很坑。按照https://www.jianshu.com/p/dea56f6d7af3介绍的方法一步步做好后就大功告成了,这里就不复制黏贴了,原博主介绍的很专业详细。

你可能感兴趣的:(Android)