在Android应用中,往往有获取当前地理位置的需求,比如微信获取附近的人需要获取用户当前的位置,不多说,直接上例子。

    public Location getLocation() {
LocationManager locManger = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
List<String> providers_list = locManger.getAllProviders();
for (String item : providers_list) {
Location loc = locManger.getLastKnownLocation(item);
if (loc != null) {
return loc;
}
}
String str1 = LocationManager.GPS_PROVIDER;
String str2 = LocationManager.PASSIVE_PROVIDER;
String str3 = LocationManager.NETWORK_PROVIDER;
return null;
}
  // 上面providers_list中的三个子项一般就为str1,str2,str3,这是常见的几种手机支持的定位,需要注意的是有的手机好像只支持PASSIVE_PROVIDER{我在一个项目
  就是因为只写了另外两种而查不到地理位置}
  // 当没有得到位置信息时,可以通过请求更新位置信息看是否能够获取位置信息
  loc.requestLocationUpdates(provider, minTime, minDistance, listener);// 四个参数分别为:provider名称,请求间隔时间,更新最小距离,位置监听器

Location的一些简单用法

public void LocationMethod() {// Location常用方法简介
Location loc = getLocation();
// loc.distanceTo(Location dest);float
// loc.getAltitude();double 海拔高度
// loc.getLatitude();double
// loc.getLongitude();double
// loc.getSpeed();float
}

要想使用Location服务,还必须添加Location的权限:<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
---------------------------------------------------修改-----------------------------------------------------------------------------
最近在项目中遇到一个问题,用上述的方法并不能很好的解决定位的问题,大多数手机用上述方法可以实现定位,但在有的手机上,仍然无法定位,最后只得使用百度定位SDK进行定位才得以解决;
一、添加一个百度定位服务及权限

<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote">
</service>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" />

二、编写实现代码

public class LocationManger {
private LocationClient mLocClient;
private BDLocationListener listener;
private Context context; public LocationManger(Context context) {
super();
this.context = context;
} public void getLocation() {
mLocClient = new LocationClient(context);
listener = new BDLocationListener() {
@Override
public void onReceivePoi(BDLocation arg0) {
} @Override
public void onReceiveLocation(BDLocation location) {
if (location != null) {
Log.e("" + location.getLatitude(),
"" + location.getLongitude());
mLocClient.unRegisterLocationListener(listener);
}
}
};
mLocClient.registerLocationListener(listener);
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);
option.setAddrType("all");// 返回的定位结果包含地址信息
option.setCoorType("bd09ll");// 返回的定位结果是百度经纬度,默认值gcj02
option.setScanSpan(5000);// 设置发起定位请求的间隔时间为5000ms
option.disableCache(true);// 禁止启用缓存定位
option.setPoiNumber(5); // 最多返回POI个数
option.setPoiDistance(1000); // poi查询距离
option.setPoiExtraInfo(true); // 是否需要POI的电话和地址等详细信息
mLocClient.setLocOption(option);
mLocClient.start();
if (mLocClient != null && mLocClient.isStarted()) {
mLocClient.requestLocation();
}
}
}

BDLocationListener接口
BDLocationListener接口有2个方法需要实现: 1.接收异步返回的定位结果,参数是BDLocation类型参数。 2.接收异步返回的POI查询结果,参数是BDLocation类型参数。在一般的程序中,只需要重写第一个方法即可,里面返回的BDLocationo类型参数包含了经纬度信息;

