连接RTK后toast坐标转换异常的问题修复

main
chenglifeng 7 months ago
parent 5de59b5224
commit 5e3abc157a
  1. BIN
      app/libs/base-java-release.aar
  2. BIN
      app/libs/coordlib-release.aar
  3. BIN
      app/libs/device-ui-release.aar
  4. BIN
      app/libs/totalstation-release.aar
  5. 18
      app/src/main/AndroidManifest.xml
  6. 3
      app/src/main/java/com/project/survey/App.kt
  7. 16
      app/src/main/java/com/project/survey/logic/viewmodel/LoginViewModel.kt
  8. 28
      app/src/main/java/com/project/survey/logic/viewmodel/MainViewModel.kt
  9. 764
      app/src/main/java/com/project/survey/ui/MainActivityUtils.java
  10. 30
      app/src/main/java/com/project/survey/ui/SplashActivity.kt
  11. 112
      app/src/main/java/com/project/survey/ui/base/BaseBindingActivity.kt
  12. 4
      app/src/main/java/com/project/survey/ui/home/InstrumentFragment.kt
  13. 8
      app/src/main/java/com/project/survey/ui/instrument/coordinatesystem/fragment/CoordinateSystemContainerFragment.java
  14. 1
      app/src/main/java/com/project/survey/ui/instrument/mobilestationmode/base/RtkPointCorrectActivity.java
  15. 1085
      app/src/main/java/com/project/survey/ui/instrument/rtk/ConnectRtkActivity.java
  16. 2
      app/src/main/java/com/project/survey/ui/instrument/setupstation/EditCoordinatePointActivity.java
  17. 2
      app/src/main/java/com/project/survey/ui/instrument/setupstation/util/JobDbUtils.java
  18. 1154
      app/src/main/java/com/project/survey/ui/instrument/totalstation/ConnectTSActivity.java
  19. 1
      app/src/main/java/com/project/survey/ui/lofting/LoftingListActivity.kt
  20. 230
      app/src/main/java/com/project/survey/ui/lofting/pointlofting/PointStakingActivity.java
  21. 1211
      app/src/main/java/com/project/survey/ui/lofting/pointlofting/PointStakingActivity1.java
  22. 75
      app/src/main/java/com/project/survey/ui/lofting/pointlofting/record/RecordsActivity.java
  23. 5
      app/src/main/java/com/project/survey/ui/login/LoginInputCodeActivity.kt
  24. 5
      app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt
  25. 65
      app/src/main/java/com/project/survey/util/MockUtil.kt

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -151,6 +151,10 @@
android:name=".ui.lofting.pointlofting.PointStakingActivity"
android:exported="true"
android:windowSoftInputMode="adjustResize|stateHidden" />
<activity
android:name=".ui.lofting.pointlofting.PointStakingSettingActivity"
android:exported="true"
android:windowSoftInputMode="adjustResize|stateHidden" />
<activity
android:name=".ui.instrument.setupstation.SetupStationInputActivity"
android:exported="true"
@ -260,20 +264,6 @@
android:exported="true"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustUnspecified|stateHidden" />
<activity
android:name=".ui.instrument.rtk.ConnectRtkActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:exported="true"
android:label="@string/connect_rtk"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustUnspecified|stateHidden" />
<activity
android:name=".ui.instrument.totalstation.ConnectTSActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:exported="true"
android:label="@string/connect_rtk"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustUnspecified|stateHidden" />
<activity
android:name="com.project.survey.ui.instrument.mobilestationmode.rover.GeoRtkRoverSettingActivity"
android:configChanges="orientation|keyboardHidden|screenSize"

