import static android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
public class LocationUtil {
public static boolean isEnabled(Context context) {
LocationManager mLocationManager = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);
if (mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
return true;
}
if (mLocationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
return true;
}
return false;
}
public static void startLocationService(Context context) {
LocationManager mLocationManager = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
1000L, 10, mLocationListener);
mLocationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 1000L, 10,
mLocationListener);
}
public static void stopLocationService(Context context) {
LocationManager mLocationManager = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);
mLocationManager.removeUpdates(mLocationListener);
}
public static Location getLocationByGPS(Context context) {
LocationManager mLocationManager = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);
Location location = mLocationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
return location;
}
public static Location getLocationByNetwork(Context context) {
LocationManager mLocationManager = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);
Location location = mLocationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
return location;
}
public static void openLocationSetting(Activity act, int requestCode) {
act.startActivityForResult(new Intent(ACTION_LOCATION_SOURCE_SETTINGS),
requestCode);
}
private static final LocationListener mLocationListener = new LocationListener() {
public void onLocationChanged(Location location) {
// 當座標改變時觸發此函數,如果Provider傳進相同的座標,它就不會被觸發
System.out.println("onLocationChanged:" + location.getLatitude());
}
public void onProviderDisabled(String provider) {
// Provider被disable時觸發此函數,比如GPS被關閉
System.out.println("onProviderDisabled:" + provider);
}
public void onProviderEnabled(String provider) {
// Provider被enable時觸發此函數,比如GPS被打開
System.out.println("onProviderEnabled:" + provider);
}
public void onStatusChanged(String provider, int status, Bundle extras) {
// Provider的轉態在可用、暫時不可用和無服務三個狀態直接切換時觸發此函數
System.out.println("onStatusChanged:" + status);
}
};
}
需要增加權限:
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION" />
---------------------------------------------------------------------------
GL(arui319)
http://blog.csdn.net/arui319
<本文可以轉載,但是請保留以上作者信息。謝謝。>
---------------------------------------------------------------------------
/**************************************************** 華麗分割 *****************************************/
獲取到location後能得到經緯度了,也能解析地址了
private List<Address> getAddressbyGeoPoint(Location location) {
List<Address> result = null;
try {
if (location != null) {
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
result = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}