文档章节

Android 百度地图开发(一)

SunnyTime
 SunnyTime
发布于 2015/10/22 13:39
字数 995
阅读 164
收藏 0
点赞 1
评论 0

现在好多手机应用开发需要使用到百度地图,在使用百度地图的过程和遇到的问题整理一下方便以后使用

申请密钥
使用白度地图首先需要申请API Key,申请百度账户才能得到API Key. 登录 http://developer.baidu.com/map/ 点击申请密钥
申请过程中需SHA1,使用Eclipse的同学应该很容易使用图像工具找到,但是使用Android-studio的同学可能找不到,我也没有找到
我找的过程是,打开cmd,或者在AS中的Terminal.找到debug-keystore文件,比如我的是D:\Users\*****\.android.

在Termina中进入该文件目录,然后输入"keytool -list -v -keystore debug.keystore",命令,记住进入目录下.


申请密钥的其他步骤就不在此多说了.拿的密钥后我们就可以正式在我们的App中使用了.
正式开发
创建好项目后,首先将API包括的两个文件baidumapapi.jar和libBMapApiEngine.so拷贝到工程根目录及libs\armeabi目录下,
AS添加jar有两种方法,一种是在所要添加的jar上右键选择"Add as library"即可,一种是打开build.gradle,build.gradle有两个
一定要打开项目内部的build.gradle,添加下面的代码,
dependencies {
    .....
    compile files('libs/BaiduLBS_Android.jar')
}


基本使用
在AndroidManifest.xml中添加
<meta-data  
    android:name="com.baidu.lbsapi.API_KEY"  
    android:value="AK" />  
name就是上面的name不要改变,value是你申请到的AK.
百度API所需权限 
<uses-permission android:name="android.permission.GET_ACCOUNTS" />  
<uses-permission android:name="android.permission.USE_CREDENTIALS" />  
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />  
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />  
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
<uses-permission android:name="android.permission.INTERNET" />  
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />  
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />  
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
<uses-permission android:name="android.permission.READ_PHONE_STATE" />  
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
<uses-permission android:name="android.permission.BROADCAST_STICKY" />  
<uses-permission android:name="android.permission.WRITE_SETTINGS" />  
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
基本是那个就是这些权限了.
在自己的xml文件中加入mapview,
<com.baidu.mapapi.map.MapView  
     android:id="@+id/m_mapview"  
     android:layout_width="match_parent"  
     android:layout_height="match_parent"  
     android:clickable="true" />
在Activity中的onCreate方法中, 
    private MapView mBaiduMapView = null;  
@Override  
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);     
    SDKInitializer.initialize(getApplicationContext());  
    setContentView(R.layout.activity_main);
    initBaiduMap();
}
注意两点,
1.initialize方法中必须传入的是ApplicationContext,传入this,或者MAinActivity.this都会报运行时异常.
2.initialize方法必须写在setContentView方法前面,新同学也许会写在后面结果报xml中的错误.
private void initBaiduMap(){
    mBaiduMapView = (MapView) findViewById(R.id.m_mapview); 
}
写到这里基本上就可以运行出效果了.
    @Override  
    protected void onResume() {  
        super.onResume();  
        mBaiduMapView.onResume();  
    }  
    @Override  
    protected void onPause() {  
        super.onPause();  
        mBaiduMapView.onPause();  
    }  
    @Override  
    protected void onDestroy() {  
        mBaiduMapView.onDestroy();  
        mBaiduMapView = null;  
        super.onDestroy();  
    }
有的新同学使用AS运行的时候会报错,我写出我自己遇到的几个错误.
1.java.lang.UnsatisfiedLinkError: Native method not found: com.baidu.platform.comjni.map.basemap.JNIBaseMap.Create:()J
这个是由于在AS上我们将.so文件放在了libs文件夹中,在AS中这样是不行的.我们需要将其放在JniLibs文件夹中,于是有的新同学就自己创建了
JniLibs文件夹结果还是不行,这个时候新同学可以仔细看一下你所创建的JniLibs文件夹和res文件是否一样,有个金黄色的圆柱行的标志,在右下角.
如果没有那就对了新同学其实不需要自己添加JniLibs文件夹的.我们所要做的是:
打开项目内部的build.gradle,添加下面的代码,
sourceSets {
    main {
        jniLibs.srcDir 'libs'
    }
}
再看一下是否有了JniLibs文件夹.这样就不会后此错误了.
2.也许运行的时候会遇见230错误,Authentication Error errorcode: 230 uid: -1 appid -1 msg: APP Scode码校验失败.
这个其实基本上是自己的AK出现了问题,你可以查看自己的SHA1是否正确,申请密钥时填写的包名是否完整.

