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 ,