Android开发实战一 百度SDK
一 申请百度API key
百度地图API:http://developer.baidu.com/map/
百度地图开发者平台地址:http://developer.baidu.com/map/ 。点击界面的“申请密钥”,进入界面之后,点击“创建应用”按钮,我这里已经申请过,所以不需要再申请,直接创建应用即可。

Android Studio 获取调试版SHA1,如下:如果想生成release版的参照 https://blog.csdn.net/qq_34507714/article/details/78861043
1. 输入命令 C: 进入C盘;
2. 输入命令 cd Users\你的用户名\.android 就找到了.android;
3. 输入命令 keytool -list -v -keystore debug.keystore 回车键;
4. 输入密钥库口令 android 回车键,就可以看到调试版SHA1啦!



二 下载SDK
SDK下载地址:http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download

第一步:在工程app/libs目录下放入baidumapapi_vX_X_X.jar包,及so文件如下图所示,全部丢进去即可
第二步:导入jar包。菜单栏选择File->Project Structor->Modules->Dependencies,点击+号,选择File dependency,选择jar包导入。
通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全部功能了。

三 代码部分
3.1 配置权限和Key
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<!-- 获取CUID,用于鉴权,请求签名等 -->
<uses-permission android:name="com.android.launcher.permission.WRITE_SETTINGS" />
<!-- 这个权限用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 这个权限用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_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.INTERNET" />

3.2 在布局xml文件中添加地图控件
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
3.3 在应用程序创建时初始化SDK引用的Context全局变量
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
//注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
mMapView = (MapView) findViewById(R.id.bmapView);
}
3.4 执行结果

