GPSInfoProvider定位
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定位相关推荐
- 手机卫士10-手机被盗后定位实现
好啦,废话不多说,我们进入主题,今天我们要继续上一次讲的,就是手机被盗之后,获得手机所在的位置. 上一次,我们说到了,如果我们的sim卡被人换掉了,那么就会发送一条短信到我们的原来设定的安全号码那里的 ...
- 2021-2027年中国室内定位市场研究及前瞻分析报告
[报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国室内定位行业市场行业相关概述.中国室内定 ...
- 如何定位并优化慢查询Sql
根据慢日志定位慢查询SQL. 查询慢日志相关变量,并进行设置: 主要关注下述三个变量: long_query_time.show_query_log_file.show_query_log 慢查询sq ...
- Redis 笔记(13)— scan 和 keys 寻找特定前缀key 字段(命令格式、使用示例、定位大key)
1. keys Redis 提供了一个简单暴力的指令 keys 用来列出所有满足特定正则字符串规则的 key. 127.0.0.1:6379> keys * (empty array) 127. ...
- 深度学习LiDAR定位:L3-Net
深度学习LiDAR定位:L3-Net 摘要 本文提出L3-Net--一种新颖的基于学习的LiDAR定位系统,可实现厘米级的定位,与现有最高水平的传统定位算法相媲美.与传统定位算法不同,本文创新地实现了 ...
- CPU消耗,跟踪定位理论与实践
CPU消耗,跟踪定位理论与实践 一.性能指标之资源指标定位方案 1.打tprof报告方法 抓取perfpmr文件 60秒. perfpmr.sh 60 从结果文件中取出tprof.sum 或直接抓取t ...
- 视频动作定位的分层自关注网络:ICCV2019论文解析
视频动作定位的分层自关注网络:ICCV2019论文解析 Hierarchical Self-Attention Network for Action Localization in Videos 论文 ...
- 摄像头定位:ICCV2019论文解析
摄像头定位:ICCV2019论文解析 SANet: Scene Agnostic Network for Camera Localization 论文链接: http://openaccess.the ...
- 百度地图android室内定位,百度地图4.0正式发布,主打免费语音导航、室内定位、实时公交和生活搜索 (视频)...
自2010年10月百度地图在塞班平台上线了第一个版本以后,陆续登陆了Android和iPhone平台,据百度地图团队介绍,其最新的用户数已达7000万.今天,百度地图4.0 正式发布(iPhone版 ...
最新文章
- neo4j仅仅删除关系的语句,注意neo4j是不能删除含有关系的节点的
- ★教师工资为什么这么低?/整理
- ESP8266--学习笔记(八)串口源码分析
- Python 3基础教程32-正则
- 三星电子推出X-net架构用于语音通话
- iOS开发-开发总结(四)
- linux下使用cmake构建C/C++项目
- 开发者们都在关注的网站
- windows下使用Caffe框架和matlab实现SRCNN官方代码的步骤
- 电子计算机工程 专业大学排名,电子与计算机工程专业大学排名 2021全国排行榜...
- 所闻所获3:下拉刷新控件1
- win7未能成功安装驱动服务器,win7插入鼠标提示未能成功安装设备驱动程序的解决办法...
- Android 智能聊天机器人demo(类似小爱同学)
- Vue中数组的响应式操作
- 经历了6面,终于入职蚂蚁金服
- 公有云、私有云、混合云
- 解决安装tensorflow-gpu:ImportError: DLL load failed:找不到指定的模块。从根源解决问题
- Crypto one-time-pad
- Spring Cloud Alibaba之Nacos
- cant download je-7.4.5.jar with maven [ com.sleepycat:je:jar:7.4.5 ]