package com.sfdj.salebaby.utils;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
import android.content.Context;
import android.location.Address;
import android.location.Criteria;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.util.Log;
import android.os.Bundle;
public class LocationTools {
private Location location;
public static LocationManager getLocationManager(Context context) {
return (LocationManager) context
.getSystemService(context.LOCATION_SERVICE);
}
// 擷取位置資訊
public String getAddress(Context context) {
LocationManager locationManager = this.getLocationManager(context);
if (!locationManager
.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) {
// 打開GPS 需Android2.2以上系統支援
android.provider.Settings.Secure.setLocationProviderEnabled(
context.getContentResolver(), LocationManager.GPS_PROVIDER,
false);
}
return doWork(context);
}
private String doWork(Context context) {
String addres = "";
LocationManager locationManager = this.getLocationManager(context);
Criteria criteria = new Criteria();
// 獲得最好的定位效果
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(false);
// 使用省電模式
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);
Log.i("provider>>>>>>", provider);
// 獲得目前位置 location為空是一直取 從onLocationChanged裡面取
while (location == null) {
location = locationManager.getLastKnownLocation(provider);
}
// locationListener
LocationListener locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
LocationTools.this.location = location;
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
}
};
locationManager.requestLocationUpdates(provider, 1000, 10,
locationListener);
Geocoder geo = new Geocoder(context, Locale.getDefault());
try {
List
address = geo.getFromLocation(location.getLatitude(),
location.getLongitude(), 1);
if (address.size() > 0) {
addres = address.get(0).getAddressLine(0);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return addres;
}
}
原文:http://blog.csdn.net/wuxin782515516/article/details/46367309