Gps定位

取得定位数据

1.取得LocationManager
  private LocationManager mLocationManager;
  mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
2.注册监听事件

    try {
        if (mLocationManager.getProvider(LocationManager.NETWORK_PROVIDER) != null)
            mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mLocationListener);
        if (mLocationManager.getProvider(LocationManager.GPS_PROVIDER) != null)
            mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocationListener);
    } catch(SecurityException e) {

    }

3.定义监听事件,处理数据

    private LocationListener mLocationListener = new LocationListener() {

        @Override
        public void onLocationChanged(Location location) {
            Geocoder geocoder = new Geocoder(MainAcy.this);
            try {
                List<Address> addrs = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
                Log.d(TAG, "" + addrs);
            } catch (IOException e) {
                Log.e(TAG, "", e);
            }
        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {

        }

        @Override
        public void onProviderEnabled(String provider) {

        }

        @Override
        public void onProviderDisabled(String provider) {

        }
    };

4.取消注册

        try {
            mLocationManager.removeUpdates(mLocationListener);
        } catch(SecurityException e) {

        }

5.配置权限

  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

Geocoder

地图定位必须根据经纬度来完成,其包含两个概念。
  地址解析:把普通的用户能看见的字符串表示的地址转换为经纬度
  反向地址解析:将经纬度转变为字符串地址
Android 中使用 Geocoder 类来完成。但是很明显,Android 手机中不可能把所有的经纬度与地址都保存起来,因此这个类需要依赖于网络上的地图服务。
Geocoder类使用下面的方法执行地址解析,把经度、纬度值转换为字符串地址
  public List<Address> getFromLocation(double latitude, double longitude, int maxResults)
  public List<Address> getFromLocationName(String locationName, int maxResults)
  public List<Address> getFromLocationName(String locationName, int maxResults, double lowerLeftLatitude, double lowerLeftLongitude, double upperRightLatitude, double upperRightLongitude)

权限配置说明

1.GPS定位,使用GPS卫星进行定位
  <uses-permission android:name="android.permission.ACCESS_FIND_LOCATION" />
2.Network定位,使用信号接收塔和WIFI接入点进行定位,
  <uses-permission android:name="android.permission.ACCESS_FIND_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

核心api

LocationManager类常用的方法

获取所有的LocationProvider列表
public List<String> getAllProviders();
获取满足条件的LocationProvider列表
List<String> getProviders(Criteria criteria, boolean enabledOnly)
获取可用的LocationProvider列表
List<String> getProviders(boolean enabledOnly)
取得指定的LocationProvider
public LocationProvider getProvider(String name)
周期性的获取定位信息,并触发相应的事件
public void requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)
public void requestLocationUpdates(String provider, long minTime, float minDistance, PendingIntent intent)
public void requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener, Looper looper)
public void requestLocationUpdates(long minTime, float minDistance, Criteria criteria, LocationListener listener, Looper looper)
public void requestLocationUpdates(long minTime, float minDistance, Criteria criteria, PendingIntent intent)
public void removeUpdates(LocationListener listener)
public void removeUpdates(PendingIntent intent)

判断指定的Provider是否可用
boolean isProviderEnabled(String provider)
根据条件取得最优的Provider
public String getBestProvider(Criteria criteria, boolean enabledOnly)
取得最近一次已知的Location
public Location getLastKnownLocation(String provider)

监听Gps状态
public boolean addGpsStatusListener(GpsStatus.Listener listener)
public void removeGpsStatusListener(GpsStatus.Listener listener)
获取Gps状态
public GpsStatus getGpsStatus(GpsStatus status)

添加或删除一个临近警告
public void addProximityAlert(double latitude, double longitude, float radius, long expiration, PendingIntent intent)
public void removeProximityAlert(PendingIntent intent)

LocationProvider类常用的方法

名称
public String getName()
是否支持高度信息
public boolean supportsAltitude()
是否支持方向信息
public boolean supportsBearing()
是否支持速度信息
public boolean supportsSpeed()
精度
public int getAccuracy()
是否收费
public boolean hasMonetaryCost()
是否需要访问网络基站
public boolean requiresCell()
是否需要访问网络数据
public boolean requiresNetwork()
是否需要访问基于卫星的定位系统
public boolean requiresSatellite()
判断该LocationProvider是否满足Criteria条件
public boolean meetsCriteria(Criteria criteria)

Location类常用的方法

获取提供该定位信息的LocationProvider
public String getProvider()
是否有精度信息
public boolean hasAccuracy()
是否有高度信息
public boolean hasAltitude()
是否有方向信息
public boolean hasBearing()
是否有速度信息
public boolean hasSpeed()
精度
public float getAccuracy()
高度
public double getAltitude()
方向
public float getBearing()
经度
public double getLongitude()
纬度
public double getLatitude()
速度
public float getSpeed()
定位信息的时间
public long getTime()

Criteria

为了实现取得符合指定条件的LocationProvider,需要使用Criteria进行过滤.Criteria常用的方法如下:
设置方向的要求
public void setBearingRequired(boolean bearingRequired)
public void setBearingAccuracy(int accuracy)
设置是否允许收费
public void setCostAllowed(boolean costAllowed)
设置要求能提供高度信息
public void setAltitudeRequired(boolean altitudeRequired)
设置耗电级别要求
public void setPowerRequirement(int level)
设置精度的要求
public void setAccuracy(int accuracy)
设置垂直精度
public void setVerticalAccuracy(int accuracy)
设置水平精度
public void setHorizontalAccuracy(int accuracy)
设置速度的要求
public void setSpeedRequired(boolean speedRequired)
public void setSpeedAccuracy(int accuracy)

