转载请注明出处:http://blog.csdn.net/u010214991/article/details/48491857
一、创建应用
要使用百度地图的一些功能,比如定位功能的实现,就必须首先注册一个百度开发者帐号,然后到http://lbsyun.baidu.com/apiconsole/key创建应用,申请开发中在你的程序的AndroidManifest配置文件所需要填写的key;创建应用时首先填写好应用名称和应用类型,填写过程中最值得注意的就是安全码了,事实上在该填写项下面已经标明安全码的填写格式,那就是:数字签名+;+包名。注意这里的分号是英文的分号,数字签名是你的eclispe中所用签名证书的SHA1值,注意不要填写成MD5值了,包名就是你项目中的包名,注意你在这里填写的包名必须与你项目中的包名一致,可在AndroidManifest查看package。以下是获取SHA1值的图示:
打开eclipse的preferences菜单,在Android下的【Build】中可以看到SHA1的值,如下图:
二、导入用于定位的jar包
我下载的是locSDK_6.11.jar,你到百度开发者官网下载,下载后解压将jar连同里面装.so的文件的文件夹一起导入到你工程的libs文件中。
用于定位的SDK的下载地址http://developer.baidu.com/map/index.php?title=android-locsdk/geosdk-android-download
三、配置AndroidManifest.xml文件
1、添加以下权限
<!-- 百度API所需权限 -->
<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.WAKE_LOCK" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
2、在AndroidManifest的Application标签内添加以下代码
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="填你在百度开发平台创建的应用AK" />
下面我的整个配置文件的内容,其实就是按照上面添加东西而已,可以跳过不看。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.map"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<!-- 百度API所需权限 -->
<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.WAKE_LOCK" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.map.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="l0EZ3U9L4qG38WIPNOdrUvtx" />
</application>
</manifest>
四、MainActivity.java
<pre name="code" class="java">import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.location.LocationClientOption.LocationMode;
import com.example.dingwei.R;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView textView;
private LocationClient locationClient = null;// 定位SDK的核心类
private String tempcoor = "gcj02";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView1);
locationClient = new LocationClient(getApplicationContext());// 初始化定位对象
locationClient.registerLocationListener(bdLocationListener);// 注册定位监听器
// 定位前的准备工作
initLocation();
locationClient.start();// 开始定位
locationClient.requestLocation();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (locationClient != null) {
locationClient.unRegisterLocationListener(bdLocationListener);
locationClient = null;
}
}
public void initLocation() {
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationMode.Hight_Accuracy);// 高精度定位模式
option.setCoorType(tempcoor);// 国测局加密经纬度坐标
option.setScanSpan(0);
option.setIsNeedAddress(true);
option.setOpenGps(true);
option.setLocationNotify(true);// 可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
option.setIgnoreKillProcess(true);
locationClient.setLocOption(option);
}
BDLocationListener bdLocationListener = new BDLocationListener() {
@Override
public void onReceiveLocation(BDLocation location) {
// TODO Auto-generated method stub
if (location == null) {
return;
}
textView.setText("radius:" + location.getRadius() + ";"
+ "latitute:" + location.getLatitude() + ";"
+ "longtitute:" + location.getLongitude() + ";"
+ "address:" + location.getAddrStr());
}
};
}
五、activity_main.xml
<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" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="无法获取当前位置,请重试" />
</RelativeLayout>
好了,到这里简单的定位功能讲解就结束了,咱们下期见。