另外有的同学的电脑上有两个\.android\debug-keystore文件,我就是这样被坑了的.所有确认一下自己的AS所对应的debug-keystore文件.


今天就写到这里,后续我还会在继续使用百度地图踩踩坑,总结一下为新同学填坑.

版权声明:本文为博主原创文章,未经博主允许不得转载。

© 著作权归作者所有

共有 人打赏支持
SunnyTime
粉丝 5
博文 26
码字总数 17058
作品 0
静安
程序员
项目记录——为沙特客户Android开发Google地图应用

最近在给沙特客户所做的应用中需要用到地图,所以原来常用的百度地图就不能使用了,只好换成了Google地图。结果在开发过程中遇到了很多坑,折腾了不少时间终于搞定。这里特记录下之中的几个要...

GeCoder ⋅ 05/02 ⋅ 0

iOS端Mock GPS定位 —— 测试、开发、玩游戏、发朋友圈等等,你都用得上

前言 2017年,淘宝、天猫线下活动会场日益增多,个性化的地理围栏圈人投放成了运营司空见惯的方式,那么每次测试就变得非常蛋疼。安卓能找到一大波能虚拟定位的工具,那ios如何测试。我们Awa...

尛破孩波波 ⋅ 2017/10/11 ⋅ 0

基于 MVP 架构使用Android通用开发框架快速开发微博项目实战

课程目标: 基于 MVP 架构使用Android通用开发框架快速开发微博项目实战 适应人群: 适合大学生和初中级android开发工程师,可以系统化的微博类APP的开发,系统化掌握商业化项目的开发。* 不...

13122542396 ⋅ 05/25 ⋅ 0

带领新手快速开发Android App开发视频课程 安卓快速入门教程

第1章 课程介绍与项目准备 如果你从事Android开发,那你一定要学习一些开发技巧和掌握一些开发逻辑,而很不巧,我这里全部都有,最开始我们介绍一下我们这个应用的整体组织架构,通过对各个平...

17087075817 ⋅ 05/14 ⋅ 0

张高兴的 Xamarin.Android 学习笔记:(一)环境配置

  最近在自学 Xamarin 和 Android ,同时发现国内在做 Xamarin 的不多。我在自学中间遇到了很多问题,而且百度到的很多教程也有些过时,现在打算写点东西稍微总结下,顺便帮后人指指路了。...

张高兴 ⋅ 2017/01/13 ⋅ 0

Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图

最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地图入手,其实他们的用法都差不多,本篇文章就带领大家在自己的Android项目中加入百度地图的功能,接下来...

等待流星 ⋅ 2013/12/10 ⋅ 1

百度地图SDK地图学习——实现定位功能

之前已经完成了百度地图SDK和百度定位SDK的配置。 http://my.oschina.net/u/1051634/blog/180880 实现百度定位的功能,最好仔细看看官方的文档,看了好几次才有点明白。 开发指南:http://de...

HenryHsu ⋅ 2013/12/03 ⋅ 1

Kiwi:来自xda-developers拥有暗色主题的超快速Chrome浏览器

据外媒报道,几乎在移动软件商城刚出现的时候就形成了这样一个现象:比起Android第三方应用程序开发人员更倾向于iOS。这种差异不仅发生在移动平台早期并且一直持续到现在。尽管Android在全球...

稿源:cnBeta.COM ⋅ 昨天 ⋅ 0

运行java程从 串口读取 GPS定位数据,然后做把这台做成一个服务器。

(1)如何在Eclipse中编写程序 读取 串口上的 GPS 定位数据。 (2)读到数据之后,把这台电脑做成一个服务器,可以向外传送 Json格式或tcp格式的数据; 当使用手机连接上这台电脑的WIFI时, ...

lhzsu ⋅ 05/15 ⋅ 0

Cordova开发App入门(四)打开及下载第三方App

前言 在开发app时经常会碰到这种需求:我要在A应用中打开B应用,那么用Cordova如何实现呢? 欲知后事如何,且听下回分解...... ... 大大大大佬,别,别打我,我继续写还不行了吗。本文涉及到...

慕冬雪 ⋅ 06/22 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 29分钟前 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部