Android开发进阶(三)--初探Android平台上的定位服务(GPS)
来源:互联网 发布:ubuntu修复依赖关系 编辑:程序博客网 时间:2024/04/29 05:34
初探Android平台上的定位服务(GPS)
特别声明:以下所有操作都别忘记了加上权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
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
locationManager=(LocationManager)LocationManagerDemoActivity.this.getSystemService(Context.LOCATION_SERVICE); //获取所有的LocationProvider List<String> allproviders=locationManager.getAllProviders(); for (String string : allproviders) { System.out.println(string); }
Location类
它用于描述当前设备的地理位置信息,包括了经纬度、方向、高度和速度等。可以通过LocationManager.getLastKnownLocation(String provider)方法可以获得Location实例
其常见方法和属性:
方法
描述
public float getAccuracy ()
获得精确度
public double getAltitude ()
获得高度
public float getBearing ()
获得方向
public double getLatitude ()
获取经度
public double getLongitude ()
获得纬度
public float getSpeed ()
获得速度
实例:得到你自己的位置
// 获取自己的位置 btnGetPosition.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { System.out.println("获取当前位置"); locationManager = (LocationManager) LocationManagerDemoActivity.this .getSystemService(Context.LOCATION_SERVICE); Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); System.out.println("你当前的位置:"); StringBuilder sb=new StringBuilder("你当前的位置(经纬度):"); sb.append("("); sb.append(location.getLatitude()); sb.append(","); sb.append(location.getLongitude()); sb.append(")"); System.out.println(location.getLatitude()); System.out.println(location.getLongitude()); txtPostion.setText(sb); } });
实例:追踪位置:
requestLocationUpdates(String provider,long minTime,float minDistance,LocationListener listener)
关于参数minTime,minDistance的说明是指当用户位置改变多少纬度时候多长时间更新下这个用户的位置
locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 500, 500, new listener());
实例:获取最好的LocationProivider
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()
获得精度
// 获取最佳的Provider btnBestProvider.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String bestProviders = ""; locationManager = (LocationManager) LocationManagerDemoActivity.this .getSystemService(Context.LOCATION_SERVICE); // 新建一个Criteria Criteria criteria = new Criteria(); // 设置精确度 criteria.setAccuracy(Criteria.ACCURACY_COARSE); criteria.setPowerRequirement(Criteria.POWER_LOW); criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); criteria.setSpeedRequired(false); criteria.setCostAllowed(false); // 获得符合条件的provider bestProviders = locationManager .getBestProvider(criteria, false); txtCrerita.setText("最佳的provider:"+bestProviders); } });
总结(再看GPS):
从以上知识我们可以知道,要想使用Android平台下的GPS服务我们就得用LocationManager这个系统服务,我们可以通过Context.getSystemService(Context.LOCATION_SERVIER)来得到这个LocationManager对象实例,有了这么一个服务后,我们可以通过LocationProvider来描述位置提供者,为了某种需要我们又用到了一个Criteria类来设置满足我们自己的最佳要求,那么这一切都搞定的时候,获取我们自己所在的位置我们就用到了Location类,这个类用来获取我们自己的位置,例如:经纬度。
- Android开发进阶(三)--初探Android平台上的定位服务(GPS)
- 初探Android平台上的定位服务(GPS)
- Android 平台上编程实现 GPS 定位
- android gps 定位服务
- 最新基于高德地图的android进阶开发(3)GPS地图定位
- android平台上的json解析 && 基站定位原理和GPS定位实例 && android RIL解析
- Android开发---GPS定位
- android平台上开发定位器(SMS+GPS)
- android上的GPS定位的问题
- android上的GPS定位的问题
- 梅特勒杯创新大赛(三):Android的GPS定位功能
- android平台上GPS信号的获取和展示(三)之配置与模拟器设置
- 最新基于高德地图的android进阶开发 GPS地图定位
- Android的GPS定位
- Android的gps定位
- Android的GPS定位
- android用户定位GPS开发(一)
- PhoneGap android开发:GPS定位
- 详细解说hash_map
- Linux命令学习手册-chroot命令(基本应用)
- Microsoft Internet Information Services (IIS) 5.0 与 6.0 状态代码说明
- 搭建HTTP Live Streaming直播系统
- C标准库源码解剖(11):扩展整数类型stdint.h和inttypes.h
- Android开发进阶(三)--初探Android平台上的定位服务(GPS)
- C标准库源码解剖(13):输入输出函数stdio.h
- Java isfile()与exists()的区别
- 数据结构之Trie树
- SEO技术与程序员
- Myeclipse中updating indexes 的作用
- Iphone 之Timer
- pdsh、ClusterSSH和mussh集群管理软件
- C++ Builder下的音量控制