LocationUtils

  1 import android.content.Context;
  2 import android.location.Criteria;
  3 import android.location.Location;
  4 import android.location.LocationListener;
  5 import android.location.LocationManager;
  6 import android.util.Log;
  7 
  8 import java.util.List;
  9 
 10 public class LocationUtils {
 11 
 12     /**
 13      * 火星坐标
 14      */
 15     public static LocationManager getLocationManager(Context context) {
 16 
 17         return (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
 18     }
 19 
 20     /**
 21      * GPS定位更精确,缺点是只能在户外使用,耗电严重,并且返回用户位置信息的速度远不能满足用户需求
 22      */
 23     public static String getGPSProvider() {
 24 
 25         return LocationManager.GPS_PROVIDER;
 26     }
 27 
 28     /**
 29      * 通过基站和Wi-Fi信号来获取位置信息,室内室外均可用,速度更快,耗电更少
 30      */
 31     public static String getNETWORKProvider() {
 32 
 33         return LocationManager.NETWORK_PROVIDER;
 34     }
 35 
 36     /**
 37      * 无源定位 (综合所有的定位方式,得出最准确的结果)
 38      */
 39     public static String getPassvieProvider() {
 40 
 41         return LocationManager.PASSIVE_PROVIDER;
 42     }
 43 
 44     /**
 45      * 获取当前环境下最好的Provider
 46      */
 47     public static String getBestProvider(Context context) {
 48 
 49         Criteria criteria = new Criteria();
 50         criteria.setAccuracy(Criteria.ACCURACY_FINE); // 定位的精准度
 51         criteria.setAltitudeRequired(false); // 海拔信息是否关注
 52         criteria.setBearingRequired(false); // 对周围的事物是否关心
 53         criteria.setCostAllowed(false); // 是否支持收费查询
 54         criteria.setPowerRequirement(Criteria.POWER_LOW); // 是否耗电
 55         criteria.setSpeedRequired(false); // 对速度是否关注
 56         // true 代表从打开的设备中查找
 57         return getLocationManager(context).getBestProvider(criteria, true);
 58     }
 59 
 60     /**
 61      * 获取所有的Provider
 62      */
 63     public static List<String> getAllProviders(Context context) {
 64 
 65         return getLocationManager(context).getAllProviders();
 66     }
 67 
 68     /**
 69      * 记住转为火星坐标
 70      */
 71     public static void openUpdate(Context context, String provider, LocationListener mLocationListener) {
 72         try {
 73             //第二个参数minTime:两次定位用户位置的最小间隔时间(毫秒)
 74             //第三个参数minDistance: 两次定位用户位置的最小距离(米)
 75             getLocationManager(context).requestLocationUpdates(provider, 0, 0, mLocationListener);
 76 
 77         } catch (SecurityException e) {
 78             e.printStackTrace();
 79             Log.e("LocationUtils", "openUpdate--->权限拒绝");
 80         }
 81     }
 82 
 83     /**
 84      * 耗电量很大的,不用的话就关掉吧
 85      */
 86     public static void closeUpdate(Context context, LocationListener mLocationListener) {
 87         try {
 88             getLocationManager(context).removeUpdates(mLocationListener);
 89         } catch (SecurityException e) {
 90             e.printStackTrace();
 91             Log.e("LocationUtils", "openUpdate--->权限拒绝");
 92         }
 93     }
 94 
 95     /**
 96      * 获取缓存中的位置信息  x = location.getLongitude() , y = location.getLatitude()
 97      */
 98     public static Location getLastLocation(Context context, String provider) {
 99         Location location = new Location(provider);
100         // 默认天安门坐标
101         location.setLatitude(39.90960456049752);
102         location.setLongitude(116.3972282409668);
103         try {
104             location = getLocationManager(context).getLastKnownLocation(provider);
105 
106         } catch (SecurityException e) {
107             e.printStackTrace();
108             Log.e("LocationUtils", "openUpdate--->权限拒绝");
109         }
110         return location;
111     }
112 
113 }

 

转载于:https://www.cnblogs.com/gg1992/p/5490089.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值