Android GPS源码分析总结

Android GNSS 模块分析(一)整体介绍 - App Android GNSS;定位服务;GPS;NMEA协议;LocationManagerService;导航; 阅读详情

Android GPS源码分析总结


本篇主要包括如下内容:
1. 术语介绍
2. 应用层开发总结
3. framework分析
4. HAL层接口介绍


1. 术语介绍
1.1 GNSS

GNSS为Global Navigation Satellite System的缩写,即全球导航卫星系统。当前应用较广泛的主要有美国的GPS、俄罗斯的GLONASS、欧盟的GALILEO和中国北斗卫星导航系统等4大GNSS系统。


1.2 NMEA-0183
NMEA 0183是美国国家海洋电子协会(National Marine Electronics Association )为海用电子设备制定的标准格式。目前业已成了GPS导航设备统一的RTCM(Radio Technical Commission for Maritime services)标准协议。

NMEA-0183协议采用ASCII码,定义的语句非常多,但是常用的只有$GPGGA、$GPGSA、$GPGSV、$GPRMC、$GPVTG、$GPGLL等。举个例子如下:

$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*hh<CR><LF>
<1> UTC时间,hhmmss(时分秒)格式
<2> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输)
<3> 纬度半球N(北半球)或S(南半球)
<4> 经度dddmm.mmmm(度分)格式(前面的0也将被传输)
<5> 经度半球E(东经)或W(西经)
<6> GPS状态:0=未定位,1=非差分定位,2=差分定位,6=正在估算
<7> 正在使用解算位置的卫星数量(00~12)(前面的0也将被传输)
<8> HDOP水平精度因子(0.5~99.9)
<9> 海拔高度(-9999.9~99999.9)
<10> 地球椭球面相对大地水准面的高度
<11> 差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)
<12> 差分站ID号0000~1023(前面的0也将被传输,如果不是差分定位将为空)


1.3 GIS
地理信息系统(GIS,Geographic Information System)是一门综合性学科,结合地理学与地图学以及遥感和计算机科学,已经广泛的应用在不同的领域,是用于输入、存储、查询、分析和显示地理数据的计算机系统,随着GIS的发展,也有称GIS为“地理信息科学”(Geographic Information Science),近年来,也有称GIS为"地理信息服务"(Geographic Information service)。

1.4 地理编码
  地理编码指将地名的详细地址以地理坐标(如经纬度)表示的过程。其中,将地址信息映射为地理坐标的过程称之为地理编码;将地理坐标转换为地址信息的过程称之为逆地理编码。

2. 应用层开发
2.1 AndroidManifest.xml中权限添加
<uses-permission android:name="android.permission.INTERNET" />     
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />     
<uses-permission android:name="android.permission.ACCESS_FIND_LOCATION" />    
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> 
2.2 Interfaces

GpsStatus.Listener This interface was deprecated in API level 24. use GnssStatus.Callback instead. 
GpsStatus.NmeaListener This interface was deprecated in API level 24. use 
android9:GPS模块-源码调用流程 参考文章:https://blog.youkuaiyun.com/grekit_sun/article/details/109469351 参考:https://blog.youkuaiyun.com/pangsurong/article/details/73912714?utm_medium=distribute.pc_relevant.none-task-blog-title-11&spm=1001.2101.3001.4242 参考:https://blog.youkuaiyun.com/weixin_45244289/article/ 阅读详情

相关推荐

RK3568平台开发系列:深入了解Android中的GNSS

在Android开发中,RK3568平台为我们提供了强大的GNSS功能,使我们能够在应用程序中轻松获取位置信息。通过以上代码,我们可以在RK3568平台上使用Android的GNSS功能获取设备的位置信息,并实时跟踪位置的变化。在开始之前,确保你的RK3568平台已经正确配置了GNSS硬件和相关的驱动程序。除了获取设备的最新位置信息外,我们还可以注册位置更新的监听器,以便在位置发生变化时得到通知。接下来,我们需要在应用程序中获取GNSS定位服务的实例。这个类提供了一种简便的方式来获取设备的位置信息。

techDM的博客 653

安卓10源码开发定制(21)GPS定位研究(2)gps位置改变监听源码分析

安卓10源码开发定制(21)GPS定位研究(2)gps位置改变监听 一、安卓中GPS定位更新监控 在安卓很多提供定位服务的App应用程序中,不仅需要获取当前的位置信息,还需要监视位置的变化,在位置改变时获取到当前的位置信息。gps定位中,LocationManager提供了一种便捷、高效的位置监视方法requestLocationUpdates(String provider, long minTime, float minDistance,LocationListener listener),可以根据位置

xiaomaNo01的专栏 1042

深入探索Android GPS定位技术及源码分析

在现代移动应用开发中,获取用户地理位置信息是一项基本且重要的功能。Android平台通过提供丰富的API接口,使得开发者能够轻松获取和使用这些信息。本章将深入探讨Android GPS定位的源码层面,为理解定位机制的实现细节打下基础。全球定位系统(GPS)是一种利用24颗在轨人造卫星网络,通过测量从卫星到接收器的信号传播时间来确定地球上任何位置的用户设备的坐标的技术。每个卫星不断地向地球发送包含卫星位置和当前时间的信息的信号。

weixin_42405592的博客 1149

ArcGIS框架下的Android GPS定位源码分析与实践

