前言
在android开发中地图和定位是很多软件不可或缺的内容,这些特色功能也给人们带来了很多方便。定位一般分为三种发方案:即GPS定位、Google网络定位以及基站定位。
本文分别介绍GPS定位、以及基于Google的网络Wifi定位的详细步骤,(小米手机获取位置信息locationManager.getLastKnownLocation(provider)的Location一直为空,查了资料换了种获取手机getProviders的方式就可以了)
一、实现步骤
一般来说我们实现原生定位的流程大概是:先判断有无权限》有权限启动一个LocationSrevice去获取定位》最后携带所需的定位信息返回,进行开发。
二、使用步骤
1.服务启动工具类
代码如下(示例):大概步骤如下,权限请求可自定义开发关键的是LocationService
/**
* 获取定位
*/
public class MyLocationManager implements LocationService.LocationCallBack {
private Activity context;
private OnLocationListener onLocationListener;
private String[] stringsLocation = new String[]{
Permission.ACCESS_FINE_LOCATION, Permission.ACCESS_COARSE_LOCATION};
@Override
public void Location_Return(double Location_latitude, double Location_longitude, String province, String city, String area, String featureName) {
onLocationListener.OnLocation(Location_latitude, Location_longitude, province, city, area, featureName);
}
public interface OnLocationListener {
void OnLocation(double Location_latitude, double Location_longitude, String province, String city, String area, String featureName);
}
public void setOnLocationListener(OnLocationListener onLocationListener) {
this.onLocationListener = onLocationListener;
}
public MyLocationManager(@NonNull Activity context) {
this.context = context;
if (!XXPermissions.isGranted(context, stringsLocation)) {
MessageDialog codeDialog = new MessageDialog(context, "位置信息权限使用说明", "为确保你能在******内使用位置信息******,******需要获取你的位置信息权限。允许后,你可以随时通过手机系统设置对授权进行管理。", "取消", "去授权");
codeDialog.setCancelable(false);
codeDialog.show();
codeDialog.setOnSumbitTextCodeListener(() -> {
doMainPermission();
codeDialog.dismiss();
});
codeDialog.setOnCancelListener(() -> {
codeDialog.dismiss();
});
} else {
initData();
}
}
private void doMainPermission() {
XXPermissions.with