@ -5,6 +5,7 @@ import android.util.Log
import blankj.utilcode.util.Utils
import com.bingce.AppChannel
import com.bingce.BaseApp
import com.bingce.SurveyorApp
import com.bingce.coordlib.model.CoordinateSystem
import com.bingce.data.database.DBQueryConstant
import com.bingce.data.database.KeyValueDb
@ -27,7 +28,7 @@ import com.tencent.mmkv.MMKV
import io.reactivex.plugins.RxJavaPlugins
import org.polaric.colorful.Colorful
class App : BaseApp() {
class App : SurveyorApp() {
companion object {
lateinit var instance: App

@ -3,6 +3,10 @@ package com.project.survey.logic.viewmodel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import blankj.utilcode.util.ActivityUtils
import com.bingce.data.base.user.UserConfig
import com.bingce.data.base.user.UserConfigConstants
import com.bingce.data.database.AppDataBase
import com.bingce.log.BCLog
import com.project.survey.constants.EventConstants
import com.project.survey.constants.SPConstants
import com.project.survey.extend.toast
@ -61,6 +65,16 @@ class LoginViewModel : BaseViewModel() {
SPUtils.put(SPConstants.PERSON_ID, res.data.personId)
SPUtils.put(SPConstants.MOBILE_PHONE, res.data.mobilePhone)
var userConfig = AppDataBase.getInstance().userConfigDao().findByLeanCloudUserId(res.data.personId)
if (userConfig == null) { //创建第一个用户配置--使用默认数据目录
userConfig = UserConfig.newItem(
res.data.personId,
UserConfigConstants.VALUE_DEFAULT_DB_FOLDER
)
AppDataBase.getInstance().userConfigDao().save(userConfig)
}
msgEvent.postValue(Message(EventConstants.LOGIN_STATUS))
// MainActivity.start()
@ -70,7 +84,7 @@ class LoginViewModel : BaseViewModel() {
ActivityUtils.finishActivity(LoginActivity::class.java)
ActivityUtils.finishActivity(LoginInputCodeActivity::class.java)
} else {
toast(res.message)
errorResponse.postValue(res.message)
}
}
}

@ -14,19 +14,21 @@ class MainViewModel : BaseViewModel() {
fun verifySdk(){
SdkUtils.verify(
App.instance.applicationContext,
"sxshy",
AppUtil.getLanguage(),
AppUtils.getAppVersionCode().toLong(),
AppChannel.customChannel,
RegisterUtil.getOriginalMachineCode(),
RegisterUtil.getDeviceBoundID(),
"",
"",
"",
""
)
launch {
SdkUtils.verify(
App.instance.applicationContext,
"sxshy",
AppUtil.getLanguage(),
AppUtils.getAppVersionCode().toLong(),
AppChannel.customChannel,
RegisterUtil.getOriginalMachineCode(),
RegisterUtil.getDeviceBoundID(),
"",
"",
"",
""
)
}
}
}

@ -0,0 +1,764 @@
package com.project.survey.ui;
import android.Manifest;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationManager;
import android.os.Build;
import android.provider.Settings;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleEventObserver;
import androidx.lifecycle.LifecycleOwner;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.bingce.AppChannel;
import com.bingce.BaseApp;
import com.bingce.coordlib.model.Blh;
import com.bingce.coordlib.util.CoordUtil;
import com.bingce.data.cache.CachedCurrentCoordinateSystemKt;
import com.bingce.data.sync.GlobalFlowCenter;
import com.bingce.data.sync.utils.LeanCloudUserLoginStateUtils;
import com.bingce.device.Device;
import com.bingce.device.enums.ConnectTypeEnum;
import com.bingce.device.enums.DeviceTypeEnum;
import com.bingce.device.service.comm.ble.BleService;
import com.bingce.device.service.comm.emulator.EmulatorService;
import com.bingce.device.service.comm.localgps.LocationService;
import com.bingce.device.service.comm.localgps.NativePositioningService;
import com.bingce.device.service.comm.messenger.QxwzMessengerService;
import com.bingce.device.service.comm.otg.OTGCommService;
import com.bingce.device.service.comm.socket.TsSocketService;
import com.bingce.device.service.comm.spp.BTService;
import com.bingce.device.service.ntrip_sdk.CmccSdkService;
import com.bingce.device.service.ntrip_sdk.LuoWangSdkService;
import com.bingce.device.service.ntrip_sdk.NtripService;
import com.bingce.device.service.ntrip_sdk.QxwzSdkService;
import com.bingce.device.service.ntrip_sdk.SixentsSdkService;
import com.bingce.device.ui.ConnectRtkActivity;
import com.bingce.device.ui.ConnectTSActivity;
import com.bingce.device.ui.dialog.DialogUtil;
import com.bingce.device.ui.utils.DeviceUtil;
import com.bingce.device.ui.widget.BCProgressDialog;
import com.bingce.rtk.command.RTK;
import com.bingce.rtk.command.qxwz.QxwzRTK;
import com.bingce.rtk.enums.DataLinkModeEnum;
import com.bingce.rtk.enums.NetworkModeEnum;
import com.bingce.rtk.enums.NtripCorsProviderEnum;
import com.bingce.rtk.event.RtkCheckBaseMoveEvent;
import com.bingce.rtk.event.RtkCmdAnswerEvent;
import com.bingce.rtk.event.RtkCmdQueueSendEvent;
import com.bingce.rtk.event.RtkCmdUiEvent;
import com.bingce.rtk.event.RtkReceivedSerialNumberEvent;
import com.bingce.rtk.event.RtkSpeechEvent;
import com.bingce.rtk.event.RtkStartCmccServiceEvent;
import com.bingce.rtk.event.RtkStartLuoWangServiceEvent;
import com.bingce.rtk.event.RtkStartNtripServiceEvent;
import com.bingce.rtk.event.RtkStartQxwzSdkServiceEvent;
import com.bingce.rtk.event.RtkStartSixentsServiceEvent;
import com.bingce.rtk.event.RtkStopNtripSDKEvent;
import com.bingce.rtk.gnss.Gnss;
import com.bingce.rtk.model.GnssPosition;
import com.bingce.rtk.util.GnssUtil;
import com.bingce.totalstation.TotalStation;
import com.bingce.totalstation.TsConfig;
import com.bingce.totalstation.enums.SetupStationMethodEnum;
import com.bingce.totalstation.event.TsUpdateStatusEvent;
import com.bingce.utils.AppCompatActivityProviderUtils;
import com.bingce.utils.AppUtil;
import com.bingce.utils.IProvider;
import com.bingce.utils.LCDeviceUtil;
import com.bingce.utils.RomUtil;
import com.bingce.utils.SdkUtils;
import com.bingce.utils.SoundPoolUtil;
import com.bingce.utils.ThreadPoolUtil;
import com.bingce.utils.Util;
import com.bingce.utils.ValidateUtil;
import com.bingce.utils.VipManager;
import com.hjq.permissions.OnPermissionCallback;
import com.hjq.permissions.OnPermissionPageCallback;
import com.hjq.permissions.Permission;
import com.hjq.permissions.XXPermissions;
import com.project.survey.App;
import com.project.survey.R;
import com.project.survey.ui.instrument.basestationtranslation.RtkBaseCorrectActivity;
import net.tatans.tensorflowtts.tts.TtsManager;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.List;
import alibaba.fastjson.JSON;
import alibaba.fastjson.JSONObject;
import blankj.utilcode.util.ActivityUtils;
import blankj.utilcode.util.ServiceUtils;
import blankj.utilcode.util.StringUtils;
import blankj.utilcode.util.ToastUtils;
import blankj.utilcode.util.Utils;
import cn.leancloud.LCUser;
import cn.leancloud.types.LCGeoPoint;
import cn.liuyanbing.surveyor.model.util.CUtil;
public class MainActivityUtils extends AppCompatActivityProviderUtils {
private boolean gnssServerReady = false;
private MaterialDialog cenLngUnusualDialog;
private MaterialDialog langDialog, unbindDeviceDialog;
private BCProgressDialog deviceConnectingProgressDialog;
private final CachedCurrentCoordinateSystemKt cachedCoordinateSystemKt;
public MainActivityUtils(AppCompatActivity activity,
IProvider<AppCompatActivity> activityIProvider) {
super(activityIProvider);
cachedCoordinateSystemKt = new CachedCurrentCoordinateSystemKt(activity);
activity.getLifecycle().addObserver(new LifecycleEventObserver() {
@Override
public void onStateChanged(@NonNull LifecycleOwner source, @NonNull Lifecycle.Event event) {
switch (event) {
case ON_CREATE:
EventBus.getDefault().register(MainActivityUtils.this);
// SoundPoolUtil.getInstance().initHintSing(activity, SoundPoolUtil.TEST, R.raw.savedone);
//// SoundPoolUtil.getInstance().initHintSing(activity, SoundPoolUtil.SEPTENTRIO_FILL, R.raw.septentrio_fill);
//// SoundPoolUtil.getInstance().initHintSing(activity, SoundPoolUtil.SEPTENTRIO_CUT, R.raw.septentrio_cut);
// SoundPoolUtil.getInstance().initHintSing(activity, SoundPoolUtil.ALPHA_STAKING, R.raw.alphastaking);
// SoundPoolUtil.getInstance().initHintSing(activity, SoundPoolUtil.ALPHA_RECORDING, R.raw.alpharecording);
break;
case ON_DESTROY:
EventBus.getDefault().unregister(MainActivityUtils.this);
SoundPoolUtil.getInstance().onDestroy();
break;
case ON_RESUME:
checkGnssServerReady();
break;
}
}
});
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(RtkSpeechEvent event) {
if (!StringUtils.isEmpty(event.getText())) TtsManager.getInstance().speak(event.getText());
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(RtkCheckBaseMoveEvent event) {
//检查是否需要进行基站平移校准
String needBaseCorrect = GnssUtil.checkNeedBaseCorrect();
if (GnssPosition.getInstance().isBaseMoveRemind() && (event.isConfirmMoved() || needBaseCorrect != null)) {
new MaterialDialog.Builder(/*this*/context()).title(R.string.hint)
.content("检测到基站位置发生变化,为了保证精度可靠,请选择基站平移校准" + (event.isConfirmMoved() ? "" : (needBaseCorrect == null ? "" : "\n(" + needBaseCorrect + ")")))
.positiveText(R.string.rtk_base_correct)
.negativeText("忽略")
.neutralText("本次不再提醒")
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
Intent intent = new Intent(Utils.getApp(), RtkBaseCorrectActivity.class);
startActivity(intent);
}
}).onNeutral(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
GnssPosition.getInstance().setBaseMoveRemind(false);
}
}).show();
}
}
public void checkRtkLocation() {
if (Device.getInstance().deviceType != DeviceTypeEnum.DEVICE_TYPE_RTK) return;
if (((BaseApp) Utils.getApp()).avGeoPoint == null && GnssPosition.getInstance().validate) {
Blh blh = GnssPosition.getInstance().getWgs84Blh();
if (!CUtil.isEqual(blh.getLatitude(), 0) && !CUtil.isEqual(blh.getLongitude(), 0)) {
((BaseApp) Utils.getApp()).avGeoPoint = new LCGeoPoint(blh.getLatitude(), blh.getLongitude());
((BaseApp) Utils.getApp()).lastRTKLocation = ((BaseApp) Utils.getApp()).avGeoPoint.getLatitude() + "," + ((BaseApp) Utils.getApp()).avGeoPoint.getLongitude();
Util.putPreference("lastRTKLocation", ((BaseApp) Utils.getApp()).lastRTKLocation);
}
}
if (GnssPosition.getInstance().getPosType() != GnssPosition.POS_TYPE_NONE//初始化时跳过
&& cachedCoordinateSystemKt.isDataReady() && Device.getInstance().remindCentLngUnusual//已经提示过就不再提示
&& Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_RTK//RTK时才提示
&& Math.abs(GnssPosition.getInstance().getWgs84Blh().getLongitude() - cachedCoordinateSystemKt.coordinateSystem().centLng) > 3.0d) {
if (cenLngUnusualDialog == null || !cenLngUnusualDialog.isShowing()) {
if (ActivityUtils.getTopActivity() != null && !ActivityUtils.getTopActivity().isFinishing())
cenLngUnusualDialog = new MaterialDialog.Builder(ActivityUtils.getTopActivity()).title(R.string.hint).content(getString(R.string.center_longitude_unusual) + getString(R.string.current_center_longitude) + ":" + CoordUtil.radianToDmsDoubleString(Math.toRadians(cachedCoordinateSystemKt.coordinateSystem().centLng), 6, false)).positiveText(R.string.confirm).onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
Device.getInstance().remindCentLngUnusual = false;
Util.putPreference("remindCentLngUnusual", Device.getInstance().remindCentLngUnusual);
}
}).show();
}
}
}
/**
* 连接设备成功后启动相关服务因为Ntrip与SN无关可以在此执行与SN相关的服务在RtkReceivedSerialNumberEvent事件后执行
*/
public void onDeviceConnectSuccess() {
if (deviceConnectingProgressDialog != null && deviceConnectingProgressDialog.isShowing()) {
deviceConnectingProgressDialog.dismiss();
deviceConnectingProgressDialog = null;
}
if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_RTK) {
if (Device.getInstance().connectType == ConnectTypeEnum.CONNECT_TYPE_SPP || Device.getInstance().connectType == ConnectTypeEnum.CONNECT_TYPE_BLE) {
if (Gnss.getInstance().getDevice().getCurDataLink() == DataLinkModeEnum.PHONE) {
if (!Device.getInstance().isRtkInitDone()) {
Device.getInstance().rtkRunnableStart();
Device.getInstance().rtkInit();
}
if (Gnss.getInstance().getNetwork().getMode() == NetworkModeEnum.NTRIP) {//因为SDK与deviceID相关,所以在获取序列号后执行,而Ntrip启动是在连接成功后就可以
EventBus.getDefault().post(new RtkStartNtripServiceEvent());
ToastUtils.showShort(R.string.phone_network_diff_initialization);
}
} else {
if (!Device.getInstance().isRtkInitDone()) {
Device.getInstance().rtkRunnableStart();
Device.getInstance().rtkInit();
}
}
} else if (Device.getInstance().connectType == ConnectTypeEnum.CONNECT_TYPE_QXBT) {
if (!Device.getInstance().isRtkInitDone()) {
Device.getInstance().rtkRunnableStart();
Device.getInstance().rtkInit();
}
} else {
//手机定位或演示模式
}
} else {
TotalStation.getInstance().runnableStart();
TotalStation.getInstance().init();
// if (((App) Utils.getApp()).isShowTsSetupStationOption) chooseSetupStationType();
}
//记录用户联机时手机定位的大概位置
if (ActivityCompat.checkSelfPermission(/*this*/context(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
LocationManager mLocationManager = ((LocationManager) context().getSystemService(Context.LOCATION_SERVICE));
if (mLocationManager != null) {
List<String> providers = mLocationManager.getProviders(true);
if (providers.contains(LocationManager.GPS_PROVIDER)) {
Location location = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
((BaseApp) Utils.getApp()).lastPhoneLocation = location.getLatitude() + "," + location.getLongitude();
Util.putPreference("lastPhoneLocation", ((BaseApp) Utils.getApp()).lastPhoneLocation);
}
}
}
}
}
/**
* 获取SN号后启动与SN相关的服务
*
* @param event
*/
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(RtkReceivedSerialNumberEvent event) {//因为SDK与deviceID相关,所以在此执行,而Ntrip启动是在连接成功后就可以
if (Gnss.getInstance().getDevice().getCurDataLink() == DataLinkModeEnum.PHONE) {
if (Gnss.getInstance().getNetwork().getMode() == NetworkModeEnum.QXWZ_SDK) {
EventBus.getDefault().post(new RtkStartQxwzSdkServiceEvent());
ToastUtils.showShort(R.string.qxwz_service_initialization);
} else if (Gnss.getInstance().getNetwork().getMode() == NetworkModeEnum.CMCC_SDK) {
EventBus.getDefault().post(new RtkStartCmccServiceEvent());
ToastUtils.showShort(R.string.cmcc_service_initialization);
} else if (Gnss.getInstance().getNetwork().getMode() == NetworkModeEnum.SIXENTS_SDK) {
EventBus.getDefault().post(new RtkStartSixentsServiceEvent());
ToastUtils.showShort(R.string.sixents_service_initialization);
} else if (Gnss.getInstance().getNetwork().getMode() == NetworkModeEnum.LUOWANG_SDK) {
EventBus.getDefault().post(new RtkStartLuoWangServiceEvent());
ToastUtils.showShort(R.string.luowang_service_initialization);
}
}
}
public void onDeviceConnectFailed() {
if (deviceConnectingProgressDialog != null && deviceConnectingProgressDialog.isShowing()) {
deviceConnectingProgressDialog.dismiss();
deviceConnectingProgressDialog = null;
ToastUtils.showShort(R.string.device_connect_failed);
}
}
public void onDeviceConnectLost() {
ToastUtils.showShort(R.string.device_connect_lost);
}
public void onRequestConnect() {
if (deviceConnectingProgressDialog == null || !deviceConnectingProgressDialog.isShowing()) {
deviceConnectingProgressDialog = new BCProgressDialog.Builder(ActivityUtils.getTopActivity()).title(R.string.connect_device).build();
deviceConnectingProgressDialog.show();
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(TsUpdateStatusEvent event) {
// Fragment currentFragment = MainFragmentUtil.getCurrentFragment(/*this*/activity(), MainActivity.mainContainer);
// if (currentFragment instanceof TcsAutoScan2DxfFragment) {
// ((TcsAutoScan2DxfFragment) currentFragment).updateStatus(event.getStatus());
// }
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(RtkStartNtripServiceEvent event) {
// CorsUseLogManager.getInstance().logEvent("MainActivity-onMessageEvent-StartNtripServiceEvent");
ServiceUtils.startService(NtripService.class);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(RtkStartQxwzSdkServiceEvent event) {
// CorsUseLogManager.getInstance().logEvent("MainActivity-onMessageEvent-StartQxwzServiceEvent");
ServiceUtils.startService(QxwzSdkService.class);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(RtkStartSixentsServiceEvent event) {
// CorsUseLogManager.getInstance().logEvent("MainActivity-onMessageEvent-StartSixentsServiceEvent");
ServiceUtils.startService(SixentsSdkService.class);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(RtkStartCmccServiceEvent event) {
// CorsUseLogManager.getInstance().logEvent("MainActivity-onMessageEvent-StartCmccServiceEvent");
ServiceUtils.startService(CmccSdkService.class);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(RtkStartLuoWangServiceEvent event) {
// CorsUseLogManager.getInstance().logEvent("MainActivity-onMessageEvent-StartLuoWangServiceEvent");
ServiceUtils.startService(LuoWangSdkService.class);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(RtkStopNtripSDKEvent event) {
ServiceUtils.stopService(NtripService.class);
ServiceUtils.stopService(QxwzSdkService.class);
ServiceUtils.stopService(CmccSdkService.class);
ServiceUtils.stopService(LuoWangSdkService.class);
ServiceUtils.stopService(SixentsSdkService.class);
Device.getInstance().oneKeyFixValid = false;
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(RtkCmdAnswerEvent event) {
Device.getInstance().rtkProcessCmdAnswer(event.getSentence());
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(RtkCmdQueueSendEvent event) {
Device.getInstance().rtkSendCommand(event.getQueue());
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(RtkCmdUiEvent event) {
if (event.getContent() == null) {
Device.getInstance().rtkUpdateUiMessage(event.getWhat());
} else {
Device.getInstance().rtkUpdateUiMessage(event.getWhat(), event.getContent());
}
}
// /**
// * 选择设站模式
// */
// private void chooseSetupStationType() {
// if (((App) Utils.getApp()).lastTsSetupStationType < 0 || ((App) Utils.getApp()).lastTsSetupStationType > 4)
// ((App) Utils.getApp()).lastTsSetupStationType = 0;
// new MaterialDialog.Builder(ActivityUtils.getTopActivity())
// .title(R.string.total_station_setup_type)
// .items(R.array.setup_station_type_with_current)
// .itemsCallbackSingleChoice(((App) Utils.getApp()).lastTsSetupStationType, new MaterialDialog.ListCallbackSingleChoice() {
// @Override
// public boolean onSelection(MaterialDialog dialog, View itemView, int which, CharSequence text) {
// switch (which) {
// case 0:
// startActivity(new Intent(Utils.getApp(), SetupStationCurrentActivity.class));
// break;
// case 1:
// TsConfig.getInstance().setSetupStationMethod(SetupStationMethodEnum.TS_DONE_SKIP);
// ToastUtils.showShort(R.string.apply_success);
// break;
// case 2:
// TsConfig.getInstance().setSetupStationMethod(SetupStationMethodEnum.TS_DONE_INPUT_INTO_APP);
// startActivity(new Intent(Utils.getApp(), SetupStationInputActivity.class));
// break;
// case 3:
// TsConfig.getInstance().setSetupStationMethod(SetupStationMethodEnum.APP_SETUP_KNOWN_BACK_SIGHT);
// startActivity(new Intent(Utils.getApp(), SetupStationKnownBackSightActivity.class));
// break;
// case 4:
// TsConfig.getInstance().setSetupStationMethod(SetupStationMethodEnum.APP_SETUP_RESECTION);
// startActivity(new Intent(Utils.getApp(), SetupStationResectionActivity.class));
// break;
// }
// TsConfig.getInstance().save();
// ((App) Utils.getApp()).lastTsSetupStationType = which;
// Util.putPreference("lastTsSetupStationType", ((App) Utils.getApp()).lastTsSetupStationType);
// return false;
// }
// }).positiveText(R.string.next)
// .neutralText(R.string.not_show_again)
// .onNeutral(new MaterialDialog.SingleButtonCallback() {
// @Override
// public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
// Util.putPreference("key_is_show_ts_setup_station_option", false);
// ((App) Utils.getApp()).isShowTsSetupStationOption = false;
// new MaterialDialog.Builder(ActivityUtils.getTopActivity())
// .content(R.string.set_show_ts_setup_station_option_in_setting)
// .positiveText(R.string.i_know)
// .show();
// }
// }).show();
// }
/**
* 连接蓝牙先请求打开定位权限
*/
public void requestBluetoothPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && XXPermissions.isGranted(ActivityUtils.getTopActivity(), Permission.BLUETOOTH_CONNECT)) {//S及以后不需要位置权限
checkConnectLast();
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {//S及以后不需要位置权限,此时只需请求connect权限
if (XXPermissions.isGranted(ActivityUtils.getTopActivity(), Permission.BLUETOOTH_CONNECT)) {
checkConnectLast();
} else {
new MaterialDialog.Builder(ActivityUtils.getTopActivity())
.title(R.string.location_permission)
.content(R.string.bluetooth_need_location_permission)
.canceledOnTouchOutside(false)
.positiveText(R.string.to_allow)
.negativeText(R.string.refuse)
.onPositive((dialog, which) -> {
XXPermissions.with(ActivityUtils.getTopActivity())
.permission(Permission.BLUETOOTH_CONNECT)
.request(new OnPermissionCallback() {
@Override
public void onGranted(List<String> permissions, boolean all) {
checkConnectLast();
}
@Override
public void onDenied(List<String> permissions, boolean never) {
if (never) {
ToastUtils.showLong(R.string.bluetooth_connect_need_permission);
XXPermissions.startPermissionActivity(ActivityUtils.getTopActivity(), permissions, new OnPermissionPageCallback() {
@Override
public void onGranted() {
requestBluetoothPermission();
}
@Override
public void onDenied() {
ToastUtils.showLong(R.string.bluetooth_connect_need_permission);
}
});
} else {
requestBluetoothPermission();
}
}
});
})
.onNegative((dialog, which) -> {
}).show();
}
} else {//S以下,需要请求两个权限,位置和Connect权限
if (XXPermissions.isGranted(ActivityUtils.getTopActivity(), Permission.ACCESS_FINE_LOCATION, Permission.BLUETOOTH_CONNECT)) {
checkConnectLast();
} else {
new MaterialDialog.Builder(ActivityUtils.getTopActivity())
.title(R.string.location_permission)
.content(R.string.bluetooth_need_location_permission)
.canceledOnTouchOutside(false)
.positiveText(R.string.to_allow)
.negativeText(R.string.refuse)
.onPositive((dialog, which) -> {
XXPermissions.with(ActivityUtils.getTopActivity())
.permission(Permission.ACCESS_FINE_LOCATION, Permission.BLUETOOTH_CONNECT)
.request(new OnPermissionCallback() {
@Override
public void onGranted(List<String> permissions, boolean all) {
if (all) {
checkConnectLast();
} else {
requestBluetoothPermission();
}
}
@Override
public void onDenied(List<String> permissions, boolean never) {
if (never) {
ToastUtils.showLong(R.string.bluetooth_connection_requires_positioning_permission_please_turn_it_on_manually);
XXPermissions.startPermissionActivity(ActivityUtils.getTopActivity(), permissions, new OnPermissionPageCallback() {
@Override
public void onGranted() {
requestBluetoothPermission();
}
@Override
public void onDenied() {
ToastUtils.showLong(R.string.bluetooth_connect_need_permission);
}
});
} else {
requestBluetoothPermission();
}
}
});
})
.onNegative((dialog, which) -> {
}).show();
}
}
}
/**
* 检查权限
*/
public void requestPhonePermission() {
if (!XXPermissions.isGranted(ActivityUtils.getTopActivity(), Permission.READ_PHONE_STATE)) {
long lastReadPhoneStateDeniedTime = Util.getLongPreference("lastReadPhoneStateDeniedTime", 0L);
if (System.currentTimeMillis() - lastReadPhoneStateDeniedTime > 48 * 60 * 60 * 1000L) {//每48小时提示一次
new MaterialDialog.Builder(ActivityUtils.getTopActivity())
.title(R.string.mobile_phone_permissions)
.content(R.string.verify_imei_imsi_code_to_prevent_account_theft)
.canceledOnTouchOutside(false)
.positiveText(R.string.to_allow)
.negativeText(R.string.refuse)
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
XXPermissions.with(ActivityUtils.getTopActivity())
.permission(Permission.READ_PHONE_STATE)
.request(new OnPermissionCallback() {
@Override
public void onGranted(List<String> permissions, boolean all) {
}
@Override
public void onDenied(List<String> permissions, boolean never) {
if (never) {
ToastUtils.showShort(R.string.manually_enable_the_phone_state_permission_to_bind_hardware_devices);
}
Util.putPreference("lastReadPhoneStateDeniedTime", System.currentTimeMillis());
}
});
}
})
.onNegative(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
Util.putPreference("lastReadPhoneStateDeniedTime", System.currentTimeMillis());
}
}).show();
}
}
}
public void showRemindConnectDeviceDialog() {
new MaterialDialog.Builder(ActivityUtils.getTopActivity())
.title(R.string.hint)
.content(R.string.no_instrument_connected)
.positiveText(R.string.connect)
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
requestBluetoothPermission();
}
})
.negativeText(R.string.cancel)
.show();
}
public void checkConnectLast() {
if (Device.getInstance().connectType == ConnectTypeEnum.CONNECT_TYPE_SPP) {
if (!ServiceUtils.isServiceRunning(BTService.class.getName()) && XXPermissions.isGranted(activity(), Permission.BLUETOOTH_CONNECT)) {
ServiceUtils.startService(BTService.class);
}
} else if (Device.getInstance().connectType == ConnectTypeEnum.CONNECT_TYPE_BLE) {
if (!ServiceUtils.isServiceRunning(BleService.class.getName()) && XXPermissions.isGranted(activity(), Permission.BLUETOOTH_CONNECT)) {
ServiceUtils.startService(BleService.class);
}
} else if (Device.getInstance().connectType == ConnectTypeEnum.CONNECT_TYPE_QXBT) {
//千寻RTK需要GnssServer连接蓝牙
} else if (Device.getInstance().connectType == ConnectTypeEnum.CONNECT_TYPE_HOTSPOT) {
if (!ServiceUtils.isServiceRunning(TsSocketService.class.getName())) {
ServiceUtils.startService(TsSocketService.class);
}
} else if (Device.getInstance().connectType == ConnectTypeEnum.CONNECT_TYPE_OTG) {
if (!ServiceUtils.isServiceRunning(OTGCommService.class.getName())) {
ServiceUtils.startService(OTGCommService.class);
}
} else if (Device.getInstance().connectType == ConnectTypeEnum.CONNECT_TYPE_TPCOM) {
if (!ServiceUtils.isServiceRunning(TsSocketService.class.getName())) {
ServiceUtils.startService(TsSocketService.class);
}
} else if (Device.getInstance().connectType == ConnectTypeEnum.CONNECT_TYPE_PHONE_LOCATION) {
if (!ServiceUtils.isServiceRunning(NativePositioningService.class.getName())) {
ServiceUtils.startService(NativePositioningService.class);
ThreadPoolUtil.execute(() -> Device.getInstance().requestConnect(), 500);
}
} else if (Device.getInstance().connectType == ConnectTypeEnum.CONNECT_TYPE_EMULATOR) {
if (!ServiceUtils.isServiceRunning(EmulatorService.class.getName())) {
ServiceUtils.startService(EmulatorService.class);
}
}
if (!Device.getInstance().isDeviceConnected()) {
if (!"".equals(Device.getInstance().deviceBlueName)) {
String instrumentInfo = ActivityUtils.getTopActivity().getString(R.string.instrument_name) + ":" + Device.getInstance().deviceBlueName + "\n" + ActivityUtils.getTopActivity().getString(R.string.instrument_type_name) + ":" + Device.getInstance().deviceBrand;
new MaterialDialog.Builder(ActivityUtils.getTopActivity())
.title(R.string.quick_connect)
.content(instrumentInfo)
.positiveText(Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_TS ? R.string.connect_and_setup_station : R.string.connect)
.negativeText(R.string.config)
.neutralText(R.string.switch_instrument)
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
if (Device.getInstance().connectType == ConnectTypeEnum.CONNECT_TYPE_HOTSPOT) {
startHotspotComm();
} else {
if (DeviceUtil.checkIfNeedGnssServer()) {
if (DeviceUtil.checkIfGnssServerReady(ActivityUtils.getTopActivity())) {//先检查如果是千寻rtk,是否安装并打开了GnssServier
gnssServerReady = true;
}
} else {
Device.getInstance().requestConnect();
ToastUtils.showShort(R.string.connecting_please_wait);
}
}
}
}).onNegative(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
Intent intent;
if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_TS) {
intent = new Intent(ActivityUtils.getTopActivity(), ConnectTSActivity.class);
} else {
intent = new Intent(ActivityUtils.getTopActivity(), ConnectRtkActivity.class);
}
intent.putExtra("customChannel", AppChannel.customChannel);
ActivityUtils.getTopActivity().startActivity(intent);
}
}).onNeutral(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
chooseInstrumentType();
}
}).show();
} else {
chooseInstrumentType();
}
} else {
if (Device.getInstance().connectType == ConnectTypeEnum.CONNECT_TYPE_PHONE_LOCATION) {
ToastUtils.showShort(R.string.native_rtk_is_running);
} else {
Intent intent;
if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_TS) {
intent = new Intent(ActivityUtils.getTopActivity(), ConnectTSActivity.class);
} else {
intent = new Intent(ActivityUtils.getTopActivity(), ConnectRtkActivity.class);
}
intent.putExtra("customChannel", AppChannel.customChannel);
ActivityUtils.getTopActivity().startActivity(intent);
}
}
}
public void checkGnssServerReady() {
if (gnssServerReady) {
new MaterialDialog.Builder(ActivityUtils.getTopActivity())
.title(R.string.hint)
.content(R.string.you_need_start_gnss_server_for_communication)
.positiveText(R.string.started).onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
if (RTK.getInstance() instanceof QxwzRTK) {
Device.getInstance().connectType = ConnectTypeEnum.CONNECT_TYPE_QXBT;
ServiceUtils.startService(QxwzMessengerService.class);
}
}
}).negativeText(R.string.cancel).dismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
gnssServerReady = false;
}
}).show();
}
}
private void chooseInstrumentType() {
new MaterialDialog.Builder(ActivityUtils.getTopActivity())
.title(R.string.choose_instrument_type)
.items(new String[]{ActivityUtils.getTopActivity().getString(R.string.total_station), ActivityUtils.getTopActivity().getString(R.string.rtk)})
.itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View itemView, int which, CharSequence text) {
switch (which) {
case 0:
ConnectTSActivity.start();
break;
case 1:
ConnectRtkActivity.start();
break;
}
}
}).show();
}
/**
* 开启wifi通信
*/
private void startHotspotComm() {
if (!ValidateUtil.isIPAddress(TsConfig.getInstance().getIp())) {
ToastUtils.showShort(R.string.please_input_correct_ip);
return;
}
if (TsConfig.getInstance().getPort() < 1024 || TsConfig.getInstance().getPort() > 65535) {
ToastUtils.showShort(R.string.please_input_correct_port);
return;
}
if (DeviceUtil.isWifiApOpen()) {
ServiceUtils.stopService(EmulatorService.class);
ServiceUtils.stopService(LocationService.class);
ServiceUtils.stopService(NativePositioningService.class);
ServiceUtils.stopService(BTService.class);
ServiceUtils.stopService(BleService.class);
ServiceUtils.startService(TsSocketService.class);
ThreadPoolUtil.execute(new Runnable() {
@Override
public void run() {
Device.getInstance().requestConnect();
}
}, 200);
} else {
ToastUtils.showShort(R.string.please_open_hotspot_first);
//打开网络共享与热点设置页面
if (RomUtil.isOppo() || RomUtil.isLenove() || RomUtil.isGionee()) {
//OPPO系统系统特殊,会让在Manifest.xml声明Settings$TetherSettingsActivity,现在让用户自己找热点界面,并开启
ToastUtils.showShort(R.string.find_tether_setting_and_open);
ActivityUtils.getTopActivity().startActivity(new Intent(Settings.ACTION_SETTINGS));
} else {
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ComponentName comp = new ComponentName("com.android.settings", "com.android.settings.Settings$TetherSettingsActivity");
intent.setComponent(comp);
ActivityUtils.getTopActivity().startActivity(intent);
}
}
}
}

