parent
							
								
									0814bc4f89
								
							
						
					
					
						commit
						133941b13f
					
				
				 12 changed files with 760 additions and 2 deletions
			
			
		
									
										Binary file not shown.
									
								
							
						
									
										Binary file not shown.
									
								
							
						| @ -0,0 +1,445 @@ | |||||||
|  | package com.project.survey.ui.instrument.basestationtranslation; | ||||||
|  | 
 | ||||||
|  | import android.content.DialogInterface; | ||||||
|  | import android.content.SharedPreferences; | ||||||
|  | import android.graphics.Color; | ||||||
|  | import android.view.Menu; | ||||||
|  | import android.view.MenuItem; | ||||||
|  | import android.view.View; | ||||||
|  | 
 | ||||||
|  | import androidx.appcompat.app.AlertDialog; | ||||||
|  | import androidx.preference.PreferenceManager; | ||||||
|  | 
 | ||||||
|  | import com.afollestad.materialdialogs.MaterialDialog; | ||||||
|  | import com.bingce.coordlib.model.Blh; | ||||||
|  | import com.bingce.coordlib.model.Coordinate; | ||||||
|  | import com.bingce.coordlib.model.CoordinateSystem; | ||||||
|  | import com.bingce.data.cache.AbstractCachedObserver; | ||||||
|  | import com.bingce.data.cache.CachedCurrentCoordinateSystem; | ||||||
|  | import com.bingce.data.database.ProjectDb; | ||||||
|  | import com.bingce.device.Device; | ||||||
|  | import com.bingce.device.enums.ConnectTypeEnum; | ||||||
|  | import com.bingce.log.BCLog; | ||||||
|  | import com.bingce.rtk.gnss.Gnss; | ||||||
|  | import com.bingce.rtk.gnss.setting.BaseCorrect; | ||||||
|  | import com.bingce.rtk.model.GnssPosition; | ||||||
|  | import com.bingce.rtk.util.CoordTransUtil; | ||||||
|  | 
 | ||||||
|  | import com.bingce.surveyor.agentweb.HelpWebActivity; | ||||||
|  | 
 | ||||||
|  | import com.bingce.utils.ThreadPoolUtil; | ||||||
|  | import com.bingce.utils.Util; | ||||||
|  | import com.project.survey.App; | ||||||
|  | import com.project.survey.R; | ||||||
|  | import com.project.survey.databinding.ActivityRtkCorrectBinding; | ||||||
|  | import com.project.survey.ui.base.BaseSurveyNewActivity; | ||||||
|  | import com.project.survey.ui.instrument.setupstation.ControlPointsNewActivity; | ||||||
|  | import com.project.survey.ui.instrument.setupstation.CoordinatePointsLibraryActivity; | ||||||
|  | import com.project.survey.ui.instrument.setupstation.StakingNewJobActivity; | ||||||
|  | import com.project.survey.util.CommonUtils; | ||||||
|  | import com.project.survey.util.DrawableUtils; | ||||||
|  | 
 | ||||||
