2024-08-06升级记录:Android开发接口-获取定位卫星相关信息

Android中获取卫星信息的接口有两类:

一、GpsStatus

 注意:此类在API级别24中已被弃用。
 请使用GnssStatusGnssStatus.Callback 。

这个类表示GPS引擎的当前状态。该类与 GpsStatus.Listener接口配合使用。

方法:

获取卫星信息:

private GpsStatus.Listener gpsStatusListener = new GpsStatus.Listener() {@Overridepublic void onGpsStatusChanged(int event) {if (ActivityCompat.checkSelfPermission(myActivity, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(myActivity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION},300);return;}switch (event) {//第一次定位case GpsStatus.GPS_EVENT_FIRST_FIX:Log.i("AndroidGPS","第一次定位");iClockTag=0;//这时其实已经定位成功了GpsStatus gpsStatusA = locManager.getGpsStatus(null);int costTime=gpsStatusA.getTimeToFirstFix();MyLog.i("AndroidGPS","启动到第一次定位时间:"+costTime);MyLog.i("AndroidGPS","第一次定位时的"+sCurGPStimeShow);break;//定位启动case GpsStatus.GPS_EVENT_STARTED:Log.i("AndroidGPS","定位启动");break;//定位结束case GpsStatus.GPS_EVENT_STOPPED:Log.i("AndroidGPS","定位结束");break;//卫星状态改变case GpsStatus.GPS_EVENT_SATELLITE_STATUS://获取当前状态GpsStatus gpsStatus = locManager.getGpsStatus(null);//获取卫星颗数的默认最大值int maxSatellites = gpsStatus.getMaxSatellites();//获取所有的卫星Iterator<GpsSatellite> iters = gpsStatus.getSatellites().iterator();//卫星颗数统计int count = 0;StringBuilder sb = new StringBuilder();
//                    showStatus(iters,maxSatellites);while (iters.hasNext() && count <= maxSatellites) {GpsSatellite s = iters.next();if (s.getSnr() > 0) {//信噪比不为0才算count++;//卫星的信噪比String snr = "信噪比:" + s.getSnr();String azi = ",方位角:" + s.getAzimuth();String ele = ",高度:" + s.getElevation();String hasalm = ",是否有年历:" + s.hasAlmanac();String hasEph = ",是否有星历:" + s.hasEphemeris();sb.append("第").append(count).append("颗,").append(snr).append(azi).append(ele).append(hasalm).append(hasEph).append("\n");}}iSatellitesCount=count;MyLog.e("AndroidGPS", sb.toString());break;default:break;}}

二、GnssStatus

这个类表示GNSS引擎的当前状态。 本课程与GnssStatus.Callback一起使用。

卫星星座类型常量:

方法:

其中:

获取卫星信息:(API>24)

@RequiresApi(api = Build.VERSION_CODES.N)
GnssStatus.Callback gnsscallback = new GnssStatus.Callback() {//定期调用以报告GNSS卫星状态@Overridepublic void onSatelliteStatusChanged(GnssStatus status) {//总数量hhstar1 = status.getSatelliteCount();//如果卫星总数大于0if (status != null && status.getSatelliteCount() > 0) {//循环遍历卫星for (int i = 0; i < status.getSatelliteCount(); i++) {int id = status.getSvid(i);     //卫星idfloat DBHz = status.getCn0DbHz(i);     //卫星信号强度int type = status.getConstellationType(i);       //卫星星座类型float azimuthDegrees = status.getAzimuthDegrees(i);  //卫星方位角boolean infix = status.usedInFix(i);  //卫星是否可用于定位float elevationDegrees = status.getElevationDegrees(i);     //卫星高程boolean almanacData =status.hasAlmanacData(i);   //卫星是否具有年历数据boolean ephemerisData = status.hasEphemerisData(i);      //卫星是否具有星历数据}}}}};

三、接口区别

1、标识号不同

GpsSatellite:获取到的数据中,卫星号是PRN,每颗卫星都有一个唯一的PRN码,我们可以通过PRN码来确定它是什么类型的卫星,这里简单介绍一下:
1-32:GPS卫星
33-64:GPS的备用卫星和测试卫星
65-96:GLONASS卫星
193-200:QZSS卫星
201-261:北斗卫星
301-336:伽利略卫星
901-918:IRNSS卫星GnssStatus:获取到的数据中没有PRN,但是它有一个Svid和ConstellationType,这个Svid不同的卫星有可能会重复,就是如果获取到两颗卫星,一颗GPS一颗北斗他们的Svid可能是一样的,所以无法判断它是哪种卫星,要通过获取数据中的ConstellationType来判断它是GPS还是北斗,下面介绍一下这个对象中北斗和GPS卫星的Svid范围和ConstellationType的常量
1-32:GPS卫星
1-37:北斗卫星
GnssStatus数据中,如果获取到的卫星号是1-32,那么它可能是GPS也有可能是北斗,所以还要获取ConstellationType数据也就是星座类型标识符
GPS: CONSTELLATION_GPS		常量值为1
北斗:CONSTELLATION_BEIDOU	常量值为5

2、信号值不同
GpsSatellite:信号值叫信噪比,单位是db
GnssStatus:信号值叫载噪比,单位是dB-Hz
 

参考链接:

https://www.apiref.com/android-zh/android/location/GnssStatus.html

https://www.apiref.com/android-zh/android/location/GnssStatus.Callback.html

https://www.apiref.com/android-zh/android/location/GpsSatellite.html

Android - GPS的简单应用_android获取gps信息-CSDN博客

https://juejin.cn/post/7144313606329335815

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/401632.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

24/8/15算法笔记 项目练习冰湖

import gym from matplotlib import pyplot as plt %matplotlib inline import os os.environ[SDL_VIDEODRIVER]dummy #设置环境变量 SDL_VIDEODRIVERdummy 是在使用基于 SDL (Simple DirectMedia Layer) 的应用程序时&#xff0c;告诉应用程序不使用任何视频驱动程序。这通常…

Transformer动画讲解-单头注意力和多头注意力

单头注意力和多头注意力 Transformer的起源&#xff1a;Google Brain 翻译团队通过论文《Attention is all you need》提出了一种全新的简单网络架构——Transformer&#xff0c;它完全基于注意力机制&#xff0c;摒弃了循环和卷积操作。 注意力机制是全部所需 正如论文标题所…

景联文科技:一文详解如何构建高质量SFT数据

在图像处理和计算机视觉领域中&#xff0c;将一张图像转化为可用于训练机器学习模型的数据是一项复杂而重要的任务。SFT&#xff08;Supervised Fine-Tuning&#xff0c;监督微调&#xff09;是一种常见的深度学习策略&#xff0c;在这一过程中发挥着核心作用。 SFT是指在一个预…

PostgreSQL-02-入门篇-查询数据

文章目录 1 简单查询SELECT 语句简介SELECT 语句语法SELECT 示例1) 使用 SELECT 语句查询一列数据的示例2) 使用 SELECT 语句查询多列数据的示例3) 使用 SELECT 语句查询表所有列数据的示例4) 使用带有表达式的 SELECT 语句的示例5) 使用带有表达式的 SELECT 语句的示例 2 列别…

