Android studio3.0对于百度地图api开发(1)——hello百度地图与工具准备
随着参加学校科技创新中我参与的基于百度地图消防水源管理系统客户端的完工现对于该客户端app开发过程中就百度地图开发中各分功能进行总结。望各位读者不奢赐教。综合功能如下网页:https://blog.csdn.net/qq_41562408/article/details/82788087#commentBox
现就百度地图开发中第一项功能也是最基础功能Hello BaiduMap进行讲解:
1、创建Android项目:File--》new--》new project设置基本的项目名称、包名、存储位置。而后一路next如图:等待一段时间。注意最好全过程联网,关闭防火墙或者将Androidstudio设置为信任软件。我的习惯在开发项目的时候把防火墙、360等杀毒软件都退出,省的麻烦。反正我电脑也没什么,应该不会被黑吧。
2、项目创建完毕之后,进入网站http://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5点击开发文档--》Android地图SDK--》获取**--》创建**输入所需内容便可。如图:
ps: 应用名称看你情况输入,应用类型选择Android SDK,应用服务全选就行,不用也无所谓,万一要用呢?(#^.^#)
SHA1的获取方法:
开发版:
(1)、打开android studio最下面找到Terminal输入命令 C: 进入c盘
(2)、输入命令 cd Users\Administrator 其中Administrator是自己的用户名 Administrator文件下有个.adnroid文件, 输入命令 cd .android
(3)、输入命令 keytool -list -v -keystore debug.keystore 其中debug.keystore是studio默认的keystore,按回车,然后输入秘钥:android(系统默认) 回车(秘钥库口令是看不到的)。SHA1便可查询,复制输入便可。
发布版:
(1)、一二步同上
(2)、打包签名文件 https://jingyan.baidu.com/article/363872ec2239336e4ba16fdd.html步骤如网站ps:Androidstudio3.0与网站步骤有所不同点在网站的第五步与第六步,会有应该类型的选择,都选便可。
(3)、输入命令 keytool -list -v -keystore 文件目录\自己的签名文件然后输入秘钥(就是你设置的密码):
回车便得到SHA1。
ps:通常环境不变两个SHA1是不变的,找个文档保存便可。以备下次使用。
包名便是打开随意打开一个.java第一段代码package后面的便是。如下:包名便是wang.baidumap.com
package wang.baidumap.com;
3、获取key之后便可以进行进行产品下载,点击产品下载,选择开发包下载,然后根据自己的需求自定义下载产品。下面的都可以下载一下,当然主要起作用的是开发包了。其他的只是说明罢了。
4、产品下载完毕之后资源就都准备完了 。接下来就是开放的第一步Hello BaibuMapl
5、首先便是项目进行基本的百度地图API配置,这里大可以按照开放指南中对于Androidstudio配置操作,但是Androidstudio3.0有一些步骤可以省略:具体开发如下:
(1)、打开project目录将BaiduLBS_AndroidSDK_Lib\libs中的jar包复制到project中app中libs中。
(2)、在src/main/目录下新建jniLibs目录,将BaiduLBS_AndroidSDK_Lib\libs里面那五个文件夹复制其中便可。
如图便可:
然后点击左侧圈圈按钮稍等便可。其他无需操作。切记
6、权限复制便可:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
//获取设备网络状态,禁用后无法获取网络状态
<uses-permission android:name="android.permission.INTERNET" />
//网络权限,当禁用后,无法进行检索等相关业务
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
//读取设备硬件信息,统计数据
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
//读取系统信息,包含系统版本等信息,用作统计
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
//获取设备的网络状态,鉴权所需网络代理
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
//允许sd卡写权限,需写入地图数据,禁用后无法显示地图
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
//获取统计数据
<uses-permission android:name="android.permission.CAMERA" />
//使用步行AR导航,配置Camera权限
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 这个权限用于进行网络定位 -->
<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" />
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
<uses-permission android:name="android.permission.CHANGE_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.INTERNET" />
<!-- SD卡读取权限,用户写入离线定位数据 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
7、新建MyApplication继承Application初始化
public class MyApplication extends Application {
@Override
public void onCreate() {
SDKInitializer.initialize(this);
super.onCreate();
}(注意要在配置文件中进行声明
<application
android:name=".MyApplication"//不然会闪退。
8、设置key 在application中间添加如下代码,“----------------------------”部分为你申请的key值
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="-----------------" />
9、设置界面复制便可,添加如下代码
<com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" />
10、设置变量在MainActivity
protected MapView mapView = null; public BaiduMap baiduMap;
在onCreate方法中添加:
mapView = (MapView) findViewById(R.id.bmapView); baiduMap=mapView.getMap();//获取地图控制器
而后复写方法
@Override protected void onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 mapView.onDestroy(); } @Override protected void onResume() { super.onResume(); //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理 mapView.onResume(); } @Override protected void onPause() { super.onPause(); //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理 mapView.onPause(); }
运行项目,便可以看到以*中心的百度地图。
11、设置监听广播
设置变量 BroadcastReceiver receiver;
private BroadcastReceiver receiver;
设置方法:
private void registerSDKCheckReceiver(){ receiver=new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action=intent.getAction(); if (SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR.equals(action)){ Toast.makeText(getApplicationContext(),"网络错误",Toast.LENGTH_SHORT).show(); }else if (SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR.equals(action)){ Toast.makeText(getApplicationContext(),"KEY验证失败",Toast.LENGTH_SHORT).show(); } } }; IntentFilter filter=new IntentFilter(); //监听网络错误 filter.addAction(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR); //监听百度地图SDK的key是否正确 filter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR); registerReceiver(receiver,filter); }
与oncreat中调用
registerSDKCheckReceiver();
这个时候你可以故意写错key或者断开网络看是否报错。。。。。
以上方法亲测有效!!!!
这次就这样了,下次书写修改百度地图的默认定位。而不是定位到*。可以定位到你想的地方。
就到这里,我要去写论文学构建服务器去了。拜拜,有什么问题或者有什么好的建议欢迎评论留言哈!!!!!