Android 使用LocationManger进行定位的更多相关文章

  1. android基于GPS实现定位操作

    一.定位的三种方式 1.wifi定位,ip地址定位,通过ip地址进行查询实际地址: 2.基站定位,信号塔,基站:手机通讯服务的设备 ,信号的格数决定了手机距离基站远近,精确度:几十米到几公里,精确度来 ...

  2. Android入门之GPS定位详解

    一.LocationManager LocationMangager,位置管理器.要想操作定位相关设备,必须先定义个LocationManager. LocationManger locationMa ...

  3. Android 百度地图SDK 定位

    引用locSDK_6.1.3.jar,切记添加相应的so文件. 1.定位初始化,需要使用getApplicationContext() mLocClient = new LocationClient( ...

  4. Android 进入页面默认定位到ListView的解决方法

    由于ListView会默认去获取焦点,如果说ListView在页面的下方的话,那么点击条目进入新页面并退出,那么这时候就会定位到ListView这里,而不是展示头部.   解决这个问题,只需要在Lis ...

  5. Android crash特殊位置定位

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 通常情况下,在我们开发的过程中遇到的crash,可以到logcat中找原因:如果做定制App,对方用 ...

  6. Android 百度地图API 定位 导航

    看看这个利用百度地图定位并实现目的地导航的Demo. 首先看实现效果:                          进 入后首先会得到当前位置,在地图上显示出来.在输入框中输入目的地后,就会在地 ...

  7. Android下实现GPS定位服务

    1.申请Google API Key,参考前面文章 2.实现GPS的功能需要使用模拟器进行经纬度的模拟设置,请参考前一篇文章进行设置 3.创建一个Build Target为Google APIs的项目 ...

  8. Android开发之位置定位详解与实例解析(GPS定位、Google网络定位,BaiduLBS(SDK)定位)

    在android开发中地图和定位是很多软件不可或缺的内容,这些特色功能也给人们带来了很多方便.定位一般分为三种发方案:即GPS定位.Google网络定位以及基站定位 最简单的手机定位方式当然是通过GP ...

  9. android中百度地图定位的实现方法(仅适用于真机+WIFI联网环境)

    注意:此代码的环境是:真机(系统版本为Android4.2.2)+WIFI联网(才能实现最后的运行结果):使用虚拟机调试会出现各种问题. 第一步:下载SDK和申请Key 到百度的网站http://de ...

随机推荐

  1. 基于Docker的UI自动化初探

    本文来自网易云社区 前言 一直以来,项目迭代的时间都是比较紧张的,开发加班加点coding,测试加班加点提bug.都说"时间像海绵里的水,挤挤总会有的"(当然这里的"挤挤 ...

  2. hive和关系型数据库

    1)hive和关系型数据库存储文件的系统不同.  hive使用hdfs(hadoop的分布式文件系统),关系型数据库则是服务器本地的文件系统: 2)hive使用的计算模型是mapreduce,而关系型 ...

  3. Jmeter断言、参数化及集合点

    JMeter---QPS(Query Per Second) QPS为每秒查询率.是一台查询服务器每秒能够处理的查询次数,在因特网上,作为域名系统服务器的性能经常用每秒查询率来衡量.步骤:1.添加线程 ...

  4. 【Extremely Basic Words for Listening】word list

    [Extremely Basic Words for Listening]word list updated continuously recite count: 0 careless exercis ...

  5. JAVA中 "\" 和 "/" 的区别

    1.在java中路径一般用”/” 2.linux.unix中的路径一般用”/” 3.windows中的路径一般用”\” 所以在java中写windows路径一般用”/”,或用“\”将”\”转义一下(& ...

  6. Java学习笔记-12.传递和返回对象

    1.Clone()方法产生一个object,使用方法后必须产生的object赋值. Vector v2 = (Vector)v.clone(); 2.Clone()方法在object中是保护类型方法, ...

  7. 关于mysql开元数据库的几个随想

    现在已经是凌晨了,昨天晚上写了我人生中的第一篇笔记,觉得没什么可写的,写了一个多小时都没写出什么,现在突然想写点东西了,这是一个比较有趣的问题,前两个月换了新工作,记得当初面试这份工作的时候面试到第三 ...

  8. leetcode个人题解——two sum

    这是leetcode第一题,通过较为简单. 第一题用来测试的,用的c,直接暴力法过, /** * Note: The returned array must be malloced, assume c ...

  9. 第三课——MFC编程

    一.MFC概述 1. MFC简述 MFC不仅仅是一套基础类库,更是一种编程方式. 2. MFC由来 1987年微软公司推出了第一代Windows产品,并为应用程序设计者提供了Win16(16位Wind ...

  10. 条款03 尽可能使用const

    一.概述 使用const约束对象:可以获得编译器的帮助(指出相关出错的地方) const与成员函数:const重载.转型.避免代码重复 二.细节 1. 为什么有些函数要返回const对象(看上去没必要 ...