博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中获取当前位置的使用步骤
阅读量:6914 次
发布时间:2019-06-27

本文共 2017 字,大约阅读时间需要 6 分钟。

在Android中得到当前位置的步骤 1.在AndroidManifest.xml中声明权限
android.permission.ACCESS_FINE_LOCATION(或者android.permission.ACCESS_COARSE_LOCATION)
2.声明并实例化一个LocationManager对象 这个类提供了关于获取位置信息的服务,用于管理Android的定位服务。这个类同意应用定期的更新地理位置信息,同一时候同意当到达指定地点时候激活相关的Intent。
LocationManager locMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
3.声明并设置Criteria对象。

这个类是用来选择合适的provider的,他设置了一些条件,通过对这些条件进行筛选。系统得到最优的provider对象。条件有:精度,耗电量。海拔,方位,速度以及付费情况等。

Criteria criteria=new Criteria();criteria.setAccuracy(Criteria.ACCURACY_FINE); //精度要求:ACCURACY_FINE(高)ACCURACY_COARSE(低)criteria.setAltitudeRequired(false); // 不要求海拔信息criteria.setBearingAccuracy(Criteria.ACCURACY_HIGH); //方位信息的精度要求:ACCURACY_HIGH(高)ACCURACY_LOW(低)criteria.setBearingRequired(false); // 不要求方位信息criteria.setCostAllowed(true); // 是否同意付费criteria.setPowerRequirement(Criteria.POWER_LOW); // 对电量的要求 (HIGH、MEDIUM)
4.依据criteria的条件获取最合适的provider。

第二个參数是指是否仅仅返回当前处于激活状态的provider。

String provider=locMan.getBestProvider(criteria,true);
在这里简单介绍一下provider。provider是LocationManager获取位置信息的途径,经常使用的有两种:GPS和NETWORK。 GPS定位:更精确,缺点是仅仅能在户外使用,耗电严重,而且返回用户位置信息的速度远不能满足用户需求。须要在AndroidManifest.xml中声明权限:
android.permission.ACCESS_FINE_LOCATION
NETWORK定位:通过基站和Wi- Fi信号来获取位置信息,室内室外均可用。速度更快,耗电更少。须要在AndroidManifest.xml中声明权限:
android.permission.ACCESS_FINE_LOCATION或者:android.permission.ACCESS_COARSE_LOCATION
使用locMan.getAllProviders();能够获得全部已知provider的list。

为了获取用户位置信息,我们能够使用多种定位方式的当中一个。也能够同一时候使用多个。

5.设置监听器 设置有关更新操作的一些条件(时间间隔,距离间隔),监听器会定期的更新位置信息。这里设置了使用之前得到的最优provider。更新位置操作的时间间隔为1000毫秒,距离间隔为5米,绑定LListener监听器。

locMan.requestLocationUpdates(provider, 1000, 5, new LListener());
6.获取地理位置信息 返回provider近期获得的位置信息。

Location loc = locMan.getLastKnownLocation(provider);
7.补充 如有须要,我们能够将Location信息转化为GeoPoint。

函数例如以下

private GeoPoint getGeoByLocation(Location loc){GeoPoint gp = null;if(loc != null){double latitude = loc.getLatitude() * 1E6;double longitude = loc.getLongitude() * 1E6;gp = new GeoPoint((int)latitude, (int)longitude);}return gp;}
以上文章转载自网络。对于上述信息已得到本地验证使用,对于综合使用的实例在 一文中已经实现。请移步查看。
你可能感兴趣的文章
Redis(五)-- Java API
查看>>
Android中使用OnClickListener接口实现button点击的低级失误
查看>>
python核心编程——python对象
查看>>
指数函数及其性质教学设计
查看>>
关于内存中栈和堆的区别(非数据结构中的堆和栈,区别)【转】
查看>>
嵌套查询
查看>>
python-Levenshtein几个计算字串相似度的函数解析
查看>>
shipyard, swarm看到你,我才睡觉:)
查看>>
hdu 4409 Family Name List(LCA&有坑点)
查看>>
Linux内核之于红黑树and AVL树
查看>>
JAVA线程池ScheduledExecutorService周期性地执行任务 与单个Thread周期性执行任务的异常处理...
查看>>
Python 面向对象
查看>>
JAXB xml与javaBean的转换
查看>>
ResultSet 的Type属性 TYPE_FORWARD_ONLY, TYPE_SCROLL_I
查看>>
C#多线程--线程池(ThreadPool)
查看>>
Android FileProvider相关 Failed to find configured root that contains
查看>>
【Win 10 应用开发】UI Composition 札记(七):基于表达式的动画
查看>>
Log4j中为什么设计isDebugEnabled()方法
查看>>
工作文件夹分类
查看>>
ReactNative WebView组件详解
查看>>