@ -10,6 +10,7 @@ import com.project.survey.model.ProjectBean
import com.project.survey.ui.base.BaseBindingActivity
import com.project.survey.ui.login.LoginActivity
import com.project.survey.ui.project.ProjectListActivity
import com.project.survey.util.MockUtil
import com.project.survey.util.SPUtils
/**
@ -26,24 +27,21 @@ class SplashActivity : BaseBindingActivity<ActivitySplashBinding>() {
}
override fun initData() {
if (SPUtils.getString(SPConstants.TOKEN).isNullOrBlank()) {
LoginActivity.start()
if (MockUtil.isTest){
MockUtil.login()
MainActivity.start()
} else {
val currentProject =
SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java)
// SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java)
// ?.let { project ->
// viewModel.repo.currentProject.postValue(project)
// MainActivity.start()
// } ?: {
// //未选择工程
// ProjectListActivity.start()
// }
if (currentProject == null) {
//未选择工程
ProjectListActivity.start()
if (SPUtils.getString(SPConstants.TOKEN).isNullOrBlank()) {
LoginActivity.start()
} else {
MainActivity.start()
val currentProject =
SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java)
if (currentProject == null) {
//未选择工程
ProjectListActivity.start()
} else {
MainActivity.start()
}
}
}
finish()

@ -8,8 +8,21 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.appcompat.widget.Toolbar
import androidx.viewbinding.ViewBinding
import blankj.utilcode.util.LogUtils
import com.bingce.coordlib.model.Blh
import com.bingce.coordlib.model.Coordinate
import com.bingce.device.Device
import com.bingce.device.ui.manager.DeviceConnectManager
import com.bingce.device.ui.manager.RtkManager
import com.bingce.device.ui.manager.TsAnglesRefreshManager
import com.bingce.device.ui.manager.TsBatteryRefreshManager
import com.bingce.device.ui.manager.TsChangeHrManager
import com.bingce.device.ui.manager.TsMeasCoordinateManager
import com.bingce.device.ui.manager.TsMeasSdAnglesManager
import com.bingce.totalstation.TsListener
import com.gyf.immersionbar.ImmersionBar
import com.project.survey.R
import com.project.survey.ui.MainActivityUtils
import com.project.survey.widget.LoadingDialog
import org.polaric.colorful.Colorful
@ -26,6 +39,105 @@ abstract class BaseBindingActivity<VB : ViewBinding> : AppCompatActivity() {
abstract fun initData()
abstract fun initListener()
protected val deviceConnectManager: DeviceConnectManager = DeviceConnectManager(this, object : Device.IDeviceConnectListener{
override fun onDeviceConnectSucceed() {
LogUtils.d("onDeviceConnectSucceed")
}
override fun onDeviceConnectLost() {
LogUtils.d("onDeviceConnectLost")
}
override fun onDeviceConnectFailed() {
LogUtils.d("onDeviceConnectFailed")
}
override fun onDeviceConnectNeedOpenBT() {
LogUtils.d("onDeviceConnectNeedOpenBT")
}
})
protected val rtkManager: RtkManager = RtkManager(this, object : RtkManager.IRtkListener {
override fun onRtkPositionReceived(
p0: Double,
p1: Blh?,
p2: Blh?,
p3: Coordinate?,
p4: Double,
p5: Double,
p6: Double
) {
LogUtils.d("onRtkPositionReceived:${p0};${p1};${p2};${p3};${p4};${p5};${p6};")
}
override fun onRtkStatusChanged() {
LogUtils.d("onRtkStatusChanged")
}
override fun onRtkError(p0: String?) {
LogUtils.d("onRtkError:${p0}")
}
override fun onRtkPoleHeightChanged() {
LogUtils.d("onRtkPoleHeightChanged")
}
override fun onRtkTiltSwitched(p0: Boolean) {
LogUtils.d("onRtkTiltSwitched:${p0}")
}
override fun onSatelliteSkyViewRefresh() {
LogUtils.d("onSatelliteSkyViewRefresh")
}
})
protected val tsMeasCoordinateManager: TsMeasCoordinateManager =
TsMeasCoordinateManager(this, object : TsListener.MeasCoordinateListener{
override fun onMeasCoordinateSuccess(p0: Coordinate?) {
LogUtils.d("onMeasCoordinateSuccess:${p0}")
}
override fun onMeasCoordinateFailed(p0: String?, p1: String?) {
LogUtils.d("onMeasCoordinateFailed:${p0};${p1}")
}
})
protected val tsMeasSdAnglesManager: TsMeasSdAnglesManager = TsMeasSdAnglesManager(this, object : TsListener.MeasSdAnglesListener{
override fun onMeasSdAnglesSuccess(
p0: Double,
p1: Double,
p2: Double,
p3: Double,
p4: Double,
p5: Double,
p6: Double
) {
LogUtils.d("onMeasSdAnglesSuccess:${p0};${p1};${p2};${p3};${p4};${p5};${p6}")
}
override fun onMeasSdAnglesFailed(p0: String?, p1: String?) {
LogUtils.d("onMeasSdAnglesFailed:${p0};${p1}")
}
})
protected val tsAnglesRefreshManager: TsAnglesRefreshManager =
TsAnglesRefreshManager(this, object : TsListener.AnglesRefreshListener{
override fun onAnglesRefresh(p0: Double, p1: Double) {
LogUtils.d("onAnglesRefresh:${p0};${p1}")
}
})
protected val tsBatteryRefreshManager: TsBatteryRefreshManager =
TsBatteryRefreshManager(this) { }
protected val tsChangeHrManager: TsChangeHrManager = TsChangeHrManager(this, object : TsListener.ChangeHrListener{
override fun onChangeHrSuccess(p0: Double) {
LogUtils.d("onChangeHrSuccess:${p0}")
}
override fun onChangeHrFailed(p0: String?) {
LogUtils.d("onChangeHrSuccess:${p0}")
}
})
val mainActivityUtils: MainActivityUtils = MainActivityUtils(this) { this }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
_binding = getBinding()

@ -8,6 +8,8 @@ import blankj.utilcode.util.AppUtils
import com.bingce.device.Device
import com.bingce.device.enums.ConnectTypeEnum
import com.bingce.device.enums.DeviceTypeEnum
import com.bingce.device.ui.ConnectRtkActivity
import com.bingce.device.ui.ConnectTSActivity
import com.bingce.rtk.command.RTK
import com.bingce.rtk.config.GnssConfigManager
import com.project.survey.R
@ -23,10 +25,8 @@ import com.project.survey.ui.instrument.basestationtranslation.RtkBaseCorrectAct
import com.project.survey.ui.instrument.coordinatesystem.BingCeCoordinateSystemActivity
import com.project.survey.ui.instrument.mobilestationmode.GnssConfigSetActivity
import com.project.survey.ui.instrument.mobilestationmode.base.RtkPointCorrectActivity
import com.project.survey.ui.instrument.rtk.ConnectRtkActivity
import com.project.survey.ui.instrument.satellitosis.SatelliteStatusActivity
import com.project.survey.ui.instrument.setupstation.InstrumentSetFragmentSetupStationTypeUtils
import com.project.survey.ui.instrument.totalstation.ConnectTSActivity
import com.project.survey.util.ActivityNavUtil
import com.project.survey.util.SPUtils

@ -22,7 +22,10 @@ import androidx.viewpager.widget.ViewPager;
import com.afollestad.materialdialogs.MaterialDialog;
import com.bingce.coordlib.model.CoordinateSystem;
import com.bingce.coordlib.util.CoordinateSystemUtil;
import com.bingce.data.base.user.UserConfig;
import com.bingce.data.base.user.UserConfigDao;
import com.bingce.data.cache.AbstractCachedObserver;
import com.bingce.data.database.AppDataBase;
import com.bingce.data.database.CoordinateSystemDb;
import com.bingce.data.database.DBQueryConstant;
import com.bingce.data.database.KeyValueDb;
@ -53,8 +56,10 @@ import com.bingce.utils.SoftKeyUtils;
import com.bingce.utils.ThreadPoolUtil;
import com.bingce.utils.ValidateUtil;
import com.flyco.tablayout.SlidingTabLayout;
import com.project.survey.constants.SPConstants;
import com.project.survey.ui.instrument.coordinatesystem.CachedCurrentCoordinateSystem;
import com.project.survey.ui.instrument.mobilestationmode.base.RtkPointCorrectActivity;
import com.project.survey.util.SPUtils;
import com.rengwuxian.materialedittext.MaterialEditText;
import org.greenrobot.eventbus.EventBus;
@ -217,7 +222,8 @@ public class CoordinateSystemContainerFragment extends AbstractCoordinateSystemC
return;
}
currentProjectRecord.coordinateSystem = coordinateSystem;
ProjectDb.getInstance().save(currentProjectRecord);
UserConfig userConfig = AppDataBase.getInstance().userConfigDao().findByLeanCloudUserId(SPUtils.INSTANCE.getString(SPConstants.PERSON_ID));
ProjectDb.getInstance().userSafe(userConfig).save(currentProjectRecord);
//切换线路
ThreadPoolUtil.executeInMain(success);
});

@ -59,6 +59,7 @@ public class RtkPointCorrectActivity extends AbstractRtkPointCorrectActivity {
@Override
protected void skip2ProjViewAndModifyCurrentCoordinateSystem() {
// 点击提示弹框的“去配置”按钮
BingCeCoordinateSystemActivity.skip2ProjViewAndModifyCurrentCoordinateSystem(this);
}

@ -68,7 +68,7 @@ public class EditCoordinatePointActivity extends BaseSurveyNewActivity {
if (pointRecord.deviceInfoData.tsStatusData != null) {
TSStatusData pointRecordTSInfo = pointRecord.deviceInfoData.tsStatusData;
TSStatusData tsStatusData = new TSStatusData(pointRecordTSInfo.deviceType, pointRecordTSInfo.x, pointRecordTSInfo.y, pointRecordTSInfo.z, inputHrDouble, pointRecordTSInfo.setupStationMethod, pointRecordTSInfo.stationName, pointRecordTSInfo.stationX, pointRecordTSInfo.stationY, pointRecordTSInfo.stationZ, pointRecordTSInfo.hi, pointRecordTSInfo.ha, pointRecordTSInfo.va, pointRecordTSInfo.sd, pointRecordTSInfo.angleDifference, pointRecordTSInfo.powerLevel, pointRecordTSInfo.backSightPoints, pointRecordTSInfo.checkPoints, pointRecordTSInfo.deviceModel, pointRecordTSInfo.deviceSn);
TSStatusData tsStatusData = new TSStatusData(pointRecordTSInfo.deviceType, pointRecordTSInfo.x, pointRecordTSInfo.y, pointRecordTSInfo.z, inputHrDouble, pointRecordTSInfo.setupStationMethod, pointRecordTSInfo.stationName, pointRecordTSInfo.stationX, pointRecordTSInfo.stationY, pointRecordTSInfo.stationZ, pointRecordTSInfo.hi, pointRecordTSInfo.ha, pointRecordTSInfo.va, pointRecordTSInfo.sd, pointRecordTSInfo.angleDifference, pointRecordTSInfo.powerLevel, pointRecordTSInfo.backSightPoints, pointRecordTSInfo.checkPoints, pointRecordTSInfo.deviceModel, pointRecordTSInfo.deviceSn, pointRecordTSInfo.prismTypeCode, pointRecordTSInfo.prismConstant, pointRecordTSInfo.prismTypeName);
DeviceInfoData deviceInfoData = new DeviceInfoData(tsStatusData);
pointRecord.deviceInfoData = deviceInfoData;
}

@ -228,7 +228,7 @@ public class JobDbUtils {
@WorkerThread
public static String createDefaultJob(Context context, String projectId, long time) {
JobRecord jobRecord = new JobRecord(context.getString(R.string.default_work_name), projectId, time);
JobRecord jobRecord = new JobRecord("默认作业", projectId, time);
JobDb.getInstance().save(jobRecord);
KeyValueRecord defaultJobConfig = new KeyValueRecord(KeyValueConstants.keyOfProjectCurrentJob(projectId), jobRecord.id);

@ -7,7 +7,6 @@ import com.project.survey.ui.base.BaseBindingActivity
import com.project.survey.ui.lofting.adapter.LoftingListAdapter
import com.project.survey.ui.lofting.pointlofting.PointStakingActivity
import com.project.survey.util.ActivityNavUtil
import com.project.survey.widget.decoration.TransparentDividerDecoration
class LoftingListActivity : BaseBindingActivity<ActivityLoftingListBinding>() {

@ -1,12 +1,9 @@
package com.project.survey.ui.lofting.pointlofting;
import static com.bingce.surveyor.util.ConstUtils.intentConst.KEY_JOB_ID;
import static com.bingce.surveyor.util.ConstUtils.intentConst.KEY_PROJECT_ID;
import static com.bingce.surveyor.util.ConstUtils.intentConst.KEY_ROAD_ID;
import static com.project.survey.util.DrawableUtils.RADIUS_BOTTOM;
import static com.project.survey.util.DrawableUtils.RADIUS_TOP;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
@ -75,7 +72,6 @@ import com.project.survey.ui.lofting.pointlofting.record.util.RecordTypeConstant
import com.project.survey.ui.pointmeasure.measure.util.SurveyToolBarClickListenerUtils;
import com.project.survey.util.CommonUtils;
import com.project.survey.util.DeviceConnectUtil;
import com.project.survey.util.DrawableUtils;
import com.project.survey.util.SurveyUIUtils;
import java.util.ArrayList;
@ -100,6 +96,7 @@ import lecho.hellocharts.renderer.LineChartRenderer;
*/
public class PointStakingActivity extends BaseSurveyNewActivity {
private Context mContext;
private ActivityPointStakingBinding binding;
private final Line currentPointLine = new Line(); //实测点
private final Line surveyBasePointLine = new Line();//待放样点(点库的点)
@ -113,18 +110,17 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
private PointRecord targetStakePointRecord;
private Coordinate currentCoordinate;
private Coordinate currentSmoothCoordinate;
protected final CachedCurrentRoadKt cachedRoadKt = new CachedCurrentRoadKt(this);
// protected final CachedCurrentRoadKt cachedRoadKt = new CachedCurrentRoadKt(this);
private final SurveyRemarksUtils surveyRemarksUtils = new SurveyRemarksUtils();
private IText distance, moveWestEast, moveSouthNorth, moveDigFill, moveLeftRight, moveBeforeAfter;
private MoveValue<MoveK> moveK;
private MoveValue<MoveLeftRight> moveD;
private boolean isTsWatchRecord;
private final TargetCompassHelper targetCompassHelper = new TargetCompassHelper(this, App.magneticDeclination);
private final TargetCompassHelper targetCompassHelper = new TargetCompassHelper(this, ((App) Utils.getApp()).magneticDeclination);
private final PointStakingLogic pointStakingLogic = new PointStakingLogic(() -> this);
private boolean isTirpsAddSP;
private CustomDialog.Builder builder;
private String recordRemarks;
private final List<String> stringListLibraty = new ArrayList<>();
private final List<String> methodList = new ArrayList<>();
private SharedPreferences preferences;
private boolean isFirstUpdateChartView;
@ -138,43 +134,14 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
@Override
protected void initView() {
mContext = this;
preferences = PreferenceManager.getDefaultSharedPreferences(this);
targetCompassHelper.register(angle -> {
binding.dirCompass.setAngle(angle);
});
builder = new CustomDialog.Builder(PointStakingActivity.this);
builder = new CustomDialog.Builder(this);
initChartView();
if (App.instance.isThemeDark()) {
binding.layoutPoleHrHeight.tvPoleHrHeight.setTextColor(getColor(R.color.white));
binding.tvStakingPointName.setTextColor(getColor(R.color.white));
binding.tvDistance.setTextColor(getColor(R.color.white));
binding.tvDigFill.setTextColor(getColor(R.color.white));
binding.tvTopThree.setTextColor(getColor(R.color.white));
binding.tvTopFour.setTextColor(getColor(R.color.white));
binding.tvTopFive.setTextColor(getColor(R.color.white));
binding.tvTopSix.setTextColor(getColor(R.color.white));
binding.tvLastPoint.setTextColor(getColor(R.color.white));
binding.tvRecentlyPoint.setTextColor(getColor(R.color.white));
binding.tvNextPoint.setTextColor(getColor(R.color.white));
binding.tvScale.setTextColor(getColor(R.color.white));
binding.tvTargetCoordinate.setTextColor(getColor(R.color.white));
binding.tvTargetX.setTextColor(getColor(R.color.white));
binding.tvTargetY.setTextColor(getColor(R.color.white));
binding.tvTargetZ.setTextColor(getColor(R.color.white));
binding.tvMeasuredCoordinate.setTextColor(getColor(R.color.white));
binding.tvSurveyX.setTextColor(getColor(R.color.white));
binding.tvSurveyY.setTextColor(getColor(R.color.white));
binding.tvSurveyZ.setTextColor(getColor(R.color.white));
DrawableUtils.tintModifyColorVector(binding.ivLastPoint, R.drawable.icon_triangle_left, R.color.white);
DrawableUtils.tintModifyColorVector(binding.ivNextPoint, R.drawable.icon_triangle_right, R.color.white);
DrawableUtils.tintModifyColorVector(binding.ivScale, R.drawable.ic_scale, R.color.white);
DrawableUtils.setClickBackgroundEffect(binding.topLayout, R.color.theme_dark_black, R.color.theme_dark_black, 10, RADIUS_BOTTOM);
DrawableUtils.setClickBackgroundEffect(binding.bottomLayout, R.color.theme_dark_black, R.color.theme_dark_black, 10, RADIUS_TOP);
}
//比例尺
SurveyToolBarClickListenerUtils.setScaleViewOnClickListener(binding.lineChartView, binding.tvScale, binding.ivScale);
//工具栏功能(左上角)
@ -184,7 +151,7 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
@Override
public void onSettingClickListener() {
stopSoundPool();
PointStakingSettingActivity.start(PointStakingActivity.this);
PointStakingSettingActivity.start(mContext);
}
@Override
@ -226,40 +193,19 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
//点库选点
binding.pointLibrary.setOnClickListener(v -> {
if (mStakingPointIsInMemory) return;
CustomRecycleDialog.showDialog(PointStakingActivity.this, R.string.data_source, stringListLibraty, 0, false, (index, itemString) -> {
stopSoundPool();
switch (index) {
case 0:
//放样点库
StakingNewJobActivity.pickPoint(PointStakingActivity.this, (pointId, pointsListIndex, name, x, y, z) ->
onPickedPoint(true, pointId, name, x, y, z));
break;
case 1:
//工程全局控制点
ControlPointsNewActivity.pickPoint(PointStakingActivity.this, true, (pointId, name, code, x, y, z, remarks) -> {
onPickedPoint(false, pointId, name, x, y, z);
});
break;
case 2:
//测量点库
CoordinatePointsLibraryActivity.pickPoint(PointStakingActivity.this, (pointId, name, code, x, y, z, b, l, h) -> {
onPickedPoint(false, pointId, name, x, y, z);
});
break;
}
});
StakingNewJobActivity.pickPoint(this, (pointId, pointsListIndex, name, x, y, z) ->
onPickedPoint(true, pointId, name, x, y, z));
});
//移动方法
showTopMoveMethod();
binding.tvMoveMethod.setOnClickListener(v -> {
methodList.clear();
methodList.add(getString(R.string.k_d));
// methodList.add(getString(R.string.k_d));
if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_TS) {
methodList.add(getString(R.string.before_after_left_right));
}
methodList.add(getString(R.string.east_west_north_south));
CustomRecycleDialog.showDialog(PointStakingActivity.this, R.string.move_method, methodList,
CustomRecycleDialog.showDialog(this, R.string.move_method, methodList,
Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_TS ? PreferencesUtil.getMoveMethodTypeTS()
: PreferencesUtil.getMoveMethodTypeRTK(), false, (index, itemString) -> {
if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_TS) {
@ -277,7 +223,7 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
//放样记录
binding.tvStakingRecord.setOnClickListener(v -> {
stopSoundPool();
RecordsActivity.start(PointStakingActivity.this, RecordTypeConstants.TYPE_POINT_STAKE);
RecordsActivity.start(this, RecordTypeConstants.TYPE_POINT_STAKE);
});
//仅观测
binding.layoutDragButton.drWatchSurvey.setOnClickListener(v -> watchSurvey());
@ -348,7 +294,7 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
List<LineChartData> lineChartDataList = new ArrayList<>();
LineChartData lineBasePointChartData = new LineChartData();
int blackPointColor = App.instance.isThemeDark() ? getColor(R.color.color_E2E1DD) : getColor(R.color.color_575757);
int blackPointColor = ((App) Utils.getApp()).isThemeDark() ? getColor(R.color.color_E2E1DD) : getColor(R.color.color_575757);
int greenPointColor = getColor(R.color.theme_green);
int redPointColor = getColor(R.color.color_FF1515);
int lightGreenPointColor = getColor(R.color.theme_green_press);
@ -393,7 +339,7 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
}
String content = getString(R.string.whether_staking_selected_point) + getString(R.string.colon) + stakingLibraryPointList.get(pointIndex).name + "\n"
+ "X" + getString(R.string.colon) + Util.formatDouble2Double(stakingLibraryPointList.get(pointIndex).x, 6) + " "
+ "Y" + getString(R.string.colon) + Util.formatDouble2Double(stakingLibraryPointList.get(pointIndex).y, 6) + "\n"
+ "Y" + getString(R.string.colon) + Util.formatDouble2Double(stakingLibraryPointList.get(pointIndex).y, 6)+ "\n"
+ "Z" + getString(R.string.colon) + Util.formatDouble2Double(stakingLibraryPointList.get(pointIndex).h, 6);
builder.setContent(content).setButtonConfirm(v -> {
targetStakePointRecord = stakingLibraryPointList.get(pointIndex);
@ -411,47 +357,6 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
@Override
protected void initData() {
stringListLibraty.add(getString(R.string.staking_point_library));
stringListLibraty.add(getString(R.string.global_control_point));
stringListLibraty.add(getString(R.string.point_survey_point_library));
// PointDb.getInstance().rawQueryListLiveData(PointConstants.findKnownPointByJob(jobId())).observe(this, pointRecords -> {
// surveyBasePointLine.getValues().clear();
// stakingPointLine.getValues().clear();
// recordPointLine.getValues().clear();
// effectGuideLine.getValues().clear();
// stakingLibraryPointList.clear();
// stakingLibraryPointList.addAll(pointRecords);
// for (int i = 0; i < stakingLibraryPointList.size(); i++) {
// PointRecord pointRecord = stakingLibraryPointList.get(i);
// surveyBasePointLine.getValues().add(new PointValue(pointRecord.y, pointRecord.x).setLabel(pointRecord.name));
// }
// if (stakingLibraryPointList.size() > 0) {
// targetStakePointRecord = stakingLibraryPointList.get(0);
// stakingPointLine.getValues().add(new PointValue(targetStakePointRecord.y, targetStakePointRecord.x).setLabel(targetStakePointRecord.name));
// updateBottomInfo(targetStakePointRecord.name, targetStakePointRecord.x, targetStakePointRecord.y, targetStakePointRecord.h);
// drawRecordPointLine();
// if (currentCoordinate != null) {
// drawCurrentPointLine(currentCoordinate.getX(), currentCoordinate.getY(), currentCoordinate.getZ());
// updateTopInfo(currentCoordinate);
// } else {
// showTopMoveMethod();
// }
// isTirpsAddSP = false;
// } else {
// targetStakePointRecord = null;
// binding.tvStakingPointName.setText(getString(R.string.staking_point_name));
// binding.tvTargetX.setText(TextFactory.fixedString("X"));
// binding.tvTargetY.setText(TextFactory.fixedString("Y"));
// binding.tvTargetZ.setText(TextFactory.fixedString("Z"));
// showTopMoveMethod();
// isTirpsAddSP = true;
// }
// ((LineChartRenderer) binding.lineChartView.getChartRenderer()).calculateMaxViewport(1.5f);
// binding.lineChartView.onChartDataChange();
// binding.lineChartView.setCurrentViewport(binding.lineChartView.getMaximumViewport());
// });
String targetPointList = IntentUtil.stringExtra(this, KEY_POINT_LIST);
if (StringUtil.isEmpty(targetPointList)) {
PointDb.getInstance().rawQueryListLiveData(PointConstants.findKnownPointByJob(jobId())).observe(this, pointRecords -> {
@ -538,7 +443,7 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
ToastUtils.showShort(getString(R.string.add_points_staking_point_first));
return;
}
SurveyLimitCheckUtils.checkStakingLimit(PointStakingActivity.this, currentCoordinate, new Coordinate(targetStakePointRecord.x, targetStakePointRecord.y), (currentCoordinate, targetCoordinate) -> recordPoint());
SurveyLimitCheckUtils.checkStakingLimit(this, currentCoordinate, new Coordinate(targetStakePointRecord.x, targetStakePointRecord.y), (currentCoordinate, targetCoordinate) -> recordPoint());
} else {
tsMeasCoordinateManager.measureCoordinate();
}
@ -553,14 +458,14 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
lineChartViewBuilder.setButtonConfirmTextColor(R.color.color_E2E1DD);
lineChartViewBuilder.setButtonConfirm(v -> {
SurveyLimitCheckUtils.checkStakingLimit(PointStakingActivity.this, currentSmoothCoordinate, new Coordinate(targetStakePointRecord.x, targetStakePointRecord.y), (currentCoordinate, targetCoordinate) -> recordPoint());
SurveyLimitCheckUtils.checkStakingLimit(this, currentSmoothCoordinate, new Coordinate(targetStakePointRecord.x, targetStakePointRecord.y), (currentCoordinate, targetCoordinate) -> recordPoint());
});
// lineChartViewBuilder.setButtonConfirm(v -> checkRtkStringLimit());
customDialog = lineChartViewBuilder.create();
customDialog.show();
isControlSurvey = true;
} else {
SurveyLimitCheckUtils.checkStakingLimit(PointStakingActivity.this, currentCoordinate, new Coordinate(targetStakePointRecord.x, targetStakePointRecord.y), (currentCoordinate, targetCoordinate) -> recordPoint());
SurveyLimitCheckUtils.checkStakingLimit(this, currentCoordinate, new Coordinate(targetStakePointRecord.x, targetStakePointRecord.y), (currentCoordinate, targetCoordinate) -> recordPoint());
}
}
}
@ -711,6 +616,16 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
clearRefreshReset();
}
/**
* 接收 RTK 返回的数据
* @param antennaHeight
* @param blh
* @param originalBlh
* @param coordinate
* @param hdop
* @param vdop
* @param pdop
*/
@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);
@ -862,7 +777,7 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
if (targetStakePointRecord == null) {
if (isTirpsAddSP) {
builder.setContent(getString(R.string.add_points_staking_point_first)).setButtonConfirm(v -> {
StakingNewJobActivity.start(PointStakingActivity.this);
StakingNewJobActivity.start(this);
}).create().show();
isTirpsAddSP = false;
}
@ -879,11 +794,11 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
}
}
if (!cachedRoadKt.isDataReady()) {
return;
}
// if (!cachedRoadKt.isDataReady()) {
// return;
// }
PointStakingLogic.Result result = pointStakingLogic.calculate(cachedRoadKt.roadEditor(),
PointStakingLogic.Result result = pointStakingLogic.calculate(null,
new PointStakingLogic.Configs(6, moveType),
new PointStakingLogic.Parameter(
new MeasuredPoint(currentCoordinate.getX(), currentCoordinate.getY(), currentCoordinate.getZ(), currentCoordinate.getName()),
@ -934,8 +849,8 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
while (display_station_angle >= Math.PI * 2)
display_station_angle -= Math.PI * 2;
double measured_angle = CoordUtil.calcAzimuth(TsConfig.getInstance().getStation(), currentCoordinate);
binding.tvTopFive.setText(getString(R.string.station_angle) + getString(R.string.colon) + Util.radianToDmsString(display_station_angle, 6));
binding.tvTopSix.setText(getString(R.string.station_angle_diff) + getString(R.string.colon) + Util.radianToDmsString(station_angle - measured_angle, 6, false));
binding.tvTopFive.setText(getString(R.string.station_angle) + getString(R.string.colon) + Util.radianToDmsString(display_station_angle, ((App) Utils.getApp()).angleNotNumber()));
binding.tvTopSix.setText(getString(R.string.station_angle_diff) + getString(R.string.colon) + Util.radianToDmsString(station_angle - measured_angle, ((App) Utils.getApp()).angleNotNumber(), false));
} else {
switch (PreferencesUtil.getMoveMethodTypeRTK()) {
case 0:
@ -968,12 +883,12 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
double foreBackMoveValue = moveDistance.getX();
moveBeforeAfter = foreBackMoveValue >= 0
? TextFactory.distanceFormatDouble2String(getString(R.string.to_before), Math.abs(foreBackMoveValue), 6)
: TextFactory.distanceFormatDouble2String(getString(R.string.to_after), Math.abs(foreBackMoveValue), 6);
? TextFactory.distanceFormatDouble2String("向前", Math.abs(foreBackMoveValue), 6)
: TextFactory.distanceFormatDouble2String("向后", Math.abs(foreBackMoveValue), 6);
binding.tvTopThree.setText(foreBackMoveValue >= 0
? TextFactory.distanceFormatDouble2String(getString(R.string.to_before) + getString(R.string.colon), Math.abs(foreBackMoveValue), 6)
: TextFactory.distanceFormatDouble2String(getString(R.string.to_after) + getString(R.string.colon), Math.abs(foreBackMoveValue), 6));
? TextFactory.distanceFormatDouble2String("向前" + getString(R.string.colon), Math.abs(foreBackMoveValue), 6)
: TextFactory.distanceFormatDouble2String("向后" + getString(R.string.colon), Math.abs(foreBackMoveValue), 6));
double leftRightValue = moveDistance.getY();
moveLeftRight = leftRightValue >= 0
@ -991,7 +906,7 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
: TextFactory.distanceFormatDouble2String(getString(R.string.to_east), targetStakePointRecord.y - currentCoordinate.getY(), 6);
moveSouthNorth = currentCoordinate.getX() > targetStakePointRecord.x
? TextFactory.distanceFormatDouble2String(getString(R.string.to_south), currentCoordinate.getX() - targetStakePointRecord.x,6)
? TextFactory.distanceFormatDouble2String(getString(R.string.to_south), currentCoordinate.getX() - targetStakePointRecord.x, 6)
: TextFactory.distanceFormatDouble2String(getString(R.string.to_north), targetStakePointRecord.x - currentCoordinate.getX(), 6);
binding.tvTopThree.setText(currentCoordinate.getY() > targetStakePointRecord.y
@ -1127,12 +1042,12 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
DeviceUtils.StationData stationData = DeviceUtils.stationData(
new BasePoint(targetStakePointRecord.x, targetStakePointRecord.y, targetStakePointRecord.h),
6,
((App) Utils.getApp()).angleNotNumber(),
6);
DeviceInfoData deviceInfoData = DeviceUtils.collectDeviceInfo();
PointStakeRecord pointStakeRecord = new PointStakeRecord(projectId, jobId, roadId,
targetStakePointRecord.id, moveBeforeAfter != null ? moveBeforeAfter.getString() : "", moveLeftRight != null ? moveLeftRight.getString() : "", moveWestEast != null ? moveWestEast.getString() : "", moveSouthNorth != null ? moveSouthNorth.getString() : "",
cachedRoadKt.road().getName()
""
, targetStakePointRecord.name
, Util.formatDouble2StringDotAuto(targetStakePointRecord.x)
, Util.formatDouble2StringDotAuto(targetStakePointRecord.y)
@ -1169,34 +1084,34 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
*/
private void showTopMoveMethod() {
binding.tvDistance.setText(getString(R.string.distance));
binding.tvDigFill.setText(getString(R.string.dig_fill));
binding.tvDigFill.setText("填挖");
if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_TS) {
switch (PreferencesUtil.getMoveMethodTypeTS()) {
// case 0:
// binding.tvTopThree.setText(getString(R.string.k));
// binding.tvTopFour.setText(getString(R.string.d));
// break;
case 0:
binding.tvTopThree.setText(getString(R.string.k));
binding.tvTopFour.setText(getString(R.string.d));
break;
case 1:
binding.tvTopThree.setText(getString(R.string.to_before));
binding.tvTopThree.setText("向前");
binding.tvTopFour.setText(getString(R.string.to_left));
break;
case 2:
case 1:
binding.tvTopThree.setText(getString(R.string.to_north));
binding.tvTopFour.setText(getString(R.string.to_east));
break;
}
binding.topFiveSixLayout.setVisibility(View.VISIBLE);
} else {
switch (PreferencesUtil.getMoveMethodTypeRTK()) {
case 0:
binding.tvTopThree.setText(getString(R.string.k));
binding.tvTopFour.setText(getString(R.string.d));
break;
case 1:
// switch (PreferencesUtil.getMoveMethodTypeRTK()) {
// case 0:
// binding.tvTopThree.setText(getString(R.string.k));
// binding.tvTopFour.setText(getString(R.string.d));
// break;
// case 1:
binding.tvTopThree.setText(getString(R.string.to_north));
binding.tvTopFour.setText(getString(R.string.to_east));
break;
}
// break;
// }
binding.topFiveSixLayout.setVisibility(View.GONE);
}
binding.tvTopFive.setText(getString(R.string.station_angle));
@ -1217,9 +1132,22 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
return IntentUtil.stringExtra(getIntent(), KEY_JOB_ID);
}
private static final String KEY_POINT_LIST = "key_point_list";
public static void start(Activity activity) {
ThreadPoolUtil.execute(() -> {
String projectId = CachedProject.currentProjectId();
String roadId = CachedCurrentRoad.currentRoadId(projectId);
String jobId = CachedCurrentJob.currentJobId(projectId);
Intent intent = new Intent(activity, PointStakingActivity.class);
intent.putExtra(KEY_JOB_ID, jobId);
// intent.putExtra(KEY_PROJECT_ID, projectId);
// intent.putExtra(KEY_ROAD_ID, roadId);
activity.startActivity(intent);
});
}
private static final String KEY_POINT_LIST = "key_point_list";
public static void start(Context context, List<StakingPoint> stakingPointList) {
Gson gson = new Gson();
Intent intent = new Intent(context, PointStakingActivity.class);
@ -1227,19 +1155,6 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
context.startActivity(intent);
}
public static void start(Context context) {
ThreadPoolUtil.execute(() -> {
String projectId = CachedProject.currentProjectId();
String roadId = CachedCurrentRoad.currentRoadId(projectId);
String jobId = CachedCurrentJob.currentJobId(projectId);
Intent intent = new Intent(context, PointStakingActivity.class);
intent.putExtra(KEY_JOB_ID, jobId);
intent.putExtra(KEY_PROJECT_ID, projectId);
intent.putExtra(KEY_ROAD_ID, roadId);
context.startActivity(intent);
});
}
@Override
protected void onDestroy() {
super.onDestroy();
@ -1261,4 +1176,9 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
binding.baseSurveyStakingSetting.tvTiltPrimAuto.setTextColor(getColor(R.color.color_BCBCBC));
}
}
// @Override
// public boolean isUseSystemStyleNavigationBar() {
// return true;
// }
}

@ -34,7 +34,9 @@ import com.hjq.permissions.XXPermissions;
import com.hjq.shape.view.ShapeTextView;
import com.project.survey.App;
import com.project.survey.R;
import com.project.survey.constants.SPConstants;
import com.project.survey.databinding.ActivityRecordsBinding;
import com.project.survey.model.ProjectBean;
import com.project.survey.ui.lofting.pointlofting.record.util.IRecordsUtils;
import com.project.survey.ui.lofting.pointlofting.record.util.RecordTypeConstants;
import com.project.survey.ui.lofting.pointlofting.record.util.RecordsActivityClearUtils;
@ -43,6 +45,7 @@ import com.project.survey.ui.lofting.pointlofting.record.util.RecordsActivityFil
import com.project.survey.ui.lofting.pointlofting.record.util.RecordsActivityHeaders;
import com.project.survey.ui.lofting.pointlofting.record.util.RecordsUtilsFactory;
import com.project.survey.ui.lofting.pointlofting.record.util.RecordsViewModelKt;
import com.project.survey.util.SPUtils;
import org.polaric.colorful.ColorfulActivity;
@ -296,50 +299,50 @@ public class RecordsActivity extends ColorfulActivity {
private void updateRecyclerView() {
ThreadPoolUtil.execute(() -> {
UserConfig userConfig = LoadUserConfigKt.loadUserConfig();
String projectId = LoadCurrentProjectIdKt.loadCurrentProjectId(true, userConfig);
if (StringUtil.isEmpty(projectId)) {
return;
}
String jobId = LoadCurrentJobIdKt.loadCurrentJobId(projectId, true, userConfig);
if (StringUtil.isEmpty(jobId)) {
return;
}
if (currentTypeFromSpinner == RecordTypeConstants.TYPE_WATER_PIPE_BACK_BREAK){
String waterPipeId = LoadCurrentWaterPipeIdKt.loadCurrentWaterPipeId(projectId, true, userConfig);
if (StringUtil.isEmpty(waterPipeId)){
return;
}
runOnUiThread(() -> {
IRecordsUtils recordsUtils = recordsUtilsMap.get(currentTypeFromSpinner);
if (recordsUtils != null) {
recordsUtils.update(binding.recyclerviewRecords, isSortByTimeAcs,
userConfig,
projectId, jobId, waterPipeId,
filterUtils.filterParameter());
}
});
}else {
String roadId = LoadCurrentRoadIdKt.loadCurrentRoadId(projectId, true, userConfig);
if (StringUtil.isEmpty(roadId)) {
return;
}
// UserConfig userConfig = LoadUserConfigKt.loadUserConfig();
// String projectId = LoadCurrentProjectIdKt.loadCurrentProjectId(true, userConfig);
// if (StringUtil.isEmpty(projectId)) {
// return;
// }
// String jobId = LoadCurrentJobIdKt.loadCurrentJobId(projectId, true, userConfig);
// if (StringUtil.isEmpty(jobId)) {
// return;
// }
// if (currentTypeFromSpinner == RecordTypeConstants.TYPE_WATER_PIPE_BACK_BREAK){
// String waterPipeId = LoadCurrentWaterPipeIdKt.loadCurrentWaterPipeId(projectId, true, userConfig);
// if (StringUtil.isEmpty(waterPipeId)){
// return;
// }
// runOnUiThread(() -> {
// IRecordsUtils recordsUtils = recordsUtilsMap.get(currentTypeFromSpinner);
// if (recordsUtils != null) {
// recordsUtils.update(binding.recyclerviewRecords, isSortByTimeAcs,
// userConfig,
// projectId, jobId, waterPipeId,
// filterUtils.filterParameter());
//
// }
// });
// }else {
// String roadId = LoadCurrentRoadIdKt.loadCurrentRoadId(projectId, true, userConfig);
// if (StringUtil.isEmpty(roadId)) {
// return;
// }
runOnUiThread(() -> {
IRecordsUtils recordsUtils = recordsUtilsMap.get(currentTypeFromSpinner);
if (recordsUtils != null) {
recordsUtils.update(binding.recyclerviewRecords, isSortByTimeAcs,
userConfig,
projectId, jobId, roadId,
null,
SPUtils.INSTANCE.getString(SPConstants.PROJECT_ID), "", "",
filterUtils.filterParameter());
if (RecordTypeConstants.TYPE_MEASURING_TAPE == currentTypeFromSpinner) {
//如果选中的是进尺,尝试加载数据
holderInActivity.getViewModel().loadMeasuringTapeRecord(userConfig, roadId);
}
// if (RecordTypeConstants.TYPE_MEASURING_TAPE == currentTypeFromSpinner) {
// //如果选中的是进尺,尝试加载数据
// holderInActivity.getViewModel().loadMeasuringTapeRecord(userConfig, roadId);
// }
}
});
}
// }
});

@ -4,6 +4,7 @@ import androidx.activity.viewModels
import androidx.lifecycle.lifecycleScope
import com.project.survey.databinding.ActivityLoginInputCodeBinding
import com.project.survey.extend.showSoftInput
import com.project.survey.extend.toast
import com.project.survey.logic.viewmodel.LoginViewModel
import com.project.survey.ui.base.BaseBindingActivity
import com.project.survey.util.ActivityNavUtil
@ -61,7 +62,9 @@ class LoginInputCodeActivity : BaseBindingActivity<ActivityLoginInputCodeBinding
}
override fun initData() {
viewModel.errorResponse.observe(this){
toast(it)
}
}
override fun initListener() {

@ -4,12 +4,14 @@ import android.view.Menu
import android.view.MenuItem
import androidx.activity.viewModels
import com.afollestad.materialdialogs.MaterialDialog
import com.bingce.coordlib.model.CoordinateSystem
import com.bingce.data.database.KeyValueDb
import com.bingce.data.database.ProjectDb
import com.bingce.data.surveyor.designdata.kv.KeyValueConstants
import com.bingce.data.surveyor.designdata.kv.KeyValueRecord
import com.bingce.data.surveyor.designdata.project.ProjectRecord
import com.bingce.utils.ThreadPoolUtil
import com.project.survey.App
import com.project.survey.R
import com.project.survey.constants.EventConstants
import com.project.survey.constants.SPConstants
@ -94,11 +96,12 @@ class ProjectListActivity : BaseBindingActivity<ActivityProjectListBinding>(), O
adapter.getItem(position)?.let { bean ->
// 进入项目,设置当前项目
SPUtils.put(SPConstants.CURRENT_PROJECT, bean)
SPUtils.put(SPConstants.PROJECT_ID, bean.XMXX_CODE)
// 存储配置--当前项目
ThreadPoolUtil.execute {
//存储新的项目
ProjectDb.getInstance().save(
ProjectRecord(bean.BD_XMXX_ID, bean.XMXX_NAME, null, Date().time).apply {
ProjectRecord(bean.BD_XMXX_ID, bean.XMXX_NAME, CoordinateSystem.newCoordinateSystem(this), Date().time).apply {
author = bean.XMXX_CONTACTNAME
}
)

@ -0,0 +1,65 @@
package com.project.survey.util
import com.bingce.coordlib.model.CoordinateSystem
import com.bingce.data.base.user.UserConfig
import com.bingce.data.base.user.UserConfigConstants
import com.bingce.data.database.AppDataBase
import com.bingce.data.database.KeyValueDb
import com.bingce.data.database.ProjectDb
import com.bingce.data.surveyor.designdata.kv.KeyValueConstants
import com.bingce.data.surveyor.designdata.kv.KeyValueRecord
import com.bingce.data.surveyor.designdata.project.ProjectRecord
import com.bingce.utils.ThreadPoolUtil
import com.project.survey.App
import com.project.survey.constants.SPConstants
import java.util.Date
object MockUtil {
val isTest = false
fun login(){
SPUtils.put(SPConstants.ACCOUNT, "zhangsan")
SPUtils.put(SPConstants.TOKEN, "1234567890")
val personId = "123456"
SPUtils.put(SPConstants.PERSON_ID, personId)
SPUtils.put(SPConstants.MOBILE_PHONE, "15911112222")
// 进入项目,设置当前项目
val projectId = "111111"
SPUtils.put(SPConstants.PROJECT_ID, projectId)
// 存储配置--当前项目
ThreadPoolUtil.execute {
var userConfig = AppDataBase.getInstance().userConfigDao().findByLeanCloudUserId(personId)
if (userConfig == null) { //创建第一个用户配置--使用默认数据目录
userConfig = UserConfig.newItem(
personId,
UserConfigConstants.VALUE_DEFAULT_DB_FOLDER
)
AppDataBase.getInstance().userConfigDao().save(userConfig)
}
//存储新的项目
ProjectDb.getInstance().save(
ProjectRecord(projectId, "哈哈工程",
CoordinateSystem.newCoordinateSystem(App.instance.applicationContext), Date().time).apply {
author = "张哈哈"
}
)
var currentProjectConfig =
KeyValueDb.getInstance().findData(KeyValueConstants.KEY_CURRENT_PROJECT_ID)
if (currentProjectConfig != null) {
currentProjectConfig.value = projectId
} else {
currentProjectConfig = KeyValueRecord(KeyValueConstants.KEY_CURRENT_PROJECT_ID, projectId)
}
KeyValueDb.getInstance().save(currentProjectConfig)
}
}
fun logout(){
}
}
Loading…
Cancel
Save