1、下载百度地图sdk,解压将对应so文件放进相应位置。导入相应jar包
2、
private LocationClient client;
private MyBDLocationListener mListener;
在onCreat()里调用initBaiDuLocation()方法
/**
* 百度定位初始化
*/
private void initBaiDuLocation() {
client = new LocationClient(mContext.getApplicationContext());
mListener = new MyBDLocationListener();
client.registerLocationListener(mListener);//注册监听
setLocationOption();//设置定位的参数
client.start();//开始定位
}
/**
* 设置相关参数
*/
private void setLocationOption() {
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationMode.Hight_Accuracy);// 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
option.setCoorType("bd09ll");// 可选,默认gcj02,设置返回的定位结果坐标系
int span = 1000;
option.setScanSpan(span);// 可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
option.setIsNeedAddress(true);// 可选,设置是否需要地址信息,默认不需要
option.setOpenGps(true);// 可选,默认false,设置是否使用gps
option.setLocationNotify(true);// 可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
option.setIgnoreKillProcess(false);// 可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
option.SetIgnoreCacheException(false);// 可选,默认false,设置是否收集CRASH信息,默认收集
client.setLocOption(option);
}
public class MyBDLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {//定位成功的回调函数
if(location.getLocType() == 161) { // 定位成功
client.stop();//停止定位
//具体位置:location.getAddrStr()
//经度:location.getLongitude()
//纬度:location.getLatitude()
else{
Log.e("fail:","无法获取您的位置,请稍后重试...");
client.stop();
}
}
}
声明server,在application标签中加入
<!-- 百度定位的定位service -->
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" >
</service>
配置appKey,value值填写自己申请到的appkey
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="Uor569Xc5VUc1SKUuRC3M4utsBNWwMuM" />
声明使用权限