首先进入平台,创建应用
创建完成以后,就会出现我们需要的key,现在就开始配置我们的项目
共两种方法
第一种:拷贝jar包
这就需要我们先在平台上下载jar包
然后将jar包放入项目里关联,
再添加
app的build的文件中
implementation fileTree(include: [’*.jar’], dir: ‘libs’)
第二种
在app的build的文件里
在android 里的defaultConfig里添加
ndk {
//设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86", "arm64-v8a", "x86_64"
}
添加依赖
//3D地图so及jar
implementation ‘com.amap.api:3dmap:latest.integration’
//定位功能
implementation ‘com.amap.api:location:latest.integration’
//搜索功能
implementation ‘com.amap.api:search:latest.integration’
在清单文件里添加权限
<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!--用于获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!--用于访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET" />
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--用于写入缓存数据到扩展存储卡-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--用于申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<!--用于申请获取蓝牙信息进行室内定位-->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
添加高德key
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="自己的appkey"></meta-data>
声明高德的服务
<service android:name="com.amap.api.location.APSService" />
用一个类去初始化,在里面自定义接口回传数据
public class MapLocationHelper implements AMapLocationListener {
/**
* 声明mlocationClient对象
*/
private AMapLocationClient mLocationClient;
/**
* 声明mLocationOption对象
*/
public AMapLocationClientOption mLocationOption = null;
private LocationCallBack mLocationCallBack;
private Context mContext;
public MapLocationHelper(Context context, LocationCallBack locationCallback) {
mContext = context;
mLocationCallBack = locationCallback;
initLocation();
}
/**
* 初始化定位参数
*/
private void initLocation() {
mLocationClient = new AMapLocationClient(mContext);
mLocationOption = new AMapLocationClientOption();
// 设置定位监听
mLocationClient.setLocationListener(this);
// 设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
// 设置定位间隔,单位毫秒,默认为2000ms
mLocationOption.setInterval(2000);
// 设置定位参数
mLocationClient.setLocationOption(mLocationOption);
}
/**
* 开启定位
*/
public void startMapLocation() {
//判断是否开启了,没有开启就开启
if (!mLocationClient.isStarted()) {
mLocationClient.startLocation();
}
}
/**
* 停止定位服务
*/
public void stopMapLocation() {
//判断服务是否开启了,若开启了则停止
if (mLocationClient.isStarted()) {
mLocationClient.stopLocation();
}
}
@Override
public void onLocationChanged(AMapLocation aMapLocation) {
if (aMapLocation != null) {
if (aMapLocation.getErrorCode() == 0) {
// 可在其中解析amapLocation获取相应内容。
//给接口设置数据
mLocationCallBack.onCallLocationSuc(aMapLocation);
stopMapLocation();
} else {
//定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。
Log.e("AmapError", "location Error, ErrCode:"
+ aMapLocation.getErrorCode() + ", errInfo:"
+ aMapLocation.getErrorInfo());
stopMapLocation();
}
} else {
stopMapLocation();
}
}
//自定义一个接口,传输数据
public interface LocationCallBack {
void onCallLocationSuc(AMapLocation location);
}
/**
* 设置接口回调
* @param locationCallBack
*/
public void setLocationCallBack(LocationCallBack locationCallBack){
mLocationCallBack = locationCallBack;
}
}
在Activity中 实现LocationCallBack接口 重写方法
创建实例,开启定位
MapLocationHelper helper = new MapLocationHelper(this, this);
helper.startMapLocation();
在重写的方法里,就可以获取信息,这就是里面所能获取到的所有信息