<orderEntry type="library" name="Gradle: __local_aars__:D.\workspace\icsupport\app\libs\LauncherCtrl.jar:unspecified@jar" level="project" />\r
<orderEntry type="library" name="Gradle: __local_aars__:D.\workspace\icsupport\app\libs\log4j-1.2.17.jar:unspecified@jar" level="project" />\r
<orderEntry type="library" name="Gradle: __local_aars__:D.\workspace\icsupport\app\libs\okio-2.4.3.jar:unspecified@jar" level="project" />\r
+ <orderEntry type="library" name="Gradle: com.android.support.constraint:constraint-layout-solver:1.1.3@jar" level="project" />\r
<orderEntry type="library" name="Gradle: com.android.support:support-annotations:25.1.0@jar" level="project" />\r
<orderEntry type="library" name="Gradle: io.reactivex:rxjava:1.1.0@jar" level="project" />\r
+ <orderEntry type="library" name="Gradle: com.android.support:multidex:1.0.2@aar" level="project" />\r
+ <orderEntry type="library" name="Gradle: com.android.support.constraint:constraint-layout:1.1.3@aar" level="project" />\r
<orderEntry type="library" name="Gradle: com.github.ChestnutPlus:TestModules:v1.0.16@aar" level="project" />\r
<orderEntry type="library" name="Gradle: com.android.support:appcompat-v7:25.1.0@aar" level="project" />\r
- <orderEntry type="library" name="Gradle: com.android.support:multidex:1.0.2@aar" level="project" />\r
+ <orderEntry type="library" name="Gradle: com.android.support:recyclerview-v7:25.1.0@aar" level="project" />\r
<orderEntry type="library" name="Gradle: com.android.support:animated-vector-drawable:25.1.0@aar" level="project" />\r
<orderEntry type="library" name="Gradle: com.android.support:support-vector-drawable:25.1.0@aar" level="project" />\r
<orderEntry type="library" name="Gradle: com.android.support:support-v4:25.1.0@aar" level="project" />\r
<orderEntry type="library" name="Gradle: com.android.support:support-fragment:25.1.0@aar" level="project" />\r
+ <orderEntry type="library" name="Gradle: com.android.support:support-core-ui:25.1.0@aar" level="project" />\r
<orderEntry type="library" name="Gradle: com.android.support:support-media-compat:25.1.0@aar" level="project" />\r
<orderEntry type="library" name="Gradle: com.android.support:support-core-utils:25.1.0@aar" level="project" />\r
- <orderEntry type="library" name="Gradle: com.android.support:support-core-ui:25.1.0@aar" level="project" />\r
<orderEntry type="library" name="Gradle: com.android.support:support-compat:25.1.0@aar" level="project" />\r
<orderEntry type="library" name="Gradle: com.kymjs.rxvolley:rxvolley:1.1.3@aar" level="project" />\r
<orderEntry type="library" name="Gradle: io.reactivex:rxandroid:1.1.0@aar" level="project" />\r
<orderEntry type="module" module-name="dNSCache" />\r
- <orderEntry type="module" module-name="dNSCache" />\r
</component>\r
</module>
\ No newline at end of file
defaultConfig {
applicationId "com.enqualcomm.support"
minSdkVersion 19
- targetSdkVersion 25
+ targetSdkVersion 29
versionCode currentVersionCode
versionName "${currentVersionName}"
multiDexEnabled true
implementation 'com.github.ChestnutPlus:TestModules:v1.0.16'
testCompile 'junit:junit:4.12'
implementation project(path: ':dNSCache')
+ implementation 'com.android.support:recyclerview-v7:25.1.0'
+
+// implementation "androidx.recyclerview:recyclerview:1.1.0
}
def getVersionCode() {
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".toolActivity"></activity>
+ <activity android:name=".GPSActivity"></activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
--- /dev/null
+package com.enqualcomm.support;\r
+\r
+import android.graphics.Color;\r
+import android.graphics.Rect;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.os.PowerManager;\r
+import android.support.v7.app.AppCompatActivity;\r
+import android.support.v7.widget.LinearLayoutManager;\r
+import android.support.v7.widget.RecyclerView;\r
+import android.view.View;\r
+import android.widget.TextView;\r
+\r
+import com.enqualcomm.support.NMEAListener.location_callback;\r
+import com.enqualcomm.support.bean.ICLocation;\r
+import com.enqualcomm.support.utils.LocationSnrAdapter;\r
+import com.enqualcomm.support.utils.SnrEntriy;\r
+import com.enqualcomm.support.utils.WakeLockUtil;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+import java.util.Timer;\r
+import java.util.TimerTask;\r
+\r
+public class GPSActivity extends AppCompatActivity implements location_callback {\r
+\r
+ private RecyclerView mRv;\r
+\r
+ private TextView mFix;\r
+ private TextView mStar;\r
+ private TextView mHoop;\r
+ private TextView mSearchCount;\r
+ private boolean showmessage=false;\r
+ private Timer timer;\r
+ final LocationSnrAdapter adapter = new LocationSnrAdapter(testSnrEntriyDate(null));\r
+//\r
+// Handler handler=new Handler(new Handler.Callback() {\r
+// @Override\r
+// public boolean handleMessage(Message message) {\r
+//\r
+//\r
+// StringBuilder sb=new StringBuilder();\r
+// try {\r
+//\r
+// if (showmessage) {\r
+// ICLocation location=CoreService.getInstance().runtime.getLocationInstance();\r
+// List<ICLocation.GpsSatellitePriv> gpslist =location.getNumSatelliteList();\r
+// adapter.updateLocationValue(testSnrEntriyDate(gpslist));\r
+// String fixed=(location.getLocationStat()==ICLocation.LOCATION_STAT.LOCATION_FIXED)?\r
+// "Fixed":(location.getLocationStat()==ICLocation.LOCATION_STAT.LOCATION_OPEN)?\r
+// "Opened":(location.getLocationStat()==ICLocation.LOCATION_STAT.LOCATION_GPS_TIEMOUT)?\r
+// "Timeout":"Closed";\r
+// String satlites=new StringBuilder().append(location.getLocation().used_gps_numbs).append("/").append(gpslist!=null?location.getNumSatelliteList().size():0).toString();\r
+// String locationTime=location.getLocationTime();\r
+// mFix.setText(fixed);\r
+// mStar.setText(satlites);\r
+// mHoop.setText(String.valueOf(location.getLocation().hdop));\r
+// }\r
+//\r
+// }catch(Exception e){\r
+// e.printStackTrace();\r
+// }\r
+//\r
+//\r
+// return false;\r
+// }\r
+// });\r
+ @Override\r
+ protected void onCreate(Bundle savedInstanceState) {\r
+ super.onCreate(savedInstanceState);\r
+ setContentView(R.layout.activity_gps);\r
+\r
+ mRv = (RecyclerView)findViewById(R.id.app_list);\r
+\r
+ mFix=(TextView)findViewById(R.id.ic_lc_fix_value);\r
+ mStar =(TextView) findViewById(R.id.ic_lc_star_value);\r
+ mHoop = (TextView)findViewById(R.id.ic_lc_hoop_value);\r
+ mSearchCount= (TextView)findViewById(R.id.ic_lc_searchCount_value);\r
+ mRv.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));\r
+\r
+ mRv.addItemDecoration(new SpacesItemDecoration(10));\r
+ mRv.setAdapter(adapter);\r
+\r
+ mFix.setText("80");\r
+ mStar.setText("280");\r
+ mHoop.setText("180");\r
+ }\r
+\r
+ @Override\r
+ public void on_locating_changed(ICLocation.GPS_locationStatus gps_status) {\r
+\r
+ List<ICLocation.GpsSatellitePriv> gpslist =gps_status.numSatelliteList;\r
+ adapter.updateLocationValue(testSnrEntriyDate(gpslist));\r
+ String fixed=gps_status.locating_status>0?\r
+ "Fixed":"notFixed";\r
+ String satlites=new StringBuilder().append(gps_status.used_gps_numbs).append("/")\r
+ .append(gps_status.satlite_numbss).toString();\r
+ String locationTime=new StringBuilder().append(gps_status.search_time_cost).append("秒").toString();\r
+ mFix.setText(fixed);\r
+ mStar.setText(satlites);\r
+ mHoop.setText(String.valueOf(gps_status.hdop));\r
+ mSearchCount.setText(locationTime);\r
+ }\r
+\r
+ public class SpacesItemDecoration extends RecyclerView.ItemDecoration {\r
+ private int space;\r
+\r
+ public SpacesItemDecoration(int space) {\r
+ this.space = space;\r
+ }\r
+\r
+ @Override\r
+ public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {\r
+ outRect.right = space;\r
+ }\r
+ }\r
+\r
+ public ArrayList<SnrEntriy> testSnrEntriyDate(List<ICLocation.GpsSatellitePriv> gpslist) {\r
+ ArrayList<SnrEntriy> entity = new ArrayList<>();\r
+\r
+ if (gpslist!=null) {\r
+ for (int i = 1; i < gpslist.size(); i++) {\r
+\r
+ float snr=gpslist.get(i).getSnr();\r
+ int prn=gpslist.get(i).getPrn();\r
+ SnrEntriy info = new SnrEntriy(snr,prn , (snr>=40?Color.GREEN:((snr>=25&&snr<40)?Color.YELLOW:Color.RED)));\r
+ entity.add(info);\r
+ }\r
+ }\r
+ return entity;\r
+ }\r
+ PowerManager.WakeLock screenOnWakelock=null;\r
+ @Override\r
+ protected void onResume() {\r
+ super.onResume();\r
+// TimerTask tmt=new TimerTask() {\r
+// @Override\r
+// public void run() {\r
+// handler.sendEmptyMessage(0);\r
+// }\r
+// };\r
+// timer=new Timer();\r
+// timer.schedule(tmt,0,2000);\r
+// showmessage=true;\r
+ NMEAListener.set_callback(this);\r
+ screenOnWakelock = WakeLockUtil.getScreenOnWakeLock(this,GPSActivity.class.getSimpleName());\r
+ }\r
+\r
+ @Override\r
+ protected void onPause() {\r
+ super.onPause();\r
+// if (timer!=null) {\r
+// timer.cancel();\r
+// timer.purge();\r
+// timer = null;\r
+// }\r
+ showmessage=false;\r
+ screenOnWakelock.release();\r
+\r
+ }\r
+}\r
import android.location.GpsSatellite;\r
import android.location.GpsStatus;\r
import android.location.GpsStatus.NmeaListener;\r
+\r
import android.location.Location;\r
import android.location.LocationListener;\r
import android.location.LocationManager;\r
import com.enqualcomm.support.utils.FileOutputUtil;\r
import com.enqualcomm.support.utils.ICLogger;\r
import com.enqualcomm.support.utils.TimeUtil;\r
-\r
+import com.enqualcomm.support.bean.ICLocation.GPS_locationStatus;\r
import java.text.DecimalFormat;\r
import java.util.ArrayList;\r
import java.util.Iterator;\r
public boolean isListening(){\r
return listening;\r
}\r
- public class GpsSatellitePriv {\r
- int prn;\r
- float snr;\r
- GpsSatellitePriv(int _prn, float _snr) {\r
- prn=_prn;\r
- snr=_snr;\r
- }\r
- public int getPrn() {\r
- return prn;\r
- }\r
- public float getSnr() {\r
- return snr;\r
- }\r
- }\r
+\r
private LocationManager locationManager;\r
private String locationInfo;\r
- private List<GpsSatellitePriv> numSatelliteList = new ArrayList<GpsSatellitePriv>(); // 卫星信号\r
- private List<GpsSatellitePriv> max3Satellite = new ArrayList<GpsSatellitePriv>(); // 卫星信号\r
\r
private double longitude;\r
private double latitude;\r
private static int locationFixedCount=0;\r
\r
\r
+ private static location_callback mCallback=null;\r
+ public interface location_callback{\r
+ public void on_locating_changed(GPS_locationStatus gps_status);\r
+ }\r
+ public static void set_callback(location_callback callback){\r
+ mCallback=callback;\r
+ }\r
+\r
+ private GPS_locationStatus gps_status = new GPS_locationStatus();\r
+ public GPS_locationStatus get_gps_status(){\r
+ return gps_status;\r
+ }\r
+\r
\r
public void setNoStop(boolean nostop){\r
noStop=nostop;\r
this.locationManager = paramLocationManager;\r
this.runtime = paramRuntime;\r
}\r
- \r
- public void onLocationChanged(Location paramLocation) {}\r
+\r
static int satindex=0;\r
public void onNmeaReceived(long paramLong, String nmeastr) {\r
// EqcAlgorithmNative.native_EqcAlgorithmMethod5(paramString);\r
\r
if (Config.LOG_TOFILE) FileOutputUtil.fileOutputRaw(this.runtime.getCacheDir(),"Nmea",nmeastr);\r
\r
- if(nmeastr.startsWith("$RD_RSSI")) searchCout++;\r
+ if(nmeastr.startsWith("$RD_RSSI")) {\r
+\r
+ searchCout++;\r
+ if (mCallback !=null)\r
+ mCallback.on_locating_changed(get_gps_status());\r
+ gps_status.numSatelliteList.clear();\r
+ gps_status.search_time_cost=searchCout;\r
+ }\r
\r
\r
if (nmeastr.startsWith("$GPGLL,")){\r
// ICLogger.i("GPRMC GPSTime="+utctime+",Lat="+Lat+",Lon="+lon+",fixed="+fixed+",speed="+speed);\r
// if (Config.LOG_TOFILE)\r
// FileOutputUtil.fileOutput(this.runtime.getCacheDir(), "GPS", "GPRMC GPSTime="+utctime+",Lat="+Lat+",Lon="+lon+",fixed="+fixed+",speed="+speed);\r
-\r
if (fixed.trim().equals("A")) {\r
if (speed.trim().isEmpty()) speed = "0.0";\r
runtime.getLocationInstance().setSpeed(Float.valueOf(speed));\r
}\r
\r
+\r
}else if (nmeastr.startsWith("$GPGSV,")) {\r
\r
// GPGSV编辑\r
if (maxPageCount>0 && currentPage==1){\r
//第一页把数组初始化一遍。\r
satindex=0;\r
- numSatelliteList.clear(); //清除 SNR >0的卫星\r
- max3Satellite.clear(); //清除 最大3个星值\r
+ runtime.getLocationInstance().numSatelliteList.clear(); //清除 SNR >0的卫星\r
+ runtime.getLocationInstance().max3Satellite.clear(); //清除 最大3个星值\r
+\r
+ gps_status.satlite_numbss=SatlitesCount;\r
}\r
int satcount=(tmplist.length-4)/4;\r
// ICLogger.i("Nmea :"+nmeastr+" "+satcount);\r
+ runtime.getLocationInstance().set_adding_satlite_flag(true);\r
for (int i=0;i<satcount;i++){\r
satindex++;\r
String prn=tmplist[i*4+4];\r
float floatsnr=Float.valueOf(snr);\r
if (floatsnr>0) {\r
//排序取得最大3个SNR\r
- get3MaxSnrSatellite(new GpsSatellitePriv(intprn, floatsnr));\r
- numSatelliteList.add(new GpsSatellitePriv(intprn, floatsnr));\r
+ get3MaxSnrSatellite(new ICLocation.GpsSatellitePriv(intprn, floatsnr));\r
+ runtime.getLocationInstance().numSatelliteList.add(new ICLocation.GpsSatellitePriv(intprn, floatsnr));\r
+ gps_status.numSatelliteList.add(new ICLocation.GpsSatellitePriv(intprn, floatsnr));\r
}\r
}\r
+\r
+ runtime.getLocationInstance().set_adding_satlite_flag(false);\r
if (maxPageCount==currentPage) {\r
//最后一页,打印搜星情况,并作一些判断。\r
StringBuilder sb=new StringBuilder();\r
- sb.append("搜索"+searchCout+"次,搜索到卫星个数" + SatlitesCount+", [SNR>0] ="+numSatelliteList.size());\r
+ sb.append("搜索"+searchCout+"次,搜索到卫星个数" + SatlitesCount+", [SNR>0] ="+ runtime.getLocationInstance().numSatelliteList.size());\r
sb.append(", Max 5 SNR [");\r
- for (int i=0;i<max3Satellite.size();i++){\r
- sb.append(max3Satellite.get(i).getSnr()+",");\r
+ for (int i=0;i< runtime.getLocationInstance().max3Satellite.size();i++){\r
+ sb.append( runtime.getLocationInstance().max3Satellite.get(i).getSnr()+",");\r
}\r
sb.append("]");\r
if (Config.LOG_TOFILE)\r
ICLogger.i( sb.toString());\r
\r
// 卫星总数小于2 ,或者 snr小于20\r
- if (numSatelliteList.size()< 3 && (max3Satellite.size()>0?(max3Satellite.get(0).getSnr()<20?true:false) : true)){\r
+ if ( runtime.getLocationInstance().numSatelliteList.size()< 3 && ( runtime.getLocationInstance().max3Satellite.size()>0?( runtime.getLocationInstance().max3Satellite.get(0).getSnr()<20?true:false) : true)){\r
noSignalCount++;\r
}\r
\r
if (Config.LOG_TOFILE)\r
FileOutputUtil.fileOutput(this.runtime.getCacheDir(),"GPS",sb2.toString());\r
\r
-\r
}\r
}else if (nmeastr.startsWith("$GPGGA,")) {\r
\r
String fixed=tmplist[6];\r
String usedStarts=tmplist[7];\r
String hdop=tmplist[8];\r
+\r
+\r
if ( (fixed.trim().equals("1"))||(fixed.trim().equals("2"))||(fixed.trim().equals("6"))){\r
\r
\r
stopListen();\r
}\r
}\r
-\r
+ gps_status.locating_status=1; //fixed\r
+ }else{\r
+ gps_status.locating_status=0; //notfixed\r
}\r
+ gps_status.hdop=Float.valueOf(hdop.trim());\r
+ gps_status.used_gps_numbs=Integer.valueOf(usedStarts.trim());\r
+\r
\r
}else if (nmeastr.startsWith("$GPGSA,")) {\r
\r
public void onProviderDisabled(String paramString) {}\r
\r
public void onProviderEnabled(String paramString) {}\r
- \r
+\r
+ @Override\r
+ public void onLocationChanged(Location location) {\r
+\r
+ }\r
+\r
public void onStatusChanged(String paramString, int paramInt, Bundle paramBundle) {}\r
\r
public boolean gpsColdStart(){\r
return true;\r
}\r
});\r
- private void get3MaxSnrSatellite(GpsSatellitePriv gst){\r
+ private void get3MaxSnrSatellite(ICLocation.GpsSatellitePriv gst){\r
\r
float snr = gst.getSnr();\r
- for (int k=0;k<max3Satellite.size();k++) {\r
- if( max3Satellite.get(k).getPrn()==gst.getPrn())\r
- max3Satellite.remove(k);\r
+ for (int k=0;k< runtime.getLocationInstance().max3Satellite.size();k++) {\r
+ if( runtime.getLocationInstance().max3Satellite.get(k).getPrn()==gst.getPrn())\r
+ runtime.getLocationInstance().max3Satellite.remove(k);\r
}\r
- max3Satellite.add(gst);//先添加进来。\r
+ runtime.getLocationInstance().max3Satellite.add(gst);//先添加进来。\r
\r
//从大到小排序\r
- for(int i=0;i<max3Satellite.size();i++) {\r
- for (int j=i;j<max3Satellite.size();j++) {\r
- if (max3Satellite.get(i).getSnr() < max3Satellite.get(j).getSnr()) {\r
- GpsSatellitePriv ts = max3Satellite.get(j);\r
- max3Satellite.remove(j);\r
- max3Satellite.add(i, ts);//大的放前面\r
+ for(int i=0;i< runtime.getLocationInstance().max3Satellite.size();i++) {\r
+ for (int j=i;j< runtime.getLocationInstance().max3Satellite.size();j++) {\r
+ if ( runtime.getLocationInstance().max3Satellite.get(i).getSnr() < runtime.getLocationInstance().max3Satellite.get(j).getSnr()) {\r
+ ICLocation.GpsSatellitePriv ts = runtime.getLocationInstance().max3Satellite.get(j);\r
+ runtime.getLocationInstance().max3Satellite.remove(j);\r
+ runtime.getLocationInstance().max3Satellite.add(i, ts);//大的放前面\r
}\r
}\r
}\r
- if (max3Satellite.size()>5){ //超过三个,谁小就删掉\r
- max3Satellite.remove(5);\r
+ if ( runtime.getLocationInstance().max3Satellite.size()>5){ //超过三个,谁小就删掉\r
+ runtime.getLocationInstance().max3Satellite.remove(5);\r
}\r
\r
}\r
--- /dev/null
+package com.enqualcomm.support;\r
+\r
+import android.content.Context;\r
+import android.graphics.Canvas;\r
+import android.graphics.Color;\r
+import android.graphics.Paint;\r
+import android.support.annotation.Nullable;\r
+import android.util.AttributeSet;\r
+import android.util.TypedValue;\r
+import android.view.View;\r
+\r
+\r
+public class SnrHistogramView extends View {\r
+\r
+\r
+ private int mWidth = 0;\r
+ private int mHeight = 0;\r
+\r
+ private Paint mPaint;\r
+ private Paint mTextPaint;\r
+\r
+ private String mSnrValue = "80";\r
+ private String mSnrNmber = "60";\r
+\r
+ private float mBL=1f;\r
+\r
+ public SnrHistogramView(Context context) {\r
+ this(context, null);\r
+ }\r
+\r
+ public SnrHistogramView(Context context, @Nullable AttributeSet attrs) {\r
+ this(context, attrs, 0);\r
+ }\r
+\r
+ public SnrHistogramView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {\r
+ super(context, attrs, defStyleAttr);\r
+ mPaint = new Paint();\r
+ mTextPaint = new Paint();\r
+\r
+ mPaint.setAntiAlias(true);\r
+ mPaint.setDither(true);\r
+ int mBgColor = Color.GREEN;\r
+ mPaint.setColor(mBgColor);\r
+ mPaint.setStyle(Paint.Style.FILL);\r
+\r
+ mTextPaint.setAntiAlias(true);\r
+ mTextPaint.setDither(true);\r
+ mTextPaint.setColor(Color.WHITE);\r
+ mTextPaint.setStyle(Paint.Style.FILL);\r
+ mTextPaint.setTextSize(spToPx(24));\r
+ }\r
+\r
+ @Override\r
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {\r
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);\r
+\r
+\r
+ int widthSize = MeasureSpec.getSize(widthMeasureSpec);\r
+ int widthMode = MeasureSpec.getMode(widthMeasureSpec);\r
+ int heightSize = MeasureSpec.getSize(heightMeasureSpec);\r
+ int heightMode = MeasureSpec.getMode(heightMeasureSpec);\r
+\r
+\r
+ if (widthMode == MeasureSpec.AT_MOST\r
+ || widthMode == MeasureSpec.UNSPECIFIED\r
+ || heightMeasureSpec == MeasureSpec.AT_MOST\r
+ || heightMeasureSpec == MeasureSpec.UNSPECIFIED) {\r
+ //宽度高度至少有一个确定的值,不能同时为wrap_content\r
+ return;\r
+ } else { //至少有一个为确定值,要获取其中的最小值\r
+ if (widthMode == MeasureSpec.EXACTLY) {\r
+ mWidth = widthSize;\r
+ }\r
+\r
+ if (heightMode == MeasureSpec.EXACTLY) {\r
+ mHeight = heightSize;\r
+ }\r
+ }\r
+ }\r
+\r
+\r
+ @Override\r
+ protected void onDraw(Canvas canvas) {\r
+ super.onDraw(canvas);\r
+\r
+ float[] snrNmber = measureTextWidth(mSnrNmber, mTextPaint);\r
+ float[] snrValue = measureTextWidth(mSnrValue, mTextPaint);\r
+\r
+ float hv = getHistogramHeight(snrValue[1], snrNmber[1], mBL);\r
+\r
+ canvas.drawText(mSnrNmber, (mWidth - snrNmber[0]) / 2, mHeight, mTextPaint);\r
+ canvas.drawText(mSnrValue, (mWidth - snrValue[0]) / 2, mHeight - snrNmber[1] - hv, mTextPaint);\r
+\r
+ canvas.drawRect(0, mHeight - (hv + snrNmber[1] - 2), mWidth, mHeight - snrNmber[1], mPaint);\r
+ }\r
+\r
+ private float getHistogramHeight(float vh, float nh, float bl) {\r
+ return (mHeight - vh - nh) * bl;\r
+ }\r
+\r
+ private float[] measureTextWidth(String mText, Paint textPaint) {\r
+ Paint.FontMetrics fontMetrics = textPaint.getFontMetrics();\r
+ float height1 = fontMetrics.bottom - fontMetrics.top;\r
+ float strWidth = textPaint.measureText(mText);\r
+ return new float[]{strWidth, height1};\r
+ }\r
+\r
+ private float spToPx(float sp) {\r
+ return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, getResources().getDisplayMetrics());\r
+ }\r
+\r
+ public void updateValue(float value,int number,int bgColor){\r
+ mPaint.setColor(bgColor);\r
+ mSnrNmber = String.valueOf(number);\r
+ mSnrValue =String.valueOf((int)value);\r
+ mBL=value*0.025F;\r
+\r
+ invalidate();\r
+ }\r
+}\r
package com.enqualcomm.support.bean;\r
\r
+import java.util.ArrayList;\r
import java.util.HashMap;\r
+import java.util.List;\r
\r
public class ICLocation {\r
\r
+ public static class GpsSatellitePriv {\r
+ int prn;\r
+ float snr;\r
+ public GpsSatellitePriv(int _prn, float _snr) {\r
+ prn=_prn;\r
+ snr=_snr;\r
+ }\r
+ public int getPrn() {\r
+ return prn;\r
+ }\r
+ public float getSnr() {\r
+ return snr;\r
+ }\r
+ }\r
+ public List<GpsSatellitePriv> numSatelliteList = new ArrayList<GpsSatellitePriv>(); // 卫星信号\r
+ public List<GpsSatellitePriv> max3Satellite = new ArrayList<GpsSatellitePriv>(); // 卫星信号\r
+ private static boolean adding_satlite_flag=false;\r
+ public void set_adding_satlite_flag(boolean flag){\r
+ adding_satlite_flag=flag;\r
+ }\r
+\r
+ public List<GpsSatellitePriv> getNumSatelliteList(){\r
+ if (adding_satlite_flag)\r
+ return null;\r
+ return numSatelliteList;\r
+ }\r
+\r
+\r
+\r
private LOCATION_STAT currentStat;\r
private GPS_LocationPoint currentLP=null;\r
private LBS_Data currentLBS=null;\r
public String lonStr;\r
public float hdop;\r
}\r
+\r
+\r
+ public static class GPS_locationStatus{\r
+ public List<GpsSatellitePriv> numSatelliteList = new ArrayList<GpsSatellitePriv>(); // 卫星信号\r
+ public int used_gps_numbs;\r
+ public float hdop;\r
+ public int satlite_numbss;\r
+ public int search_time_cost;\r
+ public int locating_status;\r
+ }\r
public class LBS_Data{\r
HashMap<String ,Integer> wifi_aps=null;\r
HashMap<String , Integer> gsm_stations=null;\r
package com.enqualcomm.support;\r
\r
+import android.content.ComponentName;\r
import android.content.Intent;\r
import android.support.v7.app.AppCompatActivity;\r
import android.os.Bundle;\r
import com.enqualcomm.support.utils.SimSignalUtil;\r
import com.enqualcomm.support.utils.Util;\r
\r
+import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;\r
+\r
public class toolActivity extends AppCompatActivity {\r
\r
@Override\r
@Override\r
public void onClick(View view) {\r
\r
-\r
-\r
- Util.ShowToast(CoreService.getInstance().runtime,"Reload SimCard!");\r
-\r
+ Intent intent=new Intent();\r
+ ComponentName var3 = new ComponentName("com.enqualcomm.support", "com.enqualcomm.support.GPSActivity");\r
+ intent.addFlags(FLAG_ACTIVITY_NEW_TASK);\r
+ intent.setComponent(var3);\r
+ startActivity(intent);\r
}\r
});\r
\r
--- /dev/null
+package com.enqualcomm.support.utils;\r
+\r
+import android.support.annotation.NonNull;\r
+import android.support.v7.widget.RecyclerView;\r
+import android.view.LayoutInflater;\r
+import android.view.View;\r
+import android.view.ViewGroup;\r
+\r
+import com.enqualcomm.support.R;\r
+import com.enqualcomm.support.SnrHistogramView;\r
+\r
+import java.util.ArrayList;\r
+\r
+public class LocationSnrAdapter extends RecyclerView.Adapter<LocationSnrAdapter.SnrHolder> {\r
+\r
+\r
+ private ArrayList<SnrEntriy> mSnrList = new ArrayList<>();\r
+\r
+ public LocationSnrAdapter(ArrayList<SnrEntriy> mSnrList) {\r
+ this.mSnrList = mSnrList;\r
+ }\r
+\r
+ public void updateLocationValue(ArrayList<SnrEntriy> snrEntriys){\r
+ mSnrList.clear();\r
+ mSnrList.addAll(snrEntriys);\r
+ notifyDataSetChanged();\r
+ }\r
+\r
+ @NonNull\r
+ @Override\r
+ public SnrHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {\r
+ View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_snr_layout, parent, false);\r
+ return new SnrHolder(view);\r
+ }\r
+\r
+ @Override\r
+ public void onBindViewHolder(@NonNull SnrHolder holder, int position) {\r
+ holder.updateSnrValue(mSnrList.get(position));\r
+ }\r
+\r
+ @Override\r
+ public int getItemCount() {\r
+ return mSnrList.size();\r
+ }\r
+\r
+ static class SnrHolder extends RecyclerView.ViewHolder {\r
+\r
+ private SnrHistogramView snrView;\r
+\r
+ public SnrHolder(@NonNull View itemView) {\r
+ super(itemView);\r
+ snrView = (SnrHistogramView)itemView.findViewById(R.id.item_snr_view);\r
+ }\r
+\r
+\r
+ public void updateSnrValue(SnrEntriy entriy){\r
+ snrView.updateValue(entriy.getSnrValue(),entriy.getSnrNumber(),entriy.getSnrBg());\r
+ }\r
+\r
+ }\r
+}\r
--- /dev/null
+package com.enqualcomm.support.utils;\r
+\r
+public class SnrEntriy {\r
+ private float snrValue;\r
+ private int snrNumber;\r
+ private int snrBg;\r
+\r
+ public SnrEntriy() {\r
+ }\r
+\r
+ public SnrEntriy(float snrValue, int snrNumber, int snrBg) {\r
+ this.snrNumber = snrNumber;\r
+ this.snrValue = snrValue;\r
+ this.snrBg = snrBg;\r
+ }\r
+\r
+ public float getSnrValue() {\r
+ return snrValue;\r
+ }\r
+\r
+ public void setSnrValue(int snrValue) {\r
+ this.snrValue = snrValue;\r
+ }\r
+\r
+ public int getSnrNumber() {\r
+ return snrNumber;\r
+ }\r
+\r
+ public void setSnrNumber(int snrNumber) {\r
+ this.snrNumber = snrNumber;\r
+ }\r
+\r
+ public int getSnrBg() {\r
+ return snrBg;\r
+ }\r
+\r
+ public void setSnrBg(int snrBg) {\r
+ this.snrBg = snrBg;\r
+ }\r
+}\r
\r
\r
public class WakeLockUtil {\r
- public static PowerManager.WakeLock getWakeLock(Context context, String tag) {\r
- PowerManager.WakeLock wakeLock = ((PowerManager)(context.getSystemService(Context.POWER_SERVICE))).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, tag);\r
- wakeLock.acquire(60000L);\r
+ public static PowerManager.WakeLock getScreenOnWakeLock(Context context, String tag) {\r
+ PowerManager.WakeLock wakeLock = ((PowerManager)(context.getSystemService(Context.POWER_SERVICE))).newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, tag);\r
+ wakeLock.acquire(900000L);\r
return wakeLock;\r
}\r
}\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+ xmlns:app="http://schemas.android.com/apk/res-auto"\r
+ xmlns:tools="http://schemas.android.com/tools"\r
+ android:layout_width="match_parent"\r
+ android:layout_height="match_parent"\r
+ tools:context=".GPSActivity"\r
+ android:background="@color/colorIcBg">\r
+\r
+ <TextView\r
+ android:id="@+id/ic_lc_fix_name"\r
+ style="@style/IcTextStyle"\r
+ android:text="GPS状态:"\r
+ android:textSize="24sp" />\r
+\r
+ <TextView\r
+ android:id="@+id/ic_lc_fix_value"\r
+ style="@style/IcTextStyle"\r
+ android:layout_marginStart="10dp"\r
+ android:layout_toEndOf="@id/ic_lc_fix_name"\r
+ android:textSize="24sp" />\r
+\r
+ <TextView\r
+ android:id="@+id/ic_lc_star_name"\r
+ style="@style/IcTextStyle"\r
+ android:layout_below="@id/ic_lc_fix_name"\r
+ android:text="星数:"\r
+ android:textSize="24sp" />\r
+\r
+ <TextView\r
+ android:id="@+id/ic_lc_star_value"\r
+ style="@style/IcTextStyle"\r
+ android:layout_below="@id/ic_lc_fix_name"\r
+ android:layout_marginStart="10dp"\r
+ android:layout_toEndOf="@id/ic_lc_star_name"\r
+ android:textSize="24sp" />\r
+\r
+ <TextView\r
+ android:id="@+id/ic_lc_hoop_name"\r
+ style="@style/IcTextStyle"\r
+ android:layout_below="@id/ic_lc_star_name"\r
+ android:text="HDOP:"\r
+ android:textSize="24sp" />\r
+\r
+ <TextView\r
+ android:id="@+id/ic_lc_hoop_value"\r
+ style="@style/IcTextStyle"\r
+ android:layout_below="@id/ic_lc_star_name"\r
+ android:layout_marginStart="10dp"\r
+ android:layout_toEndOf="@id/ic_lc_hoop_name"\r
+ android:textSize="24sp" />\r
+\r
+\r
+\r
+ <TextView\r
+ android:id="@+id/ic_lc_searchCount"\r
+ style="@style/IcTextStyle"\r
+ android:layout_width="wrap_content"\r
+ android:layout_height="wrap_content"\r
+ android:layout_below="@id/ic_lc_hoop_name"\r
+ android:text="扫描时间:"\r
+ android:textSize="24sp" />\r
+\r
+ <TextView\r
+ android:id="@+id/ic_lc_searchCount_value"\r
+ style="@style/IcTextStyle"\r
+ android:layout_width="wrap_content"\r
+ android:layout_height="wrap_content"\r
+ android:layout_below="@id/ic_lc_hoop_name"\r
+ android:layout_marginStart="10dp"\r
+ android:layout_toEndOf="@id/ic_lc_searchCount"\r
+ android:textSize="24sp" />\r
+ <android.support.v7.widget.RecyclerView\r
+ android:id="@+id/app_list"\r
+ android:layout_below="@id/ic_lc_searchCount"\r
+ android:layout_width="match_parent"\r
+ android:layout_height="match_parent"/>\r
+</RelativeLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<com.enqualcomm.support.SnrHistogramView xmlns:android="http://schemas.android.com/apk/res/android"\r
+ android:id="@+id/item_snr_view"\r
+ android:layout_width="45dp"\r
+ android:layout_height="match_parent"/>
\ No newline at end of file
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
+
+ <color name="colorIcBg">#000000</color>
+ <color name="colorIcTextView">#FFFFFF</color>
</resources>
</style>
-
+ <style name="IcTextStyle">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:textColor">@color/colorIcTextView</item>
+ <item name="android:textSize">32sp</item>
+ </style>
</resources>