|  | import blankj.utilcode.util.StringUtils; | ||||||
|  | import blankj.utilcode.util.ToastUtils; | ||||||
|  | import blankj.utilcode.util.Utils; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | public class RtkBaseCorrectActivity extends BaseSurveyNewActivity { | ||||||
|  |     private int mTimes = -1; | ||||||
|  |     double latSum = 0, lngSum = 0, altSum = 0; | ||||||
|  |     private double originalLatitude, originalLongitude, originalAltitude; | ||||||
|  |     protected final CachedCurrentCoordinateSystem cachedCoordinateSystem = new CachedCurrentCoordinateSystem(this); | ||||||
|  | 
 | ||||||
|  |     private ActivityRtkCorrectBinding binding; | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public View getContentView() { | ||||||
|  |         binding = ActivityRtkCorrectBinding.inflate(getLayoutInflater()); | ||||||
|  |         return binding.getRoot(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     protected void initView() { | ||||||
|  | //        setTitle(R.string.rtk_base_correct);
 | ||||||
|  |         cachedCoordinateSystem.observe(new AbstractCachedObserver<CoordinateSystem>() { | ||||||
|  |             @Override | ||||||
|  |             public void onChanged(boolean isFirstTimeDataChanged, CoordinateSystem coordinateSystem) { | ||||||
|  |                 if (isFirstTimeDataChanged) { | ||||||
|  |                     binding.activityRtkCorrectTvCorrectCurrent.setText(String.format("%s:\n%s:%s\n%s:%s\n%s:%s", | ||||||
|  |                             getString(R.string.current), getString(R.string.rtk_correct_x), | ||||||
|  |                             Util.formatDouble2StringDotAuto(coordinateSystem.correctN), | ||||||
|  |                             getString(R.string.rtk_correct_y), | ||||||
|  |                             Util.formatDouble2StringDotAuto(coordinateSystem.correctE), | ||||||
|  |                             getString(R.string.rtk_correct_z), | ||||||
|  |                             Util.formatDouble2StringDotAuto(coordinateSystem.correctH))); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  | 
 | ||||||
|  |         binding.activityRtkCorrectBtnSmoothCollectTenTimes.setOnClickListener(new View.OnClickListener() { | ||||||
|  |             @Override | ||||||
|  |             public void onClick(View view) { | ||||||
|  |                 binding.activityRtkCorrectEt0.requestFocus();//作用:输入框不聚焦,防止实测坐标后页面自动滑动到顶部,同样避免RTK继续后输入框没有失效焦点,导致再输入内容输入法自动隐藏的问题
 | ||||||
|  |                 CommonUtils.hideSoftInput(); | ||||||
|  | 
 | ||||||
|  |                 Device.getInstance().isRtkRunning = true; | ||||||
|  |                 mTimes = 0; | ||||||
|  |                 latSum = 0; | ||||||
|  |                 lngSum = 0; | ||||||
|  |                 altSum = 0; | ||||||
|  |                 originalLatitude = 0; | ||||||
|  |                 originalLongitude = 0; | ||||||
|  |                 originalAltitude = 0; | ||||||
|  |                 binding.activityRtkCorrectMetOriginalLatitude.setText(""); | ||||||
|  |                 binding.activityRtkCorrectMetOriginalLongitude.setText(""); | ||||||
|  |                 binding.activityRtkCorrectMetOriginalAltitude.setText(""); | ||||||
|  |                 binding.activityRtkCorrectProgressbar.setProgress(0); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |         binding.activityRtkCorrectBtnCorrect.setOnClickListener(new View.OnClickListener() { | ||||||
|  |             @Override | ||||||
|  |             public void onClick(View v) { | ||||||
|  |                 binding.activityRtkCorrectEt0.requestFocus();//作用:输入框不聚焦,防止实测坐标后页面自动滑动到顶部
 | ||||||
|  |                 CommonUtils.hideSoftInput(); | ||||||
|  |                 if (checkCalEnable()) { | ||||||
|  |                     double control_x = Double.parseDouble(binding.activityRtkCorrectMetControlPointX.getText().toString()); | ||||||
|  |                     double control_y = Double.parseDouble(binding.activityRtkCorrectMetControlPointY.getText().toString()); | ||||||
|  |                     double control_z = Double.parseDouble(binding.activityRtkCorrectMetControlPointZ.getText().toString()); | ||||||
|  |                     Coordinate coordinate = CoordTransUtil.blh2Xyz(originalLatitude, originalLongitude, originalAltitude, false, cachedCoordinateSystem.coordinateSystem()); | ||||||
|  |                     if (coordinate == null) { | ||||||
|  |                         ToastUtils.showShort(R.string.input_illegal); | ||||||
|  |                         return; | ||||||
|  |                     } | ||||||
|  |                     double correctN = control_x - coordinate.getX(); | ||||||
|  |                     double correctE = control_y - coordinate.getY(); | ||||||
|  |                     double correctH = control_z - coordinate.getZ(); | ||||||
|  | 
 | ||||||
|  |                     new AlertDialog.Builder(RtkBaseCorrectActivity.this).setTitle(R.string.rtk_correct_result) | ||||||
|  |                             .setMessage(getString(R.string.rtk_correct_x) + ":" + Util.formatDouble2StringDotAuto(correctN) + "\n" | ||||||
|  |                                     + getString(R.string.rtk_correct_y) + ":" + Util.formatDouble2StringDotAuto(correctE) + "\n" | ||||||
|  |                                     + getString(R.string.rtk_correct_z) + ":" + Util.formatDouble2StringDotAuto(correctH) + "\n") | ||||||
|  |                             .setPositiveButton(R.string.global_apply, new DialogInterface.OnClickListener() { | ||||||
|  |                                 @Override | ||||||
|  |                                 public void onClick(DialogInterface dialogInterface, int i) { | ||||||
|  |                                     binding.activityRtkCorrectBtnCorrect.setEnabled(false); | ||||||
|  |                                     cachedCoordinateSystem.coordinateSystem().correctN = correctN; | ||||||
|  |                                     cachedCoordinateSystem.coordinateSystem().correctE = correctE; | ||||||
|  |                                     cachedCoordinateSystem.coordinateSystem().correctH = correctH; | ||||||
|  | 
 | ||||||
|  |                                     BCLog.BugCoordinateSystem.log(cachedCoordinateSystem.coordinateSystem(), () -> "坐标系校正后"); | ||||||
|  | 
 | ||||||
|  |                                     Coordinate correctPoint = new Coordinate(binding.activityRtkCorrectMetControlPointName.getText().toString(), control_x, control_y, control_z); | ||||||
|  |                                     ThreadPoolUtil.execute(() -> { | ||||||
|  |                                         CachedCurrentCoordinateSystem.saveCurrentCoordinateSystem(cachedCoordinateSystem.coordinateSystem()); | ||||||
|  |                                         BCLog.BugCoordinateSystem.log(cachedCoordinateSystem.coordinateSystem(), () -> "执行坐标系存储"); | ||||||
|  |                                         Gnss.getInstance().getSetting().setBaseCorrect(new BaseCorrect(correctPoint)); | ||||||
|  |                                         Gnss.getInstance().save(); | ||||||
|  |                                         runOnUiThread(new Runnable() { | ||||||
|  |                                             @Override | ||||||
|  |                                             public void run() { | ||||||
|  |                                                 binding.activityRtkCorrectTvCorrectCurrent.setText(String.format("%s:\n%s:%s\n%s:%s\n%s:%s", | ||||||
|  |                                                         getString(R.string.current), getString(R.string.rtk_correct_x), | ||||||
|  |                                                         Util.formatDouble2StringDotAuto(cachedCoordinateSystem.coordinateSystem().correctN), | ||||||
|  |                                                         getString(R.string.rtk_correct_y), | ||||||
|  |                                                         Util.formatDouble2StringDotAuto(cachedCoordinateSystem.coordinateSystem().correctE), | ||||||
|  |                                                         getString(R.string.rtk_correct_z), | ||||||
|  |                                                         Util.formatDouble2StringDotAuto(cachedCoordinateSystem.coordinateSystem().correctH))); | ||||||
|  |                                                 ToastUtils.showShort(R.string.apply_success); | ||||||
|  |                                             } | ||||||
|  |                                         }); | ||||||
|  |                                     }); | ||||||
|  |                                 } | ||||||
|  |                             }).setNegativeButton(R.string.close, null).show(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |         binding.activityRtkCorrectBtnCorrect.setEnabled(false); | ||||||
|  |         DrawableUtils.tintModifyColorVector(binding.activityRtkCorrectBtnOpen1, R.drawable.icon_vector_folder); | ||||||
|  |         binding.activityRtkCorrectBtnOpen1.setOnClickListener(v -> { | ||||||
|  |             binding.activityRtkCorrectEt0.requestFocus();//作用:输入框不聚焦,防止实测坐标后页面自动滑动到顶部
 | ||||||
|  |             CommonUtils.hideSoftInput(); | ||||||
|  |             new MaterialDialog.Builder(RtkBaseCorrectActivity.this) | ||||||
|  |                     .title(R.string.data_source) | ||||||
|  |                     .items(new String[]{getString(R.string.road_control_point), getString(R.string.global_control_point), getString(R.string.point_survey_point_library), getString(R.string.staking_point_library)}) | ||||||
|  |                     .itemsCallback((dialog, itemView, which, text) -> { | ||||||
|  |                         switch (which) { | ||||||
|  |                             case 0: | ||||||
|  |                                 ControlPointsNewActivity.pickPoint(this, false, (name, code, x, y, z, remarks) -> { | ||||||
|  |                                     onPicked(name, x, y, z); | ||||||
|  |                                 }); | ||||||
|  |                                 break; | ||||||
|  |                             case 1: | ||||||
|  |                                 ControlPointsNewActivity.pickPoint(this, true, (name, code, x, y, z, remarks) -> { | ||||||
|  |                                     onPicked(name, x, y, z); | ||||||
|  |                                 }); | ||||||
|  |                                 break; | ||||||
|  |                             case 2: | ||||||
|  |                                 CoordinatePointsLibraryActivity.pickPoint(RtkBaseCorrectActivity.this, (name, code, x, y, z, b, l, h) -> { | ||||||
|  |                                     onPicked(name, x, y, z); | ||||||
|  |                                 }); | ||||||
|  |                                 break; | ||||||
|  |                             case 3: | ||||||
|  |                                 StakingNewJobActivity.pickPoint(RtkBaseCorrectActivity.this, (name, x, y, z) -> { | ||||||
|  |                                     onPicked(name, x, y, z); | ||||||
|  |                                 }); | ||||||
|  |                                 break; | ||||||
|  |                         } | ||||||
|  |                     }).show(); | ||||||
|  |         }); | ||||||
|  | 
 | ||||||
|  |         initMaterialEditTextColor(); | ||||||
|  | 
 | ||||||
|  |         if (Device.getInstance().connectType == ConnectTypeEnum.CONNECT_TYPE_PHONE_LOCATION) { | ||||||
|  |             new AlertDialog.Builder(this) | ||||||
|  |                     .setTitle(R.string.hint) | ||||||
|  |                     .setMessage("使用手机自带GPS时,请在RTK坐标系统里,坐标转换方法选择:手机gps校正,再点击校正;如果您想使用RTK放样,请重启软件,选择对应的RTK型号,再进入此界面校正") | ||||||
|  |                     .setPositiveButton(R.string.i_know, null) | ||||||
|  |                     .show(); | ||||||
|  |         } else { | ||||||
|  |             if (Gnss.getInstance().getSetting().getBaseCorrect().getCorrectPoint() != null | ||||||
|  |                     && !StringUtils.isEmpty(Gnss.getInstance().getSetting().getBaseCorrect().getCorrectPoint().getName())) { | ||||||
|  |                 try { | ||||||
|  |                     new AlertDialog.Builder(this) | ||||||
|  |                             .setTitle(R.string.hint) | ||||||
|  |                             .setMessage(getString(R.string.ask_use_last_rtk_coordinate) + Gnss.getInstance().getSetting().getBaseCorrect().getCorrectPoint().getName()) | ||||||
|  |                             .setPositiveButton(R.string.use, new DialogInterface.OnClickListener() { | ||||||
|  |                                 @Override | ||||||
|  |                                 public void onClick(DialogInterface dialog, int which) { | ||||||
|  |                                     binding.activityRtkCorrectMetControlPointName.setText(Gnss.getInstance().getSetting().getBaseCorrect().getCorrectPoint().getName()); | ||||||
|  |                                     binding.activityRtkCorrectMetControlPointX.setText(Util.formatDouble2StringDotAuto(Gnss.getInstance().getSetting().getBaseCorrect().getCorrectPoint().getX())); | ||||||
|  |                                     binding.activityRtkCorrectMetControlPointY.setText(Util.formatDouble2StringDotAuto(Gnss.getInstance().getSetting().getBaseCorrect().getCorrectPoint().getY())); | ||||||
|  |                                     binding.activityRtkCorrectMetControlPointZ.setText(Util.formatDouble2StringDotAuto(Gnss.getInstance().getSetting().getBaseCorrect().getCorrectPoint().getZ())); | ||||||
|  |                                 } | ||||||
|  |                             }) | ||||||
|  |                             .setNegativeButton(R.string.cancel, null) | ||||||
|  |                             .show(); | ||||||
|  |                 } catch (NumberFormatException ignored) { | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     protected void initData() { | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private boolean checkCalEnable() { | ||||||
|  |         //已知点检查
 | ||||||
|  |         if ("".equals(binding.activityRtkCorrectMetControlPointX.getText().toString().trim()) | ||||||
|  |                 && "".equals(binding.activityRtkCorrectMetControlPointY.getText().toString().trim()) | ||||||
|  |                 && "".equals(binding.activityRtkCorrectMetControlPointZ.getText().toString().trim())) { | ||||||
|  |             binding.activityRtkCorrectMetControlPointX.setError(getString(R.string.known_point_cannot_be_empty)); | ||||||
|  |             binding.activityRtkCorrectMetControlPointY.setError(getString(R.string.known_point_cannot_be_empty)); | ||||||
|  |             binding.activityRtkCorrectMetControlPointZ.setError(getString(R.string.known_point_cannot_be_empty)); | ||||||
|  |             return false; | ||||||
|  |         } else if ("-".equals(binding.activityRtkCorrectMetControlPointX.getText().toString().trim()) | ||||||
|  |                 || "-.".equals(binding.activityRtkCorrectMetControlPointX.getText().toString().trim()) | ||||||
|  |                 || ".".equals(binding.activityRtkCorrectMetControlPointX.getText().toString().trim()) | ||||||
|  |                 || "+.".equals(binding.activityRtkCorrectMetControlPointX.getText().toString().trim()) | ||||||
|  |                 || "+".equals(binding.activityRtkCorrectMetControlPointX.getText().toString().trim())) { | ||||||
|  |             binding.activityRtkCorrectMetControlPointX.setError(getString(R.string.input_illegal)); | ||||||
|  |             return false; | ||||||
|  |         } else if ("-".equals(binding.activityRtkCorrectMetControlPointY.getText().toString().trim()) | ||||||
|  |                 || "-.".equals(binding.activityRtkCorrectMetControlPointY.getText().toString().trim()) | ||||||
|  |                 || ".".equals(binding.activityRtkCorrectMetControlPointY.getText().toString().trim()) | ||||||
|  |                 || "+.".equals(binding.activityRtkCorrectMetControlPointY.getText().toString().trim()) | ||||||
|  |                 || "+".equals(binding.activityRtkCorrectMetControlPointY.getText().toString().trim())) { | ||||||
|  |             binding.activityRtkCorrectMetControlPointY.setError(getString(R.string.input_illegal)); | ||||||
|  |             return false; | ||||||
|  |         } else if ("-".equals(binding.activityRtkCorrectMetControlPointZ.getText().toString().trim()) | ||||||
|  |                 || "-.".equals(binding.activityRtkCorrectMetControlPointZ.getText().toString().trim()) | ||||||
|  |                 || ".".equals(binding.activityRtkCorrectMetControlPointZ.getText().toString().trim()) | ||||||
|  |                 || "+.".equals(binding.activityRtkCorrectMetControlPointZ.getText().toString().trim()) | ||||||
|  |                 || "+".equals(binding.activityRtkCorrectMetControlPointZ.getText().toString().trim())) { | ||||||
|  |             binding.activityRtkCorrectMetControlPointZ.setError(getString(R.string.input_illegal)); | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|  |         if ("".equals(binding.activityRtkCorrectMetControlPointX.getText().toString().trim())) { | ||||||
|  |             binding.activityRtkCorrectMetControlPointX.setText("0"); | ||||||
|  |         } | ||||||
|  |         if ("".equals(binding.activityRtkCorrectMetControlPointY.getText().toString().trim())) { | ||||||
|  |             binding.activityRtkCorrectMetControlPointY.setText("0"); | ||||||
|  |         } | ||||||
|  |         if ("".equals(binding.activityRtkCorrectMetControlPointZ.getText().toString().trim())) { | ||||||
|  |             binding.activityRtkCorrectMetControlPointZ.setText("0"); | ||||||
|  |         } | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void onPicked(String name, double x, double y, double z) { | ||||||
|  |         String lastCorrectStr = null; | ||||||
|  | //        int jobIndex = data.getIntExtra("returnJobIndex", -1);
 | ||||||
|  | //        int coordIndex = data.getIntExtra("returnCoordIndex", -1);
 | ||||||
|  | //        IStakingJobDataSource stakingJobDataSource = VersionController.instance.getStakingJobDataSource();
 | ||||||
|  | //        if (jobIndex >= 0 && jobIndex < stakingJobDataSource.size()) {
 | ||||||
|  | //            if (coordIndex >= 0 && coordIndex < stakingJobDataSource.get(jobIndex).getPointList().size()) {
 | ||||||
|  | //                Point point = stakingJobDataSource.get(jobIndex).getPointList().get(coordIndex);
 | ||||||
|  | //                binding.activityRtkCorrectMetControlPointName.setText(point.getName());
 | ||||||
|  | //                binding.activityRtkCorrectMetControlPointX.setText(Util.formatDouble2String(point.getX()));
 | ||||||
|  | //                binding.activityRtkCorrectMetControlPointY.setText(Util.formatDouble2String(point.getY()));
 | ||||||
|  | //                binding.activityRtkCorrectMetControlPointZ.setText(Util.formatDouble2String(point.getZ()));
 | ||||||
|  | //                lastCorrectStr = point.getName() + "," + point.getX() + "," + point.getY() + "," + point.getZ();
 | ||||||
|  | //                ToastUtils.showShort(R.string.open_point_successful);
 | ||||||
|  | //            }
 | ||||||
|  | //        } else {
 | ||||||
|  | //            String name = data.getStringExtra("name");
 | ||||||
|  | //            double x = data.getDoubleExtra("x", 0);
 | ||||||
|  | //            double y = data.getDoubleExtra("y", 0);
 | ||||||
|  | //            double z = data.getDoubleExtra("z", 0);
 | ||||||
|  |         binding.activityRtkCorrectMetControlPointName.setText(name); | ||||||
|  |         binding.activityRtkCorrectMetControlPointX.setText(Util.formatDouble2StringDotAuto(x)); | ||||||
|  |         binding.activityRtkCorrectMetControlPointY.setText(Util.formatDouble2StringDotAuto(y)); | ||||||
|  |         binding.activityRtkCorrectMetControlPointZ.setText(Util.formatDouble2StringDotAuto(z)); | ||||||
|  |         lastCorrectStr = name + "," + x + "," + y + "," + z; | ||||||
|  |         ToastUtils.showShort(R.string.open_point_successful); | ||||||
|  | //        }
 | ||||||
|  |         SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); | ||||||
|  |         SharedPreferences.Editor editor = prefs.edit(); | ||||||
|  |         editor.putString("lastRtkCorrectPoint", lastCorrectStr); | ||||||
|  |         editor.apply(); | ||||||
|  |         ToastUtils.showShort(R.string.open_point_successful); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public boolean onOptionsItemSelected(MenuItem item) { | ||||||
|  |         switch (item.getItemId()) { | ||||||
|  |             case R.id.menu_activity_rtk_correct_reset: | ||||||
|  |                 cachedCoordinateSystem.coordinateSystem().correctN = 0; | ||||||
|  |                 cachedCoordinateSystem.coordinateSystem().correctE = 0; | ||||||
|  |                 cachedCoordinateSystem.coordinateSystem().correctH = 0; | ||||||
|  |                 binding.activityRtkCorrectTvCorrectCurrent.setText(String.format("%s:\n%s:%s\n%s:%s\n%s:%s", | ||||||
|  |                         getString(R.string.current), getString(R.string.rtk_correct_x), | ||||||
|  |                         Util.formatDouble2StringDotAuto(cachedCoordinateSystem.coordinateSystem().correctN), | ||||||
|  |                         getString(R.string.rtk_correct_y), | ||||||
|  |                         Util.formatDouble2StringDotAuto(cachedCoordinateSystem.coordinateSystem().correctE), | ||||||
|  |                         getString(R.string.rtk_correct_z), | ||||||
|  |                         Util.formatDouble2StringDotAuto(cachedCoordinateSystem.coordinateSystem().correctH))); | ||||||
|  |                 ThreadPoolUtil.execute(() -> { | ||||||
|  |                     ProjectDb.getInstance().updateCurrentCoordinator(cachedCoordinateSystem.coordinateSystem()); | ||||||
|  |                     ToastUtils.showShort(R.string.rtk_correct_reset); | ||||||
|  |                 }); | ||||||
|  |                 break; | ||||||
|  |             case R.id.menu_help: | ||||||
|  |                 HelpWebActivity.navigation2RtkBaseCorrectHelp(this); | ||||||
|  |                 break; | ||||||
|  |         } | ||||||
|  |         return super.onOptionsItemSelected(item); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public boolean onCreateOptionsMenu(Menu menu) { | ||||||
|  |         super.onCreateOptionsMenu(menu); | ||||||
|  |         getMenuInflater().inflate(R.menu.menu_activity_rtk_correct, menu); | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void initMaterialEditTextColor() { | ||||||
|  |         if (((App) Utils.getApp()).isThemeDark) { | ||||||
|  |             binding.activityRtkCorrectMetOriginalLatitude.setMetTextColor(Color.WHITE); | ||||||
|  |             binding.activityRtkCorrectMetOriginalLongitude.setMetTextColor(Color.WHITE); | ||||||
|  |             binding.activityRtkCorrectMetOriginalAltitude.setMetTextColor(Color.WHITE); | ||||||
|  |             binding.activityRtkCorrectMetControlPointX.setMetTextColor(Color.WHITE); | ||||||
|  |             binding.activityRtkCorrectMetControlPointY.setMetTextColor(Color.WHITE); | ||||||
|  |             binding.activityRtkCorrectMetControlPointZ.setMetTextColor(Color.WHITE); | ||||||
|  | 
 | ||||||
|  |             binding.activityRtkCorrectMetOriginalLatitude.setPrimaryColor(Color.LTGRAY); | ||||||
|  |             binding.activityRtkCorrectMetOriginalLongitude.setPrimaryColor(Color.LTGRAY); | ||||||
|  |             binding.activityRtkCorrectMetOriginalAltitude.setPrimaryColor(Color.LTGRAY); | ||||||
|  |             binding.activityRtkCorrectMetControlPointX.setPrimaryColor(Color.LTGRAY); | ||||||
|  |             binding.activityRtkCorrectMetControlPointY.setPrimaryColor(Color.LTGRAY); | ||||||
|  |             binding.activityRtkCorrectMetControlPointZ.setPrimaryColor(Color.LTGRAY); | ||||||
|  | 
 | ||||||
|  |             binding.activityRtkCorrectMetOriginalLatitude.setFocusFraction(1.0f); | ||||||
|  |             binding.activityRtkCorrectMetOriginalLongitude.setFocusFraction(1.0f); | ||||||
|  |             binding.activityRtkCorrectMetOriginalAltitude.setFocusFraction(1.0f); | ||||||
|  |             binding.activityRtkCorrectMetControlPointX.setFocusFraction(1.0f); | ||||||
|  |             binding.activityRtkCorrectMetControlPointY.setFocusFraction(1.0f); | ||||||
|  |             binding.activityRtkCorrectMetControlPointZ.setFocusFraction(1.0f); | ||||||
|  | 
 | ||||||
|  |             binding.activityRtkCorrectMetOriginalLatitude.setMetHintTextColor(Color.GRAY); | ||||||
|  |             binding.activityRtkCorrectMetOriginalLongitude.setMetHintTextColor(Color.GRAY); | ||||||
|  |             binding.activityRtkCorrectMetOriginalAltitude.setMetHintTextColor(Color.GRAY); | ||||||
|  |             binding.activityRtkCorrectMetControlPointX.setMetHintTextColor(Color.GRAY); | ||||||
|  |             binding.activityRtkCorrectMetControlPointY.setMetHintTextColor(Color.GRAY); | ||||||
|  |             binding.activityRtkCorrectMetControlPointZ.setMetHintTextColor(Color.GRAY); | ||||||
|  | 
 | ||||||
|  |             binding.activityRtkCorrectMetOriginalLatitude.setUnderlineColor(Color.GRAY); | ||||||
|  |             binding.activityRtkCorrectMetOriginalLongitude.setUnderlineColor(Color.GRAY); | ||||||
|  |             binding.activityRtkCorrectMetOriginalAltitude.setUnderlineColor(Color.GRAY); | ||||||
|  |             binding.activityRtkCorrectMetControlPointX.setUnderlineColor(Color.GRAY); | ||||||
|  |             binding.activityRtkCorrectMetControlPointY.setUnderlineColor(Color.GRAY); | ||||||
|  |             binding.activityRtkCorrectMetControlPointZ.setUnderlineColor(Color.GRAY); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void onRtkPositionReceived(double antennaHeight, Blh blh, Blh originalBlh, Coordinate coordinate, double hdop, double vdop, double pdop) { | ||||||
|  |         super.onRtkPositionReceived(antennaHeight, blh, originalBlh, coordinate, hdop, vdop, pdop); | ||||||
|  |         if (mTimes >= 0 && mTimes < 10) { | ||||||
|  |             latSum += originalBlh.getLatitude(); | ||||||
|  |             lngSum += originalBlh.getLongitude(); | ||||||
|  |             altSum += originalBlh.getAltitude(); | ||||||
|  |             mTimes++; | ||||||
|  |             binding.activityRtkCorrectProgressbar.setProgress(mTimes); | ||||||
|  |             if (mTimes == 10) { | ||||||
|  |                 originalLatitude = latSum / mTimes; | ||||||
|  |                 originalLongitude = lngSum / mTimes; | ||||||
|  |                 originalAltitude = altSum / mTimes; | ||||||
|  |                 binding.activityRtkCorrectMetOriginalLatitude.setText(Util.radianToDmsDoubleString(Math.toRadians(originalLatitude), 6, false)); | ||||||
|  |                 binding.activityRtkCorrectMetOriginalLongitude.setText(Util.radianToDmsDoubleString(Math.toRadians(originalLongitude), 6, false)); | ||||||
|  |                 binding.activityRtkCorrectMetOriginalAltitude.setText(Util.formatDouble2StringDotAuto(originalAltitude)); | ||||||
|  |                 binding.activityRtkCorrectBtnCorrect.setEnabled(true); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         if (Device.getInstance().isRtkRunning) { | ||||||
|  |             if (Gnss.getInstance().getDevice().isTiltOpen()) { | ||||||
|  |                 if (GnssPosition.getInstance().isTiltEnable()) { | ||||||
|  |                     if (((App) Utils.getApp()).isThemeDark) { | ||||||
|  |                         binding.activityRtkCorrectMetOriginalLatitude.setMetTextColor(Color.WHITE); | ||||||
|  |                         binding.activityRtkCorrectMetOriginalLongitude.setMetTextColor(Color.WHITE); | ||||||
|  |                         binding.activityRtkCorrectMetOriginalAltitude.setMetTextColor(Color.WHITE); | ||||||
|  |                     } else { | ||||||
|  |                         binding.activityRtkCorrectMetOriginalLatitude.setMetTextColor(Color.BLACK); | ||||||
|  |                         binding.activityRtkCorrectMetOriginalLongitude.setMetTextColor(Color.BLACK); | ||||||
|  |                         binding.activityRtkCorrectMetOriginalAltitude.setMetTextColor(Color.BLACK); | ||||||
|  |                     } | ||||||
|  |                 } else { | ||||||
|  |                     binding.activityRtkCorrectMetOriginalLatitude.setMetTextColor(Color.RED); | ||||||
|  |                     binding.activityRtkCorrectMetOriginalLongitude.setMetTextColor(Color.RED); | ||||||
|  |                     binding.activityRtkCorrectMetOriginalAltitude.setMetTextColor(Color.RED); | ||||||
|  |                 } | ||||||
|  |             } else { | ||||||
|  |                 switch (GnssPosition.getInstance().getPosType()) { | ||||||
|  |                     case GnssPosition.POS_TYPE_FIXED: | ||||||
|  |                         if (((App) Utils.getApp()).isThemeDark) { | ||||||
|  |                             binding.activityRtkCorrectMetOriginalLatitude.setMetTextColor(Color.WHITE); | ||||||
|  |                             binding.activityRtkCorrectMetOriginalLongitude.setMetTextColor(Color.WHITE); | ||||||
|  |                             binding.activityRtkCorrectMetOriginalAltitude.setMetTextColor(Color.WHITE); | ||||||
|  |                         } else { | ||||||
|  |                             binding.activityRtkCorrectMetOriginalLatitude.setMetTextColor(Color.BLACK); | ||||||
|  |                             binding.activityRtkCorrectMetOriginalLongitude.setMetTextColor(Color.BLACK); | ||||||
|  |                             binding.activityRtkCorrectMetOriginalAltitude.setMetTextColor(Color.BLACK); | ||||||
|  |                         } | ||||||
|  |                         break; | ||||||
|  |                     case GnssPosition.POS_TYPE_FLOAT: | ||||||
|  |                         binding.activityRtkCorrectMetOriginalLatitude.setMetTextColor(getResources().getColor(R.color.md_deep_orange_400)); | ||||||
|  |                         binding.activityRtkCorrectMetOriginalLongitude.setMetTextColor(getResources().getColor(R.color.md_deep_orange_400)); | ||||||
|  |                         binding.activityRtkCorrectMetOriginalAltitude.setMetTextColor(getResources().getColor(R.color.md_deep_orange_400)); | ||||||
|  |                         break; | ||||||
|  |                     default: | ||||||
|  |                         binding.activityRtkCorrectMetOriginalLatitude.setMetTextColor(Color.RED); | ||||||
|  |                         binding.activityRtkCorrectMetOriginalLongitude.setMetTextColor(Color.RED); | ||||||
|  |                         binding.activityRtkCorrectMetOriginalAltitude.setMetTextColor(Color.RED); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void onPause() { | ||||||
|  |         super.onPause(); | ||||||
|  |         binding.activityRtkCorrectEt0.requestFocus();//作用:输入框不聚焦,防止实测坐标后页面自动滑动到顶部
 | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,5 @@ | |||||||
|  | <vector android:alpha="0.9" android:autoMirrored="true" | ||||||
|  |     android:height="200dp" android:viewportHeight="200" | ||||||
|  |     android:viewportWidth="200" android:width="200dp" xmlns:android="http://schemas.android.com/apk/res/android"> | ||||||
|  |     <path android:fillColor="#000000" android:pathData="M99.69,47.5C101.25,52.81 106.25,56.25 111.56,56.25H162.19C162.19,49.38 156.56,43.75 149.69,43.75H98.44L99.69,47.5ZM94.69,31.25H149.69C163.44,31.25 174.69,42.5 174.69,56.25V61.25C180.63,65.94 184.69,73.13 184.69,81.25V156.25C184.69,170 173.44,181.25 159.69,181.25H40.63C26.88,181.25 15.63,170 15.63,156.25V43.75C15.63,30 26.88,18.75 40.63,18.75H72.81C81.88,18.75 90.31,23.75 94.69,31.25ZM72.81,31.25H40.63C33.75,31.25 28.13,36.88 28.13,43.75V156.25C28.13,163.13 33.75,168.75 40.63,168.75H159.38C166.25,168.75 171.88,163.13 171.88,156.25V81.25C171.88,74.38 166.25,68.75 159.38,68.75H112.19C101.25,68.75 91.56,61.56 88.44,51.25L84.69,40C83.13,34.69 78.44,31.25 72.81,31.25ZM53.13,137.5H103.13C106.56,137.5 109.38,140.31 109.38,143.75C109.38,147.19 106.56,150 103.13,150H53.13C49.69,150 46.88,147.19 46.88,143.75C46.88,140.31 49.69,137.5 53.13,137.5Z"/> | ||||||
|  | </vector> | ||||||
| @ -0,0 +1,178 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|  |     xmlns:app="http://schemas.android.com/apk/res-auto" | ||||||
|  |     xmlns:custom="http://schemas.android.com/apk/res-auto" | ||||||
|  |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|  |     android:layout_width="match_parent" | ||||||
|  |     android:layout_height="match_parent" | ||||||
|  |     android:orientation="vertical"> | ||||||
|  | 
 | ||||||
|  |     <EditText | ||||||
|  |         android:id="@+id/activity_rtk_correct_et_0" | ||||||
|  |         android:layout_width="0px" | ||||||
|  |         android:layout_height="0px" /> | ||||||
|  | 
 | ||||||
|  |     <ScrollView | ||||||
|  |         android:layout_width="match_parent" | ||||||
|  |         android:layout_height="0dp" | ||||||
|  |         android:layout_weight="1"> | ||||||
|  | 
 | ||||||
|  |         <LinearLayout | ||||||
|  |             android:layout_width="match_parent" | ||||||
|  |             android:layout_height="wrap_content" | ||||||
|  |             android:orientation="vertical" | ||||||
|  |             android:paddingStart="16dp" | ||||||
|  |             android:paddingEnd="16dp"> | ||||||
|  | 
 | ||||||
|  |             <LinearLayout | ||||||
|  |                 android:layout_width="match_parent" | ||||||
|  |                 android:layout_height="wrap_content" | ||||||
|  |                 android:orientation="vertical"> | ||||||
|  | 
 | ||||||
|  |                 <com.daimajia.numberprogressbar.NumberProgressBar | ||||||
|  |                     android:id="@+id/activity_rtk_correct_progressbar" | ||||||
|  |                     android:layout_width="match_parent" | ||||||
|  |                     android:layout_height="wrap_content" | ||||||
|  |                     android:layout_marginTop="16dp" | ||||||
|  |                     custom:progress_current="0" | ||||||
|  |                     custom:progress_max="10" | ||||||
|  |                     custom:progress_reached_bar_height="4dp" | ||||||
|  |                     custom:progress_reached_color="?colorPrimary" | ||||||
|  |                     custom:progress_text_size="10sp" | ||||||
|  |                     custom:progress_text_visibility="visible" | ||||||
|  |                     custom:progress_unreached_bar_height="3dp" /> | ||||||
|  | 
 | ||||||
|  |                 <com.rengwuxian.materialedittext.MaterialEditText | ||||||
|  |                     android:id="@+id/activity_rtk_correct_met_original_latitude" | ||||||
|  |                     android:layout_width="match_parent" | ||||||
|  |                     android:layout_height="wrap_content" | ||||||
|  |                     android:editable="false" | ||||||
|  |                     android:hint="@string/latitude" | ||||||
|  |                     android:textSize="@dimen/myTextSize" | ||||||
|  |                     app:met_floatingLabel="normal" | ||||||
|  |                     app:met_floatingLabelText="@string/latitude" /> | ||||||
|  | 
 | ||||||
|  |                 <com.rengwuxian.materialedittext.MaterialEditText | ||||||
|  |                     android:id="@+id/activity_rtk_correct_met_original_longitude" | ||||||
|  |                     android:layout_width="match_parent" | ||||||
|  |                     android:layout_height="wrap_content" | ||||||
|  |                     android:editable="false" | ||||||
|  |                     android:hint="@string/longitude" | ||||||
|  |                     android:textSize="@dimen/myTextSize" | ||||||
|  |                     app:met_floatingLabel="normal" | ||||||
|  |                     app:met_floatingLabelText="@string/longitude" /> | ||||||
|  | 
 | ||||||
|  |                 <com.rengwuxian.materialedittext.MaterialEditText | ||||||
|  |                     android:id="@+id/activity_rtk_correct_met_original_altitude" | ||||||
|  |                     android:layout_width="match_parent" | ||||||
|  |                     android:layout_height="wrap_content" | ||||||
|  |                     android:editable="false" | ||||||
|  |                     android:hint="@string/altitude" | ||||||
|  |                     android:textSize="@dimen/myTextSize" | ||||||
|  |                     app:met_floatingLabel="normal" | ||||||
|  |                     app:met_floatingLabelText="@string/altitude" /> | ||||||
|  | 
 | ||||||
|  |             </LinearLayout> | ||||||
|  | 
 | ||||||
|  |             <TextView | ||||||
|  |                 android:id="@+id/activity_rtk_correct_met_control_point_name" | ||||||
|  |                 android:layout_width="match_parent" | ||||||
|  |                 android:layout_height="wrap_content" | ||||||
|  |                 android:layout_marginTop="16dp" | ||||||
|  |                 android:hint="@string/point_name" /> | ||||||
|  | 
 | ||||||
|  |             <LinearLayout | ||||||
|  |                 android:layout_width="match_parent" | ||||||
|  |                 android:layout_height="wrap_content" | ||||||
|  |                 android:orientation="vertical"> | ||||||
|  | 
 | ||||||
|  |                 <LinearLayout | ||||||
|  |                     android:layout_width="match_parent" | ||||||
|  |                     android:layout_height="wrap_content"> | ||||||
|  | 
 | ||||||
|  |                     <com.rengwuxian.materialedittext.MaterialEditText | ||||||
|  |                         android:id="@+id/activity_rtk_correct_met_control_point_x" | ||||||
|  |                         android:layout_width="0dp" | ||||||
|  |                         android:layout_height="wrap_content" | ||||||
|  |                         android:layout_weight="1" | ||||||
|  |                         android:hint="@string/control_x" | ||||||
|  |                         android:inputType="numberDecimal|numberSigned" | ||||||
|  |                         android:textSize="@dimen/myTextSize" | ||||||
|  |                         app:met_clearButton="true" | ||||||
|  |                         app:met_floatingLabel="normal" | ||||||
|  |                         app:met_floatingLabelText="@string/control_x" /> | ||||||
|  | 
 | ||||||
|  |                     <ImageView | ||||||
|  |                         android:id="@+id/activity_rtk_correct_btn_open1" | ||||||
|  |                         android:layout_width="30dp" | ||||||
|  |                         android:layout_height="30dp" | ||||||
|  |                         android:layout_gravity="bottom" | ||||||
|  |                         android:layout_marginBottom="15dp" | ||||||
|  |                         android:layout_marginLeft="10dp" | ||||||
|  |                         android:src="@drawable/icon_vector_folder" /> | ||||||
|  | 
 | ||||||
|  |                 </LinearLayout> | ||||||
|  | 
 | ||||||
|  |                 <com.rengwuxian.materialedittext.MaterialEditText | ||||||
|  |                     android:id="@+id/activity_rtk_correct_met_control_point_y" | ||||||
|  |                     android:layout_width="match_parent" | ||||||
|  |                     android:layout_height="wrap_content" | ||||||
|  |                     android:hint="@string/control_y" | ||||||
|  |                     android:inputType="numberDecimal|numberSigned" | ||||||
|  |                     android:textSize="@dimen/myTextSize" | ||||||
|  |                     app:met_clearButton="true" | ||||||
|  |                     app:met_floatingLabel="normal" | ||||||
|  |                     app:met_floatingLabelText="@string/control_y" /> | ||||||
|  | 
 | ||||||
|  |                 <com.rengwuxian.materialedittext.MaterialEditText | ||||||
|  |                     android:id="@+id/activity_rtk_correct_met_control_point_z" | ||||||
|  |                     android:layout_width="match_parent" | ||||||
|  |                     android:layout_height="wrap_content" | ||||||
|  |                     android:hint="@string/control_z" | ||||||
|  |                     android:inputType="numberDecimal|numberSigned" | ||||||
|  |                     android:textSize="@dimen/myTextSize" | ||||||
|  |                     app:met_clearButton="true" | ||||||
|  |                     app:met_floatingLabel="normal" | ||||||
|  |                     app:met_floatingLabelText="@string/control_z" /> | ||||||
|  | 
 | ||||||
|  |             </LinearLayout> | ||||||
|  | 
 | ||||||
|  |             <TextView | ||||||
|  |                 android:id="@+id/activity_rtk_correct_tv_correct_current" | ||||||
|  |                 android:layout_width="wrap_content" | ||||||
|  |                 android:layout_height="wrap_content" | ||||||
|  |                 android:layout_marginTop="10dp" | ||||||
|  |                 tools:text="当前点: 0/10" /> | ||||||
|  | 
 | ||||||
|  |             <TextView | ||||||
|  |                 android:layout_width="wrap_content" | ||||||
|  |                 android:layout_height="wrap_content" | ||||||
|  |                 android:layout_marginTop="10dp" | ||||||
|  |                 android:text="@string/rtk_base_correct_tips" | ||||||
|  |                 android:textSize="11sp" /> | ||||||
|  |         </LinearLayout> | ||||||
|  |     </ScrollView> | ||||||
|  | 
 | ||||||
|  |     <LinearLayout | ||||||
|  |         android:layout_width="match_parent" | ||||||
|  |         android:layout_height="wrap_content" | ||||||
|  |         android:orientation="horizontal"> | ||||||
|  | 
 | ||||||
|  |         <Button | ||||||
|  |             android:id="@+id/activity_rtk_correct_btn_smooth_collect_ten_times" | ||||||
|  |             style="@style/Widget.AppCompat.Button.Colored" | ||||||
|  |             android:layout_width="match_parent" | ||||||
|  |             android:layout_height="@dimen/bt_height" | ||||||
|  |             android:layout_weight="1" | ||||||
|  |             android:text="@string/smooth_collect_ten_times" /> | ||||||
|  | 
 | ||||||
|  |         <Button | ||||||
|  |             android:id="@+id/activity_rtk_correct_btn_correct" | ||||||
|  |             style="@style/Widget.AppCompat.Button.Colored" | ||||||
|  |             android:layout_width="match_parent" | ||||||
|  |             android:layout_height="@dimen/bt_height" | ||||||
|  |             android:layout_weight="1" | ||||||
|  |             android:text="@string/correcting" /> | ||||||
|  |     </LinearLayout> | ||||||
|  | 
 | ||||||
|  | </LinearLayout> | ||||||
| @ -0,0 +1,14 @@ | |||||||
|  | <menu xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|  |     xmlns:app="http://schemas.android.com/apk/res-auto"> | ||||||
|  | 
 | ||||||
|  |     <item | ||||||
|  |         android:id="@+id/menu_activity_rtk_correct_reset" | ||||||
|  |         android:title="@string/reset" | ||||||
|  |         app:showAsAction="ifRoom" /> | ||||||
|  | 
 | ||||||
|  |     <item | ||||||
|  |         android:id="@+id/menu_help" | ||||||
|  |         android:title="@string/help" | ||||||
|  |         app:showAsAction="ifRoom" /> | ||||||
|  | 
 | ||||||
|  | </menu> | ||||||
					Loading…
					
					
				
		Reference in new issue