连接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:name=".ui.lofting.pointlofting.PointStakingActivity"
android:exported="true" android:exported="true"
android:windowSoftInputMode="adjustResize|stateHidden" /> android:windowSoftInputMode="adjustResize|stateHidden" />
<activity
android:name=".ui.lofting.pointlofting.PointStakingSettingActivity"
android:exported="true"
android:windowSoftInputMode="adjustResize|stateHidden" />
<activity <activity
android:name=".ui.instrument.setupstation.SetupStationInputActivity" android:name=".ui.instrument.setupstation.SetupStationInputActivity"
android:exported="true" android:exported="true"
@ -260,20 +264,6 @@
android:exported="true" android:exported="true"
android:hardwareAccelerated="true" android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustUnspecified|stateHidden" /> 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 <activity
android:name="com.project.survey.ui.instrument.mobilestationmode.rover.GeoRtkRoverSettingActivity" android:name="com.project.survey.ui.instrument.mobilestationmode.rover.GeoRtkRoverSettingActivity"
android:configChanges="orientation|keyboardHidden|screenSize" android:configChanges="orientation|keyboardHidden|screenSize"

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

@ -3,6 +3,10 @@ package com.project.survey.logic.viewmodel
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import blankj.utilcode.util.ActivityUtils 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.EventConstants
import com.project.survey.constants.SPConstants import com.project.survey.constants.SPConstants
import com.project.survey.extend.toast import com.project.survey.extend.toast
@ -61,6 +65,16 @@ class LoginViewModel : BaseViewModel() {
SPUtils.put(SPConstants.PERSON_ID, res.data.personId) SPUtils.put(SPConstants.PERSON_ID, res.data.personId)
SPUtils.put(SPConstants.MOBILE_PHONE, res.data.mobilePhone) 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)) msgEvent.postValue(Message(EventConstants.LOGIN_STATUS))
// MainActivity.start() // MainActivity.start()
@ -70,7 +84,7 @@ class LoginViewModel : BaseViewModel() {
ActivityUtils.finishActivity(LoginActivity::class.java) ActivityUtils.finishActivity(LoginActivity::class.java)
ActivityUtils.finishActivity(LoginInputCodeActivity::class.java) ActivityUtils.finishActivity(LoginInputCodeActivity::class.java)
} else { } else {
toast(res.message) errorResponse.postValue(res.message)
} }
} }
} }