【MySQL进阶之路】MySQL基础——从零认识MySQL

目录 主流数据库 什么是MySQL MySQL服务 从文件系统角度理解数据库 MySQL架构 SQL语句分类 存储引擎 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 主流数据库 数据库开发商特点适用场景SQL Server微软.NET程序员的最爱&#xff0c;适合中大型项目企业级应用&#xf…

Mapreduce_wordcount自定义单词计数

自定义的wordcount 数据处理过程 加载jar包 查看后面的pom文件 以上为需要的jar包路径&#xff0c;将其导入至idea中 Map package com.hadoop;import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; im…

电动汽车和混动汽车DC-DC转换器的创新设计与测试方法

汽车 DC-DC 转换器市场规模将达到187亿美元&#xff0c;年复合增长率为10%。 DC-DC 转换器是汽车的重要组成部分&#xff0c;它可以通过电压转换为各种车载系统供电&#xff0c;例如日益复杂的车载信息娱乐系统、使用驾驶辅助系统&#xff08;ADAS&#xff09;实现的增强安全功…

灵办AI免费ChatGPT4人工智能浏览器插件快速便捷(多功能)

灵办AI就是您所需的最佳助手&#xff01;我们为您带来了一款多功能AI工具&#xff0c;不仅能为您提供精准翻译&#xff0c;还能满足您的对话需求、智能续写、AI搜索、文档阅读、代码生成与修正等多种需求。灵办 AI&#xff0c;真正让工作和学习变得轻松高效&#xff01; 推荐使…

人工智能在网络安全威胁测试中的应用:LLMs如何改变网络威胁格局

