From: snickersun Date: Tue, 17 Mar 2020 10:18:58 +0000 (+0800) Subject: 增加GPS 星值 测试窗口,给天线调试用。 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=9461491127873546147194ccddef27701edeef21;p=factoryMode.git 增加GPS 星值 测试窗口,给天线调试用。 --- diff --git a/app/build.gradle b/app/build.gradle index 8ab944c..1997d4a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -37,7 +37,7 @@ android { outputFileName = "FactoryMode.apk" } } - buildToolsVersion '27.0.3' +// buildToolsVersion '20.0.3' sourceSets { main { @@ -51,14 +51,18 @@ android { } dependencies { - implementation 'com.android.support:support-v4:20.0.0' +// implementation 'com.android.support:support-v4:20.0.0' // compileOnly files('libs/framework.jar') - provided files('libs/framework.jar') + compileOnly files('libs/framework.jar') implementation 'com.squareup.okhttp3:okhttp:3.4.1' implementation 'io.reactivex:rxandroid:1.2.1' implementation 'com.liulishuo.filedownloader:library:1.6.3' compileOnly files('libs/IAtChannel_classes.jar') implementation files('libs/LineWrapContainer.aar') + implementation 'com.android.support:appcompat-v7:27.1.1' + implementation 'com.android.support:recyclerview-v7:27.1.1' +// implementation 'com.android.support:recyclerview-v7:20.0.0' + } preBuild { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5c1711a..d588831 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -70,6 +70,7 @@ android:icon="@drawable/ic_gravity" android:label="@string/app_name"> + numSatelliteList = new ArrayList(); // 卫星信号 + public int used_gps_numbs; + public float hdop; + public int satlite_numbss; + public int search_time_cost; + public int locating_status; + } + public ArrayList testSnrEntriyDate(List gpslist) { + ArrayList entity = new ArrayList<>(); + + if (gpslist!=null) { + for (int i = 0; i < gpslist.size(); i++) { + + float snr=gpslist.get(i).getSnr(); + int prn=gpslist.get(i).getPrn(); + Logger.d("testSnrEntriyDate snr="+snr+",prn="+prn); + SnrEntriy info = new SnrEntriy(snr,prn , (snr>=40? Color.GREEN:((snr>=25&&snr<40)? Color.YELLOW: Color.RED))); + entity.add(info); + } + } + return entity; + } + PowerManager.WakeLock screenOnWakelock=null; + @Override + protected void onResume() { + super.onResume(); + if (screenOnWakelock==null) + screenOnWakelock = getScreenOnWakeLock(this,GPSActivity.class.getSimpleName()); + + } + public static PowerManager.WakeLock getScreenOnWakeLock(Context context, String tag) { + PowerManager.WakeLock wakeLock = ((PowerManager)(context.getSystemService(Context.POWER_SERVICE))).newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, tag); + wakeLock.acquire(); + return wakeLock; + } + @Override + protected void onPause() { + super.onPause(); + if(screenOnWakelock!=null) { + if (screenOnWakelock.isHeld()) { + screenOnWakelock.release(); + } + screenOnWakelock=null; + } + + + } + + @Override + protected void onDestroy(){ + super.onDestroy(); + stopListen(); + + } + + private class myGpsListener implements GpsStatus.NmeaListener, LocationListener{ + + @Override + public void onNmeaReceived(long l, String s) { + mOnNmeaReceived(l,s); + } + + @Override + public void onLocationChanged(Location location) { + + } + + @Override + public void onStatusChanged(String s, int i, Bundle bundle) { + + } + + @Override + public void onProviderEnabled(String s) { + + } + + @Override + public void onProviderDisabled(String s) { + + } + } + + Handler mHandler=new Handler(new Handler.Callback() { + @Override + public boolean handleMessage(Message message) { + + List gpslist =gps_status_show.numSatelliteList; + adapter.updateLocationValue(testSnrEntriyDate(gpslist)); + String fixed=new StringBuilder().append(gps_status_show.locating_status>0? + "Fixed ":"notFixed ").append(getLocalTime2()).toString(); + String satlites=new StringBuilder("used ").append(gps_status_show.used_gps_numbs).append(" in ") + .append(gps_status_show.numSatelliteList.size()).append("/ inMap ").append(gps_status_show.satlite_numbss).toString(); + String locationTime=new StringBuilder().append(gps_status_show.search_time_cost).append("秒").toString(); + String hdop=new StringBuilder().append(String.valueOf(gps_status_show.hdop)).append("ç±³").toString(); + mFix.setText(fixed); + mStar.setText(satlites); + mHoop.setText(hdop); + mSearchCount.setText(locationTime); + + return false; + } + }); + myGpsListener gpsListener=new myGpsListener(); + private boolean listening=false; + public boolean startListen() { + + if (this.listening == false) { + Settings.Secure.setLocationProviderEnabled(this.getContentResolver(), GPS_PROVIDER, true); + + + Criteria criteria = new Criteria(); + 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.d("GPS StartListen with Provider " + provider); + this.locationManager.requestLocationUpdates(provider, 0L, 0.0F, gpsListener); + + this.listening = true; + longitude = 0; + latitude = 0; + searchCout = 0; + locationFixedCount=0; + +// locationManager.addGpsStatusListener(statusListener);//监听搜星状态 + locationManager.addNmeaListener(gpsListener); //监听NMEA 协议数据。 + + //做个热启动 + return true;//gpsHotStart(); + }else{ + Logger.d(" location listening, skip !"); + return true; + } + } + + + public void stopListen() { + this.locationManager.removeNmeaListener(gpsListener); + this.locationManager.removeUpdates(gpsListener); + this.listening = false; + Logger.d("stopListen 定位 "); + + Settings.Secure.setLocationProviderEnabled(this.getContentResolver(), GPS_PROVIDER, false); + + } + + private LocationManager locationManager; + private double longitude; + private double latitude; + + private int searchCout=0; + + private GPS_locationStatus gps_status = new GPS_locationStatus(); + private GPS_locationStatus gps_status_show = new GPS_locationStatus(); + + private static int locationFixedCount=0; + static int satindex=0; + public void mOnNmeaReceived(long paramLong, String nmeastr) { +// EqcAlgorithmNative.native_EqcAlgorithmMethod5(paramString); +// ICLogger.i("Nmea :"+nmeastr+" "+paramLong); + + if(nmeastr.startsWith("$RD_RSSI")) { + + searchCout++; + on_locating_changed(gps_status); + gps_status.numSatelliteList.clear(); + gps_status.search_time_cost=searchCout; + } + + + if (nmeastr.startsWith("$GPGLL,")){ + String tmplist[]=nmeastr.split(","); +// GPGLL编辑 +//(地理定位信息) +// 例:$GPGLL,4250.5589,S,14718.5084,E,092204.999,A*2D +// 字段0:$GPGLL,语句ID,表明该语句为Geographic Position(GLL)地理定位信息 +// 字段1:纬度ddmm.mmmm,度分格式(前导位数不足则补0) +// 字段2:纬度N(北纬)或S(南纬) +// 字段3:经度dddmm.mmmm,度分格式(前导位数不足则补0) +// 字段4:经度E(东经)或W(西经) +// 字段5:UTC时间,hhmmss.sss格式 +// 字段6:状态,A=定位,V=未定位 +// 字段7:校验值($与*之间的数异或后的值) + String Lat=tmplist[1]; + String lon=tmplist[3]; + String fixed=tmplist[6]; +// ICLogger.i("GPGLL Lat="+Lat+",Lon="+lon+",fixed="+fixed); + + }else if (nmeastr.startsWith("$GPRMC,")) { +// GPRMC编辑 +//(推荐定位信息数据格式) +// 例:$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50 +// 字段0:$GPRMC,语句ID,表明该语句为Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐最小定位信息 +// 字段1:UTC时间,hhmmss.sss格式 +// 字段2:状态,A=定位,V=未定位 +// 字段3:纬度ddmm.mmmm,度分格式(前导位数不足则补0) +// 字段4:纬度N(北纬)或S(南纬) +// 字段5:经度dddmm.mmmm,度分格式(前导位数不足则补0) +// 字段6:经度E(东经)或W(西经) +// 字段7:速度,节,Knots +// 字段8:方位角,度 +// 字段9:UTC日期,DDMMYY格式 +// 字段10:磁偏角,(000 - 180)度(前导位数不足则补0) +// 字段11:磁偏角方向,E=东W=西 +// 字段12:模式,A=自动,D=差分,E=估测,N=数据无效(3.0协议内容) +// 字段13:校验值($与*之间的数异或后的值) + String tmplist[]=nmeastr.split(","); + String utctime=tmplist[1]; + String Lat=tmplist[3]; + String lon=tmplist[5]; + String fixed=tmplist[2]; + String speed=tmplist[7]; +// ICLogger.i("GPRMC GPSTime="+utctime+",Lat="+Lat+",Lon="+lon+",fixed="+fixed+",speed="+speed); +// if (Config.LOG_TOFILE) +// FileOutputUtil.fileOutput(this.runtime.getCacheDir(), "GPS", "GPRMC GPSTime="+utctime+",Lat="+Lat+",Lon="+lon+",fixed="+fixed+",speed="+speed); + if (fixed.trim().equals("A")) { + if (speed.trim().isEmpty()) speed = "0.0"; + } + + + }else if (nmeastr.startsWith("$GPGSV,")) { + +// GPGSV编辑 +// (可见卫星信息) +// 例:$GPGSV,3,1,10,20,78,331,45,01,59,235,47,22,41,069,,13,32,252,45*70 +// 字段0:$GPGSV,语句ID,表明该语句为GPS Satellites in View(GSV)可见卫星信息 +// 字段1:本次GSV语句的总数目(1 - 3) +// 字段2:本条GSV语句是本次GSV语句的第几条(1 - 3) +// 字段3:当前可见卫星总数(00 - 12)(前导位数不足则补0) +// 字段4:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0) +// 字段5:卫星仰角(00 - 90)度(前导位数不足则补0) +// 字段6:卫星方位角(00 - 359)度(前导位数不足则补0) +// 字段7:信噪比(00-99)dbHz +// 字段8:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0) +// 字段9:卫星仰角(00 - 90)度(前导位数不足则补0) +// 字段10:卫星方位角(00 - 359)度(前导位数不足则补0) +// 字段11:信噪比(00-99)dbHz +// 字段12:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0) +// 字段13:卫星仰角(00 - 90)度(前导位数不足则补0) +//// 字段14:卫星方位角(00 - 359)度(前导位数不足则补0) +//// 字段15:信噪比(00-99)dbHz +// 字段16:校验值($与*之间的数异或后的值) + + String tmplist[]=nmeastr.split(","); + int maxPageCount= Integer.valueOf(tmplist[1]); + int currentPage= Integer.valueOf(tmplist[2]); + int SatlitesCount= Integer.valueOf(tmplist[3]); + if (maxPageCount>0 && currentPage==1){ + //第一页把数组初始化一遍。 + satindex=0; + gps_status.satlite_numbss=SatlitesCount; + } + int satcount=(tmplist.length-4)/4; +// ICLogger.i("Nmea :"+nmeastr+" "+satcount); + for (int i=0;i0] ="+ gps_status.numSatelliteList.size()); + + Logger.d( sb.toString()); + + } + }else if (nmeastr.startsWith("$GPGGA,")) { + +// GPGGA编辑 +//(定位信息) +// 例:$GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,12.2,M,19.7,M,,0000*1F +// 字段0:$GPGGA,语句ID,表明该语句为Global Positioning System Fix Data(GGA)GPS定位信息 +// 字段1:UTC 时间,hhmmss.sss,时分秒格式 +// 字段2:纬度ddmm.mmmm,度分格式(前导位数不足则补0) +// 字段3:纬度N(北纬)或S(南纬) +// 字段4:经度dddmm.mmmm,度分格式(前导位数不足则补0) +// 字段5:经度E(东经)或W(西经) +// 字段6:GPS状态,0=不可用(FIX NOT valid),1=单点定位(GPS FIX),2=差分定位(DGPS),3=无效PPS,4=实时差分定位(RTK FIX),5=RTK FLOAT,6=正在估算 +// 字段7:正在使用的卫星数量(00 - 12)(前导位数不足则补0) +// 字段8:HDOP水平精度因子(0.5 - 99.9) +// 字段9:海拔高度(-9999.9 - 99999.9) +// 字段10:单位:M(米) +// 字段11:地球椭球面相对大地水准面的高度 WGS84水准面划分 +// 字段12:WGS84水准面划分单位:M(米) +// 字段13:差分时间(从接收到差分信号开始的秒数,如果不是差分定位将为空) +// 字段14:差分站ID号0000 - 1023(前导位数不足则补0,如果不是差分定位将为空) +// 字段15:校验值($与*之间的数异或后的值) + + String tmplist[]=nmeastr.split(","); + String utctime=tmplist[1]; + String Lat=tmplist[2]; + String lon=tmplist[4]; + String fixed=tmplist[6]; + String usedStarts=tmplist[7]; + String hdop=tmplist[8]; + + + if ( (fixed.trim().equals("1"))||(fixed.trim().equals("2"))||(fixed.trim().equals("6"))){ + + + // 转换GPS坐标为度,以便在各种应用中可以方便查找。 + latitude= Double.valueOf(Lat); + longitude= Double.valueOf(lon); + // 转换单位,从分转换到度 + + double intdu= (int)(longitude /100f); //小数转换到分为单位 + double du=(longitude - intdu*100)/60f; + double last= intdu+du; + longitude =last; + intdu= (int)(latitude /100f); //小数转换到分为单位 + du=(latitude - intdu*100)/60f; + last= intdu+du; + latitude=last; + + // 经纬度 保留4位小数点 + DecimalFormat df = new DecimalFormat("#.000000"); + String strLatitude = df.format(latitude); + String strLongitude = df.format(longitude); + + //定位 + StringBuilder sb=new StringBuilder(); + sb.append("GPGGA, location time= " + getLocalTime2() + ", FixedCount=" + locationFixedCount + ", GPSTime="+utctime+", Lat="+Lat+" ("+strLatitude+"), Lon="+lon+" ("+strLongitude+"), fixed="+fixed+", hdop="+hdop+", usedStarts="+usedStarts); + Logger.d(sb.toString()); + + gps_status.locating_status=1; //fixed + }else{ + gps_status.locating_status=0; //notfixed + } + gps_status.hdop= Float.valueOf(hdop.trim()); + gps_status.used_gps_numbs= Integer.valueOf(usedStarts.trim()); + + + }else if (nmeastr.startsWith("$GPGSA,")) { + +// GPGSA编辑 +//( 当前卫星信息) +// 例:$GPGSA,A,3,01,20,19,13,,,,,,,,,40.4,24.4,32.2*0A +// 字段0:$GPGSA,语句ID,表明该语句为GPS DOP and Active Satellites(GSA)当前卫星信息 +// 字段1:定位模式(选择2D/3D),A=自动选择,M=手动选择 +// 字段2:定位类型,1=未定位,2=2D定位,3=3D定位 +// 字段3:PRN码(伪随机噪声码),第1信道正在使用的卫星PRN码编号(00)(前导位数不足则补0) +// 字段4:PRN码(伪随机噪声码),第2信道正在使用的卫星PRN码编号(00)(前导位数不足则补0) +// 字段5:PRN码(伪随机噪声码),第3信道正在使用的卫星PRN码编号(00)(前导位数不足则补0) +// 字段6:PRN码(伪随机噪声码),第4信道正在使用的卫星PRN码编号(00)(前导位数不足则补0) +// 字段7:PRN码(伪随机噪声码),第5信道正在使用的卫星PRN码编号(00)(前导位数不足则补0) +// 字段8:PRN码(伪随机噪声码),第6信道正在使用的卫星PRN码编号(00)(前导位数不足则补0) +// 字段9:PRN码(伪随机噪声码),第7信道正在使用的卫星PRN码编号(00)(前导位数不足则补0) +// 字段10:PRN码(伪随机噪声码),第8信道正在使用的卫星PRN码编号(00)(前导位数不足则补0) +// 字段11:PRN码(伪随机噪声码),第9信道正在使用的卫星PRN码编号(00)(前导位数不足则补0) +// 字段12:PRN码(伪随机噪声码),第10信道正在使用的卫星PRN码编号(00)(前导位数不足则补0) +// 字段13:PRN码(伪随机噪声码),第11信道正在使用的卫星PRN码编号(00)(前导位数不足则补0) +// 字段14:PRN码(伪随机噪声码),第12信道正在使用的卫星PRN码编号(00)(前导位数不足则补0) +// 字段15:PDOP综合位置精度因子(0.5 - 99.9) +// 字段16:HDOP水平精度因子(0.5 - 99.9) +// 字段17:VDOP垂直精度因子(0.5 - 99.9) +// 字段18:校验值($与*之间的数异或后的值) + +// String tmplist[]=nmeastr.split(","); +// String locationmod=tmplist[1]; +// String fixed=tmplist[2]; +// String hdop=tmplist[16]; +// if (!fixed.trim().equals("1")){ +// //定位 +// ICLogger.i("GPGSA fixed="+fixed+",hdop="+hdop); +// } + } + } + +} diff --git a/app/src/main/java/mobile/miki/LocationSnrAdapter.java b/app/src/main/java/mobile/miki/LocationSnrAdapter.java new file mode 100644 index 0000000..1a32224 --- /dev/null +++ b/app/src/main/java/mobile/miki/LocationSnrAdapter.java @@ -0,0 +1,58 @@ +package mobile.miki; + +import android.support.annotation.NonNull; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import java.util.ArrayList; + +public class LocationSnrAdapter extends RecyclerView.Adapter { + + + private ArrayList mSnrList = new ArrayList<>(); + + public LocationSnrAdapter(ArrayList mSnrList) { + this.mSnrList = mSnrList; + } + + public void updateLocationValue(ArrayList snrEntriys){ + mSnrList.clear(); + mSnrList.addAll(snrEntriys); + notifyDataSetChanged(); + } + + @NonNull + @Override + public SnrHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_snr_layout, parent, false); + return new SnrHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull SnrHolder holder, int position) { + holder.updateSnrValue(mSnrList.get(position)); + } + + @Override + public int getItemCount() { + return mSnrList.size(); + } + + static class SnrHolder extends RecyclerView.ViewHolder { + + private SnrHistogramView snrView; + + public SnrHolder(@NonNull View itemView) { + super(itemView); + snrView = (SnrHistogramView)itemView.findViewById(R.id.item_snr_view); + } + + + public void updateSnrValue(SnrEntriy entriy){ + snrView.updateValue(entriy.getSnrValue(),entriy.getSnrNumber(),entriy.getSnrBg()); + } + + } +} diff --git a/app/src/main/java/mobile/miki/SnrEntriy.java b/app/src/main/java/mobile/miki/SnrEntriy.java new file mode 100644 index 0000000..822aa18 --- /dev/null +++ b/app/src/main/java/mobile/miki/SnrEntriy.java @@ -0,0 +1,40 @@ +package mobile.miki; + +public class SnrEntriy { + private float snrValue; + private int snrNumber; + private int snrBg; + + public SnrEntriy() { + } + + public SnrEntriy(float snrValue, int snrNumber, int snrBg) { + this.snrNumber = snrNumber; + this.snrValue = snrValue; + this.snrBg = snrBg; + } + + public float getSnrValue() { + return snrValue; + } + + public void setSnrValue(int snrValue) { + this.snrValue = snrValue; + } + + public int getSnrNumber() { + return snrNumber; + } + + public void setSnrNumber(int snrNumber) { + this.snrNumber = snrNumber; + } + + public int getSnrBg() { + return snrBg; + } + + public void setSnrBg(int snrBg) { + this.snrBg = snrBg; + } +} diff --git a/app/src/main/java/mobile/miki/SnrHistogramView.java b/app/src/main/java/mobile/miki/SnrHistogramView.java new file mode 100644 index 0000000..76fd6e3 --- /dev/null +++ b/app/src/main/java/mobile/miki/SnrHistogramView.java @@ -0,0 +1,120 @@ +package mobile.miki; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.support.annotation.Nullable; +import android.util.AttributeSet; +import android.util.TypedValue; +import android.view.View; + + +public class SnrHistogramView extends View { + + + private int mWidth = 0; + private int mHeight = 0; + + private Paint mPaint; + private Paint mTextPaint; + + private String mSnrValue = "80"; + private String mSnrNmber = "60"; + + private float mBL=1f; + + public SnrHistogramView(Context context) { + this(context, null); + } + + public SnrHistogramView(Context context, @Nullable AttributeSet attrs) { + this(context, attrs, 0); + } + + public SnrHistogramView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + mPaint = new Paint(); + mTextPaint = new Paint(); + + mPaint.setAntiAlias(true); + mPaint.setDither(true); + int mBgColor = Color.GREEN; + mPaint.setColor(mBgColor); + mPaint.setStyle(Paint.Style.FILL); + + mTextPaint.setAntiAlias(true); + mTextPaint.setDither(true); + mTextPaint.setColor(Color.WHITE); + mTextPaint.setStyle(Paint.Style.FILL); + mTextPaint.setTextSize(spToPx(24)); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + + + int widthSize = MeasureSpec.getSize(widthMeasureSpec); + int widthMode = MeasureSpec.getMode(widthMeasureSpec); + int heightSize = MeasureSpec.getSize(heightMeasureSpec); + int heightMode = MeasureSpec.getMode(heightMeasureSpec); + + + if (widthMode == MeasureSpec.AT_MOST + || widthMode == MeasureSpec.UNSPECIFIED + || heightMeasureSpec == MeasureSpec.AT_MOST + || heightMeasureSpec == MeasureSpec.UNSPECIFIED) { + //宽度高度至少有一个确定的值,不能同时为wrap_content + return; + } else { //至少有一个为确定值,要获取其中的最小值 + if (widthMode == MeasureSpec.EXACTLY) { + mWidth = widthSize; + } + + if (heightMode == MeasureSpec.EXACTLY) { + mHeight = heightSize; + } + } + } + + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + float[] snrNmber = measureTextWidth(mSnrNmber, mTextPaint); + float[] snrValue = measureTextWidth(mSnrValue, mTextPaint); + + float hv = getHistogramHeight(snrValue[1], snrNmber[1], mBL); + + canvas.drawText(mSnrNmber, (mWidth - snrNmber[0]) / 2, mHeight, mTextPaint); + canvas.drawText(mSnrValue, (mWidth - snrValue[0]) / 2, mHeight - snrNmber[1] - hv, mTextPaint); + + canvas.drawRect(0, mHeight - (hv + snrNmber[1] - 2), mWidth, mHeight - snrNmber[1], mPaint); + } + + private float getHistogramHeight(float vh, float nh, float bl) { + return (mHeight - vh - nh) * bl; + } + + private float[] measureTextWidth(String mText, Paint textPaint) { + Paint.FontMetrics fontMetrics = textPaint.getFontMetrics(); + float height1 = fontMetrics.bottom - fontMetrics.top; + float strWidth = textPaint.measureText(mText); + return new float[]{strWidth, height1}; + } + + private float spToPx(float sp) { + return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, getResources().getDisplayMetrics()); + } + + public void updateValue(float value,int number,int bgColor){ + mPaint.setColor(bgColor); + mSnrNmber = String.valueOf(number); + mSnrValue = String.valueOf((int)value); + mBL=value*0.025F; + + invalidate(); + } +} diff --git a/app/src/main/java/mobile/miki/mainui/TestMainList.java b/app/src/main/java/mobile/miki/mainui/TestMainList.java index 6248cea..10294c6 100644 --- a/app/src/main/java/mobile/miki/mainui/TestMainList.java +++ b/app/src/main/java/mobile/miki/mainui/TestMainList.java @@ -21,6 +21,7 @@ import java.util.Timer; import java.util.TimerTask; import mobile.miki.BaseActivity; +import mobile.miki.GPSActivity; import mobile.miki.MyApplication; import mobile.miki.R; import mobile.miki.VersionActivity; @@ -43,7 +44,7 @@ public class TestMainList extends BaseActivity implements OnClickListener { private LinearLayout shutdown_system; private LinearLayout dial; private LinearLayout flagPosition; - + private LinearLayout gpsFulltest; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub @@ -61,6 +62,9 @@ public class TestMainList extends BaseActivity implements OnClickListener { shutdown_system = (LinearLayout)findViewById(R.id.shutdown_system); dial = (LinearLayout)findViewById(R.id.dail); download_mode.setVisibility(View.GONE); + + gpsFulltest = (LinearLayout) findViewById(R.id.gps_full_test); + flagPosition = (LinearLayout)findViewById(R.id.flagposiontion); if (!FTUtils.isSugar()) { flagPosition.setVisibility(View.GONE); @@ -82,7 +86,7 @@ public class TestMainList extends BaseActivity implements OnClickListener { dial.setOnClickListener(this); flagPosition.setOnClickListener(this); shutdown_system.setOnClickListener(this); - + gpsFulltest.setOnClickListener(this); // Log.d(TAG, "onCreate"); Settings.System.putInt(getContentResolver(), "mobile.miki.FactoryModeRunning", 1); } @@ -180,7 +184,10 @@ public class TestMainList extends BaseActivity implements OnClickListener { intent = new Intent(TestMainList.this, FlagPositionActivity.class); startActivity(intent); break; - + case R.id.gps_full_test: + intent = new Intent(TestMainList.this, GPSActivity.class); + startActivity(intent); + break; default: break; } diff --git a/app/src/main/res/layout/activity_shutdown_activity.xml b/app/src/main/res/layout/activity_shutdown_activity.xml index a753d68..74c1739 100644 --- a/app/src/main/res/layout/activity_shutdown_activity.xml +++ b/app/src/main/res/layout/activity_shutdown_activity.xml @@ -7,13 +7,13 @@ + + + + + + + + + + @@ -268,6 +302,17 @@ android:gravity="center_vertical" android:orientation="vertical"> + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_snr_layout.xml b/app/src/main/res/layout/item_snr_layout.xml new file mode 100644 index 0000000..0194fa0 --- /dev/null +++ b/app/src/main/res/layout/item_snr_layout.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/motor_test_layout.xml b/app/src/main/res/layout/motor_test_layout.xml index 9b1f29c..56902d0 100644 --- a/app/src/main/res/layout/motor_test_layout.xml +++ b/app/src/main/res/layout/motor_test_layout.xml @@ -13,8 +13,8 @@ diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 2b8f7ef..4a7f3b7 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -168,4 +168,7 @@ #000000 #B2B2B2 + #000000 + #FFFFFF + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 85aa27f..b2052f6 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -181,5 +181,12 @@ backward-compatibility can go here. --> - + + +