如何用Android开发工具引用百度地图
2016-04-06 16:39
603 查看
1.首先开发者在百度地图Android SDK 的下载页面下载到最新的地图SDK
http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download
2. 申请密钥
在使用百度地图SDK为您提供的各种LBS能力之前,您需要获取百度地图移动版的开发密钥,该密钥与您的百度账户相关联。因此,您必须先有百度帐户,才能获得开发密钥。并且,该密钥与您创建的过程名称有关,具体流程请参考如下介绍。
Key的申请地址为:http://lbsyun.baidu.com/apiconsole/key
申请的步骤:
(1)首先注册百度账号进入百度登录页面,输入账号登录
(2)进入百度页面后 点击右上角的API控制台
点击创建应用
应用类型选择 Android SDK ,然后填写数字签名和报名 即可。数字签名从哪里找到
安全码的组成规则为:Android签名证书的sha1值+packagename例如:
SHA1:BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75
包名:com.baidumap.demo
Android应用获取包名packagename,根据开发工具不同,获取位置有所不同
1、使用 eclipse 开发
包名是Android应用程序本身在AndroidManifest.xml 中定义的名称,例如:
2、使用 Android studio 开发
包名需要在文件build.gradle中查询 applictionId,例如:
Android签名证书的sha1值获取方式有两种:
第一种方法:使用keytool
第1步:运行进入控制台
第2步:定位到.android文件夹下,输入cd .android
第3步:输入keytool -list -v -keystore debug.keystore,会得到三种指纹证书,选取SHA1类型的证书(密钥口令是android),例如:
其中keytool为jdk自带工具;keystorefile为Android 签名证书文件
第二种方法:在eclipse中,在adt 22中直接查看
如果使用adt 22,可以在eclipse中直接查看:windows -> preferance -> android -> build。 如下图示:
其中“SHA1 fingerprint”值即为Android签名证书的sha1值
在输入安全码后,点击“确定”完成应用的配置工作,您将会得到一个创建的Key,请妥善保管您所申请的Key。到这您就可以使用新Key来完成您的开发工作了。
3.创建Android工程、导入百度地图开发包;
4.在AndroidManifest.xml中添加各种权限;
代码如下:
[html] view
plain copy
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.baidumap.basemap"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="8" />
<supports-screens android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:resizeable="true"
android:anyDensity="true"/>
<!-- 添加屏幕支持 -->
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.baidumap.basemap.MainActivity"
android:label="@string/app_name"
android:screenOrientation="sensor"
android:configChanges="orientation|keyboardHidden">
<!-- 注意添加转屏的相关设置 -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<!--使用网络功能所需权限 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!-- SDK离线地图和cache功能需要读写外部存储器 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 获取设置信息和详情页直接拨打电话需要以下权限 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
</manifest>
5:在布局文件中添加百度地图控件(mapview);
代码如下:
[html] view
plain copy
<RelativeLayout 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"
tools:context=".MainActivity" >
<!-- 放入百度地图的mapview -->
<com.baidu.mapapi.map.MapView android:id="@+id/bmapsView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"/>
</RelativeLayout>
6.在主类中定义mapview对象和地图管理对象,在oncreate方法里需要首先初始化地图管理对象,然后初始化mapview对象,并且设置mapview的相应状态;
代码如下:
[java] view
plain copy
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapView;
import com.baidu.platform.comapi.basestruct.GeoPoint;
import android.os.Bundle;
import android.app.Activity;
public class MainActivity extends Activity {
BMapManager bMapManager = null; // 定义管理sdk的对象
MapView mapView = null; // 定义mapview对象
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 初始化管理对象,注意要在setContentView(R.layout.activity_main)之前初始化,否则会报错
bMapManager = new BMapManager(getApplication());
bMapManager.init("输入您申请的key", null);
setContentView(R.layout.activity_main);
// 初始化mapview对象,并且设置显示缩放控件
mapView = (MapView) findViewById(R.id.bmapsView);
mapView.setBuiltInZoomControls(true);
// 定义地图控件,获取mapview的控制,并把地图范围定位北京市
MapController mapController = mapView.getController();
GeoPoint point =new GeoPoint((int)(39.915* 1E6),(int)(116.404* 1E6));
mapController.setCenter(point);
mapController.setZoom(12);
}
//注意在onResume、onDestroy和onPause中控制mapview和地图管理对象的状态
@Override
protected void onResume() {
// TODO Auto-generated method stub
mapView.onResume();
if(bMapManager!=null){
bMapManager.start();
}
super.onResume();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
mapView.destroy();
if(bMapManager!=null){
bMapManager.destroy();
bMapManager=null;
}
super.onDestroy();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
mapView.onPause();
if(bMapManager!=null){
bMapManager.stop();
}
super.onPause();
}
}
运行程序即可调启百度地图服务,展示您所需的地图即可。
http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download
2. 申请密钥
在使用百度地图SDK为您提供的各种LBS能力之前,您需要获取百度地图移动版的开发密钥,该密钥与您的百度账户相关联。因此,您必须先有百度帐户,才能获得开发密钥。并且,该密钥与您创建的过程名称有关,具体流程请参考如下介绍。
Key的申请地址为:http://lbsyun.baidu.com/apiconsole/key
申请的步骤:
(1)首先注册百度账号进入百度登录页面,输入账号登录
(2)进入百度页面后 点击右上角的API控制台
点击创建应用
应用类型选择 Android SDK ,然后填写数字签名和报名 即可。数字签名从哪里找到
获取安全码
安全码的组成规则为:Android签名证书的sha1值+packagename例如:SHA1:BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75
包名:com.baidumap.demo
Android应用获取包名packagename,根据开发工具不同,获取位置有所不同
1、使用 eclipse 开发
包名是Android应用程序本身在AndroidManifest.xml 中定义的名称,例如:
2、使用 Android studio 开发
包名需要在文件build.gradle中查询 applictionId,例如:
Android签名证书的sha1值获取方式有两种:
第一种方法:使用keytool
第1步:运行进入控制台
第2步:定位到.android文件夹下,输入cd .android
第3步:输入keytool -list -v -keystore debug.keystore,会得到三种指纹证书,选取SHA1类型的证书(密钥口令是android),例如:
其中keytool为jdk自带工具;keystorefile为Android 签名证书文件
第二种方法:在eclipse中,在adt 22中直接查看
如果使用adt 22,可以在eclipse中直接查看:windows -> preferance -> android -> build。 如下图示:
其中“SHA1 fingerprint”值即为Android签名证书的sha1值
成功创建KEY
在输入安全码后,点击“确定”完成应用的配置工作,您将会得到一个创建的Key,请妥善保管您所申请的Key。到这您就可以使用新Key来完成您的开发工作了。3.创建Android工程、导入百度地图开发包;
4.在AndroidManifest.xml中添加各种权限;
代码如下:
[html] view
plain copy
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.baidumap.basemap"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="8" />
<supports-screens android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:resizeable="true"
android:anyDensity="true"/>
<!-- 添加屏幕支持 -->
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.baidumap.basemap.MainActivity"
android:label="@string/app_name"
android:screenOrientation="sensor"
android:configChanges="orientation|keyboardHidden">
<!-- 注意添加转屏的相关设置 -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<!--使用网络功能所需权限 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!-- SDK离线地图和cache功能需要读写外部存储器 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 获取设置信息和详情页直接拨打电话需要以下权限 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
</manifest>
5:在布局文件中添加百度地图控件(mapview);
代码如下:
[html] view
plain copy
<RelativeLayout 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"
tools:context=".MainActivity" >
<!-- 放入百度地图的mapview -->
<com.baidu.mapapi.map.MapView android:id="@+id/bmapsView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"/>
</RelativeLayout>
6.在主类中定义mapview对象和地图管理对象,在oncreate方法里需要首先初始化地图管理对象,然后初始化mapview对象,并且设置mapview的相应状态;
代码如下:
[java] view
plain copy
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapView;
import com.baidu.platform.comapi.basestruct.GeoPoint;
import android.os.Bundle;
import android.app.Activity;
public class MainActivity extends Activity {
BMapManager bMapManager = null; // 定义管理sdk的对象
MapView mapView = null; // 定义mapview对象
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 初始化管理对象,注意要在setContentView(R.layout.activity_main)之前初始化,否则会报错
bMapManager = new BMapManager(getApplication());
bMapManager.init("输入您申请的key", null);
setContentView(R.layout.activity_main);
// 初始化mapview对象,并且设置显示缩放控件
mapView = (MapView) findViewById(R.id.bmapsView);
mapView.setBuiltInZoomControls(true);
// 定义地图控件,获取mapview的控制,并把地图范围定位北京市
MapController mapController = mapView.getController();
GeoPoint point =new GeoPoint((int)(39.915* 1E6),(int)(116.404* 1E6));
mapController.setCenter(point);
mapController.setZoom(12);
}
//注意在onResume、onDestroy和onPause中控制mapview和地图管理对象的状态
@Override
protected void onResume() {
// TODO Auto-generated method stub
mapView.onResume();
if(bMapManager!=null){
bMapManager.start();
}
super.onResume();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
mapView.destroy();
if(bMapManager!=null){
bMapManager.destroy();
bMapManager=null;
}
super.onDestroy();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
mapView.onPause();
if(bMapManager!=null){
bMapManager.stop();
}
super.onPause();
}
}
运行程序即可调启百度地图服务,展示您所需的地图即可。
相关文章推荐
- Android开发:客户端与服务器通过传递和接收json数据进行交互
- Android分包MultiDex原理详解
- Android 属性动画跟插值器估值器
- Android Studio 连接自己的git服务器
- Android View动画的特殊使用场景
- Android 之 Animation
- 查看Android应用包名package和入口activity名称
- vlc for android 主题属性分析
- Android开发之Intent.Action
- Android的WakeLock机制
- android onInterceptTouchEvent()和onTouchEvent()的总结
- ubuntu android-studio快捷启动方式
- Android Studio 连接自己搭建的服务器 需要admin 的帐号的问题 SSH Password Login,please enter password for user git@git.
- 解决Android Dialog 和软键盘共存
- Android 编码规范
- android 控件 fragment 在程序报错,或者清楚缓存的时候 嵌套混乱
- Android小项目:计算器
- Android Studio NDK开发 正确调用jni 及加入第三方so库需要注意的问题
- android实现水波纹效果
- Android Studio配置问题,以及百度API问题汇总