一、申请密钥
主要难点是在获得发布版SHA1和开发版SHA1,期中发布版SHA1是必填的,新手可能不太了解,如果你没有使用Android Studio打包过签名文件,那么可以将C盘android的配置目录下的debug.keystore文件移动到工作空间的module项目下,如图所示:
然后在Android Studio下Alt+F12打开终端,cmd命令(cd 文件名)例如:(cd app)进入到app目录,也就是刚刚复制的debug.keystore目录下使用命令(keytool -list -keystore 文件名)例如(keytool -list -keystore debug.keystore),然后输入密码,默认为android。此时就会显示你应用的sha1值,如图所示:
有可能会提示没有keytool命令,就要先进行环境变量配置了。
此时的sha1应该为开发版sha1,但由于项目还没有正式发布,没有打包正式的签名文件,因此可以先暂时填入发布版sha1,此时就可以获得密钥了。如果打包签名后也把.jks文件复制至app目录下进行相同的操作,此时就可以获得发布版sha1了。android studio中的配置如图:
二、配置Android Studio环境
从相关下载中下载定位中所需要用到的开发包,如图所示
然后把开发包里文件夹内容(.so文件)全复制到项目下jniLibs文件夹文件中,.jar文件复制至libs文件夹下。并右键add as library.
还有详细内容可以
http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/buildprojec
三。代码编写
详细步骤
接下来附上我的完整代码:
public class App extends LitePalApplication{
//百度地图
public LocationClient mLocationClient = null;
public BDLocationListener myListener = new MyLocationListener();
public String city;
@Override
public void onCreate() {
super.onCreate();
//百度地图获得位置
mLocationClient = new LocationClient(getApplicationContext()); //声明LocationClient类
mLocationClient.registerLocationListener( myListener ); //注册监听函数
initLocation();
mLocationClient.start();
}
//初始化位置
private void initLocation() {
LocationClientOption option = new LocationClientOption();
//就是这个方法设置为true,才能获取当前的位置信息
option.setIsNeedAddress(true);
option.setOpenGps(true);
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy
);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
option.setCoorType("gcj02");//可选,默认gcj02,设置返回的定位结果坐标系
//int span = 1000;
//option.setScanSpan(span);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
mLocationClient.setLocOption(option);
}
//监听获得位置
private class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
//Receive Location
//经纬度
double lati = location.getLatitude();
double longa = location.getLongitude();
//打印出当前位置
Log.i("TAG", "location.getAddrStr()=" + location.getAddrStr());
//打印出当前城市
Log.i("TAG", "location.getCity()=" + location.getCity());
//返回码
int i = location.getLocType();
Log.i("TAG","location.getLocType()=" + i);
city=location.getCity();
}
}
public String getCity(){
return city;
}
}
我重写了Application类,并在该类中获得了城市,接下来想在任何activity类中只要通过:
String city = ((App)getApplication()).getCity();
测试一定要在真机上才能获得地理位置。