初始化:

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // 位置

if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {

// TODO: Open GPS

} else {

String bestProvider = locationManager.getBestProvider(

getLocationCriteria(), true);

// 获取位置信息

// 如果不设置查询要求,getLastKnownLocation方法传人的参数为LocationManager.GPS_PROVIDER

Location location = locationManager

.getLastKnownLocation(bestProvider);

// 监听状态

locationManager.addGpsStatusListener(gpsStatusListener);

// 绑定监听,有4个参数

// 参数1,设备:有GPS_PROVIDER和NETWORK_PROVIDER两种

// 参数2,位置信息更新周期,单位毫秒

// 参数3,位置变化最小距离:当位置距离变化超过此值时,将更新位置信息

// 参数4,监听

// 备注:参数2和3,如果参数3不为0,则以参数3为准;参数3为0,则通过时间来定时更新;两者为0,则随时刷新

// 1秒更新一次,或最小位移变化超过1米更新一次;

// 注意:此处更新准确度非常低,推荐在service里面启动一个Thread,在run中sleep(10000);然后执行handler.sendMessage(),更新位置

locationManager.requestLocationUpdates(

LocationManager.GPS_PROVIDER, 1000, 1, locationListener);

}

onDestroy时remove监听:

@Override

protected void onDestroy() {

if (locationManager != null) {

locationManager.removeGpsStatusListener(gpsStatusListener);

}

super.onDestroy();

}

位置监听:

// 位置监听

private LocationListener locationListener = new LocationListener() {

/**

* 位置信息变化时触发

*/

public void onLocationChanged(Location location) {

// location.getAltitude(); -- 海拔

updateSpeedByLocation(location);

}

/**

* GPS状态变化时触发

*/

public void onStatusChanged(String provider, int status, Bundle extras) {

switch (status) {

case LocationProvider.AVAILABLE: // GPS状态为可见时

MyLog.i("GPS", "当前GPS状态为可见状态");

break;

case LocationProvider.OUT_OF_SERVICE: // GPS状态为服务区外时

MyLog.i("GPS", "当前GPS状态为服务区外状态");

break;

case LocationProvider.TEMPORARILY_UNAVAILABLE: // GPS状态为暂停服务时

MyLog.i("GPS", "当前GPS状态为暂停服务状态");

break;

}

}

/**

* GPS开启时触发

*/

public void onProviderEnabled(String provider) {

Location location = locationManager.getLastKnownLocation(provider);

updateSpeedByLocation(location);

}

/**

* GPS禁用时触发

*/

public void onProviderDisabled(String provider) {

// updateView(null);

}

};

获取查询条件:

/**

* 返回查询条件

*

* @return

*/

private Criteria getLocationCriteria() {

Criteria criteria = new Criteria();

// 设置定位精确度 Criteria.ACCURACY_COARSE比较粗略,Criteria.ACCURACY_FINE则比较精细

criteria.setAccuracy(Criteria.ACCURACY_FINE);

criteria.setSpeedRequired(true); // 设置是否要求速度

criteria.setCostAllowed(false); // 设置是否允许运营商收费

criteria.setBearingRequired(false); // 设置是否需要方位信息

criteria.setAltitudeRequired(false); // 设置是否需要海拔信息

criteria.setPowerRequirement(Criteria.POWER_LOW); // 设置对电源的需求

return criteria;

}

GPS状态监听

// 状态监听

GpsStatus.Listener gpsStatusListener = new GpsStatus.Listener() {

public void onGpsStatusChanged(int event) {

switch (event) {

case GpsStatus.GPS_EVENT_FIRST_FIX: // 第一次定位

MyLog.i("GPS", "GPS_EVENT_FIRST_FIX");

break;

case GpsStatus.GPS_EVENT_SATELLITE_STATUS: // 卫星状态改变

GpsStatus gpsStatus = locationManager.getGpsStatus(null); // 获取当前状态

int maxSatellites = gpsStatus.getMaxSatellites(); // 获取卫星颗数的默认最大值

Iteratoriters = gpsStatus.getSatellites()

.iterator(); // 创建一个迭代器保存所有卫星

int count = 0;

while (iters.hasNext() && count <= maxSatellites) {

GpsSatellite s = iters.next();

count++;

}

MyLog.i("GPS", "Satellite Number:" + count);

break;

case GpsStatus.GPS_EVENT_STARTED: // 定位启动

MyLog.i("GPS", "GPS_EVENT_STARTED");

break;

case GpsStatus.GPS_EVENT_STOPPED: // 定位结束

MyLog.i("GPS", "GPS_EVENT_STOPPED");

break;

}

};

};

根据Location获取速度

private void updateSpeedByLocation(Location location) {

int tempSpeed = (int) (location.getSpeed() * 3.6); // m/s --> Km/h

adasSpeed = tempSpeed;

recordSpeed = tempSpeed;

nowLatitude = location.getLatitude();

nowLongitude = location.getLongitude();

MyLog.i("GPS", "Speed:" + tempSpeed);

if (recorderFront != null) {

if (recordSpeed > 0) {

recorderFront.setSpeed(recordSpeed);

recordSpeed = 0; // 清除速度

}

recorderFront.setLat(new DecimalFormat("#.00000")

.format(nowLatitude) + "");

recorderFront.setLong(new DecimalFormat("#.00000")

.format(nowLongitude) + "");

}

}

