其实大多时候,我们需要的位置获取,不需要外接高德或者百度,直接通过手机自带的GPS也可以获取当前位置
目录
首先:添加定位,网络权限第一种:使用原生LocationProvider1.初始化,设置定位参数2.设置回调监听第二种:使用框架引用LocationUtils工具类1. [点击查看完整使用依赖](/qq_28643195/article/details/108084339)2.引用函数注:需要注意的是无论这两种那种方法,必须满足于当前设备是有GPS芯片的,不然返回信息为null首先:添加定位,网络权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><uses-permission android:name="android.permission.INTERNET"/>
第一种:使用原生LocationProvider
1.初始化,设置定位参数
private MyLocationListener myLocationListener;private String bestProvider;private fun initLocation() {//获取定位方式List<String> providers = locationManager.getProviders(true);for(String s:providers){Log.e(TAG,s);}Criteria criteria = new Criteria();// 查询精度:高,Criteria.ACCURACY_COARSE比较粗略,Criteria.ACCURACY_FINE则比较精确criteria.setAccuracy(Criteria.ACCURACY_FINE);// 是否查询海拨:否criteria.setAltitudeRequired(true);// 是否查询方位角 : 否criteria.setBearingRequired(false);// 设置是否要求速度criteria.setSpeedRequired(false);// 电量要求:低criteria.setPowerRequirement(Criteria.ACCURACY_LOW);bestProvider = locationManager.getBestProvider(criteria, false); //获取最佳定位myLocationListener = new MyLocationListener();}
2.设置回调监听
private class MyLocationListener implements LocationListener {@Overridepublic void onLocationChanged(Location location) {//定位时调用Log.e(TAG,"onLocationChanged");List<Address> addresses = new ArrayList<>();//经纬度转城市Geocoder geocoder = new Geocoder(context);try {addresses =geocoder.getFromLocation(location.getLatitude(),location.getLongitude(),10);} catch (IOException e) {e.printStackTrace();}for(Address address:addresses){//国家 CNLog.e(TAG,address.getCountryCode());//国家Log.e(TAG,address.getCountryName());//省,市,地址Log.e(TAG,address.getAdminArea());Log.e(TAG,address.getLocality());Log.e(TAG,address.getFeatureName());//经纬度Log.e(TAG, String.valueOf(address.getLatitude()));Log.e(TAG, String.valueOf(address.getLongitude()));//Log.e(TAG,address.getAddressLine());}}
第二种:使用框架引用LocationUtils工具类
1. 点击查看完整使用依赖
2.引用函数
isGpsEnabled: 判断Gps是否可用isLocationEnabled : 判断定位是否可用openGpsSettings : 打开Gps设置界面register: 注册unregister : 注销getAddress : 根据经纬度获取地理位置getCountryName : 根据经纬度获取所在国家getLocality : 根据经纬度获取所在地getStreet : 根据经纬度获取所在街道