`
totoxian
  • 浏览: 1075713 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

(转)android GPS

 
阅读更多

User Location能做什么?

1、获取用户的位置

2、追踪用户的移动

User Location的关键API

1、LocationManager:用于管理android的用户定位服务

2、LocationProviders:提供多种定位方式供开发者选择(GPS, NETWORK定位等)

定位方式的分类

1、GPS定位:

使用GPS卫星进行定位,需要加权限android.permission.ACCESS_FINE_LOCATION

2、NETWORK定位

使用信号接收塔和WIFI介入点进行定位,需要加权限

android.permission.ACCESS_FINE_LOCATION(精确定位)或

android.permission.ACCESS_COARSE_LOCATION(粗糙定位)

获取用户的位置:

1、在AndroidManifest.xml当中声明相应权限

2、获取LocationManager对象

3、选择LocationProvider

4、绑定LocationListener对象

LocationManager locationManager = (LocationManager)MainActivity.this.getSystemService(Context.LOCATION_SERVICE);

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,newTestLocationListener());

private classTestLocationListenerimplementsLocationListener{

@Override

public voidonLocationChanged(Location location) {

//TODOAuto-generatedmethod stub

System.out.println(location.getLongitude());

System.out.println(location.getLatitude());

}

@Override

public voidonProviderDisabled(String provider) {

}

@Override

public voidonProviderEnabled(String provider) {

}

@Override

public voidonStatusChanged(String provider,intstatus, Bundleextras) {

}

}

什么是Criteria?

Criteria可以设置一系列的查询条件,用于查找当前设备当中符合条件的Location Provider

setAccuracy(int accuracy):设置精度(ACCURACY_COARSE, ACCURACY_FINE)

setBearingAccuracy(int accuracy)设置方向的精度(ACCURACY_HIGH, ACCURACY_LOW,ACCURACY_MEDIUM)

setCostAllowed(Boolean costAllowed) 设置找到的Provider是否允许产生费用

setSpeedRequired(Boolean speedRequried) 设置是否需要提供速度

setAltitudeRequired(BooleanaltitudeRequired) 设置是否需要提供海拔信息

setBearingRequired(Boolean bearingRequired) 是否需要方向信息

setHorizontalAccuracy(int accuracy) 设置水平方向的精度(ACCURACY_HIGH,ACCURACY_LOW,ACCURACY_MEDIUM)

setSpeedAccuracy(int accuracy) 设置速度精度

setVerticalAccuracy(int accuracy) 设置垂直方向的精度(ACCURACY_HIGH, ACCURACY_LOW,ACCURACY_MEDIUM)

setPowerRequirement(int level) 设置耗电 NO_REQUIREMENT, POWER_LOW,POWER_HIGH, POWERMEDIUM

Criteria criteria =newCriteria();

criteria.setAccuracy(Criteria.ACCURACY_FINE);

criteria.setPowerRequirement(Criteria.POWER_LOW);

criteria.setAltitudeRequired(false);

criteria.setSpeedRequired(false);

criteria.setCostAllowed(false);

String provider = locationManager.getBestProvider(criteria,false);

System.out.println("best provider -->" +provider);

追踪用户

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5000,newTestLocationListener());

通过设置第二和第三个参数,第二个参数,这里表示每隔5000毫秒更新一次,第三个参数这里表示位置每次变动5000米更新一次

什么是Geocoding?

GeoCoding是google所提供的一项服务,主要有以下两个方面的功能:

1、查询某地址的经纬度

2、查询某经纬度的具体地址

如何使用GeoCoding

1、添加库文件

2、创建一个GeoCoder对象

3、调用该对象的getFromLocation()或者是getFromLocationName()方法

GeoCoding有问题,调用的时候会提示出错service unavailable(不知什么原因),可用下面的代码代替

根据地址查经纬度

http://maps.googleapis.com/maps/api/geocode/xml?address=SFO&sensor=false

根据经纬度查询地址

http://maps.googleapis. com/maps/api/geocode/xml?latlng=40.714224,-73.961452&sensor=false

bounds的作用

region的作用

常见的查询参数作用

1、address需要查询的地址

2、latlng需要查询的经纬度

3、bounds设定查询的边界

4、region设定查询的国家代码

5、language设定查询结果的语言

6、sensor标示该请求是否来源于一个设备的传感器

7.3.2 根据要求标准查找提供器

在大部分情况下,都不太可能去显式地选择要使用的位置提供器。更常见的情况是,将通过指定一个提供器所必须满足的要求,来让Android去确定要使用的最优的技术。

使用Criteria类来说明对提供器的要求,包括精度(高或者低)、能耗(低,中,高)、花费以及返回海拔、速度和方向的能力。

下面的代码创建了一个这样的标准,它要求低精度,低能耗并且不需要海拔、方向或者速度。而且允许提供器有一定的资金花费。

  1. Criteriacriteria=newCriteria();
  2. criteria.setAccuracy(Criteria.ACCURACY_COARSE);
  3. criteria.setPowerRequirement(Criteria.POWER_LOW);
  4. criteria.setAltitudeRequired(false);
  5. criteria.setBearingRequired(false);
  6. criteria.setSpeedRequired(false);
  7. criteria.setCostAllowed(true);

在定义了这些要求的标准之后,可以使用getBestProvider来返回最佳匹配的位置提供器,或者使用getProviders来返回所有可能的匹配。下面的代码段展示了使用getBestProvider来返回符合你的标准的最佳匹配,其中Boolean值可以把结果限制在当前已经启动的提供器的范围内。

  1. StringbestProvider=locationManager. getBestProvider(criteria,true);

如果有多个位置提供器匹配了你的标准,那么它将会返回精度最高的那一个。如果没有任何一个位置提供器满足要求,那么将会按照下面的顺序放宽标准,直到找到一个提供器为止:

能耗

精度

返回方向、速度和海拔的能力

一个设备所允许的资金花费的标准永远都不会放宽。如果此时仍然没有找到匹配的提供器,那么就会返回null。

要查看所有符合标准的提供器的名称,可以使用getProviders。它可以接收Criteria,并返回一个已经经过过滤的字符串列表,该列表记录了所有符合标准的可用的位置提供器。与调用getBestProvider相同,如果没有找到匹配的提供器,它将会返回null。

List<String> matchingProviders = locationManager.getProviders(criteria, false);


转自:http://blog.csdn.net/ainibaifenbai/article/details/6646236

分享到:
评论

相关推荐

    AndroidGPS定位源码

    在Android平台上,GPS(全球定位系统)定位是开发者常用的功能之一,用于获取设备的精确位置信息。本资源提供了Android GPS定位的实例源码,对于学习和理解如何在Android应用中集成GPS定位至关重要。通过分析这些...

    Android GPS及filter实现

    在Android平台上,GPS(全球定位系统)是移动设备获取地理位置信息的重要途径。GPS技术通过接收来自卫星的信号来计算设备的精确位置。然而,由于多种因素,如信号干扰、多路径效应,GPS信号可能会出现不准确或跳变的...

    Android GPS时间转本地时间

    android gps开发获取的时间“location.getTime()”,转换为本地北京时间的代码,经测试绝对好用。

    Android-Gps-Test.rar_GPS纬度_android_android gps test_androits gps

    本文将深入探讨“Android-Gps-Test.rar”这个压缩包所涉及的GPS纬度、Android GPS测试以及如何利用Androits GPS测试应用来评估GPS性能。 首先,我们要理解GPS纬度的概念。在地理坐标系统中,纬度是指一个地点距离...

    Android GPS定位简单 DEMO

    &lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/&gt; **1.获取位置管理器对象LocationManager** ``` import android.location.LocationManager; LocationManager lm; // lm =...

    Android GPS 收星测试APK

    在Android系统中,GPS(全球定位系统)是设备获取地理位置信息的重要途径。"Android GPS 收星测试APK"是一个专为Android用户设计的应用程序,主要用于检测和分析GPS的接收卫星信号情况。这个APK可以帮助开发者、硬件...

    android GPS 驱动源码

    在Android系统中,GPS(全球定位系统)驱动是硬件抽象层(HAL)的一部分,它负责与硬件设备交互,提供定位服务。这篇文档将深入探讨Android GPS驱动源码的相关知识点,帮助开发者理解其工作原理和实现机制。 首先,...

    android Gps信号加强处理

    在Android系统中,GPS(全球定位系统)是设备获取地理位置信息的重要途径。然而,由于多种因素,如环境遮挡、天气状况或者硬件性能,手机可能会遇到GPS信号接收困难或者信号弱的问题。本篇将深入探讨如何解决这些...

    Android Ublox GPS 驱动

    在Android系统中,Ublox GPS驱动扮演着至关重要的角色,它是连接硬件GPS模块与操作系统之间的桥梁,使得设备能够接收并处理卫星信号,提供精确的位置信息。本文将深入探讨Android Ublox GPS驱动的相关知识点,包括其...

    Android GPS HAL 硬件抽象层

    Android GPS HAL 硬件抽象层 Android GPS HAL(Hardware Abstraction Layer)是 Android 操作系统中负责与 GPS 硬件交互的抽象层。该层提供了一个统一的接口,使得 Android 操作系统可以与不同的 GPS 硬件进行交互...

    一个简单的android GPS DEMO代码

    在Android平台上,GPS(全球定位系统)是移动设备获取地理位置信息的重要途径。本DEMO代码旨在展示如何在Android应用中实现基本的GPS功能,让开发者能够理解和学习如何获取用户的位置坐标。下面我们将深入探讨这个...

    Android Gps Test源码

    《深入解析Android Gps Test源码》 在移动开发领域,Android GPS测试是开发者不可或缺的工具,它能够帮助我们理解并优化GPS定位功能。本文将深入探讨名为"Android Gps Test"的应用源码,旨在揭示其工作原理,帮助...

    android_hardware_gps GPS驱动

    "android_hardware_gps GPS驱动"是指专为Android设备设计的GPS(全球定位系统)硬件抽象层,它负责管理和控制GPS芯片,以提供定位、导航和时间同步等服务。本驱动是针对全志处理器平台,并且已经过Android 10版本的...

    Android GPS获得定位数据源代码

    在Android开发中,获取GPS定位数据是常见的需求,主要用于实现地图导航、位置服务等功能。本文将详细介绍如何通过源代码在Android设备上获取GPS定位信息,并将其存储到SQLite本地数据库中。 首先,Android系统提供...

    android GPS架构之GPS的开启与关闭

    Android GPS 架构之 GPS 的开启与关闭 Android GPS 架构中的 GPS 开启与关闭是指在 Android 系统中如何启动和关闭 GPS 设备的过程。本文将详细介绍 GPS 的开启与关闭的代码实现、系统启动过程、数据库写入过程等...

    androidGPS经纬度速度方向

    statusListener = new GpsStatus.Listener() //GPS状态监听器 { @Override public void onGpsStatusChanged(int event) { // TODO Auto-generated method stub ...

    Android 强制开启GPS

    在Android系统中,GPS(全球定位系统)是用于获取设备位置信息的重要组件。通常,当一个应用程序需要使用GPS时,它会通过系统UI提示用户授权访问地理位置。然而,有些开发者可能需要在没有用户交互的情况下强制开启...

    Android GPS 定位的实现

    Android GPS 定位的实现 Android GPS 定位是 Android 平台中的一种常见的定位服务,通过使用 Google 地图实现 GPS 定位服务。下面是 Android GPS 定位的实现知识点: 一、添加权限 要使用 Android 平台的 GPS ...

    Android Gps 获取Nmea 数据.rar

    在Android系统中,GPS(全球定位系统)是设备获取地理位置信息的重要途径。NMEA(National Marine Electronics Association)数据是GPS接收器输出的一种标准格式,包含了关于地理位置、时间、卫星状态等丰富的信息。...

Global site tag (gtag.js) - Google Analytics