在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;
}

以上文章转载自网络。对于上述信息已得到本地验证使用,对于综合使用的实例在 一文中已经实现。请移步查看。

Android中获取当前位置的使用步骤的更多相关文章

  1. android 中获取视频文件的缩略图(非原创)

    在android中获取视频文件的缩略图有三种方法: 1.从媒体库中查询 2. android 2.2以后使用ThumbnailUtils类获取 3.调用jni文件,实现MediaMetadataRet ...

  2. android中获取root权限的方法以及原理(转)

    一. 概述 本文介绍了android中获取root权限的方法以及原理,让大家对android 玩家中常说的“越狱”有一个更深层次的认识. 二. Root 的介绍 1. Root 的目的 可以让我们拥有 ...

  3. URL转Drawable之 Android中获取网络图片的三种方法

    转载自: http://doinone.iteye.com/blog/1074283 Android中获取网络图片是一件耗时的操作,如果直接获取有可能会出现应用程序无响应(ANR:Applicatio ...

  4. android EditText获取光标位置并安插字符删除字符

    android EditText获取光标位置并插入字符删除字符1.获取光标位置int index = editText.getSelectionStart(); 2.在光标处插入字符int index ...

  5. Android中获取应用程序(包)的大小-----PackageManager的使用(二)

    通过第一部分<<Android中获取应用程序(包)的信息-----PackageManager的使用(一)>>的介绍,对PackageManager以及 AndroidMani ...

  6. Android中获取正在运行的应用程序-----ActivityManager.RunningAppProcessInfo类详解

    今天继续讲解关于ActivityManager的使用,通过前面一节的学习,我们学会了如何利用ActivityManager获取系统里 正在运行的进程.本文要讲解的知识点是利用这些进程信息获取系统里正在 ...

  7. android中获取时间

    android中获取时间 1)通过calendar类获取 Calendar calendar = Calendar.getInstance();int moth = calendar.get(Cale ...

  8. Android中获取网页表单中的数据实现思路及代码

    在Android中获取网页里表单中的数据具体实现代码如下,感兴趣的各位可以参考过下哈,希望对大家有所帮助 MainActivity如下: 复制代码 代码如下: package cn.testjavas ...

  9. Android中获取网页表单中的数据

    MainActivity如下: package cn.testjavascript; import java.util.StringTokenizer; import android.os.Bundl ...

随机推荐

  1. 解决XCODE配置LLVM环境出现的问题

    问题描写叙述:在LLVM整合进XCODE的过程中出现符号没有定义导致出现未决函数或方法.但使用终端编译链接生成程序没有问题. 问题产生原因:未引用响应的LLVM库与系统库,以及编译器设置.连接器设置不 ...

  2. java list 容器的ConcurrentModificationException

    java中的很多容器在遍历的同时进行修改里面的元素都会ConcurrentModificationException,包括多线程情况和单线程的情况.多线程的情况就用说了,单线程出现这个异常一般是遍历( ...

  3. golang encoding/json

    package main import ( "bytes" "encoding/json" "fmt" ) type ColorGroup ...

  4. React render return 空行问题

    Uncaught Invariant Violation: App.render(): A valid React element (or null) must be returned. You ma ...

  5. menuconfig_kconfig

    这一节的主要内容: Menuconfig的操作 Kconfig和.config文件 Linux内核配置裁剪实验 linux编译器通过.config文件确认哪些代码编译进内核,哪些被裁减掉 menuco ...

  6. web前端背景介绍

    Internet:是一个全球性的计算机互联网络,中文名称“因特网”.“国际互联网”.“网际网”等等: Internet提供的服务:http.ftp.Telnet.email.www.bbs等等: 基本 ...

  7. 魅族MX5和努比亚布拉格手机參数对照

    想买个Android手机锁定魅族MX5和努比亚布拉格.两个官网翻来翻去的非常难取舍,自己列了一个表对比了一下參数,本人喜欢薄一点的手机.有feel.參数对比表例如以下: 手机 魅族MX5 努比亚布拉格 ...

  8. Cocos2d 游戏状态机

    加cocos2d 是标题党. 事实上跟cocos2d无关. 1.游戏背景介绍 比方有这么一个"记忆"类的比赛游戏.你和电脑对战.轮到谁的回合,谁翻两张牌.假设两张牌一样,就消掉这两 ...

  9. 非常全的linux面试笔试题及参考答案

    一.填空题: 1. 在Linux系统中,以 文件 方式访问设备 . 2. Linux内核引导时,从文件/etc/fstab 中读取要加载的文件系统. 3. Linux文件系统中每个文件用 i节点来标识 ...

  10. MySQL 概述和基础

    # MySQL 概述 什么是数据库 存储数据的仓库 都有哪些公司在用数据库 金融机构.游戏网站.购物网站.论坛网站-- 提供数据库服务的软件 MySQL.Oracle.SQL Server.DB2.M ...