Android开发学习笔记:第2天——百度地图SDK应用技巧概述

更新:11-11 神话故事 我要投稿 纠错 投诉

大家好,今天来为大家分享Android开发学习笔记:第2天——百度地图SDK应用技巧概述的一些知识点,和的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

获取包名

为了获取开发密钥,我们需要获取当前项目的包名和SHA密钥。 AndroidManifests.xml中已经定义了包名,如下:

获取SHA密钥

我们应该注意SHA版本。这里引用一下官网教程:

调试版本(debug)和发布版本(release)下的SHA1值是不同的。发布apk时,需要根据发布的apk对应的keystore重新配置密钥。 (注:我们这里使用的是debug版本,开发时请使用debug版本)。

进入控制台并输入以下命令:

keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore 密钥生成路径生成密钥

在控制台输入以下命令

keytool -list -v -keystore android.keystore -storepass 密钥密码查看刚刚生成的密钥查看密钥

获取AK

在刚才给出的获取AK的连接中,输入包名和SHA密钥即可创建

获取AK

下载并导入jar包

。前往http://lbs.baidu.com/index.php?title=sdk/downloadaction#selected=mapsdk_basicmap,mapsdk_searchfunction,mapsdk_lbscloudsearch,mapsdk_calculationtool,mapsdk_radar下载jar包,根据需要选择需要的功能。

然后将jar包导入到AS中。

将jar包放入项目目录下的/app/libs目录下。另外,将工程所需的CPU架构文件复制到该目录下。

/应用程序/libs目录

然后在build.gradle中配置sourceSets,并在build.gradle(Module:app)中添加以下代码:

主要的{

jniLibs.srcDir "库"

}

}

在工程中添加jar文件

将左侧窗口中的Android选项卡切换到Project选项卡,可以看到刚刚复制的jar和so文件。

项目结构目录

右键jar包-点击Add As Library,然后选择添加到应用程序中(直接点击ok即可,这里就不截图了)

点击Add As Library

配置混淆文件

因为我们要防止百度地图SDK相关内容被混淆,所以需要配置混淆文件。

打开app目录下的build.gradle(Module:app)文件,在release代码块中添加以下内容(如果已经是Android Studio自动生成的,则无需手动配置)。

构建类型{

发布{

minifyEnabled false

proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"

}

}编写混淆文件,打开app目录下的proguard-rules.pro文件,添加以下代码。

-保留类com.baidu.** {*;}

-保留类mapsdkvi.com.** {*;}

-dontwarn com.baidu.**

显示地图

初始化地图服务

定义DemoApplication并重写onCreate()方法

公共类DemoApplication 扩展应用程序{

@覆盖

公共无效onCreate() {

super.onCreate();

//在使用各个SDK组件之前初始化上下文信息并传入ApplicationContext

SDKInitializer.initialize(this);

//从4.3.0开始,百度地图SDK所有接口均支持百度坐标和国家测量局坐标。使用此方法设置您使用的坐标类型。

//包括BD09LL和GCJ02坐标,默认为BD09LL坐标。

SDKInitializer.setCoordType(CoordType.BD09LL);

}

}

配置AndroidManifests.xml

在manifest文件中配置应用,配置刚刚获取到的AK值

由于更改SDK需要较多的系统权限,因此在配置manifest时应添加权限声明。

在布局文件中添加地图容器

在manifest文件中声明application和service

应用标签

服务标签

获取定位数据

自定义MyLocationListener。 SDK通过重写BDAbstractLocationListener并重写onReceiveLocation方法实现定位数据的获取,并且可以将定位数据传递给MapView。

公共类MyLocationListener 扩展BDAbstractLocationListener {

@覆盖

公共无效onReceiveLocation(BDLocation位置){

//mapView销毁后,将不再处理新接收到的位置。

if (location==null || mMapView==null){

返回;

}

MyLocationData locData=new MyLocationData.Builder()

.accuracy(location.getRadius())

//这里设置开发者获取到的方向信息,顺时针0-360

.direction(location.getDirection()).latitude(location.getLatitude())

.longitude(location.getLongitude()).build();

mBaiduMap.setMyLocationData(locData);

}

}

自定义Activity

重写Activity中的onCreate()方法,直接启动布局。