android gps 速度,Android 获取GPS速度相关推荐

  1. java编程手机gps定位_GPS 获取Gps定位信息的Android源码实例,通过这个JAVA 目,你可能学会GPS在 手机 238万源代码下载- www.pudn.com...

    文件名称: GPS下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 59 KB 上传时间: 2013-04-08 下载次数: 22 详细说明:获取Gps定位信息的A ...

  2. 获取手机Gps地理位置并获取Gps信号强弱

    在项目终需要开启gps用来获取地理位置,获取不到地理位置时发送一条广播,进行通知 1,启动服务,在服务中每隔3秒检测gps是否开启以及获取到当前的地理位置 2,将获取到的地理位置发送一条全局广播,便于 ...

  3. php exif gps,php exif_read_data() 获取GPS

    exif_read_data() 函数的作用是从 JPEG 或 TIFF 图像文件中读取 EXIF 头信息 PHP 7.2.10 版本 华为手机获取不到GPS,降版本到  7.1.28 或者 7.1. ...

  4. android网络获取经纬,Android中透过GPS或NetWork获取当前位置的经纬度

    Android中通过GPS或NetWork获取当前位置的经纬度 private double latitude=0.0; private double longitude =0.0; Location ...

  5. android 获取GPS定位,

    /** * 得到位置信息 */ private void getLocation() { // 获取位置管理服务 LocationManager locationManager; String ser ...

  6. Matlab Mobile手机版获取gps数据和加速度信号融合

    Matlab Mobile手机版获取gps数据和加速度信号融合 前言 安装matlab mobile Matlab Drive Connector 安装 Matlab Mobile 记录数据 Matl ...

  7. Android 打开 GPS 导航并获取位置信息

    原文地址为: Android 打开 GPS 导航并获取位置信息 最近在做一个 Android 项目,需要用到GPS获取位置信息,从 API 查了一下,发现获取位置信息仅需极其简单的一句即可: getL ...

  8. xamarin android gps,如何使用Xamarin在Android中同步获取GPS位置更新?

    具体来说,我正在使用Xamarin.Forms进行C#开发,但是在本机Android方面工作,编写了GPS包装类,该类可以通过依赖注入在Xamarin.Forms方面使用.在大多数情况下,关于Andr ...

  9. Android获取GPS网络定位经纬度信息

    定位一般分为是:GPS定位,WIFI定位,基站定位 和 AGPS定位 GPS定位 GPS定位需要手机GPS模块硬件支持.GPS走的是卫星通信的通道,在没有网络连接的情况下也能使用,并且通过GPS方式准 ...

  10. android获取拍摄视频的gps,关于gps:Android获取当前位置的最佳方式

    本问题已经有最佳答案,请猛点这里访问. 在以下场景中获取android当前位置的最佳方法是什么, 如果GPS不可用,请从网络提供商处获取位置 如果GPS可用并且可以获得当前位置,请从GPS提供商处获取 ...

最新文章

  1. c语言语系的命名风格和java系命名风格
  2. ubuntu18.04下安装Anaconda及numpy、matplotlib
  3. Java 并发之线程池学习
  4. Gradle学习之闭包
  5. java 扫雷 实验报告_java实现简单扫雷
  6. 中兴代工移动光猫GM620开启telnet
  7. 在阿里云注册域名后如何网站备案
  8. 完整图书馆管理系统(包含设计思路、图形界面、后台数据库)
  9. 中国神话故事中的仙佛怪关系整理
  10. 扒一扒能加速互联网的QUIC协议
  11. 【BFS】lydsy3161 孤舟蓑笠翁
  12. STM32F407三重ADC配置
  13. 什么是后端渲染?什么是前端渲染?后端渲染和前端渲染又有什么区别呢?
  14. uplload 通关纪实 pass1
  15. 文档编辑之markdown语法(typora)
  16. 【导数术】8.三角函数
  17. 电子杂志设计制作手册
  18. 手机出现这4种问题,才是换手机的最佳时期,别被谣言给骗了
  19. Linux free -m 详解命令
  20. if函数三个条件怎么填c语言,if同时满足三个条件怎么写

热门文章

  1. LDAP DirectoryEntry access AD User
  2. java索引越界异常_索引越界异常java
  3. flowable工作流所有业务概念
  4. 2023计算机毕业设计SSM最新选题之java不忘初心主题教育管理系统kn89g
  5. 数字逻辑复习总结(超全!内含例题!)
  6. 如何搭建视频点播服务
  7. 利用计算机发布调度命令时必须严格遵守,调度命令规范格式(22页)-原创力文档...
  8. 极通EWEBS 常见问题及其解决办法
  9. Python 打造最强表白程序(源码)
  10. 赶紧收藏!不可多得的Instagram运营技巧