代码改变世界

位置信息的取得/GPS的使用

2010-08-25 18:17  Alex77Lee  阅读(643)  评论(0编辑  收藏  举报

这里位置信息的取得/GPS的使用
    android.location.LocationManager类
    android.location.LocationListener接口
    android.location.Location类
    android.location.LocationProvider类

LocationManager
● LocationManager实例的取得,调用Context.getSystemService(LOCATION_SERVICE)方法。
● 位置信息更新的取得,调用requestLocationUpdates()方法。
        第1个参数,LocationManager.GPS_PROVIDER
        第4个参数,LocationListener实例
● 不需要位置信息更新的时候,调用removeUpdates()方法。
    必须像下面那样定义AndroidManifest.xml。

<uses-permission android:name="android.permission.android.permission.ACCESS_FINE_LOCATION"/>
※不使用LocationManager.GPS_PROVIDER,而使用LocationManager.NETWORK_PROVIDER的时候,必须指定ACCESS_COARSE_LOCATION。

LocationListener
● 在取得GPS位置信息的类里实现LocationListener接口。
● 位置信息更新的时候,会触发onLocationChanged()事件
● 这个时候,通过作为参数传递过来的Location可以取得位置信息。
● 位置信息状态更新的时候,会触发onStatusChanged()事件

Location
● Latitude(纬度)的取得,调用getLatitude()方法
● Longitude(经度)的取得,调用getLongitude()方法
● Accuracy(精度)的取得,调用getAccuracy()方法
● (高度)的取得,调用getAltitude()方法
● Time的取得,调用getTime()方法
● Speed的取得,调用getSpeed()方法
● Bearing的取得,调用getBearing()方法

 

package com.adakoda.locationtest;

import android.app.Activity;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.util.Log;

public class LocationTestActivity extends Activity implements LocationListener {
    private LocationManager mLocationManager;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
    }
   
    @Override
    protected void onResume() {
        if (mLocationManager != null) {
            mLocationManager.requestLocationUpdates(
                LocationManager.GPS_PROVIDER,
//                LocationManager.NETWORK_PROVIDER,
                0,
                0,
                this);
        }
       
        super.onResume();
    }
   
    @Override
    protected void onPause() {
        if (mLocationManager != null) {
            mLocationManager.removeUpdates(this);
        }
       
        super.onPause();
    }
    @Override
    public void onLocationChanged(Location location) {
        Log.v("----------", "----------");
        Log.v("Latitude", String.valueOf(location.getLatitude()));
        Log.v("Longitude", String.valueOf(location.getLongitude()));
        Log.v("Accuracy", String.valueOf(location.getAccuracy()));
        Log.v("Altitude", String.valueOf(location.getAltitude()));
        Log.v("Time", String.valueOf(location.getTime()));
        Log.v("Speed", String.valueOf(location.getSpeed()));
        Log.v("Bearing", String.valueOf(location.getBearing()));
    }

    @Override
    public void onProviderDisabled(String provider) {

    }

    @Override
    public void onProviderEnabled(String provider) {

    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        switch (status) {
        case LocationProvider.AVAILABLE:
            Log.v("Status", "AVAILABLE");
            break;
        case LocationProvider.OUT_OF_SERVICE:
            Log.v("Status", "OUT_OF_SERVICE");
            break;
        case LocationProvider.TEMPORARILY_UNAVAILABLE:
            Log.v("Status", "TEMPORARILY_UNAVAILABLE");
            break;
        }
    }
}