From: snickersun Date: Sat, 21 Mar 2020 11:03:23 +0000 (+0800) Subject: 1、延长GPS noSignal时间为15次,因为头5次左右必然没有星,多给GPS一些初始化时间。 X-Git-Url: http://git.snicker.com.cn/sitemap.xml?a=commitdiff_plain;h=cc63ecb92fe8b55debf8208976013f35aa42348d;p=icsupport.git 1、延长GPS noSignal时间为15次,因为头5次左右必然没有星,多给GPS一些初始化时间。 2、修正计数条件,修复如果彻底没有星反倒关闭不了GPS的问题。 --- diff --git a/app/src/main/java/com/enqualcomm/support/NMEAListener.java b/app/src/main/java/com/enqualcomm/support/NMEAListener.java index 8ccdaebe..835a4002 100644 --- a/app/src/main/java/com/enqualcomm/support/NMEAListener.java +++ b/app/src/main/java/com/enqualcomm/support/NMEAListener.java @@ -114,15 +114,57 @@ public class NMEAListener implements NmeaListener, LocationListener { FileOutputUtil.fileOutputRaw(this.runtime.getCacheDir(), "Nmea", nmeastr); if (nmeastr.startsWith("$RD_RSSI")) { + //每组NMEA数据的头,只适用于 SL8521E,9820E + gps_status.numSatelliteList.clear(); + gps_status.search_time_cost = searchCout; + } + if (nmeastr.startsWith("$GPVTG")) { + //每组NMEA数据的尾,只适用于 SL8521E,9820E searchCout++; + //最后一页,打印搜星情况,并作一些判断。 + StringBuilder sb = new StringBuilder(); + sb.append("搜索" + searchCout + "次,搜索到卫星个数" + gps_status.satlite_numbss + ", [SNR>0] =" + runtime.getLocationInstance().numSatelliteList.size()); + sb.append(", Max 5 SNR ["); + for (int i = 0; i < runtime.getLocationInstance().max3Satellite.size(); i++) { + sb.append(runtime.getLocationInstance().max3Satellite.get(i).getSnr() + ","); + } + sb.append("]"); + if (Config.LOG_TOFILE) + FileOutputUtil.fileOutput(this.runtime.getCacheDir(), "GPS", sb.toString()); + ICLogger.i(sb.toString()); + + // 卫星总数小于2 ,或者 snr小于20 + if (runtime.getLocationInstance().numSatelliteList.size() < 3 && (runtime.getLocationInstance().max3Satellite.size() > 0 ? (runtime.getLocationInstance().max3Satellite.get(0).getSnr() < 20 ? true : false) : true)) { + noSignalCount++; + }else{ + noSignalCount=0;//只要有一次满足有信号,则重新开始计数。 + } + + + StringBuilder sb2 = new StringBuilder(); + if (!noStop) { + if (searchCout > ICLocation.MAX_GPS_SEARCH_TIMEOUT) { + sb2.append(" 搜索" + searchCout + "次未定位,超过" + ICLocation.MAX_GPS_SEARCH_TIMEOUT + "限制退出GPS定位"); + + runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_GPS_TIEMOUT); + + stop(MSG_WHAT_GPS_TIMEOUT); + } + if (noSignalCount > ICLocation.MAX_GPS_NOSIGNAL_COUNT) { + sb2.append(" 搜索" + searchCout + "次,超过" + noSignalCount + "次没有收到星,退出GPS定位"); + runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_GPS_TIEMOUT); + stop(MSG_WHAT_GPS_NOSTAR); + } + } + ICLogger.i(sb2.toString()); + if (Config.LOG_TOFILE) + FileOutputUtil.fileOutput(this.runtime.getCacheDir(), "GPS", sb2.toString()); + + if (mCallback != null) mCallback.on_locating_changed(get_gps_status()); - gps_status.numSatelliteList.clear(); - gps_status.search_time_cost = searchCout; } - - if (nmeastr.startsWith("$GPGLL,")) { String tmplist[] = nmeastr.split(","); // GPGLL编辑 @@ -235,47 +277,7 @@ public class NMEAListener implements NmeaListener, LocationListener { } runtime.getLocationInstance().set_adding_satlite_flag(false); - if (maxPageCount == currentPage) { - //最后一页,打印搜星情况,并作一些判断。 - StringBuilder sb = new StringBuilder(); - sb.append("搜索" + searchCout + "次,搜索到卫星个数" + SatlitesCount + ", [SNR>0] =" + runtime.getLocationInstance().numSatelliteList.size()); - sb.append(", Max 5 SNR ["); - for (int i = 0; i < runtime.getLocationInstance().max3Satellite.size(); i++) { - sb.append(runtime.getLocationInstance().max3Satellite.get(i).getSnr() + ","); - } - sb.append("]"); - if (Config.LOG_TOFILE) - FileOutputUtil.fileOutput(this.runtime.getCacheDir(), "GPS", sb.toString()); - ICLogger.i(sb.toString()); - - // 卫星总数小于2 ,或者 snr小于20 - if (runtime.getLocationInstance().numSatelliteList.size() < 3 && (runtime.getLocationInstance().max3Satellite.size() > 0 ? (runtime.getLocationInstance().max3Satellite.get(0).getSnr() < 20 ? true : false) : true)) { - noSignalCount++; - }else{ - noSignalCount=0;//只要有一次满足有信号,则重新开始计数。 - } - - - StringBuilder sb2 = new StringBuilder(); - if (!noStop) { - if (searchCout > ICLocation.MAX_GPS_SEARCH_TIMEOUT) { - sb2.append(" 搜索" + searchCout + "次未定位,超过" + ICLocation.MAX_GPS_SEARCH_TIMEOUT + "限制退出GPS定位"); - runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_GPS_TIEMOUT); - - stop(MSG_WHAT_GPS_TIMEOUT); - } - if (noSignalCount > ICLocation.MAX_GPS_NOSIGNAL_COUNT) { - sb2.append(" 搜索" + searchCout + "次,超过" + noSignalCount + "次没有收到星,退出GPS定位"); - runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_GPS_TIEMOUT); - stop(MSG_WHAT_GPS_NOSTAR); - } - } - ICLogger.i(sb2.toString()); - if (Config.LOG_TOFILE) - FileOutputUtil.fileOutput(this.runtime.getCacheDir(), "GPS", sb2.toString()); - - } } else if (nmeastr.startsWith("$GPGGA,")) { // GPGGA编辑 diff --git a/app/src/main/java/com/enqualcomm/support/bean/ICLocation.java b/app/src/main/java/com/enqualcomm/support/bean/ICLocation.java index 36c228ca..0afda2e8 100644 --- a/app/src/main/java/com/enqualcomm/support/bean/ICLocation.java +++ b/app/src/main/java/com/enqualcomm/support/bean/ICLocation.java @@ -84,7 +84,7 @@ public class ICLocation { private int location_cycle; public static final float MAX_HDOP=10.0f; - public static final int MAX_GPS_NOSIGNAL_COUNT=10; + public static final int MAX_GPS_NOSIGNAL_COUNT=15; public static final int MAX_GPS_SEARCH_TIMEOUT=120; public void setWorkingMod(int wkmod){ mworkingMod=wkmod;} public void setLocation_cycle(int _locatCycle){ location_cycle=_locatCycle;}