Android开发——GPS定位
1.LocationManager
LocationManager系统服务是位置服务的核心组件,它提供了一系列方法来处理与位置相关的问题。
与LocationManager相关的两个知识点:
1.1 provider
LocationManager获取位置信息的途径,常用的有两种:GPS和NETWORK。GPS定位更精确,缺点是只能在户外使用,耗电严重,速度较慢NETWORK通过蜂窝网络或无线网络来获取位置信息,室内室外均可用,速度较快,耗电较少。
为了获取用户位置信息,我们可以使用其中一个,也可以同时使用两个。
1.2LocationListener
位置监听器接口,定义了常见的provider状态变化和位置的变化的方法,我们需要实现此接口,完成自己的处理逻辑,然后让LocationManager注册此监听器,完成对各种状态的监听。
2.LocationManager的使用
一般情况下,在Service里使用比较常用。
- public class GPSService extends Service {
- private LocationManager lm;
- private MyLocationListener listener;
- @Override
- public IBinder onBind(Intent intent) {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public void onCreate() {
- // TODO Auto-generated method stub
- super.onCreate();
- lm = (LocationManager) getSystemService(LOCATION_SERVICE);
- listener = new MyLocationListener();
- // 注册监听位置服务
- // 给位置提供者设置条件
- Criteria criteria = new Criteria();
- criteria.setAccuracy(Criteria.ACCURACY_FINE);
- String proveder = lm.getBestProvider(criteria, true);
- if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
- && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
- return;
- }
- lm.requestLocationUpdates(proveder, 0, 0, listener);
- //注册位置更新监听(最小时间间隔为5秒,最小距离间隔为5米)
- //lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5, listener);
- }
- @Override
- public void onDestroy() {
- super.onDestroy();
- // 取消监听位置服务
- if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
- && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
- return;
- }
- lm.removeUpdates(listener);
- listener = null;
- }
- class MyLocationListener implements LocationListener{
- /**
- * 当位置改变的时候回调
- */
- @Override
- public void onLocationChanged(Location location) {
- String longitude = "j:" + location.getLongitude() + "\n";
- String latitude = "w:" + location.getLatitude() + "\n";
- String accuracy = "a" + location.getAccuracy() + "\n";
- }
- /**
- * 当状态发生改变的时候回调 开启--关闭 ;关闭--开启
- */
- @Override
- public void onStatusChanged(String provider, int status, Bundle extras) {
- // TODO Auto-generated method stub
- }
- /**
- * 某一个位置提供者可以使用了
- */
- @Override
- public void onProviderEnabled(String provider) {
- // TODO Auto-generated method stub
- }
- /**
- * 某一个位置提供者不可以使用了
- */
- @Override
- public void onProviderDisabled(String provider) {
- // TODO Auto-generated method stub
- }
- }
- }
Android开发——GPS定位的更多相关文章
- [置顶]
xamarin android使用gps定位获取经纬度
看了文章你会得出以下几个结论 1.android定位主要有四种方式GPS,Network(wifi定位.基站定位),AGPS定位 2.绝大部分android国产手机使用network进行定位是没有作用 ...
- Android开发--用户定位服务--UserLocation
Android开发--用户定位服务--UserLocation 2013-01-28 08:32:26 我来说两句 作者:BruceZhang 收藏 我要投稿 [java] & ...
- Android中GPS定位的简单应用
在Android中通过GPS获得当前位置,首先要获得一个LocationManager实例,通过该实例的getLastKnownLocation()方法获得第一个的位置,该方法的说明如下: void ...
- android 获取GPS定位
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xm ...
- 【Android】GPS定位基本原理浅析
位置服务已经成为越来越热的一门技术,也将成为以后所有移动设备(智能手机.掌上电脑等)的标配.而定位导航技术中,目前精度最高.应用最广泛的,自然非GPS莫属了.网络上介绍GPS原理的专业资料很多,而本文 ...
- Xamarin +vs2015 Android 开发GPS loaction 返回 null 小结
最近公司要开发android 所以研究了一下Xamarin to android 中个GPS 废话不多说,说重点. 想获取手机上的gps信息必不可少的就是要使用 LocationManager Lo ...
- Arcgis API for Android之GPS定位
欢迎大家增加Arcgis API for Android的QQ交流群:337469080 先说说写这篇文章的原因吧,在群内讨论的过程中,有人提到了定位的问题,刚好,自己曾经在做相关工作的时候做过相关的 ...
- Arcgis For Android之GPS定位实现
翻开曾经做的东西,看了看,非常多从逻辑上比較乱,对之做了改动,完毕后实现的效果为: MapActivity源码例如以下: package com.lzugis.map; import java.io. ...
- Android之GPS定位详解
一.LocationManager LocationMangager,位置管理器.要想操作定位相关设备,必须先定义个LocationManager.我们可以通过如下代码创建LocationManger ...
随机推荐
- SpringBoot | 问题 | 注解方式下无法发现Bean
在排除注解的问题后,考虑扫描类的位置, [SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描! “Application类”是指SpringBoot项 ...
- byte的范围-128-127
01111111 表示的是最大的数字 是127这个没有问题 ,前面的0 表示的正数,1表示的负数 而负数在计算机中的存储都是通过补码的形式存在的,也就是说 1 1111 111 是计算机中最小的数 ...
- [LOJ6041雅礼集训2017]事情的相似度
题解 \(SAM+set\)启发式合并+扫描线 首先可以发现题目要求的就是查询结尾在一段区间内的\(LCS\) 这个显然就是\(SAM\)的\(parent\)树上的\(step[LCA]\) 我们可 ...
- Hdu 5442 Favorite Donut (2015 ACM/ICPC Asia Regional Changchun Online 最大最小表示法 + KMP)
题目链接: Hdu 5442 Favorite Donut 题目描述: 给出一个文本串,找出顺时针或者逆时针循环旋转后,字典序最大的那个字符串,字典序最大的字符串如果有多个,就输出下标最小的那个,如果 ...
- Codeforces Round #544 (Div. 3) A.Middle of the Contest
链接:https://codeforces.com/contest/1133/problem/A 题意: 给两个时间点,求中间时间点. 思路: 数学 代码: #include <bits/std ...
- AtCoder Beginner Contest 057 ABCD题
A - Remaining Time Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Dol ...
- datapatch meet ORA-01422
[现象] datapatch ORA-01422: e [解决方法]sample 1: --step 1:sqlplus /nologconn /as sysdbacreate table regis ...
- HDU 1220 B - Cube
http://acm.hdu.edu.cn/showproblem.php?pid=1220 一开始的做法是,先暴力算出一个面,就是n * n的面,能有多少对.记作face 然后从上开始算下来,最上一 ...
- SpringMvc返回@ResponseBody中文乱码
使用SpringMvc的@ResponseBody返回指定数据的类型做为http体向外输出,在浏览器里返回的内容里有中文,会出现乱码,项目的编码.tomcat编码等都已设置成utf-8,如下返回的是一 ...
- REST风格笔记
这一篇主要是看了FB的覃超大大的文章,做了一些笔记和自己的思考. 定义: 用URL来定义资源,用HTTP(GET/POST/DELETE/DETC)来描述操作. 1. REST描述的是网络 ...