Android中LocationManager的简单使用02

LocationManager调用requestLocationUpdates 某些手机上打包APK无法运行,导致崩溃的问题 如下代码在某些机器上运行时,会直接导致应用崩溃退出 LocationManager locMgr = (LocationManager)getSystemService(Context.LOCATION_SERVICE); Location location = locMgr.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); u 阅读详情

//获得当前位置的坐标

  LocationManager locationManager = (LocationManager)

  getSystemService(LOCATION_SERVICE);//获取LocationManager的一个实例

  locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,

  10000, 0, locationListener);

  /*注册一个周期性的位置更新 每隔1000ms更新一次,并且不考虑位置的变化。

  最后一个参数是LocationListener的一个引用*/

  Location location = locationManager.getLastKnownLocation

  (LocationManager.GPS_PROVIDER);

  String latitude = Double.toString(location.getLatitude());//经度

  String longitude = Double.toString(location.getLongitude());//纬度

  String altitude = Double.toString(location.getAltitude());//海拔

  //输出文字

  TextView tv = (TextView) this.findViewById(R.id.local);

  tv.setText("latitude:"+latitude+" longitude:"+longitude

  +" altitude:"+altitude+" ");

  实现LocationListener的引用

  private final LocationListener locationListener = new LocationListener() {

  public void onLocationChanged(Location location) {

  //当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发

  if (location != null) {

  String latitude = Double.toString(location.getLatitude());//经度

  String longitude = Double.toString(location.getLongitude());//纬度

  String altitude = Double.toString(location.getAltitude());//海拔

  //输出文字

  TextView tv = (TextView) findViewById(R.id.local);

  tv.setText("latitude:"+latitude+" longitude:"

  +longitude+" altitude:"+altitude+" ");

  }

  }

  public void onProviderDisabled(String provider) {

第1页 第2页 

  Android的强大表现在各个方面,在这里介绍一下其中的一个自动获取所在地理位置坐标的功能。Android中通过LocationManager来获取地理位置等相关信息的。

  首先,需要获取LocationManager实例。

  //获得当前位置的坐标

  LocationManager locationManager = (LocationManager)

  getSystemService(LOCATION_SERVICE);//获取LocationManager的一个实例

  locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,

  10000, 0, locationListener);

  /*注册一个周期性的位置更新 每隔1000ms更新一次,并且不考虑位置的变化。

  最后一个参数是LocationListener的一个引用*/

  Location location = locationManager.getLastKnownLocation

  (LocationManager.GPS_PROVIDER);

  String latitude = Double.toString(location.getLatitude());//经度

  String longitude = Double.toString(location.getLongitude());//纬度

  String altitude = Double.toString(location.getAltitude());//海拔

  //输出文字

  TextView tv = (TextView) this.findViewById(R.id.local);

  tv.setText("latitude:"+latitude+" longitude:"+longitude

  +" altitude:"+altitude+" ");

  实现LocationListener的引用

  private final LocationListener locationListener = new LocationListener() {

  public void onLocationChanged(Location location) {

  //当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发

  if (location != null) {

  String latitude = Double.toString(location.getLatitude());//经度

  String longitude = Double.toString(location.getLongitude());//纬度

  String altitude = Double.toString(location.getAltitude());//海拔

  //输出文字

  TextView tv = (TextView) findViewById(R.id.local);

  tv.setText("latitude:"+latitude+" longitude:"

  +longitude+" altitude:"+altitude+" ");

  }

  }

  public void onProviderDisabled(String provider) {

// Provider被disable时触发此函数,比如GPS被关闭

  }

  public void onProviderEnabled(String provider) {

  // Provider被enable时触发此函数,比如GPS被打开

  }

  public void onStatusChanged(String provider, int status, Bundle extras) {

  // Provider的转态在可用、暂时不可用和无服务三个状态直接切换时触发此函数

  }

  };

  最后我们在AndroidManifest.xml中加入GPS权限

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

  如果是在模拟器中调试,可以打开”Window” ?>”Show View” 中打开”Emulator Control” View即可手动设置,或通过KML和GPX文件来设置一个坐标。

  或者使用geo命令,开始?> 运行?>输入 telnet 5554,然后在命令行下输入 geo fix -39.4 116.9 326 ,这三个参数分别代表了经度、纬度和海拔(海拔可不写)

  这样我们就可以获取所在位置的坐标了


使用Android 原生LocationManager获取经纬度 可以看成是正常的GPS位置,在google earth上全部坐标,谷歌地图上除中国以外的坐标均为这个标准,但是谷歌地图的中国坐标使用的是GCJ-02标准,博主这里就遇到同一个地方,小米可以通过gps获取到数据,但一加的两个手机,都无法通过gps获取到经纬度,故只能先从网络获取经纬度。GPS获得的经纬度所用的坐标系和谷歌地图、百度地图上的坐标系是不同的,GPS硬件获得的经纬度是WGS-84标准,国际通用,这些都是硬件获取经纬度在地图上指示不对的原因,网上有免费做转换的网站,一些厂商可能会阉割掉谷歌服务。 阅读详情

相关推荐

安卓定位及坐标转换

安卓定位及坐标转换

心现识变妙莲华 8470

Android定位

一.定位 1.借助LocationManager类 [java] view plain copy 2.选择位置提供器来确定当前位置 [java] view plain copy "code" class="java">String provider=LocationMa

xiaomajia12的博客 777

【Android】利用LocationManager实现高精度考勤打卡:从权限申请到坐标转换全解析

本文详细解析了在Android应用中利用原生LocationManager实现高精度考勤打卡的全过程。从权限申请、界面搭建到核心定位逻辑,重点阐述了坐标转换的必要性,提供了WGS84转BD09等关键代码,并分享了性能优化与避坑指南,帮助开发者构建轻量、可控的打卡功能。

ggg99的专栏 434

Android 获取手机定位

Android 获取手机定位

weixin_47583974的博客 531

【Android】利用LocationManager实现高精度考勤打卡系统

本文详细介绍了如何利用Android原生LocationManager构建高精度考勤打卡系统。通过解析GPS与网络定位原理,重点解决了不同坐标系(如WGS-84、GCJ-02、BD-09)的转换问题,确保定位精度。文章提供了从权限申请、坐标转换到距离计算的完整代码实践,并分享了定位漂移处理、性能优化等进阶技巧,为开发轻量、可控且无需第三方依赖的打卡功能提供了可靠方案。

weixin_29227585的博客 528

避开定位踩坑指南:Android三种坐标系转换实战(WGS84/GCJ02/BD09)

本文深入解析Android定位开发中WGS84、GCJ02、BD09三种坐标系差异导致的定位偏差问题,并提供实战解决方案。通过详解坐标系转换算法、LocationManager使用及Haversine距离计算,帮助开发者构建精准的定位打卡功能,有效避免因坐标不统一引发的业务逻辑错误。

wdx01234567的博客 589

Android——定位和地图

<br />Android——定位和地图作者:茫茫深海一条鱼  来源:博客园  发布时间:2010-10-25 23:37  阅读:247 次  原文链接   [收藏]  Location and MapsQuickview你的应用程序可以利用Android提供的定位框架(location framework)来确定设备的位置和方向,并且能够进行更新。可以利用Google Maps外部类库来显示和管理地图数据<br /> 开发基于地理位置的服务可以使用 android.location类和Google Ma

xiaoqiangvs007的专栏 2793

Android定位打卡实战:如何用LocationManager实现200米内精准考勤(附坐标转换避坑指南)

本文详细解析了Android定位打卡系统的开发实践,重点介绍了如何利用LocationManager实现200米内精准考勤,包括GPS信号处理、坐标系转换(WGS84/GCJ02/BD09)及距离计算等关键技术,并提供了完整的代码示例和避坑指南。

weixin_26846533的博客 205

【Android】利用LocationManager实现高精度考勤范围判定

本文详细介绍了如何利用Android原生LocationManager API,实现一套轻量、可控且无需第三方依赖的高精度考勤范围判定方案。文章深入解析了定位原理,重点解决了GPS坐标漂移问题,并提供了完整的坐标转换(WGS84转BD-09)与距离计算算法,帮助开发者构建稳定、省电的企业级定位打卡应用。

a1b2c的博客 453

安卓GPS定位模拟实战:百度地图骑行轨迹动态演示

本文详细介绍了在安卓设备上实现GPS定位模拟的完整实战流程,重点演示了如何通过代码让模拟定位点像真人骑行一样在百度地图上动态移动。文章涵盖了从环境配置、获取骑行路线坐标、核心代码实现,到解决坐标系转换等关键难题,为开发测试和产品演示提供了高效解决方案。

rice5的博客 776

Android定位实战:如何用LocationManager解决室内GPS失效问题(附完整代码)

本文针对Android应用在室内GPS信号失效的常见痛点,提供了一套基于LocationManager的高可用混合定位实战解决方案。通过并行监听GPS与网络定位提供者,并实现智能择优与动态切换的核心逻辑,确保在复杂环境下仍能获取可用位置。文章详细解析了权限处理、兼容性适配及完整Kotlin代码实现,帮助开发者构建健壮的室内外定位功能。

weixin_29266647的博客 505

位置模拟与隐私保护:FakeLocation安卓定位修改全方案

在数字时代,地理位置信息正成为个人隐私的重要组成部分。安卓应用频繁索取位置权限的背后,隐藏着用户真实行踪被追踪的风险。FakeLocation作为一款基于Xposed框架的专业位置模拟工具,通过单应用级别的精准定位控制,为用户提供从根本上解决位置隐私泄露问题的安卓定位修改方案。本文将系统解析这款工具的核心价值、场景化应用策略及技术实现原理,帮助用户构建全方位的位置信息防护体系。 ## 核心价值解

gitblog_00288的博客 920

告别第三方SDK!用Android原生LocationManager实现高德/百度地图级定位(含完整距离计算代码)

本文详细介绍了如何利用Android原生LocationManager实现高精度定位系统,替代第三方SDK如高德/百度地图。通过多源数据融合策略、坐标系转换算法和距离计算优化,开发者可以构建高效的企业级考勤打卡系统,同时确保更好的隐私控制和包体积优化。

weixin_42665725的博客 229

避开定位踩坑:Android原生LocationManager的5个常见问题与优化技巧

本文深入探讨Android原生LocationManager在定位开发中的5个常见问题与优化技巧,包括权限管理、定位策略选择、坐标系转换、后台定位优化和设备兼容性处理。通过实战案例和代码示例,帮助开发者避开定位踩坑,提升应用定位功能的精准度和能效比,特别适用于需要GPS和网络定位的移动应用场景。

rgv234567的博客 202

安卓开发实战:用百度地图API实现GPS轨迹模拟骑行(附完整源码)

本文详细介绍了在安卓开发中,如何利用百度地图API实现GPS轨迹模拟骑行的完整方案。通过获取真实路径坐标、进行坐标系转换,并利用LocationManager的模拟机制,构建了一个平滑逼真的位置模拟引擎。文章提供了核心代码逻辑、与百度地图SDK的集成方法以及实战优化技巧,并附有完整源码,旨在帮助开发者高效测试和演示基于位置服务的应用功能。

weixin_29009401的博客 573

安卓开发实战:利用GPS定位模拟实现百度地图骑行轨迹动态展示

本文详细介绍了在安卓开发中利用GPS定位模拟技术实现百度地图骑行轨迹动态展示的实战方法。通过搭建开发环境、设置模拟定位提供者、获取骑行路线坐标数据以及解决坐标偏差问题,开发者可以高效地模拟用户骑行轨迹,适用于智能硬件开发、运动类App演示等场景。

weixin_27134495的博客 365

Android定位及bd09,gcj02,wgs84坐标转换,适用百度、高德地图

定位 需要添加位置权限,这里有两个: android.permission.ACCESS_COARSE_LOCATION – 允许 API 利用 WiFi 或移动蜂窝数据(或同时利用两者)来确定设备位置。API 返回的位置精确度大约相当于城市街区。 android.permiss...

chudang9293的博客 3683

Android混合定位实战:LocationManager结合GPS与网络定位的优化策略

本文深入探讨了Android混合定位的实战优化策略,通过结合GPS与网络定位,解决单一定位方式不准的问题。文章详细解析了如何使用LocationManager实现智能定位,包括权限申请、核心代码逻辑、位置择优算法以及生命周期管理,并提供了应对厂商兼容性、坐标系转换等常见问题的躲坑指南,旨在帮助开发者构建更稳定、精准且省电的定位功能。

weixin_29201859的博客 269
上一篇: Android火星地图纠偏问题
下一篇: android DialogFragment简单应用
geekcoder
博客等级 码龄14年 78粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值