gitHub:https://github.com/MichealPan9999/BaiduApi
四 进阶训练
添加百度地图查询功能
4.1 通过中文名称转换成经纬度
/*
*根据地址得到地理坐标
*/
public void getLatAndLngByAddress() {
String addr = "";
String lat = "";
String lng = "";
try {
addr = java.net.URLEncoder.encode(address, "UTF-8");//编码
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String url = String.format("http://api.map.baidu.com/geocoder/v2/?"
+ "address=%s&ak=生成的ak&mcode=生成的安全码&output=json", addr);
Log.d("panzqww", "-----url = " + url);
URL myURL = null;
URLConnection httpsConn = null;
String[] location = null;
//进行转码
try {
myURL = new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
httpsConn = (URLConnection) myURL.openConnection();//建立连接
if (httpsConn != null) {
InputStreamReader insr = new InputStreamReader(//传输数据
httpsConn.getInputStream(), "UTF-8");
BufferedReader br = new BufferedReader(insr);
String data = null;
if ((data = br.readLine()) != null) {
System.out.println(data);
location = getLocation(data);
}
insr.close();
br.close();
}
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
if (location == null || location.length < 2)
{
return;
}
this.Latitude = Double.parseDouble(location[0]);
this.Longitude = Double.parseDouble(location[1]);
}
ak及安全码获取方式:点击设置进入到配置应用中

其中对应的ak为:

安全码是:

AddressToLatitudeLongitude at = new AddressToLatitudeLongitude("江西省樟树市");
at.getLatAndLngByAddress();
getLocationByLL(at.getLatitude(), at.getLongitude());
/*
*根据经纬度前往
*/
public void getLocationByLL(double la, double lg) {
//地理坐标的数据结构
LatLng latLng = new LatLng(la, lg);
//描述地图状态将要发生的变化,通过当前经纬度来使地图显示到该位置
MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
myBaiduMap.setMapStatus(msu);
}

4.2 根据经纬度定位地址
/*
*根据经纬度前往
*/
public void getLocationByLL(double la, double lg) {
//地理坐标的数据结构
LatLng latLng = new LatLng(la, lg);
//描述地图状态将要发生的变化,通过当前经纬度来使地图显示到该位置
MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
myBaiduMap.setMapStatus(msu);
}
代码地址 github:https://github.com/MichealPan9999/BaiduApi
Android开发实战一 百度SDK的更多相关文章
- 我的 Android 开发实战经验总结
我的 Android 开发实战经验总结 字数4440 阅读5137 评论43 喜欢250 曾经一直想写一篇总结 Android 开发经验的文章,预计当时的我还达不到某种水平,所以思路跟不上,下笔又捉襟 ...
- Xamarin Android开发实战(上册)大学霸内部资料
Xamarin Android开发实战(上册)大学霸内部资料 试读文档下载地址:http://pan.baidu.com/s/1jGEHhhO 密码:vcfm 介绍: 本教程是国内唯一的Xamar ...
- Android开发实战(申明:来源于网络)
Android开发实战(申明:来源于网络) 地址:http://so.csdn.net/so/search/s.do?q=Android%E5%BC%80%E5%8F%91%E5%AE%9E%E6%8 ...
- 阅读《名师讲坛--Android开发实战经典》
一,专心,快速阅读一本书,直到深入理解,把书读厚,再读薄,你定会有收获. 二,20171214开始阅读<名师讲坛--Android开发实战经典>,但愿自己有所收获.从今天开始养成刻录学习写 ...
- 《Python Web开发实战》|百度网盘免费下载|Python Web开发
<Python Web开发实战>|百度网盘免费下载|Python Web开发 提取码:rnz4 内容简介 这本书涵盖了Web开发的方方面面,可以分为如下部分: 1. 使用最新的Flask ...
- Android开发 对接微信分享SDK总结
原文:Android开发 对接微信分享SDK总结 - Stars-One的杂货小窝 公司项目需要对接微信分享,本来之前准备对接友盟分享的,但友盟的分享实际参数太多,而我又只需要对接一个微信分享,于是便 ...
- Android 开发之集成百度地图的定位与地图展示
app 应用中,大多数应用都具有定位功能,百度定位就成了开发人员的集成定位功能的首选,近期也在做定位功能,可是发现百度真是个大坑啊, sdk 命名更新了,相关代码却不更新,害得我花费了非常长时间来研究 ...
- 我的Android开发之路——百度地图开源工具获取定位信息
定位技术在现在的移动设备上是必不可少的,许多app都会使用定位功能. 通常定位方式有两种:GPS定位:网络定位. Android系统对这两种定位方式都提供了相应的API支持,但是因为google的网络 ...
- Android开发实战之底部Dialog弹出效果
在Android开发中,有很多情况下我们需要使用到对话框,遗憾的是,安卓自带的对话框样式不能满足我们实际的需要,所以往往需要我们自定义对话框,具体做法:写一个对话框继承自Dialog实现他的一个构造方 ...
随机推荐
- Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week2, Optimization algorithms
Gradient descent Batch Gradient Decent, Mini-batch gradient descent, Stochastic gradient descent 还有很 ...
- C语言库函数syslog
参考链接: http://blog.csdn.net/jiangxinyu/article/details/1473356
- python 生成器的GeneratorExit异常
转载自:https://blog.csdn.net/hedan2013/article/details/72810653 当一个生成器对象被销毁时,会抛出一个GeneratorExit异常.请看下面的 ...
- es教程
概念 关系数据库 ⇒ 数据库 ⇒ 表 ⇒ 行 ⇒ 列(Columns) Elasticsearch ⇒ 索引(Index) ⇒ 类型(type) ⇒ 文档(Docments) ⇒ 字段(Fields) ...
- Django学习手册 - ORM 单表数据获取
Django 单表数据的获取: 先建立数据表格 from django.db import models # Create your models here. class userinfo(model ...
- centos 秘钥登陆配置
准备:2台机器,ip分别为:10.1.80.13 10.1.80.14 目的:通过13 ssh远程访问14.无需输入密码 1.首先在10.1.80.13上生成密钥对.cd /root/.ssh ...
- C# 事务 四种事务隔离级别
http://www.zsythink.net/archives/1233 不同隔离级别的问题 脏读(Dirty Read) 一个事务处理过程里读取了另一个未提交的事务中的数据 例子: 当一个事务 ...
- 【VMware vSphere】ESXi系统开启SSH协议
写在前面: SSH为建立在应用层基础上的安全协议,是目前较为可靠,专为远程登录会话和其他网络服务提供安全性的协议.感兴趣的话,可以百度了解 在这里,我们需要将S ...
- Faster_RCNN 1.准备工作
总结自论文:Faster_RCNN,与Pytorch代码: 代码结构: simple-faster-rcnn-pytorch.py data __init__.py dataset.py util. ...
- LwIP Application Developers Manual2---Protocols概览
1.前言 本文是对LwIP Application Developers Manual的翻译 lwIP是模块化的并支持广泛的协议,这些大部分协议可以被裁减从而减小代码的尺寸 2.协议概览 链路层和网络 ...