|
@@ -262,30 +262,37 @@ public class SystemUtil {
|
262
|
262
|
public static Location getLocation(Context context) {
|
263
|
263
|
Location data = null;
|
264
|
264
|
try {
|
265
|
|
- String locationProvider = "";
|
266
|
265
|
LocationManager systemService = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
|
|
266
|
+ String bestProvider = "";
|
267
|
267
|
List<String> providers = systemService.getProviders(true);
|
268
|
|
- if (providers.contains(LocationManager.GPS_PROVIDER)) {
|
269
|
|
- locationProvider = LocationManager.GPS_PROVIDER;
|
|
268
|
+ /* if (providers.contains(LocationManager.GPS_PROVIDER)) {
|
|
269
|
+ bestProvider = LocationManager.GPS_PROVIDER;
|
270
|
270
|
} else if (providers.contains(LocationManager.NETWORK_PROVIDER)) {
|
271
|
|
- locationProvider = LocationManager.NETWORK_PROVIDER;
|
|
271
|
+ bestProvider = LocationManager.NETWORK_PROVIDER;
|
272
|
272
|
} else {
|
273
|
273
|
return data;
|
274
|
|
- }
|
275
|
|
- Criteria criteria = new Criteria();
|
|
274
|
+ }*/
|
|
275
|
+ /* Criteria criteria = new Criteria();
|
276
|
276
|
criteria.setAltitudeRequired(false);
|
277
|
277
|
criteria.setBearingRequired(false);
|
278
|
278
|
criteria.setAccuracy(Criteria.ACCURACY_FINE);
|
279
|
279
|
criteria.setCostAllowed(true);
|
280
|
|
- String bestProvider = systemService.getBestProvider(criteria, true);
|
|
280
|
+ bestProvider = systemService.getBestProvider(criteria, true)
|
|
281
|
+ data = systemService.getLastKnownLocation(bestProvider);
|
|
282
|
+ ;*/
|
|
283
|
+
|
281
|
284
|
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED &&
|
282
|
285
|
ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
|
283
|
|
- data = systemService.getLastKnownLocation(bestProvider);
|
284
|
|
- if (data != null) {
|
285
|
|
- LogUtils.d("获得地理位置", "经度" + data.getLongitude() + "|||维度==" + data.getLatitude());
|
286
|
|
- } else {
|
287
|
|
- LogUtils.d("获得地理位置", "没有地址");
|
|
286
|
+ for (String provider : providers) {
|
|
287
|
+ Location lastKnownLocation = systemService.getLastKnownLocation(provider);
|
|
288
|
+ if (lastKnownLocation==null){
|
|
289
|
+ continue;
|
|
290
|
+ }
|
|
291
|
+ if (data==null||lastKnownLocation.getAccuracy()<data.getAccuracy()){
|
|
292
|
+ data=lastKnownLocation;
|
|
293
|
+ }
|
288
|
294
|
}
|
|
295
|
+ return data;
|
289
|
296
|
}
|
290
|
297
|
} catch (Exception e) {
|
291
|
298
|
LogUtils.d("获得地理位置", "失败原因" + e.toString());
|