2019独角兽企业重金招聘Python工程师标准>>>

public class GPSInfoProvider
{private static GPSInfoProvider gpsInfoProvider;private static Context context;private static MyLocationListener listener;private LocationManager locationManager;private GPSInfoProvider(){}/*** 为了让这个方法一定执行完,所以我们加入了synchronized来修饰* @return*/public static synchronized GPSInfoProvider getInstance(Context context){if(gpsInfoProvider == null){gpsInfoProvider = new GPSInfoProvider();GPSInfoProvider.context = context;}return gpsInfoProvider;}/*** 获取位置* @return*/public String getLocation(){locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);String provider = getBestProvider();//这个方法是位置更新的的操作,有四个参数//第一个参数就是使用的定位设备啊,如gps,基站定位啊//第二个参数就是多长时间更新一次定位信息,太频繁了会很耗电,根据自己程序的实际需要来进行确定//第三个参数就是用户位移了多少米之后,就重新获取一次定位信息,太频繁了会很耗电,根据自己程序的实际需要来进行确定//最后一个参数就是在位置发生变化的回调方法locationManager.requestLocationUpdates(provider, 60000, 50, getListener());//locationManager.getAllProviders();//它会把所以支持的定位方式都打列出来,这样就可以知道手机所支持的定位啦SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);String location = sp.getString("lostLocation", "");return location;}//停止gpspublic void stopGPSListener(){if(locationManager != null){locationManager.removeUpdates(getListener());}}private String getBestProvider(){Criteria criteria = new Criteria();//这个是定义它的定位精度的//Criteria.ACCURACY_COARSE  这个是一般的定位//Criteria.ACCURACY_FINE  这个是精准定位criteria.setAccuracy(Criteria.ACCURACY_FINE);//设置是不是对海拔敏感的criteria.setAltitudeRequired(false);//设置对手机的耗电量,定位要求越高,越耗电criteria.setPowerRequirement(Criteria.POWER_MEDIUM);//设置对速度变化是不是敏感criteria.setSpeedRequired(true);//设置在定位时,是不是允许与运营商交换数据的开销criteria.setCostAllowed(true);//这个方法是用来得到最好的定位方式的,它有两个参数,一个是Criteria(类似于Map集合),就是一些条件,比如说对加速度敏感啊,什么海拔敏感这些的//第二个参数就是,如果我们置为false,那么我们得到的也有可能是已经关掉了的设备,如果是true那么,就只会得到已经打开了的设备return locationManager.getBestProvider(criteria, true);}//做成单例模式private synchronized MyLocationListener getListener(){if(listener == null){listener = new MyLocationListener();}return listener;}//=========================================================================private class MyLocationListener implements LocationListener{@Overridepublic void onLocationChanged(Location location){//手机位置发生改变时调用的方法String latitude = "纬度:" + location.getLatitude();//纬度String longitude = "经度:" + location.getLongitude();//经度SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);Editor editor = sp.edit();editor.putString("lastLocation", latitude + " - " + longitude);editor.commit();}@Overridepublic void onStatusChanged(String provider, int status, Bundle extras){//定位设备的状态发生改变的时候调用的方法,比如说用户把设备打开,或关闭,第二个参数就是设备的状态啦}@Overridepublic void onProviderEnabled(String provider){//设备打开的时候调用的方法}@Overridepublic void onProviderDisabled(String provider){//设备关闭的时候调用的方法}}
}

转载于:https://my.oschina.net/oppo4545/blog/199004

