gps

转载 2012年03月21日 22:00:44

特别声明:以下所有操作都别忘记了加上权限:

  1. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />  
  2.   
  3.  <uses-permission android:name="android.permission.INTERNET" />  
  4.   
  5.  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  
  6.   
  7. sp;  

LocationManager

通过LocationManager可以实现设备的定位、跟踪和趋近提示。它不需要你直接来实例化,我们可以通过Context.getSystemService(Context.LOCATION_SERVICE). 来获得LocationManager实例。

常用属性和方法

属性和方法

描述

GPS_PROVIDER

静态字符串常量,表明LocationProvider是GPS

NETWORK_PROVIDER

静态字符串常量,表明LocationProvider是网络

addGpsStatusListener(GpsStatus.Listener listener)

添加一个GPS状态监听器

addProximityAlert(double latitude, double longitude, float radius, long expiration, PendingIntent intent)

添加一个趋近警告

getAllProviders()

获得所有的LocationProvider列表

getBestProvider(Criteria criteria, boolean enabledOnly)

根据Criteria返回最适合的LocationProvider

getLastKnownLocation(String provider)

根据Provider获得位置信息

getProvider(String name)

获得指定名称的LocationProvider

getProvider(boolean enableOnly)

获得可利用的LocationProvider列表

removeProximityAlert(PendingIntent intent)

删除趋近警告

requestLocationUpdates(String provider, long minTime, float minDistance, PendingIntent intent)

通过给定的Provider名称,周期性地通知当前Activity

requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)

通过给定的Provider名称,并将其绑定指定的LocationListener监听器

 

 

 

LocationProvider

LocationProvider用来描述位置提供者,设置位置提供者的一些属性。可以通过Criteria类来为LocationProvider设置条件,获得合适的LocationProvider。

属性或者方法名称

描述

AVAILABLE

静态整型常量,标示是否可利用

OUT_OF_SERVICE

静态整型常量,不在服务区

TEMPORAILY_UNAVAILABLE

静态整型常量,临时不可利用

getAccuarcy()

获得精度

getName()

获得名称

getPowerRequirement()

获得电源需求

hasMonetaryCost()

花钱的还是免费的

requiresCell()

是否需要访问基站网络

requiresNetWork()

是否需要Intent网络数据

requiresSatelite()

是否需要访问卫星

supportsAltitude()

是否能够提供高度信息

supportsBearing()

是否能够提供方向信息

supportsSpeed()

是否能够提供速度信息

实例:获取设备上的所有的LocationProviders

  1. locationManager=(LocationManager)LocationManagerDemoActivity.this.getSystemService(Context.LOCATION_SERVICE);  
  2.   
  3.                 
  4.   
  5.               //获取所有的LocationProvider  
  6.   
  7.               List<String> allproviders=locationManager.getAllProviders();  
  8.   
  9.               for (String string : allproviders) {  
  10.   
  11.                   System.out.println(string);  
  12.   
  13.               }  

 

Location类

它用于描述当前设备的地理位置信息,包括了经纬度、方向、高度和速度等。可以通过LocationManager.getLastKnownLocation(String provider)方法可以获得Location实例

其常见方法和属性:

方法

描述

public float getAccuracy ()

获得精确度

public double getAltitude ()

获得高度

public float getBearing ()

获得方向

public double getLatitude ()

获取经度

public double getLongitude ()

获得纬度

public float getSpeed ()

获得速度

实例:得到你自己的位置

  1. // 获取自己的位置  
  2.   
  3.    btnGetPosition.setOnClickListener(new View.OnClickListener() {  
  4.   
  5.        @Override  
  6.   
  7.        public void onClick(View v) {  
  8.   
  9.           System.out.println("获取当前位置");  
  10.   
  11.           locationManager = (LocationManager) LocationManagerDemoActivity.this  
  12.   
  13.                  .getSystemService(Context.LOCATION_SERVICE);  
  14.   
  15.   
  16.   
  17.      
  18.   
  19.   
  20.   
  21.           Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);  
  22.   
  23.           System.out.println("你当前的位置:");  
  24.   
  25.           StringBuilder sb=new StringBuilder("你当前的位置(经纬度):");  
  26.   
  27.           sb.append("(");  
  28.   
  29.           sb.append(location.getLatitude());  
  30.   
  31.           sb.append(",");  
  32.   
  33.           sb.append(location.getLongitude());  
  34.   
  35.           sb.append(")");  
  36.   
  37.           System.out.println(location.getLatitude());  
  38.   
  39.           System.out.println(location.getLongitude());  
  40.   
  41.           txtPostion.setText(sb);  
  42.   
  43.        }  
  44.   
  45.    });  

 

实例:追踪位置:

requestLocationUpdates(String provider,long minTime,float minDistance,LocationListener listener)

关于参数minTime,minDistance的说明是指当用户位置改变多少纬度时候多长时间更新下这个用户的位置

    

  1. locationManager.requestLocationUpdates(  
  2.   
  3.                   LocationManager.GPS_PROVIDER, 500500new listener());  

实例:获取最好的LocationProivider

  1. LocationManager.getBasetProvider(Criteria criteria,boolean is)  

Criteria类

它封装了用于获得LocationProvider的条件,可以根据指定的Criteria条件来过滤获得LocationProvider

及常用属性和方法如下:

属性或访求名称

描述

ACCERACY_COARSE

粗糙精确度

ACCURACY_FINE

较高精确度

POWER_HING

用电高

POWER_LOW

