定位类型声明:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14public boolean isOpenProvider() { //获取定位服务 locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); //获取当前可用的位置控制器 List<String> list = locationManager.getProviders(true); if (list.contains(LocationManager.GPS_PROVIDER)) { //是否为GPS位置控制器 provider = LocationManager.GPS_PROVIDER; } else { return false; } return true; }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18private void startLocationService() { //检查位置提供器是否开启,如果开启则给provider赋值 if (isOpenProvider()) { if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { return; } //绑定定位事件,监听位置是否改变 //第一个参数为控制器类型第二个参数为监听位置变化的时间间隔(单位:毫秒) //第三个参数为位置变化的间隔(单位:米)第四个参数为位置监听器 locationManager.requestLocationUpdates(provider, 2000, (float) 5, locationListener); //监听卫星信号强度 locationManager.addGpsStatusListener(statusListener); } else { /*Toast.makeText(this, "请检查网络或GPS是否打开", Toast.LENGTH_LONG).show();*/ } }
GPS信号强度监听
//定义LocationManage
private LocationManager locationManager;
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
//监听卫星信号强度
locationManager.addGpsStatusListener(statusListener)
复制代码
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
30
31
32
33
34/** * 卫星信号强度监听 */ 第一种:监听卫星信噪比 GpsStatus.Listener statusListener = new GpsStatus.Listener() { @Override public void onGpsStatusChanged(int event) { switch (event) { //卫星状态改变 case GpsStatus.GPS_EVENT_SATELLITE_STATUS: //获取当前状态 @SuppressLint("MissingPermission") GpsStatus gpsStatus = locationManager.getGpsStatus(null); //获取卫星颗数的默认最大值 int maxSatellites = gpsStatus.getMaxSatellites(); //获取所有的卫星 Iterator<GpsSatellite> iters = gpsStatus.getSatellites().iterator(); //卫星颗数统计 int count = 0; signalCont = 0;//每监听一次对之前的信号清0 while (iters.hasNext() && count <= maxSatellites) { count++; GpsSatellite s = iters.next(); //卫星的信噪比 float snr = s.getSnr(); signalCont = signalCont + snr; } break; default: break; } } };
第二种:监听有效微信颗数
复制代码
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51/** * gps状态监听类,用于gps获取gps信号强弱 */ GpsStatus.Listener gpsStatusListener = new GpsStatus.Listener() { @Override public void onGpsStatusChanged(int event) { switch (event) { //第一次定位 case GpsStatus.GPS_EVENT_FIRST_FIX: Log.i(TAG, "第一次定位"); break; //卫星状态改变 case GpsStatus.GPS_EVENT_SATELLITE_STATUS: try { Log.i(TAG, "卫星状态改变"); //获取当前状态 @SuppressLint("MissingPermission") GpsStatus gpsStatus = locationManager.getGpsStatus(null); //获取卫星颗数的默认最大值 int maxSatellites = gpsStatus.getMaxSatellites(); //创建一个迭代器保存所有卫星 Iterator<GpsSatellite> iters = gpsStatus.getSatellites().iterator(); int totalCount = 0; int validCount = 0; while (iters.hasNext() && totalCount <= maxSatellites) { GpsSatellite s = iters.next(); //已定位卫星数量 if (s.usedInFix()) { validCount++; } totalCount++; } System.out.println("搜索到:" + totalCount + "颗卫星"); System.out.println("有效卫星:" + validCount + "颗"); } catch (Exception e) { e.printStackTrace(); } break; //定位启动 case GpsStatus.GPS_EVENT_STARTED: Log.i(TAG, "定位启动"); break; //定位结束 case GpsStatus.GPS_EVENT_STOPPED: Log.i(TAG, "定位结束"); break; } } };
一般来说有效卫星有7颗以上,才可以获取到GPS位置信息。
定位位置实时监听:
复制代码
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
30
31
32
33//当位置发生变化时,会触发这个监听 private LocationListener locationListener = new LocationListener() { /** * 位置信息变化时触发 * @param location */ @Override public void onLocationChanged(Location location) { //实时获取Location 位置信息 } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } /** * GPS开启时触发 * @param provider */ @Override public void onProviderEnabled(String provider) { } /** * GPS禁用时触发 * @param provider */ @Override public void onProviderDisabled(String provider) { } };
最后
以上就是老迟到衬衫最近收集整理的关于GPS信号强度与GPS定位GPS信号强度监听定位位置实时监听:的全部内容,更多相关GPS信号强度与GPS定位GPS信号强度监听定位位置实时监听内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复