From: snickersun Date: Sat, 18 Jan 2020 07:09:35 +0000 (+0800) Subject: 优化timer,把无用的先清除掉。 X-Git-Url: http://git.snicker.com.cn/sitemap.xml?a=commitdiff_plain;h=8fe999706032427fa7fa65781af19c3e2814c025;p=icsupport.git 优化timer,把无用的先清除掉。 只保留 1分钟的alarm,3分钟的heartbeat,还有locationalarm.后期还需优化。 另外,优化了重连机制。 --- diff --git a/app/src/main/java/com/ic/protocol/NMEAListener.java b/app/src/main/java/com/ic/protocol/NMEAListener.java index 054d4c4a..a270ebe5 100644 --- a/app/src/main/java/com/ic/protocol/NMEAListener.java +++ b/app/src/main/java/com/ic/protocol/NMEAListener.java @@ -1,5 +1,6 @@ package com.ic.protocol; +import android.content.Context; import android.location.Criteria; import android.location.GpsSatellite; import android.location.GpsStatus; @@ -57,6 +58,37 @@ public class NMEAListener implements NmeaListener, LocationListener { public void onStatusChanged(String paramString, int paramInt, Bundle paramBundle) {} + public boolean gpsColdStart(){ +//冷启动 + Bundle bundle = null; + locationManager.sendExtraCommand("gps", "force_xtra_injection", bundle); //command + locationManager.sendExtraCommand("gps", "force_time_injection", bundle); + boolean b1 = locationManager.sendExtraCommand("gps", "delete_aiding_data", bundle); + return b1; + + } + + public boolean gpsWormStart(){ + +//温启动 + Bundle bundleWarm = new Bundle(); + bundleWarm.putBoolean("ephemeris", true); + locationManager.sendExtraCommand("gps", "force_xtra_injection", bundleWarm); //command + locationManager.sendExtraCommand("gps", "force_time_injection", bundleWarm); + boolean b2 = locationManager.sendExtraCommand("gps", "delete_aiding_data", bundleWarm); + + return b2; + } + + public boolean gpsHotStart(){ +//热启动 + Bundle bundleHot = new Bundle(); + bundleHot.putBoolean("almanac", true); + locationManager.sendExtraCommand("gps", "force_xtra_injection", bundleHot); //command + locationManager.sendExtraCommand("gps", "force_time_injection", bundleHot); + boolean b3 = locationManager.sendExtraCommand("gps", "delete_aiding_data", bundleHot); + return b3; + } private GpsStatus.Listener statusListener = new GpsStatus.Listener() { public void onGpsStatusChanged(int event) { // GPS状态变化时的回调,如卫星数 GpsStatus status = locationManager.getGpsStatus(null); //取当前状态 @@ -176,19 +208,20 @@ public class NMEAListener implements NmeaListener, LocationListener { count++; } - sb2.append("搜索"+searchCout+"次,搜索到卫星个数(SNR>0):" + numSatelliteList.size()+" \n Max 3 SNRs[ " ); + sb2.append("搜索"+searchCout+"次,搜索到卫星个数:"+maxSatellites+" , (SNR>0):" + numSatelliteList.size()+" \n Max 3 SNRs[ " ); for (int i=0;i0?(max3Satellite.get(0).getSnr()<20?true:false) : true)){ noSignalCount++; } } if (searchCout>SearchTimeout){ - sb2.append(" 搜索"+searchCout+"次,超过"+SearchTimeout+"限制退出GPS定位"); + sb2.append(" 搜索"+searchCout+"次未定位,超过"+SearchTimeout+"限制退出GPS定位"); gpsMode=GPS_CURRENT_STATUS.GPS_TIMEOUT; runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_GPS_TIEMOUT); @@ -296,7 +329,7 @@ public class NMEAListener implements NmeaListener, LocationListener { Logger.i( sb.toString()); FileOutputUtil.fileOutput(this.runtime.getContextProxy().context,"GPS",sb.toString()); - runtime.getLocationInstance().setLocation(location.getLatitude(),location.getLongitude(),location.getSpeed(),0,status.getMaxSatellites()); + runtime.getLocationInstance().setLocation(latitude,longitude,speed,0,status.getMaxSatellites()); } } @@ -306,13 +339,16 @@ public class NMEAListener implements NmeaListener, LocationListener { public boolean startListen() { + Criteria criteria = new Criteria(); - criteria.setAccuracy(Criteria.ACCURACY_FINE); - criteria.setAltitudeRequired(false); - criteria.setBearingRequired(false); - criteria.setCostAllowed(true); - criteria.setPowerRequirement(Criteria.POWER_LOW); + criteria.setAccuracy(Criteria.ACCURACY_FINE);// 设置为最大精度 + criteria.setAltitudeRequired(false);//不要求海拔信息 + criteria.setBearingRequired(false);// 不要求方位信息 + criteria.setCostAllowed(true);//是否允许付费 + criteria.setPowerRequirement(Criteria.POWER_LOW);// 对电量的要求 + String provider = locationManager.getBestProvider(criteria,true); + Logger.i("GPS StartListen with Provider "+provider); this.locationManager.requestLocationUpdates(provider, 0L, 0.0F, this); this.listening = true;