2、在AndroidManifest.xml文件里面加上以下的权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
3、通过LocationListener来获得位置
LocationManager是整个Location Services的核心类,通过getSystemService(Context.LOCATION_SERVICE)来获得LocationManager的对象。
import android.location.*;
private LocationManager mService;
private LocationListener mListener = new LocationListener()
{
// 底层获得的位置会通过这个接口上报给应用
public void onLocationChanged(Location location)
{
}
// 如果GPS/A-GPS没有使能会通过这个接口通知应用
public void onProviderDisabled(String provider)
{
}
// GPS/A-GPS使能的时候应用也会得到通知
public void onProviderEnabled(String provider)
{
}
// 位置服务状态的变化通过这个接口上报
public void onStatusChanged(String provider, int status, Bundle extras)
{
}
}
// LocationManager是一个系统服务,必须通过getSystemService来获得
mService = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
try {
// 请求使用GPS,应用需要处理抛出的以下异常
mService.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mListener);
} catch (SecurityException ex1) {
} catch (IllegalArgumentException ex2) {
} catch (RuntimeException ex3) {
}
...
try {
// 使用完毕需要remove
mService.removeUpdates(mListener);
} catch (IllegalArgumentException ex) {
}
private LocationManager mService;
private LocationListener mListener = new LocationListener()
{
// 底层获得的位置会通过这个接口上报给应用
public void onLocationChanged(Location location)
{
}
// 如果GPS/A-GPS没有使能会通过这个接口通知应用
public void onProviderDisabled(String provider)
{
}
// GPS/A-GPS使能的时候应用也会得到通知
public void onProviderEnabled(String provider)
{
}
// 位置服务状态的变化通过这个接口上报
public void onStatusChanged(String provider, int status, Bundle extras)
{
}
}
// LocationManager是一个系统服务,必须通过getSystemService来获得
mService = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
try {
// 请求使用GPS,应用需要处理抛出的以下异常
mService.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mListener);
} catch (SecurityException ex1) {
} catch (IllegalArgumentException ex2) {
} catch (RuntimeException ex3) {
}
...
try {
// 使用完毕需要remove
mService.removeUpdates(mListener);
} catch (IllegalArgumentException ex) {
}
如果使用A-GPS,只需要在requestLocationUpdates的时候指明使用LocationManager.AGPS_PROVIDER即可。