时间: 2024-08-05 14:24:55

Gps定位的相关文章

Android GPS定位

GPS定位貌似在室内用不了,今天自己弄了一个GPS定位小Demo,包括用户所在的经度.纬度.高度.方向.移动速度.精确度等信息.Android为GPS功能支持专门提供了一个LocationManager类,程序并不能直接创建LocationManager实例,而是通过Context的getSystemService()方法来获取. 例如: //创建LocationManager对象 LocationManager lm = (LocationManager)getSystemService(Co

【转】GPS定位原理

一.距离测定原理 1.伪距测量 伪距测量是利用全球卫星定位系统进行导航定位的最基本的方法,其基本原理是:在某一瞬间利用GPS接收机同时测定至少四颗卫星的伪距,根据已知的卫星位置 和伪距观测值,采用距离交会法求出接收机的三维坐标和时钟改正数.伪距定位法定一次位的精度并不高,但定位速度快,经几小时的定位也可达米级的若再增加观 测时间,精度还可以提高. 每一卫星播发一个伪随机测距码信号,该信号大约每1毫秒播发一次,接收仪同时复制出一个同样结构的信号并与接收到的卫星信号进行比较,由信号的延迟时间(dT)

android 获取GPS定位

AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.yanlei.yl5" > <uses-permission android:name="a

Android GPS定位实现,教你如何一分钟实现GPS定位

转载请注明出处:http://blog.csdn.net/smartbetter/article/details/50425041 今天给大家带来的是一篇关于GPS定位的文章,我们都知道,Android定位大致分为wifi定位,基站定位和GPS定位,今天我就带大家来看看GPS定位是什么玩意,通过本篇的学习,相信大家能很快上手GPS定位操作了.GPS定位是通过和GPS定位卫星通讯来进行定位的,可以使用最少数量的卫星实现全球定位,3颗,通过光波进行通讯,不需要联网,但是连接时间比较长,大致1分钟左右

3,gps定位原理及格式

1 gps定位原理 gps是美国开发的一套实时定位系统.在导航应用中,重点关注的是用户的gps接受机,根据接收机的数据从而获取当前的位置和时间信息.大概了解下定位原理: 由于我们是用于上位机的开发,接收器遵守的是NMEA0183协议,某种程度上我们通过协议直接得到当前所在的经纬度信息. 首先我们必须要了解的是地球的参考坐标系,以便于我们使用地图时把得到的坐标转换成导航所使用的坐标系.NMEA0183使用的参考坐标系是WGS-84坐标系. 其次,必须了解三颗卫星可以定位,另外一颗卫星是为了消除误差

Arcgis API for Android之GPS定位

欢迎大家增加Arcgis API for Android的QQ交流群:337469080 先说说写这篇文章的原因吧,在群内讨论的过程中,有人提到了定位的问题,刚好,自己曾经在做相关工作的时候做过相关的东西,所以就总结一下,给大家共享出来,因为本人水平有限,bug是在所难免,还望有更高的高人批评指正.废话不多说,直接进入主题. 要想在地图上定位并将定位结果实时显示出来,启发逻辑上非常easy:首先,接收并解析GPS或者网络的位置信息,一般来说,接受的位置信息是WGS84的经纬度的,可是我们的地图的

ionic cordova 引用百度地图以及利用手机GPS定位

首先引入百度地图 在html文件里面加入 <head> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的密钥"></script> //申请一个百度密钥,建议申请浏览器版的比较方便测试 </head> <body> <button id = "getPosition"&g

手机安全卫士------手机防盗页面之播放报警音乐&amp;GPS定位

播放报警音乐 1.把音乐文件放在res/raw文件中 2.创建MediaPlayer对象 MediaPlayer player = MediaPlayer.create(Context,R.raw.*); 3.设置声音为最高: player.setVolume(1.0f,1.0f); 4.设置声音为循环播放: player.setLooping(true); 代码: //报警音乐 MediaPlayer mediaPlayer = MediaPlayer.create(context, R.ra

delphi xe6 for android 自带控件LocationSensor优先使用GPS定位的方法

delphi xe6 for android LocationSensor控件默认是优先使用网络定位,对定位精度要求高的应用我们可以修改原码直接指定GPS定位. 修改方法: 将C:\Program Files\Embarcadero\Studio\14.0\source\rtl\common\System.Android.Sensors.pas拷贝到自己的工程目录里 打开System.Android.Sensors.pas找到function TUIAndroidLocationSensor.D

PHP利用百度地图API进行IP定位和GPS定位

最近在做一个手机端的webapp地图应用,而核心内容当然是定位了,但是定位的话有几种方式,IP定位,GPS定位,基站定位(这个貌似webapp用不了), 那么剩下核心的gps定位和ip定位了,我们知道,html5有定位API,但是该API拿到的GPS数据是硬件坐标,无法直接显示在地图上. 后来上百度LBS云看到有地图IP定位API和GPS坐标转换API,地址:http://developer.baidu.com/map/ 百度地图API的调用需要申请KEY,这里就不具体介绍了,直接贴上本人写了两