当前位置:操作系统 > 安卓/Android >>

Android开发进阶(三)--初探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" /> 
 
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


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("你当前的位置:");  www.zzzyk.com
 
          StringBuilder sb=new StringBuilder("你当前的位置(经纬度):"); 
 
          sb.append("("); 
 
      

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,