IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android studio中使用百度地图 -> 正文阅读

[移动开发]Android studio中使用百度地图

							Android studio中使用百度地图
开发工具与关键技术:Android studio
作者:熊俊杰
撰写时间:2021.8.28

使用Android studio开发安卓app的百度地图首先需要知道百度地图的开放平台

https://lbsyun.baidu.com/apiconsole/key#/home

一、第一步:需要给我们的项目设置签名,有两种方法(两种方法任选一种即可):
第一种:是百度开放文档中提供的,打开电脑,进入C盘:用户目录/用户/.android 目录里面,然后通过(shift+鼠标右键)选择管理员(power shell)打开控制台,然后输入命令:调试版本(debug)和发布版本(release)下的 SHA1 值是不同的,发布 apk 时需要根据发布 apk 对应的 keystore 重新配置 Key。(注意:我们这里使用的是调试版本,在开发时请使用调试版本)

调试版本使用指令:keytool -list -v -keystore debug.keystore
发布版本请使用指令:keytool -list -v -keystore apk 的 keystore

输入口令:
调试版本默认密码是: android,发布模式的密码是apk的keystore设置的密码(密码输入看不见,输完直接回车)。输入密钥后回车(如果没设置密码,可直接回车),此时可在控制台显示的信息中获取SHA1值,如下图所示:
在这里插入图片描述

第二种方法:
1.在Android studio中打开Build -> Generate Signed Bundle/APK 菜单如下:
在这里插入图片描述

1.第一个选项:生成签名包应用,可以将程序包生成签名的应用包上传到应用商店
第二个选项:构建可部署到设备的签名APK
2.选第一个和第二个都可以,进入如下页面:
在这里插入图片描述

3.填写相关信息
在这里插入图片描述

4.进入刚才生成的.jks签名文件的目录中,按住Shift键再按右键,右键菜单中 在此处打开 Powershell窗口,输入cmd 回车,在输入以下命令:

keytool -list -v -keystore 签名文件名称.jks

5.输入密码(密码输入看不见,输完直接回车),就是上面那个图片的第二排那个密码
然后得到如下(这里需要把SHA1记录下来):
在这里插入图片描述

6.然后我们再去给项目设置签名:打开项目的 Project Structure(File -> Project Structure)如下:
在这里插入图片描述

这里默认只有debug(调试版),需要点击那个‘+’添加release(发布版)选项,发布版和调试版的jks不是同一个文件,选择的时候不要搞混了,然后选择刚刚生成的jks文件,然后点击ok即可,然后会在我们的项目清单文件中生成对应的内容。
7.然后我们再回到刚刚的菜单打开Build -> Generate Signed Bundle/APK ,选择APK,然后选择生成的jks文件,输入别名和密码
在这里插入图片描述

下一步:选择调试版或者开发版之后build一下即可。

当我们使用release,build完之后会在项目的app文件夹下面生成一个release文件夹,里面的app-release.apk文件是我们发布app需要用到的安装包文件,如下 :

在这里插入图片描述

二、弄完之后就需要去百度开放文档中下载一个开发包项目,按照自己的需要下载:

https://lbsyun.baidu.com/index.php?title=sdk/download&action#selected=mapsdk_basicmap,mapsdk_searchfunction,mapsdk_lbscloudsearch,mapsdk_calculationtool,mapsdk_radar

按照百度地图开放文档里面有两种方式:
1、第一种:下载完成之后我们需要在我们的项目中点击Android选择peoject,在app目录中生成一个libs文件夹,然后将我们刚刚下载的开发包解压,找到项目里面的libs文件夹打开,复制里面所有的文件,将文件拷贝到我们刚刚在自己项目里面生成的libs里面,如下:
在这里插入图片描述

在app目录下的build.gradle文件中android块中配置sourceSets标签,如果没有使用该标签则新增,详细配置代码如下:

sourceSets {
           main {
               jniLibs.srcDir 'libs'
           }
    }

注意:Jar文件和so文件的版本号必须一致,并且保证Jar文件与so文件是同一版本包取出的