一、引言 随着人工智能技术的快速发展&#xff0c;特别是大型语言模型&#xff08;LLMs&#xff09;的崛起&#xff0c;网络安全领域也迎来了新的变革。LLMs不仅在自然语言处理方面展现出惊人的能力&#xff0c;还在网络安全威胁测试中显示出巨大的潜力。本文旨在探讨LLMs在网…

【区块链+乡村振兴】链上云仓智慧动产监管平台 | FISCO BCOS应用案例

2021 年初 ,《中共中央国务院关于全面推进乡村振兴加快农业农村现代化的意见》将“乡村振兴”的重要性提升 到前所未有的战略高度。而随着科技与金融的深度融合&#xff0c;金融行业亦开始步入大数据、云计算、人工智能、区块 链的新技术发展。启动金融科技赋能乡村振兴示范工程…

微信小程序--24(列表渲染)

一、wx&#xff1a;for 1.作用 根据指定数组&#xff0c;循环渲染重复的组件结构 2.语法 <view wx:for"{{data中的数据}}"> 索引是&#xff1a;{{index}}, item项是&#xff1a;{{item}}</view> index:表索引item&#xff1a;表当前循环项 …

<数据集>骑行头盔识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;5026张 标注数量(xml文件个数)&#xff1a;5026 标注数量(txt文件个数)&#xff1a;5026 标注类别数&#xff1a;3 标注类别名称&#xff1a;[helmet, without_helmet, two_wheeler] 序号类别名称图片数框数1helm…

轻空间成功承建马来西亚吉隆坡多功能气膜馆

近期&#xff0c;轻空间&#xff08;江苏&#xff09;膜结构科技有限公司顺利完成了马来西亚吉隆坡多功能气膜馆的建设工作。这一项目是轻空间在海外市场的又一重大突破&#xff0c;不仅展现了公司在国际气膜结构领域的卓越技术实力&#xff0c;也进一步巩固了轻空间作为全球领…

IDEA关键词全局检索-之jar包

正常没有下载到源码的jar包&#xff0c;是无法检索到.class编译文件中内容的 repository本地仓库中&#xff0c;也是没有源码的 《检索步骤》 1、首先&#xff0c;下载源码 - 可以配置maven自动下载所有jar包的源码&#xff08;再同样配置File-NewProjectsSetup-Settingsfor…

u-picker 点击遮罩层 无法关闭的原因,尤其要注意最后一点

u-view 组件 u-picker 点击遮罩层无法关闭问题 &#xff08;说实话uview的文档写的真的一般&#xff0c;跟pc端的完全不能比啊&#xff09; 三个需要注意的点 1. 需要添加 closeOnClickOverlay 属性 <u-picker :show"show" :columns"columns" keyNam…

C# 不一样的洗牌算法---Simd指令

洗牌算法&#xff0c;以随机打乱数组中元素的位置 测试数据创建 int[] _data; Random rng new Random(); protected override void CreateData() {_data new int[_size];for (int i 0; i < _data.Length; i){_data[i] i;} } 普通打乱数组元素位置 protected overrid…

如何跳过极狐GitLab 密钥推送保护功能?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门面向中国程序员和企业提供企业级一体化 DevOps 平台&#xff0c;用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规&#xff0c;而且所有的操作都是在一个平台上进行&#xff0c;省事省心省钱。可以一键安装极狐GitL…

函数(子程序)的常见、易混淆概念详解【对初学者有帮助】

C语⾔中的函数也被称做子程序&#xff0c;意思就是⼀个完成某项特定的任务的⼀小段代码。 C语⾔标准中提供了许多库函数&#xff0c;点击下面的链接可以查看c语言的库函数和头文件。 C/C官⽅的链接&#xff1a;https://zh.cppreference.com/w/c/header 目录 一、函数头与函…

springBoot框架

使用springmvc框架&#xff0c;除了引入相关的依赖&#xff0c;还需要手动配置spring对象和springmvc对象&#xff0c;这个过程使用xml文件编写实现&#xff0c;最后在web的配置文件中引入这两个对象。 要实现dispatcherServelet的组件功能&#xff0c;还得在springmvc容器中手…

redis事件机制

redis服务器是一个由事件驱动(死循环)的程序&#xff0c;它总共就干两件事&#xff1a; 文件事件&#xff1a;利用I/O复用机制&#xff0c;监听Socket等文件描述符发生的事件&#xff0c;如网络请求时间事件&#xff1a;定时触发的事件&#xff0c;负责完成redis内部定时任务&…