首页 > 编程知识 正文

获取当前定位,androidstudio返回上一步

时间:2023-05-06 10:31:25 阅读:165522 作者:811

新的LocationUtils工具类import Android.annotation.suppress lint; import android.content.Context; import Android.content.pm.package manager; import android.location.Address; import Android.location.criteria; import Android.location.geocoder; import Android.location.location; import Android.location.location manager; import android.util.Log; import android.widget.Toast; import java.io.IOException; import java.text.DecimalFormat; import java.util.List; import java.util.Locale; publicclasslocationutils {权限管理器; saticlocationutilslocationutils; publicstaticlocationutilsgetinstance () if ) location utils==null (location utils=new location utils ); } return locationUtils; } publicstringgetlocations (上下文上下文) if (! isopenGPS(context ) ) toast.maketext ) context,'定位未打开,无法获取地理位置',Toast.LENGTH_SHORT ).show ); 返回' '; } String strLocation=' '; decimal format df=new decimal format (' # # # 0.0000 ); if (! checkpermission(context,permission.access _ coarse _ location ) toast.maketext ) context,'定位权限关闭,无法获取地理位置接受toassion } try { //系统服务的位置管理器=(location manager ) context.getsystemservice (context.location _ ) criteria对象Criteria criteria=new Criteria (创建; criteria.set accuracy (criteria.accuracy _ coarse ); //安装不需要获取高程方向数据criteria.setaltituderequired (false );安装需要获取criteria.setbearingrequired (false ); //在设置中允许发生费用Criteria.setcostallowed(true ); //要求低功耗的criteria.setpowerrequirement (criteria.power _ low ); string provider=location manager.getbestprovider (criteria,true ); log.e(locationtool,) locationprovideris,(provider ); @ suppress lint (missing permission ) location location=location manager.getlastknownlocation provider; //第一次设备的位置if(location!=null((/strlocation=df.format ) location.getlatitude )、' df.format ) location.getlongitude ); //strlocation=' ' getlocationaddress (context,location ); if(strlocation.equals ("")) { strLocation += "" + convertAddress(context, location.getLatitude(), location.getLongitude()); } } } catch (SecurityException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return strLocation; } public String convertAddress(Context context, double latitude, double longitude) { Geocoder mGeocoder = new Geocoder(context, Locale.getDefault()); StringBuilder mStringBuilder = new StringBuilder(); try { List<Address> mAddresses = mGeocoder.getFromLocation(latitude, longitude, 1); if (!mAddresses.isEmpty()) { Address address = mAddresses.get(0); mStringBuilder.append(address.getLocality()).append(address.getThoroughfare()); } } catch (IOException e) { e.printStackTrace(); } return mStringBuilder.toString(); } private boolean checkPermission(Context context, permission permName) { int perm = context.checkCallingOrSelfPermission("android.permission." + permName.toString()); return perm == PackageManager.PERMISSION_GRANTED; } private enum permission { ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION } private String getLocationAddress(Context mContext, Location location) { String addNow = ""; Geocoder geoCoder = new Geocoder(mContext, Locale.CHINESE); try { List<Address> addresses = geoCoder.getFromLocation( location.getLatitude(), location.getLongitude(), 1); Address address = addresses.get(0); Log.w("LocationTool", "远程获取定位全部为: " + address.toString()); if (address.getAddressLine(0) != null && !address.getAddressLine(0).equals("")) { addNow = address.getAddressLine(0); Log.w("LocationTool", "获取成功第一种: " + addNow); } else if (addNow.equals("") && address.getFeatureName() != null && !address.getFeatureName().equals("")) { addNow = address.getLocality() + address.getFeatureName(); Log.w("LocationTool", "获取成功第二种: " + addNow); } else { int maxLine = address.getMaxAddressLineIndex(); if (maxLine >= 2) { addNow = address.getAddressLine(1) + address.getAddressLine(2); } else { addNow = address.getAddressLine(1); } Log.w("LocationTool", "获取成功第三种: " + addNow); } } catch (IOException e) { addNow = ""; e.printStackTrace(); } if (addNow.contains("null")) { addNow = addNow.replaceAll("null", ""); } return addNow; } /** * 判断GPS是否开启,GPS或者AGPS开启一个就认为是开启的 * * @param context * @return true 表示开启 */ private boolean isOPenGPS(final Context context) { LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); // GPS定位 boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); // 网络服务定位 boolean network = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (gps || network) { return true; } return false; } } 调用方式: Log.i("LocationTool", "获取信息:" + LocationUtils.getInstance().getLocations(MainActivity.this));

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。