GPSInfoProvider定位相关推荐

  1. 手机卫士10-手机被盗后定位实现

    好啦,废话不多说,我们进入主题,今天我们要继续上一次讲的,就是手机被盗之后,获得手机所在的位置. 上一次,我们说到了,如果我们的sim卡被人换掉了,那么就会发送一条短信到我们的原来设定的安全号码那里的 ...

  2. 2021-2027年中国室内定位市场研究及前瞻分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国室内定位行业市场行业相关概述.中国室内定 ...

  3. 如何定位并优化慢查询Sql

    根据慢日志定位慢查询SQL. 查询慢日志相关变量,并进行设置: 主要关注下述三个变量: long_query_time.show_query_log_file.show_query_log 慢查询sq ...

  4. Redis 笔记(13)— scan 和 keys 寻找特定前缀key 字段(命令格式、使用示例、定位大key)

    1. keys Redis 提供了一个简单暴力的指令 keys 用来列出所有满足特定正则字符串规则的 key. 127.0.0.1:6379> keys * (empty array) 127. ...

  5. 深度学习LiDAR定位:L3-Net

    深度学习LiDAR定位:L3-Net 摘要 本文提出L3-Net--一种新颖的基于学习的LiDAR定位系统,可实现厘米级的定位,与现有最高水平的传统定位算法相媲美.与传统定位算法不同,本文创新地实现了 ...

  6. CPU消耗,跟踪定位理论与实践

    CPU消耗,跟踪定位理论与实践 一.性能指标之资源指标定位方案 1.打tprof报告方法 抓取perfpmr文件 60秒. perfpmr.sh 60 从结果文件中取出tprof.sum 或直接抓取t ...

  7. 视频动作定位的分层自关注网络:ICCV2019论文解析

    视频动作定位的分层自关注网络:ICCV2019论文解析 Hierarchical Self-Attention Network for Action Localization in Videos 论文 ...

  8. 摄像头定位:ICCV2019论文解析

    摄像头定位:ICCV2019论文解析 SANet: Scene Agnostic Network for Camera Localization 论文链接: http://openaccess.the ...

  9. 百度地图android室内定位,百度地图4.0正式发布,主打免费语音导航、室内定位、实时公交和生活搜索 (视频)...

    自2010年10月百度地图在塞班平台上线了第一个版本以后,陆续登陆了Android和iPhone平台,据百度地图团队介绍,其最新的用户数已达7000万.今天,百度地图4.0 正式发布(iPhone版 ...

最新文章

  1. neo4j仅仅删除关系的语句,注意neo4j是不能删除含有关系的节点的
  2. ★教师工资为什么这么低?/整理
  3. ESP8266--学习笔记(八)串口源码分析
  4. Python 3基础教程32-正则
  5. 三星电子推出X-net架构用于语音通话
  6. iOS开发-开发总结(四)
  7. linux下使用cmake构建C/C++项目
  8. 开发者们都在关注的网站
  9. windows下使用Caffe框架和matlab实现SRCNN官方代码的步骤
  10. 电子计算机工程 专业大学排名,电子与计算机工程专业大学排名 2021全国排行榜...
  11. 所闻所获3:下拉刷新控件1
  12. win7未能成功安装驱动服务器,win7插入鼠标提示未能成功安装设备驱动程序的解决办法...
  13. Android 智能聊天机器人demo(类似小爱同学)
  14. Vue中数组的响应式操作
  15. 经历了6面,终于入职蚂蚁金服
  16. 公有云、私有云、混合云
  17. 解决安装tensorflow-gpu:ImportError: DLL load failed:找不到指定的模块。从根源解决问题
  18. Crypto one-time-pad
  19. Spring Cloud Alibaba之Nacos
  20. cant download je-7.4.5.jar with maven [ com.sleepycat:je:jar:7.4.5 ]

热门文章

  1. Oracle数据库表设计时的注意事项
  2. 增量备份和差异备份的区别|什么是增量差异备份
  3. ADSL防御******的十大方法
  4. JavaScript中处理日期的一些函数和方法
  5. 实验1 查看CPU和内存、用机器指令和汇编指令编程
  6. NODE Stream流总结(1)
  7. 整合大数据价值最大化的三个关键因素
  8. sys.argv[]学习
  9. NIO Socket编程实例
  10. 订阅点评有奖,本人获奖了