我是靠谱客的博主 魁梧大侠,这篇文章主要介绍Android中获取GPS搜索到的卫星颗数、并获取每颗卫星的信噪比,现在分享给大家,希望可以做个参考。

信噪比概念

信噪比,英文名称叫做SNR或S/N(SIGNAL-NOISE RATIO),又称为讯噪比。是指一个电子设备或者电子系统中信号与噪声的比例
信噪比越大此颗卫星越有效(也就是说可以定位)

  • 也就是说 设备搜索到的卫星颗数越多 设备定位效果越好,同时每颗卫星的信噪比值也要越高,如果信噪比值都是0的话;那跟没有搜索到一颗卫星效果是一样的。

获取设备搜索到的卫星颗数

  • 首先就是声明权限了大于Android M设备记得动态申请
复制代码
1
2
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  • 初始化LocationManager 开启Gps
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//位置管理器 private LocationManager manager; /** * 初始化定位管理 */ private void initLocation() { manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); //判断GPS是否正常启动 if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { Toast.makeText(this, "请开启GPS导航", Toast.LENGTH_SHORT).show(); //返回开启GPS导航设置界面 Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivityForResult(intent, 0); return; } //添加卫星状态改变监听 manager.addGpsStatusListener(gpsStatusListener); //1000位最小的时间间隔,1为最小位移变化;也就是说每隔1000ms会回调一次位置信息 manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, locationListener); }
  • 这里只关心卫星的一些信息,关于位置、经纬度信息这里就不关心了,所以上面的locationListener就是个空实现;这里重点看下卫星的获取,如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
private GpsStatus.Listener gpsStatusListener = new GpsStatus.Listener() { @Override public void onGpsStatusChanged(int event) { switch (event) { //卫星状态改变 case GpsStatus.GPS_EVENT_SATELLITE_STATUS: //获取当前状态 GpsStatus gpsStatus = manager.getGpsStatus(null); //获取卫星颗数的默认最大值 int maxSatellites = gpsStatus.getMaxSatellites(); //获取所有的卫星 Iterator<GpsSatellite> iters = gpsStatus.getSatellites().iterator(); //卫星颗数统计 int count = 0; StringBuilder sb = new StringBuilder(); while (iters.hasNext() && count <= maxSatellites) { count++; GpsSatellite s = iters.next(); //卫星的信噪比 float snr = s.getSnr(); sb.append("第").append(count).append("颗").append(":").append(snr).append("n"); } Log.e("TAG", sb.toString()); break; default: break; } } };

到这里基本上就大功告成了,数据都是直接从监听中取出来就好了,输出的结果:

  • 通过遍历gpsStatus.getSatellites();统计总卫星颗数同时获取每颗卫星的信噪比

这里写图片描述

最后

以上就是魁梧大侠最近收集整理的关于Android中获取GPS搜索到的卫星颗数、并获取每颗卫星的信噪比的全部内容,更多相关Android中获取GPS搜索到内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(76)

评论列表共有 0 条评论

立即
投稿
返回
顶部