@ -14,19 +14,21 @@ class MainViewModel : BaseViewModel() {
fun verifySdk(){ fun verifySdk(){
SdkUtils.verify( launch {
App.instance.applicationContext, SdkUtils.verify(
"sxshy", App.instance.applicationContext,
AppUtil.getLanguage(), "sxshy",
AppUtils.getAppVersionCode().toLong(), AppUtil.getLanguage(),
AppChannel.customChannel, AppUtils.getAppVersionCode().toLong(),
RegisterUtil.getOriginalMachineCode(), AppChannel.customChannel,
RegisterUtil.getDeviceBoundID(), 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.base.BaseBindingActivity
import com.project.survey.ui.login.LoginActivity import com.project.survey.ui.login.LoginActivity
import com.project.survey.ui.project.ProjectListActivity import com.project.survey.ui.project.ProjectListActivity
import com.project.survey.util.MockUtil
import com.project.survey.util.SPUtils import com.project.survey.util.SPUtils
/** /**
@ -26,24 +27,21 @@ class SplashActivity : BaseBindingActivity<ActivitySplashBinding>() {
} }
override fun initData() { override fun initData() {
if (SPUtils.getString(SPConstants.TOKEN).isNullOrBlank()) { if (MockUtil.isTest){
LoginActivity.start() MockUtil.login()
MainActivity.start()
} else { } else {
val currentProject = if (SPUtils.getString(SPConstants.TOKEN).isNullOrBlank()) {
SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java) LoginActivity.start()
// SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java)
// ?.let { project ->
// viewModel.repo.currentProject.postValue(project)
// MainActivity.start()
// } ?: {
// //未选择工程
// ProjectListActivity.start()
// }
if (currentProject == null) {
//未选择工程
ProjectListActivity.start()
} else { } else {
MainActivity.start() val currentProject =
SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java)
if (currentProject == null) {
//未选择工程
ProjectListActivity.start()
} else {
MainActivity.start()
}
} }
} }
finish() finish()

@ -8,8 +8,21 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.viewbinding.ViewBinding 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.gyf.immersionbar.ImmersionBar
import com.project.survey.R import com.project.survey.R
import com.project.survey.ui.MainActivityUtils
import com.project.survey.widget.LoadingDialog import com.project.survey.widget.LoadingDialog
import org.polaric.colorful.Colorful import org.polaric.colorful.Colorful
@ -26,6 +39,105 @@ abstract class BaseBindingActivity<VB : ViewBinding> : AppCompatActivity() {
abstract fun initData() abstract fun initData()
abstract fun initListener() 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?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
_binding = getBinding() _binding = getBinding()

@ -8,6 +8,8 @@ import blankj.utilcode.util.AppUtils
import com.bingce.device.Device import com.bingce.device.Device
import com.bingce.device.enums.ConnectTypeEnum import com.bingce.device.enums.ConnectTypeEnum
import com.bingce.device.enums.DeviceTypeEnum 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.command.RTK
import com.bingce.rtk.config.GnssConfigManager import com.bingce.rtk.config.GnssConfigManager
import com.project.survey.R 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.coordinatesystem.BingCeCoordinateSystemActivity
import com.project.survey.ui.instrument.mobilestationmode.GnssConfigSetActivity import com.project.survey.ui.instrument.mobilestationmode.GnssConfigSetActivity
import com.project.survey.ui.instrument.mobilestationmode.base.RtkPointCorrectActivity 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.satellitosis.SatelliteStatusActivity
import com.project.survey.ui.instrument.setupstation.InstrumentSetFragmentSetupStationTypeUtils 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.ActivityNavUtil
import com.project.survey.util.SPUtils import com.project.survey.util.SPUtils

@ -22,7 +22,10 @@ import androidx.viewpager.widget.ViewPager;
import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.MaterialDialog;
import com.bingce.coordlib.model.CoordinateSystem; import com.bingce.coordlib.model.CoordinateSystem;
import com.bingce.coordlib.util.CoordinateSystemUtil; 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.cache.AbstractCachedObserver;
import com.bingce.data.database.AppDataBase;
import com.bingce.data.database.CoordinateSystemDb; import com.bingce.data.database.CoordinateSystemDb;
import com.bingce.data.database.DBQueryConstant; import com.bingce.data.database.DBQueryConstant;
import com.bingce.data.database.KeyValueDb; import com.bingce.data.database.KeyValueDb;
@ -53,8 +56,10 @@ import com.bingce.utils.SoftKeyUtils;
import com.bingce.utils.ThreadPoolUtil; import com.bingce.utils.ThreadPoolUtil;
import com.bingce.utils.ValidateUtil; import com.bingce.utils.ValidateUtil;
import com.flyco.tablayout.SlidingTabLayout; 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.coordinatesystem.CachedCurrentCoordinateSystem;
import com.project.survey.ui.instrument.mobilestationmode.base.RtkPointCorrectActivity; import com.project.survey.ui.instrument.mobilestationmode.base.RtkPointCorrectActivity;
import com.project.survey.util.SPUtils;
import com.rengwuxian.materialedittext.MaterialEditText; import com.rengwuxian.materialedittext.MaterialEditText;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
@ -217,7 +222,8 @@ public class CoordinateSystemContainerFragment extends AbstractCoordinateSystemC
return; return;
} }
currentProjectRecord.coordinateSystem = coordinateSystem; 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); ThreadPoolUtil.executeInMain(success);
}); });

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

@ -68,7 +68,7 @@ public class EditCoordinatePointActivity extends BaseSurveyNewActivity {
if (pointRecord.deviceInfoData.tsStatusData != null) { if (pointRecord.deviceInfoData.tsStatusData != null) {
TSStatusData pointRecordTSInfo = pointRecord.deviceInfoData.tsStatusData; 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); DeviceInfoData deviceInfoData = new DeviceInfoData(tsStatusData);
pointRecord.deviceInfoData = deviceInfoData; pointRecord.deviceInfoData = deviceInfoData;
} }

@ -228,7 +228,7 @@ public class JobDbUtils {
@WorkerThread @WorkerThread
public static String createDefaultJob(Context context, String projectId, long time) { 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); JobDb.getInstance().save(jobRecord);
KeyValueRecord defaultJobConfig = new KeyValueRecord(KeyValueConstants.keyOfProjectCurrentJob(projectId), jobRecord.id); 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.adapter.LoftingListAdapter
import com.project.survey.ui.lofting.pointlofting.PointStakingActivity import com.project.survey.ui.lofting.pointlofting.PointStakingActivity
import com.project.survey.util.ActivityNavUtil import com.project.survey.util.ActivityNavUtil
import com.project.survey.widget.decoration.TransparentDividerDecoration
class LoftingListActivity : BaseBindingActivity<ActivityLoftingListBinding>() { class LoftingListActivity : BaseBindingActivity<ActivityLoftingListBinding>() {

@ -1,12 +1,9 @@
package com.project.survey.ui.lofting.pointlofting; 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_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.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; 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.ui.pointmeasure.measure.util.SurveyToolBarClickListenerUtils;
import com.project.survey.util.CommonUtils; import com.project.survey.util.CommonUtils;
import com.project.survey.util.DeviceConnectUtil; import com.project.survey.util.DeviceConnectUtil;
import com.project.survey.util.DrawableUtils;
import com.project.survey.util.SurveyUIUtils; import com.project.survey.util.SurveyUIUtils;
import java.util.ArrayList; import java.util.ArrayList;
@ -100,6 +96,7 @@ import lecho.hellocharts.renderer.LineChartRenderer;
*/ */
public class PointStakingActivity extends BaseSurveyNewActivity { public class PointStakingActivity extends BaseSurveyNewActivity {
private Context mContext;
private ActivityPointStakingBinding binding; private ActivityPointStakingBinding binding;
private final Line currentPointLine = new Line(); //实测点 private final Line currentPointLine = new Line(); //实测点
private final Line surveyBasePointLine = new Line();//待放样点(点库的点) private final Line surveyBasePointLine = new Line();//待放样点(点库的点)
@ -113,18 +110,17 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
private PointRecord targetStakePointRecord; private PointRecord targetStakePointRecord;
private Coordinate currentCoordinate; private Coordinate currentCoordinate;
private Coordinate currentSmoothCoordinate; private Coordinate currentSmoothCoordinate;
protected final CachedCurrentRoadKt cachedRoadKt = new CachedCurrentRoadKt(this); // protected final CachedCurrentRoadKt cachedRoadKt = new CachedCurrentRoadKt(this);
private final SurveyRemarksUtils surveyRemarksUtils = new SurveyRemarksUtils(); private final SurveyRemarksUtils surveyRemarksUtils = new SurveyRemarksUtils();
private IText distance, moveWestEast, moveSouthNorth, moveDigFill, moveLeftRight, moveBeforeAfter; private IText distance, moveWestEast, moveSouthNorth, moveDigFill, moveLeftRight, moveBeforeAfter;
private MoveValue<MoveK> moveK; private MoveValue<MoveK> moveK;
private MoveValue<MoveLeftRight> moveD; private MoveValue<MoveLeftRight> moveD;
private boolean isTsWatchRecord; 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 final PointStakingLogic pointStakingLogic = new PointStakingLogic(() -> this);
private boolean isTirpsAddSP; private boolean isTirpsAddSP;
private CustomDialog.Builder builder; private CustomDialog.Builder builder;
private String recordRemarks; private String recordRemarks;
private final List<String> stringListLibraty = new ArrayList<>();
private final List<String> methodList = new ArrayList<>(); private final List<String> methodList = new ArrayList<>();
private SharedPreferences preferences; private SharedPreferences preferences;
private boolean isFirstUpdateChartView; private boolean isFirstUpdateChartView;
@ -138,43 +134,14 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
@Override @Override
protected void initView() { protected void initView() {
mContext = this;
preferences = PreferenceManager.getDefaultSharedPreferences(this); preferences = PreferenceManager.getDefaultSharedPreferences(this);
targetCompassHelper.register(angle -> { targetCompassHelper.register(angle -> {
binding.dirCompass.setAngle(angle); binding.dirCompass.setAngle(angle);
}); });
builder = new CustomDialog.Builder(PointStakingActivity.this); builder = new CustomDialog.Builder(this);
initChartView(); 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); SurveyToolBarClickListenerUtils.setScaleViewOnClickListener(binding.lineChartView, binding.tvScale, binding.ivScale);
//工具栏功能(左上角) //工具栏功能(左上角)
@ -184,7 +151,7 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
@Override @Override
public void onSettingClickListener() { public void onSettingClickListener() {
stopSoundPool(); stopSoundPool();
PointStakingSettingActivity.start(PointStakingActivity.this); PointStakingSettingActivity.start(mContext);
} }
@Override @Override
@ -226,40 +193,19 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
//点库选点 //点库选点
binding.pointLibrary.setOnClickListener(v -> { binding.pointLibrary.setOnClickListener(v -> {
if (mStakingPointIsInMemory) return; if (mStakingPointIsInMemory) return;
CustomRecycleDialog.showDialog(PointStakingActivity.this, R.string.data_source, stringListLibraty, 0, false, (index, itemString) -> { StakingNewJobActivity.pickPoint(this, (pointId, pointsListIndex, name, x, y, z) ->
stopSoundPool(); onPickedPoint(true, pointId, name, x, y, z));
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;
}
});
}); });
//移动方法 //移动方法
showTopMoveMethod(); showTopMoveMethod();
binding.tvMoveMethod.setOnClickListener(v -> { binding.tvMoveMethod.setOnClickListener(v -> {
methodList.clear(); methodList.clear();
methodList.add(getString(R.string.k_d)); // methodList.add(getString(R.string.k_d));
if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_TS) { if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_TS) {
methodList.add(getString(R.string.before_after_left_right)); methodList.add(getString(R.string.before_after_left_right));
} }
methodList.add(getString(R.string.east_west_north_south)); 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() Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_TS ? PreferencesUtil.getMoveMethodTypeTS()
: PreferencesUtil.getMoveMethodTypeRTK(), false, (index, itemString) -> { : PreferencesUtil.getMoveMethodTypeRTK(), false, (index, itemString) -> {
if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_TS) { if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_TS) {
@ -277,7 +223,7 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
//放样记录 //放样记录
binding.tvStakingRecord.setOnClickListener(v -> { binding.tvStakingRecord.setOnClickListener(v -> {
stopSoundPool(); stopSoundPool();
RecordsActivity.start(PointStakingActivity.this, RecordTypeConstants.TYPE_POINT_STAKE); RecordsActivity.start(this, RecordTypeConstants.TYPE_POINT_STAKE);
}); });
//仅观测 //仅观测
binding.layoutDragButton.drWatchSurvey.setOnClickListener(v -> watchSurvey()); binding.layoutDragButton.drWatchSurvey.setOnClickListener(v -> watchSurvey());
@ -348,7 +294,7 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
List<LineChartData> lineChartDataList = new ArrayList<>(); List<LineChartData> lineChartDataList = new ArrayList<>();
LineChartData lineBasePointChartData = new LineChartData(); 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 greenPointColor = getColor(R.color.theme_green);
int redPointColor = getColor(R.color.color_FF1515); int redPointColor = getColor(R.color.color_FF1515);
int lightGreenPointColor = getColor(R.color.theme_green_press); 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" 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) + " " + "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); + "Z" + getString(R.string.colon) + Util.formatDouble2Double(stakingLibraryPointList.get(pointIndex).h, 6);
builder.setContent(content).setButtonConfirm(v -> { builder.setContent(content).setButtonConfirm(v -> {
targetStakePointRecord = stakingLibraryPointList.get(pointIndex); targetStakePointRecord = stakingLibraryPointList.get(pointIndex);
@ -411,47 +357,6 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
@Override @Override
protected void initData() { 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); String targetPointList = IntentUtil.stringExtra(this, KEY_POINT_LIST);
if (StringUtil.isEmpty(targetPointList)) { if (StringUtil.isEmpty(targetPointList)) {
PointDb.getInstance().rawQueryListLiveData(PointConstants.findKnownPointByJob(jobId())).observe(this, pointRecords -> { 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)); ToastUtils.showShort(getString(R.string.add_points_staking_point_first));
return; 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 { } else {
tsMeasCoordinateManager.measureCoordinate(); tsMeasCoordinateManager.measureCoordinate();
} }
@ -553,14 +458,14 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
lineChartViewBuilder.setButtonConfirmTextColor(R.color.color_E2E1DD); lineChartViewBuilder.setButtonConfirmTextColor(R.color.color_E2E1DD);
lineChartViewBuilder.setButtonConfirm(v -> { 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()); // lineChartViewBuilder.setButtonConfirm(v -> checkRtkStringLimit());
customDialog = lineChartViewBuilder.create(); customDialog = lineChartViewBuilder.create();
customDialog.show(); customDialog.show();
isControlSurvey = true; isControlSurvey = true;
} else { } 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(); clearRefreshReset();
} }
/**
* 接收 RTK 返回的数据
* @param antennaHeight
* @param blh
* @param originalBlh
* @param coordinate
* @param hdop
* @param vdop
* @param pdop
*/
@Override @Override
public void onRtkPositionReceived(double antennaHeight, Blh blh, Blh originalBlh, Coordinate coordinate, double hdop, double vdop, double pdop) { 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); super.onRtkPositionReceived(antennaHeight, blh, originalBlh, coordinate, hdop, vdop, pdop);
@ -862,7 +777,7 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
if (targetStakePointRecord == null) { if (targetStakePointRecord == null) {
if (isTirpsAddSP) { if (isTirpsAddSP) {
builder.setContent(getString(R.string.add_points_staking_point_first)).setButtonConfirm(v -> { builder.setContent(getString(R.string.add_points_staking_point_first)).setButtonConfirm(v -> {
StakingNewJobActivity.start(PointStakingActivity.this); StakingNewJobActivity.start(this);
}).create().show(); }).create().show();
isTirpsAddSP = false; isTirpsAddSP = false;
} }
@ -879,11 +794,11 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
} }
} }
if (!cachedRoadKt.isDataReady()) { // if (!cachedRoadKt.isDataReady()) {
return; // return;
} // }
PointStakingLogic.Result result = pointStakingLogic.calculate(cachedRoadKt.roadEditor(), PointStakingLogic.Result result = pointStakingLogic.calculate(null,
new PointStakingLogic.Configs(6, moveType), new PointStakingLogic.Configs(6, moveType),
new PointStakingLogic.Parameter( new PointStakingLogic.Parameter(
new MeasuredPoint(currentCoordinate.getX(), currentCoordinate.getY(), currentCoordinate.getZ(), currentCoordinate.getName()), 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) while (display_station_angle >= Math.PI * 2)
display_station_angle -= Math.PI * 2; display_station_angle -= Math.PI * 2;
double measured_angle = CoordUtil.calcAzimuth(TsConfig.getInstance().getStation(), currentCoordinate); 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.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, 6, false)); 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 { } else {
switch (PreferencesUtil.getMoveMethodTypeRTK()) { switch (PreferencesUtil.getMoveMethodTypeRTK()) {
case 0: case 0:
@ -968,12 +883,12 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
double foreBackMoveValue = moveDistance.getX(); double foreBackMoveValue = moveDistance.getX();
moveBeforeAfter = foreBackMoveValue >= 0 moveBeforeAfter = foreBackMoveValue >= 0
? TextFactory.distanceFormatDouble2String(getString(R.string.to_before), Math.abs(foreBackMoveValue), 6) ? TextFactory.distanceFormatDouble2String("向前", Math.abs(foreBackMoveValue), 6)
: TextFactory.distanceFormatDouble2String(getString(R.string.to_after), Math.abs(foreBackMoveValue), 6); : TextFactory.distanceFormatDouble2String("向后", Math.abs(foreBackMoveValue), 6);
binding.tvTopThree.setText(foreBackMoveValue >= 0 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.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));
double leftRightValue = moveDistance.getY(); double leftRightValue = moveDistance.getY();
moveLeftRight = leftRightValue >= 0 moveLeftRight = leftRightValue >= 0
@ -991,7 +906,7 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
: TextFactory.distanceFormatDouble2String(getString(R.string.to_east), targetStakePointRecord.y - currentCoordinate.getY(), 6); : TextFactory.distanceFormatDouble2String(getString(R.string.to_east), targetStakePointRecord.y - currentCoordinate.getY(), 6);
moveSouthNorth = currentCoordinate.getX() > targetStakePointRecord.x 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); : TextFactory.distanceFormatDouble2String(getString(R.string.to_north), targetStakePointRecord.x - currentCoordinate.getX(), 6);
binding.tvTopThree.setText(currentCoordinate.getY() > targetStakePointRecord.y binding.tvTopThree.setText(currentCoordinate.getY() > targetStakePointRecord.y
@ -1127,12 +1042,12 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
DeviceUtils.StationData stationData = DeviceUtils.stationData( DeviceUtils.StationData stationData = DeviceUtils.stationData(
new BasePoint(targetStakePointRecord.x, targetStakePointRecord.y, targetStakePointRecord.h), new BasePoint(targetStakePointRecord.x, targetStakePointRecord.y, targetStakePointRecord.h),
6, ((App) Utils.getApp()).angleNotNumber(),
6); 6);
DeviceInfoData deviceInfoData = DeviceUtils.collectDeviceInfo(); DeviceInfoData deviceInfoData = DeviceUtils.collectDeviceInfo();
PointStakeRecord pointStakeRecord = new PointStakeRecord(projectId, jobId, roadId, 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() : "", targetStakePointRecord.id, moveBeforeAfter != null ? moveBeforeAfter.getString() : "", moveLeftRight != null ? moveLeftRight.getString() : "", moveWestEast != null ? moveWestEast.getString() : "", moveSouthNorth != null ? moveSouthNorth.getString() : "",
cachedRoadKt.road().getName() ""
, targetStakePointRecord.name , targetStakePointRecord.name
, Util.formatDouble2StringDotAuto(targetStakePointRecord.x) , Util.formatDouble2StringDotAuto(targetStakePointRecord.x)
, Util.formatDouble2StringDotAuto(targetStakePointRecord.y) , Util.formatDouble2StringDotAuto(targetStakePointRecord.y)
@ -1169,34 +1084,34 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
*/ */
private void showTopMoveMethod() { private void showTopMoveMethod() {
binding.tvDistance.setText(getString(R.string.distance)); 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) { if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_TS) {
switch (PreferencesUtil.getMoveMethodTypeTS()) { switch (PreferencesUtil.getMoveMethodTypeTS()) {
// case 0:
// binding.tvTopThree.setText(getString(R.string.k));
// binding.tvTopFour.setText(getString(R.string.d));
// break;
case 0: case 0:
binding.tvTopThree.setText(getString(R.string.k)); binding.tvTopThree.setText("向前");
binding.tvTopFour.setText(getString(R.string.d));
break;
case 1:
binding.tvTopThree.setText(getString(R.string.to_before));
binding.tvTopFour.setText(getString(R.string.to_left)); binding.tvTopFour.setText(getString(R.string.to_left));
break; break;
case 2: case 1:
binding.tvTopThree.setText(getString(R.string.to_north)); binding.tvTopThree.setText(getString(R.string.to_north));
binding.tvTopFour.setText(getString(R.string.to_east)); binding.tvTopFour.setText(getString(R.string.to_east));
break; break;
} }
binding.topFiveSixLayout.setVisibility(View.VISIBLE); binding.topFiveSixLayout.setVisibility(View.VISIBLE);
} else { } else {
switch (PreferencesUtil.getMoveMethodTypeRTK()) { // switch (PreferencesUtil.getMoveMethodTypeRTK()) {
case 0: // case 0:
binding.tvTopThree.setText(getString(R.string.k)); // binding.tvTopThree.setText(getString(R.string.k));
binding.tvTopFour.setText(getString(R.string.d)); // binding.tvTopFour.setText(getString(R.string.d));
break; // break;
case 1: // case 1:
binding.tvTopThree.setText(getString(R.string.to_north)); binding.tvTopThree.setText(getString(R.string.to_north));
binding.tvTopFour.setText(getString(R.string.to_east)); binding.tvTopFour.setText(getString(R.string.to_east));
break; // break;
} // }
binding.topFiveSixLayout.setVisibility(View.GONE); binding.topFiveSixLayout.setVisibility(View.GONE);
} }
binding.tvTopFive.setText(getString(R.string.station_angle)); binding.tvTopFive.setText(getString(R.string.station_angle));
@ -1217,9 +1132,22 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
return IntentUtil.stringExtra(getIntent(), KEY_JOB_ID); 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) { public static void start(Context context, List<StakingPoint> stakingPointList) {
Gson gson = new Gson(); Gson gson = new Gson();
Intent intent = new Intent(context, PointStakingActivity.class); Intent intent = new Intent(context, PointStakingActivity.class);
@ -1227,19 +1155,6 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
context.startActivity(intent); 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 @Override
protected void onDestroy() { protected void onDestroy() {
super.onDestroy(); super.onDestroy();
@ -1261,4 +1176,9 @@ public class PointStakingActivity extends BaseSurveyNewActivity {
binding.baseSurveyStakingSetting.tvTiltPrimAuto.setTextColor(getColor(R.color.color_BCBCBC)); 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.hjq.shape.view.ShapeTextView;
import com.project.survey.App; import com.project.survey.App;
import com.project.survey.R; import com.project.survey.R;
import com.project.survey.constants.SPConstants;
import com.project.survey.databinding.ActivityRecordsBinding; 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.IRecordsUtils;
import com.project.survey.ui.lofting.pointlofting.record.util.RecordTypeConstants; import com.project.survey.ui.lofting.pointlofting.record.util.RecordTypeConstants;
import com.project.survey.ui.lofting.pointlofting.record.util.RecordsActivityClearUtils; 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.RecordsActivityHeaders;
import com.project.survey.ui.lofting.pointlofting.record.util.RecordsUtilsFactory; import com.project.survey.ui.lofting.pointlofting.record.util.RecordsUtilsFactory;
import com.project.survey.ui.lofting.pointlofting.record.util.RecordsViewModelKt; import com.project.survey.ui.lofting.pointlofting.record.util.RecordsViewModelKt;
import com.project.survey.util.SPUtils;
import org.polaric.colorful.ColorfulActivity; import org.polaric.colorful.ColorfulActivity;
@ -296,50 +299,50 @@ public class RecordsActivity extends ColorfulActivity {
private void updateRecyclerView() { private void updateRecyclerView() {
ThreadPoolUtil.execute(() -> { ThreadPoolUtil.execute(() -> {
UserConfig userConfig = LoadUserConfigKt.loadUserConfig(); // UserConfig userConfig = LoadUserConfigKt.loadUserConfig();
String projectId = LoadCurrentProjectIdKt.loadCurrentProjectId(true, userConfig); // String projectId = LoadCurrentProjectIdKt.loadCurrentProjectId(true, userConfig);
if (StringUtil.isEmpty(projectId)) { // if (StringUtil.isEmpty(projectId)) {
return; // return;
} // }
String jobId = LoadCurrentJobIdKt.loadCurrentJobId(projectId, true, userConfig); // String jobId = LoadCurrentJobIdKt.loadCurrentJobId(projectId, true, userConfig);
if (StringUtil.isEmpty(jobId)) { // if (StringUtil.isEmpty(jobId)) {
return; // return;
} // }
if (currentTypeFromSpinner == RecordTypeConstants.TYPE_WATER_PIPE_BACK_BREAK){ // if (currentTypeFromSpinner == RecordTypeConstants.TYPE_WATER_PIPE_BACK_BREAK){
String waterPipeId = LoadCurrentWaterPipeIdKt.loadCurrentWaterPipeId(projectId, true, userConfig); // String waterPipeId = LoadCurrentWaterPipeIdKt.loadCurrentWaterPipeId(projectId, true, userConfig);
if (StringUtil.isEmpty(waterPipeId)){ // if (StringUtil.isEmpty(waterPipeId)){
return; // return;
} // }
runOnUiThread(() -> { // runOnUiThread(() -> {
IRecordsUtils recordsUtils = recordsUtilsMap.get(currentTypeFromSpinner); // IRecordsUtils recordsUtils = recordsUtilsMap.get(currentTypeFromSpinner);
if (recordsUtils != null) { // if (recordsUtils != null) {
recordsUtils.update(binding.recyclerviewRecords, isSortByTimeAcs, // recordsUtils.update(binding.recyclerviewRecords, isSortByTimeAcs,
userConfig, // userConfig,
projectId, jobId, waterPipeId, // projectId, jobId, waterPipeId,
filterUtils.filterParameter()); // filterUtils.filterParameter());
//
} // }
}); // });
}else { // }else {
String roadId = LoadCurrentRoadIdKt.loadCurrentRoadId(projectId, true, userConfig); // String roadId = LoadCurrentRoadIdKt.loadCurrentRoadId(projectId, true, userConfig);
if (StringUtil.isEmpty(roadId)) { // if (StringUtil.isEmpty(roadId)) {
return; // return;
} // }
runOnUiThread(() -> { runOnUiThread(() -> {
IRecordsUtils recordsUtils = recordsUtilsMap.get(currentTypeFromSpinner); IRecordsUtils recordsUtils = recordsUtilsMap.get(currentTypeFromSpinner);
if (recordsUtils != null) { if (recordsUtils != null) {
recordsUtils.update(binding.recyclerviewRecords, isSortByTimeAcs, recordsUtils.update(binding.recyclerviewRecords, isSortByTimeAcs,
userConfig, null,
projectId, jobId, roadId, SPUtils.INSTANCE.getString(SPConstants.PROJECT_ID), "", "",
filterUtils.filterParameter()); filterUtils.filterParameter());
if (RecordTypeConstants.TYPE_MEASURING_TAPE == currentTypeFromSpinner) { // if (RecordTypeConstants.TYPE_MEASURING_TAPE == currentTypeFromSpinner) {
//如果选中的是进尺,尝试加载数据 // //如果选中的是进尺,尝试加载数据
holderInActivity.getViewModel().loadMeasuringTapeRecord(userConfig, roadId); // holderInActivity.getViewModel().loadMeasuringTapeRecord(userConfig, roadId);
} // }
} }
}); });
} // }
}); });

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

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