全球定位系统(Global Positioning System,GPS)是通过使用地面控制站和在轨卫星来进行精确定位的技术。Android设备内置的GPS硬件能够接收来自至少四颗GPS卫星的信号,通过计算这些信号的传输时间差,可以算出设备当前的地理位置。ArcGIS Runtime SDK for Android是Esri公司推出的,用于构建和部署Android平台上的地图和地理信息系统(GIS)应用程序的软件开发工具包(SDK)。

weixin_36238982的博客 707

支持4g模块GPS功能 源码包以及测试工具.zip

Android版本4g模块适配GPS功能 gnss2.0源码以及GPS搜星测试工具,适用于Android11以上版本。测试时GPS天线必须使用专用天线,一般的天线信号强度太弱搜不到卫星信号。Google要求最新android10必须用gnss 1.1以上,android11要求gnss 2.0以上。 1. 下载gnss 2.0版本软件包后解压,更新源码hardware\interfaces\gnss\2.0\default\ 目录,更新后在这个目录下执行下 “touch *”,确保编译时候能识别到更新。 2. device.mk编译添加: PRODUCT_PACKAGES += \ android.hardware.gnss@2.0-impl \ android.hardware.gnss@2.0-service 3. 将gps.default.so 放到/vendor/lib64/hw/下面(gps.default.so 文件一般可以找模块原厂提供)。

如何制作微信小程序的在线购物商城应用

首先,你需要规划好商城的整体框架,确定好你的目标用户群体,思考他们的需求是什么。接下来,使用微信开发者工具创建一个新的小程序项目,输入你的AppID,选择好保存路径,点击“创建”,一个新的商城雏形就诞生了。你可以把这里当作自己的家,无论是工作之余的小憩,还是寻找灵感的驿站,我都希望你能在这里找到属于你的那份快乐和满足。数据是现代商业的灵魂,通过数据分析,你可以更准确地把握用户的行为模式,从而做出更明智的决策。

master_chenchen的博客 2427

距离多普勒谱(RD谱)绘制方法及理解

RD谱是信号处理领域常用的图形。原始信号往往是一维时域序列,如何将其二维化,并进行变换生成RD谱呢?由于刚刚接触,查阅了网络上、老师手里的资料,发现RD谱的绘制方法并不统一,有些存在一定问题。在此,将心得体会记录下来。

mddh_123的博客 3万+

BK3296蓝牙音频SoC深度评测:如何用这颗芯片打造超低功耗TWS耳机?

本文深度评测BK3296蓝牙音频SoC在TWS耳机中的应用,重点解析其22nm工艺带来的超低功耗优势(A2DP模式仅2.8mA)和3×3mm封装设计。通过芯片架构分析、双麦降噪调优及开发套件使用指南,为工程师提供打造高性能TWS耳机的完整解决方案,显著提升续航和音频质量。

rice5的博客 654

PLC模拟量输入电路设计:±10V与±20mA信号调理全解析

在工业自动化和数据采集系统中,模拟量输入是连接物理世界与数字控制的核心桥梁。无论是变送器输出的4-20mA电流环,还是伺服驱动与信号发生器提供的±10V电压信号,PLC和采集模块都需要在复杂现场环境下稳定、精准地完成信号采集。理解信号体制的原理——电流环抗长线干扰、电压环响应快——是设计模拟输入前端的基础。通过精密电阻网络实现分压与采样,利用运放完成双极性到单极性的电平搬移,配合TVS与滤波电路保障可靠性,并经过ADC量化与校准流程,最终构建出兼顾精度、成本和工业级鲁棒性的完整信号链路。本文面向硬件工程师与

weixin_29163797的博客 298

STM32G0定时器中断实战:HAL库配置TIM2实现精准1秒LED闪烁(附完整代码)

本文深入解析了STM32G0系列微控制器中定时器中断的配置与应用,重点介绍了如何使用HAL库配置TIM2实现精准的1秒LED闪烁。通过详细讲解时钟树分析、预分频系数与自动重装载寄存器的计算原理,并结合CubeMX图形化配置与完整代码示例,帮助开发者从底层理解定时器工作机制,掌握可复用的工程化配置方法。

weixin_29194817的博客 253

从亚稳态到稳定传输:深入解析CDC跨时钟域同步的核心技术与设计实践

本文深入解析了CDC(跨时钟域同步)技术的核心问题与解决方案,重点探讨了亚稳态现象及其危害,详细介绍了同步器设计、MTBF计算方法以及单bit和多bit信号同步的实战技巧。通过Verilog代码示例和工程实践案例,帮助读者掌握从亚稳态到稳定传输的关键技术,提升数字电路设计的可靠性。

weixin_32822843的博客 246

在MATLAB和Simulink中设计并仿真一个智能建筑能效优化系统

智能建筑能效优化是现代建筑管理的重要组成部分,旨在通过智能化手段降低能源消耗、减少碳排放并提高居住舒适性。通过Simulink进行智能建筑能效优化仿真,可以验证控制策略的有效性、优化系统设计并降低开发成本。以下是如何在MATLAB和Simulink中设计并仿真一个智能建筑能效优化系统的详细步骤。通过上述步骤,我们成功设计并实现了基于Simulink的智能建筑能效优化仿真。该系统能够模拟复杂的建筑环境,验证能效优化策略的有效性,并通过优化设计提高建筑的能源利用效率和居住舒适性。

xiaoheshang_123的博客 138

手把手入门YOLO到改进优化教程专栏介绍与说明——列表目录查阅(持续更新)

手把手入门YOLO到改进优化教程专栏介绍与说明——列表目录查阅(持续更新)

嵌入式阿齐Archie 2万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: gcc笔记
下一篇: 汇编语言笔记
东晋偏安
博客等级 码龄18年 939粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值