用电低

isAlititudeRequried()

返回Provider是否需要高度信息

isBearingRequired()

返回Provider是否需要方位信息

isSpeedRequried()

返回Provider是否需要速度信息

isCostAllowed()

是否允许产生费用

setAccuracy(int accuracy)

设置Provider的精确度

setAltitudeRequired (boolean altitudeRequired)

设置Provider是否需要高度信息

setBearingRequired (boolean bearingRequired)

设置Provider是否需要方位信息

setCostAllowed (boolean costAllowed)

设置Provider是否产生费用

setSpeedAccuracy (int accuracy)

设置Provider是否需要速度信息

getAccuracy()

获得精度

  1. // 获取最佳的Provider  
  2.   
  3.    btnBestProvider.setOnClickListener(new View.OnClickListener() {  
  4.   
  5.        @Override  
  6.   
  7.        public void onClick(View v) {  
  8.   
  9.           String bestProviders = "";  
  10.   
  11.           locationManager = (LocationManager) LocationManagerDemoActivity.this  
  12.   
  13.                  .getSystemService(Context.LOCATION_SERVICE);  
  14.   
  15.           // 新建一个Criteria  
  16.   
  17.           Criteria criteria = new Criteria();  
  18.   
  19.           // 设置精确度  
  20.   
  21.           criteria.setAccuracy(Criteria.ACCURACY_COARSE);  
  22.   
  23.           criteria.setPowerRequirement(Criteria.POWER_LOW);  
  24.   
  25.           criteria.setAltitudeRequired(false);  
  26.   
  27.           criteria.setBearingRequired(false);  
  28.   
  29.           criteria.setSpeedRequired(false);  
  30.   
  31.           criteria.setCostAllowed(false);  
  32.   
  33.           // 获得符合条件的provider  
  34.   
  35.           bestProviders = locationManager  
  36.   
  37.                  .getBestProvider(criteria, false);  
  38.   
  39.           txtCrerita.setText("最佳的provider:"+bestProviders);  
  40.   
  41.             
  42.   
  43.        }  
  44.   
  45.    });  

总结(再看GPS):

从以上知识我们可以知道,要想使用Android平台下的GPS服务我们就得用LocationManager这个系统服务,我们可以通过Context.getSystemService(Context.LOCATION_SERVIER)来得到这个LocationManager对象实例,有了这么一个服务后,我们可以通过LocationProvider来描述位置提供者,为了某种需要我们又用到了一个Criteria类来设置满足我们自己的最佳要求,那么这一切都搞定的时候,获取我们自己所在的位置我们就用到了Location类,这个类用来获取我们自己的位置,例如:经纬度。

相关文章推荐

android开发之GPS定位详解

一、LocationManager LocationMangager,位置管理器。要想操作定位相关设备,必须先定义个LocationManager。我们可以通过如下代码创建LocationMange...

Android全球定位系统GPS实时获取位置-刘宇

GPS是全球定位系统,他能够获取到你当前的位置、方向、速度、高度等信息,这样可以帮助我们实现很多功能,如获取当前位置等信息、距离计算、邻近报警等功能。下面我就带大家一起来简单实现第一个功能获取当前位置...

影响GPS定位的5大因素

目前市场中支持定位功能的手机都是通过两种方式来实现定位:     第一是通过内嵌的GPS芯片,接收GPS卫星定位信号;     第二是利用移动运营商基站获取大概的位置;     两种方式混合使用...

彻底解决Android GPS没法定位这一顽固问题

大家去网上搜索Android定位location为null没法定位问题,估计有一大堆文章介绍如何来解决,但是最后大家发现基本没用。本文将从Android定位实现原理来深入分析没法定位原因并提出真正的解...

Android GPS学习笔记(4)—HAL实现

HAL的全称是Hardware Abstraction Layer, 即硬件抽象层。         HAL层是介于Android内核与上层之间抽象出来的一层结构,它是对linux驱动的一个封...

GPS定位不准确、有偏差的问题

GPS型号:SIMCOM7100C 最近在做gps定位这块,发现经纬度定位并不准确,偏差的有点离谱。网上查了好多资料,各种坐标系之间相互转换。 在地图上输入转换后的经纬度,偏的不是一点半点。 后来...
  • a_tu_
  • a_tu_
  • 2016年10月27日 18:44
  • 2598

读取JPG图片的Exif属性(三) - Exif属性读取GPS信息代码(C/C++实现)

Exif中GPS格式 本文是最后一篇关于Exif文章,终于要挑战最大的boss了,这个GPS信息的读取,我找了国内外很多资料都没有找 真正的实例。所以自己前两篇的基础上推断而来的。 读取JPG图片...

ARM通过usb转串口实现接收GPS数据

http://blog.csdn.net/fate_archer/article/details/13168475 前期工作是:搭建交叉编译链,网络文件系统 内核版本:Li...

如果LocationListener中onStatusChanged无法返回实时GPS定位状态可以通过卫星已定位辅助判断

代码如下: package dls.tbox.service; import java.util.ArrayList; import java.util.Iterator; import java...
  • hy119
  • hy119
  • 2016年02月17日 17:19
  • 1059

计算2个GPS坐标的距离

http://blog.csdn.net/ztp800201/article/details/44676867   Java 计算两个GPS坐标点之间的距离 1. Lat1 Lung1 表示...
  • yi412
  • yi412
  • 2017年04月15日 10:00
  • 3243
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:gps
举报原因:
原因补充:

(最多只允许输入30个字)