公共类MainActivity 扩展AppCompatActivity {

私有最终int SDK_PERMISSION_REQUEST=127;

私有静态字符串permissionInfo=null;

私有静态百度地图mBaiduMap;

私有静态MapView mMapView;

私有静态LocationClient mLocationClient;

公共类MyLocationListener 扩展BDAbstractLocationListener {

@覆盖

公共无效onReceiveLocation(BDLocation位置){

//mapView销毁后,将不再处理新接收到的位置。

if (location==null || mMapView==null){

返回;

}

MyLocationData locData=new MyLocationData.Builder()

.accuracy(location.getRadius())

//这里设置开发者获取到的方向信息,顺时针0-360

.direction(location.getDirection()).latitude(location.getLatitude())

.longitude(location.getLongitude()).build();

mBaiduMap.setMyLocationData(locData);

}

}

protected void onCreate(Bundle savingInstanceState){

getPersimmions();

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mMapView=(MapView) findViewById(R.id.bmapView);

mBaiduMap=mMapView.getMap();

mBaiduMap.setMyLocationEnabled(true);

//注册LocationListener监听器

MyLocationListener myLocationListener=new MyLocationListener();

mLocationClient.registerLocationListener(myLocationListener);

//定位初始化

mLocationClient=新的LocationClient(this);

//通过LocationClientOption设置LocationClient相关参数

LocationClientOption 选项=new LocationClientOption();

option.setOpenGps(true); //开启GPS

option.setCoorType("bd09ll"); //设置坐标类型

选项.setScanSpan(1000);

//设置位置客户端选项

mLocationClient.setLocOption(选项);

//启用地图定位图层

mLocationClient.start();

}

@覆盖

受保护无效onResume() {

mMapView.onResume();

super.onResume();

}

@覆盖

受保护无效onPause() {

mMapView.onPause();

super.onPause();

}

@覆盖

受保护无效onDestroy() {

mLocationClient.stop();

mBaiduMap.setMyLocationEnabled(false);

mMapView.onDestroy();

mMapView=null;

super.onDestroy();

}Android 6.0之后的版本需要手动获取权限,代码如下:

//获取权限

@TargetApi(23)

私有无效getPersimmions() {

如果(Build.VERSION.SDK_INT=Build.VERSION_CODES.M){

ArrayList 权限=new ArrayList();

/***

* 定位权限为必填权限。如果用户被禁止,则每次进入都会申请。

*/

//定位精确位置

if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) !=PackageManager.PERMISSION_GRANTED) {

权限.add(Manifest.permission.ACCESS_FINE_LOCATION);

}

if (checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) !=PackageManager.PERMISSION_GRANTED) {

权限.add(Manifest.permission.ACCESS_COARSE_LOCATION);

}

/*

* 读写权限、手机状态权限等非必要权限(建议授予)仅申请一次,在用户同意或禁止的情况下才播放一次。

*/

//读写权限

if (addPermission(权限, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {

PermissionInfo +="Manifest.permission.WRITE_EXTERNAL_STORAGE 拒绝n";

}

if (permissions.size() 0) {

requestPermissions(permissions.toArray(new String[permissions.size()]), SDK_PERMISSION_REQUEST);

}

}

}

@TargetApi(23)

私人布尔addPermission(ArrayListpermissionsList,字符串权限){

//如果申请没有获得相应权限,则将其添加到列表中,为批量申请做准备

if (checkSelfPermission(权限) !=PackageManager.PERMISSION_GRANTED) {

如果(shouldShowRequestPermissionRationale(权限)){

返回真;

} 别的{

权限列表.add(权限);

返回假;

}

} 别的{

返回真;

}

}

@TargetApi(23)

@覆盖

公共无效onRequestPermissionsResult(int requestCode,String []权限,int [] grantResults){

//TODO 自动生成的方法存根

super.onRequestPermissionsResult(requestCode, 权限, grantResults);

用户评论

念旧是个瘾。

终于开始学Android了,Day2就用到百度地图了,太厉害了吧!

    有19位网友表示赞同!

经典的对白

想做导航App可以先看看这篇文章,分享经验真好。

    有5位网友表示赞同!

泡泡龙

看到你已经用到了百度地图SDK,看来Android学得真快啊。

    有20位网友表示赞同!

凝残月

学习笔记这么全面,能写这么详细的总结很棒哦!

    有11位网友表示赞同!

ˉ夨落旳尐孩。

我也在学Android,期待以后能像你一样掌握地图API使用~

    有9位网友表示赞同!

盲从于你

Day2就用上了SDK,你是学霸级别的!

    有5位网友表示赞同!

心贝

看这篇文章感觉百度地图还挺好用的,我最近也准备学习一下。

    有7位网友表示赞同!

窒息

学习笔记分享是这么贴心,希望以后还能看到更多你的干货!

    有7位网友表示赞同!

等量代换

Android地图开发有难度吗?这篇文章能解答我的疑问了。

    有16位网友表示赞同!

单身i

看了你写的总结,想要找些实践案例看看,这样学的更快吧。

    有16位网友表示赞同!

命硬

这篇笔记真不错,以后可以直接拿来查阅,省事很多!

    有19位网友表示赞同!

放肆丶小侽人

你的Android学习之路真是精彩,希望我们都能像你一样进步!

    有20位网友表示赞同!

伪心

想做地图App可以用这个SDK啊,我记下了,下次可以试试。

    有8位网友表示赞同!

安好如初

总结非常清晰易懂,即使是新手也能看明白。

    有19位网友表示赞同!

半梦半醒i

这篇文章让我对百度地图SDK有了更深的了解,谢谢分享!

    有6位网友表示赞同!

龙卷风卷走爱情

学习Android真是太好玩了,还有这么多功能可以探索啊!

    有9位网友表示赞同!

打个酱油卖个萌

Day2就用到SDK了,看来你已经掌握了基础知识,厉害厉害!

    有12位网友表示赞同!

此生一诺

希望能看到更多你的Android学习笔记,期待继续关注你的进步。

    有16位网友表示赞同!

【Android开发学习笔记:第2天——百度地图SDK应用技巧概述】相关文章:

1.动物故事精选:寓教于乐的儿童故事宝库

2.《寓教于乐:精选动物故事助力儿童成长》

3.探索动物旅行的奇幻冒险:专为儿童打造的童话故事

4.《趣味动物刷牙小故事》

5.探索坚韧之旅:小蜗牛的勇敢冒险

6.传统风味烤小猪,美食探索之旅

7.探索奇幻故事:大熊的精彩篇章

8.狮子与猫咪的奇妙邂逅:一场跨界的友谊故事

9.揭秘情感的力量:如何影响我们的生活与决策

10.跨越两岸:探索彼此的独特世界

上一篇:精选生活实用APP推荐:有效利用手机内存空间 下一篇:揭秘塔罗牌小阿卡纳第二号牌的神秘意义