没有要求用第三方的定位,我就用Gps了,反正只是上传经纬度到服务器,根据项目我是在service里写的
创建一个service,manifest里记得配置下

public class GpsService extends Service {

private LocationManager mLoactionManager;
protected CompositeDisposable mDisposable = new CompositeDisposable();
protected MaYiApiService apiService = RetrofitHelper.getApiService();
public static final String TAG = "GpsService";
private Location location;
String mToken;
@Override
public void onCreate() {Log.d(TAG, "onCreate() executed");super.onCreate();SharedPreferences sp = getSharedPreferences("userInfo", MODE_PRIVATE);mToken = sp.getString("Token", "");mLoactionManager = (LocationManager) getSystemService(LOCATION_SERVICE);//判断GPS是否正常启动if (!mLoactionManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {CommonUtils.showToast(getApplicationContext(), "请开启GPS导航...");//返回开启GPS导航设置界面Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);return;}
}@Override
public int onStartCommand(Intent intent, int flags, int startId) {Log.d(TAG, "onStartCommand() executed");//为获取地理位置信息时设置查询条件String bestProvider = mLoactionManager.getBestProvider(getCriteria(), true);//获取位置信息//如果不设置查询要求,getLastKnownLocation方法传人的参数为LocationManager.GPS_PROVIDERif (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {CommonUtils.showToast(getApplicationContext(), "请添加gps权限");return flags;}Location location = mLoactionManager.getLastKnownLocation(bestProvider);CommonUtils.showToast(getApplicationContext(),"hah"+location);showLOcation(location);mLoactionManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,600000,1, locationListener);return super.onStartCommand(intent, flags, startId);}@Override
public void onDestroy() {Log.d(TAG, "onDestroy() executed");super.onDestroy();mLoactionManager.removeUpdates(locationListener);}//位置监听
private LocationListener locationListener = new LocationListener() {/*** 位置信息变化时触发*/public void onLocationChanged(Location location) {showLOcation(location);Log.i(TAG, "时间:" + location.getTime());Log.i(TAG, "经度:" + location.getLongitude());Log.i(TAG, "纬度:" + location.getLatitude());Log.i(TAG, "海拔:" + location.getAltitude());}/*** GPS状态变化时触发*/public void onStatusChanged(String provider, int status, Bundle extras) {switch (status) {//GPS状态为可见时case LocationProvider.AVAILABLE:Log.i(TAG, "当前GPS状态为可见状态");break;//GPS状态为服务区外时case LocationProvider.OUT_OF_SERVICE:Log.i(TAG, "当前GPS状态为服务区外状态");break;//GPS状态为暂停服务时case LocationProvider.TEMPORARILY_UNAVAILABLE:Log.i(TAG, "当前GPS状态为暂停服务状态");break;}}/*** GPS开启时触发*/public void onProviderEnabled(String provider) {if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {CommonUtils.showToast(getApplicationContext(), "请添加gps权限");return;}Location location = mLoactionManager.getLastKnownLocation(provider);showLOcation(location);}/*** GPS禁用时触发*/public void onProviderDisabled(String provider) {showLOcation(null);}};private void showLOcation(Location location){if (location!=null){PostInfoBean.PostInfoGps postInfoGps = new PostInfoBean.PostInfoGps();postInfoGps.setLat((float) location.getLatitude());postInfoGps.setLon((float)location.getLongitude());String postInfoStr = GsonSingle.getInstance().toJson(postInfoGps);RequestBody body = RequestBody.create(MediaType.parse("application/json"), postInfoStr);//联网上传经纬度mDisposable.add(apiService.getGps(mToken,body).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<Messagebean>() {@Overridepublic void accept(@NonNull Messagebean s) throws Exception {}}, new Consumer<Throwable>() {@Overridepublic void accept(@NonNull Throwable throwable) throws Exception {}}));}else{CommonUtils.showToast(getApplicationContext(),"没有获取到经纬度");}}@Nullable
@Override
public IBinder onBind(Intent intent) {return null;
}/*** 返回查询条件* @return*/
private Criteria getCriteria(){Criteria criteria=new Criteria();//设置定位精确度 Criteria.ACCURACY_COARSE比较粗略,Criteria.ACCURACY_FINE则比较精细criteria.setAccuracy(Criteria.ACCURACY_FINE);//设置是否要求速度criteria.setSpeedRequired(false);// 设置是否允许运营商收费criteria.setCostAllowed(false);//设置是否需要方位信息criteria.setBearingRequired(false);//设置是否需要海拔信息criteria.setAltitudeRequired(false);// 设置对电源的需求criteria.setPowerRequirement(Criteria.POWER_LOW);return criteria;
}
}

在需要启动的时候调用
Intent startIntent = new Intent(context, GpsService.class);
startService(startIntent);
不用的就停止
Intent startIntent = new Intent(context, GpsService.class);
stopService(startIntent);

使用Gps获取经纬度相关推荐

  1. 可运行的GPS获取经纬度和获取基站例子(环境Android Studio 3.5.2扒拉能运行的例子找到太辛苦了要么版本太老。)

    可运行的GPS获取经纬度和获取基站例子(环境Android Studio 3.5.2扒拉能运行的例子找到太辛苦了要么版本太老.) 为了检测GPS和基站修改结果,结合网络例子.单独抠出来可运行实例,GP ...

  2. Android通过手机GPS获取经纬度方法

    android 调用gps获取经纬度的方法大同小异,实则差不了多少.但是使用起来,有的方法看起来很冗杂,而且很不好用.下面为大家介绍中很简单的方法,而且是实时监听位置的变化. 首先定义: privat ...

  3. Android--使用手机GPS获取经纬度

    Android–使用手机GPS获取经纬度 <div class="article_manage clearfix"><div class="articl ...

  4. 【Unity】中如何通过GPS获取设备经纬度(测试脚本)

    在游戏开发中需要使用gps获取经纬度坐标定位玩家的当前位置,那么在开发过程中这个功能容不容易实现呢?下面就给大家介绍下Unity中获取设备经纬度的方法,一起来看看吧. Unity使用GPS 的API ...

  5. Unity GPS定位之逆地理编码(获取经纬度并转换成地理位置)

    unity定位 前言 最近在做一款手游,然后策划给的需求就是定位到当前用户所在的城市,然后花了一个上午给做了出来,思路大概就是通过手机定位获取到当前位置的经度和纬度,然后通过各个地图(我这里用的是百度 ...

  6. shineblink NEO-6M GPS模块获取经纬度/海拔/时间详解

    NEO-6M GPS模块获取经纬度/海拔/时间 一.本例程实现功能 二. GPS使用说明 三.接线图 五.完整代码 六.代码运行结果 七.坐标系转换(需注意): 一.本例程实现功能 通过NEO-6M ...

  7. android gps 获取方位_Android GPS获取当前经纬度坐标

    APP中可能会遇到一种需求,就是将当前所在位置的坐标传到服务器上,今天我提供三种途径去获取经纬度坐标信息,第一种是通过Android API来实现,第二种通过百度地图API来实现,第三种通过天地图AP ...

  8. 安卓(android)使用GPS,获取经纬度

    android获取经纬度,有这个两个类需要用: 1.LocationManager位置管理器 2.Location位置类 第一步:获取LocationManager实例 locationManager ...

  9. android 通过GPS获取用户地理位置并监听位置变化

    1 Location Manager 管理服务 2 Location Provider 提供数据的content provider 方式一:GPS 特点:精度高,耗电量大,不耗费流量 权限<us ...

  10. 全球地区资料json 含中英文 经纬度_爬虫实战(三)使用百度API获取经纬度/地址...

    点击上方"蓝字"关注我们百度API获取经纬度/地址Mar 28, 2020 本期介绍给定地址/经纬度,使用百度API来获取经纬度/地址. 本文约3k字,预计阅读18分钟. 本次是第 ...

最新文章

  1. Stuart Russell:智能本质和人工智能安全的巨大挑战
  2. js知识点 掘金_关于webpack4的14个知识点,童叟无欺
  3. 怎么向tab control中加其它控件(如文本框等)
  4. 网易云音乐android api_网易云音乐怎么发布个人Mlog?网易云音乐发布个人Mlog的教程介绍...
  5. vs工程移植报错:缺少MSVCP140D.dll ,CONCRT140D.dll ucrtbased.dll vcruntime140d.dll错误。
  6. [Java基础]字节流读数据
  7. param注解报错_mybatis不加@Parm注解报错的解决方案
  8. 浅析 Linux 初始化 init 系统,第 3 部分: Systemd
  9. CSS3 选择器总结(表格版)
  10. 常见 CentOS 7 安装问题
  11. podspec文件介绍
  12. java.lang.IllegalStateException: Web app root system property already set to different value
  13. 【精华】PS十大抠图技法(上)
  14. [Pytorch系列-71]:生成对抗网络GAN - 图像生成开源项目pytorch-CycleGAN-and-pix2pix - 使用预训练模型训练pix2pix模型
  15. SkyWalking8.7源码解析(三):静态方法插桩、构造器和实例方法插桩、插件拦截器加载流程、JDK类库插件工作原理
  16. Ubuntu系统挂载大于2T新硬盘方法
  17. 程序员找工作-----人力资源面试题
  18. CCF-20180901 卖菜
  19. USB1.1学习笔记
  20. 手把手教你设计短信验证码

热门文章

  1. BS7799与ISO17799的发展历程
  2. ADC模数转换(XPT2046)
  3. 度度熊的午饭时光[2017百度之星资格赛 1004]
  4. 2021年危险化学品经营单位安全管理人员考试报名及危险化学品经营单位安全管理人员作业考试题库
  5. junit单元测试步骤
  6. EnableQ在线问卷调查引擎在学校教学教评中的作用
  7. C# TextBox 自动换行问题解决
  8. 爱的十个秘密--7.舍弃的力量
  9. 电脑桌面图标变成长方形咋办_电脑桌面图标间距自动变宽为什么
  10. uni-app 生成安卓证书