先实现LocationListener接口 会重写四个方法
    @Overridepublic void onLocationChanged(@NonNull Location location) {}@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {}@Overridepublic void onProviderEnabled(@NonNull String provider) {}@Overridepublic void onProviderDisabled(@NonNull String provider) {}

写一个判断是否打开定位的方法,如果没有开启定位 则跳转到定位页面手动开定位

    private void checkIsOpen() {locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);boolean isOpen = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);if (!isOpen) {Intent intent = new Intent();intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS);startActivityForResult(intent, 0);}startLocation();}

然后开始GPS定位,第一个参数填“gps“,后面两个参数是每次更新的时长和定位距离的误差

记得开权限,

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

如果用的Android Studio 会提示你添加权限,点了就会自动添加,然后它还会再提示你一个检查的东西,还是点击添加即可。

  private void startLocation() {locationManager.requestLocationUpdates("gps", 2000, 10, this);}

然后开始在onLocationChanged方法里写获取定位的经纬度,城市信息。

  public void onLocationChanged(@NonNull Location location) {lat = location.getLatitude();lng = location.getLongitude();List<Address> list = null;Geocoder gd = new Geocoder(getActivity());try {list= gd.getFromLocation(lat, lng, 2);} catch (IOException e) {e.printStackTrace();}if (list != null && list.size() > 0) {for (int i = 0; i < list.size(); i++) {Address address = list.get(i);cityHome = address.getLocality();}top_city.setText(cityHome);putSp();}}

最后可以写一个SharedPreferences保存位置信息,下次登录时候直接获取上次保存的定位信息就不用再开定位了,这里可以加一个判断,如果获取信息失败则开启定位重新定位。

   private void putSp() {editor = getActivity().getSharedPreferences("dp", Context.MODE_PRIVATE).edit();editor.putString("cityHome", cityHome);editor.apply();}private String getSp() {return  getActivity().getSharedPreferences("dp", Context.MODE_PRIVATE).getString("cityHome", "获取失败");}

初始化开始,如果没有上次定位信息,则开始执行开启定位和判断更新位置信息。

   @Overridepublic void onStart() {super.onStart();if (getSp().equals("获取失败")) {checkIsOpen();}}

android之城市定位相关推荐

  1. Android 高德地图对于城市定位做地理编码+逆地理编码处理

    之前有需求需要对城市定位做处理 这里简单的写了一个方法,可以直观的把地址转换为坐标,并且实现城市的定位,方法里面直接传入城市名 --------- 直接上码 //切换城市private void ge ...

  2. Android 高德地图定位和导航

    1. 在高德开放平台注册帐号 2.在高德地图开发平台中下载Android平台下载地图SDK和定位SDK和导航SDK文件 3. 添加jar包,将jar包放入工程的libs目录下. (下载的三合一的SDK ...

  3. Android端地图,百度地图学习(II)-Android端的定位

    哎,经历了小编的最近时间的研究,我的百度定位终于成功啦,刹那间觉得自己萌萌哒啦(- ̄▽ ̄)- 话不多说,直接进入正题: 首先,我们来看一下效果: [分析定位原理] [编码分析] 2)增加布局信息:此处 ...

  4. android 高德地图定位获取经纬度

    android 高德地图定位获取经纬度 之前开发定位都是集成百度的,领导说要用高德的,没办法干吧,官方的文档太详细了看着真累. 我们得先去官网注册开发者账号,创建应用,填写自己项目的包名和SHA1, ...

  5. Android集成百度定位以及导航详解

    Android集成百度定位以及导航详解                    百度地图Android SDK 官方下载地址:                            包括类参考.示例代码 ...

  6. Android百度地图定位APP,显示出当前位置坐标

    Android百度地图定位APP,显示出当前位置坐标 官网配置百度地图 通过CMD命令获取SHA1 在百度的官网里面创建一个应用 Android配置 显示地图即定位 配置 AndroidManifes ...

  7. XamarinSQLite教程在Xamarin.Android项目中定位数据库文件

    XamarinSQLite教程在Xamarin.Android项目中定位数据库文件 实际开发中,经常需要验证数据库操作的正确性.这个时候,需要打开数据库文件,进行确认.下面是如何找到MyDocumen ...

  8. Android开发--用户定位服务--UserLocation

    用户定位介绍: User Location的作用: 1.获取用户的位置 2.追踪用户的移动 User Location的关键API 1.Location Manager:用于管理Android的用户定 ...

  9. 自动化无法定位的原因_Appium Android 自动化测试 -- 元素定位

    自动化测试元素定位是难点之一,编写脚本时会经常卡在元素定位这里,有时一个元素能捣鼓一天,到最后还是定位不到. Appium 定位方式和 selenium 一脉相承,selenium 中的定位方式App ...

最新文章

  1. linux修改mysql配置文件_忘记MySQL密码怎么办?一招教你搞定!
  2. Github标星2w+,热榜第一,如何用Python实现所有算法
  3. 计算机论文指导书,计算机毕业论文指导书.doc
  4. 今天学习啦所谓的高级语言啦
  5. oracle32位客户端安装教程,Win7系统32位Oracle11g客户端安装详述
  6. Facebook 开源代码分析工具 —— Mariana Trench
  7. 2016北理复试机试题
  8. qq批量提取群成员_学会这个QQ营销技巧,助你一天引流200+
  9. python科赫雪花小包裹_034 实例8-科赫雪花小包裹-Go语言中文社区
  10. html5 undefined,JS中typeof() !== undefined'是什么意思
  11. 动作电位的产生和动作电位的长距离高速传导
  12. 漂亮的HTML网站赞助打赏单页源码
  13. vue关于时间顺序排序
  14. 【python】之字符串格式化
  15. 【笑话】程序员的幽默,你可能看不懂 。。。
  16. Java数据类型+练习
  17. linux-tomcat日志清理方案
  18. .net使用pdfobject.js加载pdf文件
  19. 【OLED】OLED屏幕的基础知识
  20. 8月第4周国内新闻类网站/频道:QQ新闻居首

热门文章

  1. 头像裁剪【微信小程序、uni-app】
  2. Prompt工程师指南[高阶篇]:对抗性Prompting、主动prompt、ReAct、GraphPrompts、Multimodal CoT Prompting等
  3. G. Snake Rana 容斥原理
  4. JAVA实现PHP方法sha1(““,true)
  5. 我们需要为世界改变多少——程序员职业规划群群规
  6. Flex是咋回事之一 集CS和BS之大成的RIA
  7. 正则表达式:一张图入门级了解正则表达式
  8. 牛客练习赛59 4743 c 装备合成
  9. 更高效地在Photoshop中工作
  10. 华为服务器如何设置网站dns,服务器dns设置