方法二:
在src/main/目录下新建jniLibs目录,在下载的开发包中拷贝项目中需要的so文件文件夹到jniLibs目录,BaiduLBS_Android.jar文件拷贝到libs文件夹里面,如图:
在这里插入图片描述

2、然后往工程中添加jar文件,菜单栏选择File -> Project Structure,选择Dependencies,再选择app,点击左上角的‘+’选择Jar Dependency,然后选择刚刚的libs里面的BaiduLBS_Android.jar文件,如下:
在这里插入图片描述

3、在解压后的开发包中会包含一个assets目录,需要将该目录下的png文件拷贝至您的项目的assets目录下(最基础的开发包可以不要这个图片,自己要涉及到骑行线路规划之类的就需要)
4、应用混淆:现在我们的应用中已经集成了百度地图SDK,当我们在打包混淆的时候需要注意于BaiduMap SDK 相关的内容不应该被混淆,所以我们需要配置混淆文件。
打开app目录下的build.gradle文件,在release代码块中添加如下内容(若已经由Android Studio自动生成,则不用手动配置)

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

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

-keep class com.baidu.** {*;}
-keep class vi.com.** {*;}
-keep class com.baidu.vi.** {*;}
-dontwarn com.baidu.**

三、接下来就可以使用百度地图sdk在项目里面设置地图了
1、配置AndroidManifest.xml文件,在页面清单application中加入如下代码配置开发密钥(AK)(meta-data千万不要放到application外面去了,不然项目启动会提示空指针):

<application>  
    <meta-data  
        android:name="com.baidu.lbsapi.API_KEY"  
        android:value="开发者 key" />  
</application>

这个开发者的key需要我们再百度地图开放文档里面申请,如下:
在这里插入图片描述

里面需要用到我们刚开始申请的SHA1
在这里插入图片描述

申请完成之后复制AK,AK就是我们的开发者key。
2、在application外部添加如下权限声明(自Android6.0起部分权限的使用需要开发者在代码中动态申请):

<!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,POI检索等 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 获取网络状态,根据网络状态切换进行数据请求网络转换 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 读取外置存储。如果开发者使用了so动态加载功能并且把so文件放在了外置存储区域,则需要申请该权限,否则不需要 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 写外置存储。如果开发者使用了离线地图,并且数据写在外置存储区域,则需要申请该权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

3、地图初始化:在SDK各功能组件使用之前都需要调用“SDKInitializer.initialize(getApplicationContext())”,因此建议在应用创建时初始化SDK引用的Context为全局变量,如下:

@Override
public void onCreate() {
	super.onCreate();
//在使用SDK各组件之前初始化context信息,传入ApplicationContext   
	SDKInitializer.initialize(this);
//自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
//包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标(北京)。
	SDKInitializer.setCoordType(CoordType.BD09LL);
}

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

<com.baidu.mapapi.map.MapView  
    android:id="@+id/bmapView"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:clickable="true" />

4、创建地图的activity,管理MapView生命周期,如下:

public class MainActivity extends Activity {  
	    private MapView mMapView = null;  
	    @Override  
	    protected void onCreate(Bundle savedInstanceState) {  
	        super.onCreate(savedInstanceState);    
	        setContentView(R.layout.activity_main);  
	        //获取地图控件引用  
	        mMapView = (MapView) findViewById(R.id.bmapView);  
	    }  
	    @Override  
	    protected void onResume() {  
	       super.onResume();  
	       //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理  
	       mMapView.onResume();  
	    }  
	    @Override  
	    protected void onPause() {  
	      super.onPause();  
	      //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理  
	      mMapView.onPause();  
	    } 
	    @Override  
	    protected void onDestroy() {  
	      super.onDestroy();  mMapView.onDestroy(),实现地图生命周期管理  
	      mMapView.onDestroy();//在页面销毁的时候,销毁地图  
	    }  
	  }
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-28 09:27:50  更:2021-08-28 09:28:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:43:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码