最近在根据一个PPT学习位置服务和开发一个谷歌地图的小应用,想了想,除了谷歌地图外,还有高德地图,百度地图等,何不去查找一下,在开发群里面也曾经有人搞了百度地图,最后,我直接百度一下百度地图API,找到了下面的内容,并根据百度地图提供的Android地图 SDK和里面的开发指南,写了第一个小应用,因此,写了这篇文章,其实跟里面的开发指南是一样的,大家可以去了解一下,里面有很多好玩的东西,有很多我们要学习的东西:
1.首先,我们要开发百度地图,需要百度地图的API,我们可以百度一下百度地图API,打开百度地图API的首页,如下图所示,接下来的开发百度地图的小应用就是参考这个百度地图API所做出来的!
2.我们先登录你的百度账号,然后点击下图的箭头指向处:
如果你没登录的话,就要求你登录百度账号,点击申请密钥,如果你没有注册成为百度开发者的话,要求你注册,输入注册信息之后,你就成为百度开发者了,如下图所示:
3.点击上图的创建应用,出现下图:
其中输入应用名称,然后选择应用类型为Android sdk,其中安全码要由两部分组成,安全码的组成规则为:Android签名证书的sha1值+“;”+packagename(即:数字签名+分号+包名),例如:BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75;com.baidumap.demo ,中间的分号必须为英文状态下的分号,那么那个Android签名证书的sha1值要如何获得呢?下面介绍如何获取sha1值。
4.第一种方法,是通过keytool来获取Android签名证书的sha1值:
第一步,运行进入控制台,打开命令行窗口:
第二步:定位到.android文件夹下,输入cd .android
第三步:输入keytool -list -v -keystore debug.keystore,会得到三种指纹证书,选取SHA1类型的证书(密钥口令是android),例如:
其中keytool为jdk自带工具;keystorefile为Android 签名证书文件 :
这样便可以获得Android签名证书的sha1值了。
第二种方法,比较简单,直接打开我们的adt开发工具Eclipse,在eclipse中直接查看:windows -> preferance -> android -> build。 如下图示:
其中“SHA1 fingerprint”值即为Android签名证书的sha1值 。
获取包名:
包名是Android应用程序本身在AndroidManifest.xml 中定义的名称,例如:
这样就成功的创建了key,密钥知道了,密钥key即安全码,sha1+包名,在输入安全码后,点击“确定”完成应用的配置工作,您将会得到一个创建的Key,请妥善保管您所申请的Key。到这您就可以使用新Key来完成您的开发工作了。
5.接下来就是开发我们第一个百度地图的应用了,首先,要去下载开发百度地图需要的Android地图 sdk,如下图所示:
勾选需要的功能,然后点击开发包下载,下载后解压该zip压缩包,有一个libs目录,里面是开发百度地图所需要的jar包等,如下图所示:
全部复制到我们项目底下的libs目录下,如下图所示:
然后就可以进行代码的编写了。
6,经过上面的步骤,我们可以进行代码的编写了:
(1).在AndroidManifest中添加开发密钥、所需权限等信息:
<application> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="开发者 key" /> </application>
(2).添加所需权限:
<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" />
(3).在布局xml文件中添加地图控件:
activity_main.xml文件代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /> </LinearLayout>
(4).在应用程序创建时初始化 SDK引用的Context 全局变量:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //在使用SDK各组件之前初始化context信息,传入ApplicationContext //注意该方法要再setContentView方法之前实现 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); } }
注意:在SDK各功能组件使用之前都需要调用SDKInitializer.initialize(getApplicationContext());,因此我们建议该方法放在Application的初始化方法中
(5).创建地图Activity,管理地图生命周期,MainActivity.java文件代码如下:
package xg.maptest; import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.MapView; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { MapView mapView=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //在使用SDK各组件之前初始化context信息,传入ApplicationContext //注意该方法要再setContentView方法之前实现 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); //获取地图控件引用 mapView = (MapView) findViewById(R.id.bmapView); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 mapView.onDestroy(); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理 mapView.onPause(); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理 mapView.onResume(); } }
7.完成上面这些步骤之后,运行此项目,就可以在我们的应用中显示出如下的地图:
这样第一个百度地图应用就出来了,只显示了一个基础的地图页面。
8.以上内容仅供大家学习参考,大家可以去百度地图API首页里去学习,谢谢!