Merge branch 'robo_6.1.0_master' into 'master'
Robo 6.1.0 master See merge request SCA/L4HA/AndroidApp/MoGoEagleEye!825
2
.gitignore
vendored
@@ -7,4 +7,4 @@
|
||||
/build
|
||||
/captures
|
||||
.externalNativeBuild
|
||||
.cxx
|
||||
.cxx
|
||||
27
.gitlab-ci.yml
Normal file
@@ -0,0 +1,27 @@
|
||||
stages:
|
||||
- analyze
|
||||
|
||||
inspect java and kotlin codes:
|
||||
tags:
|
||||
- apk
|
||||
- android
|
||||
stage: analyze
|
||||
script:
|
||||
- echo "$CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA $CI_COMMIT_BRANCH $CI_COMMIT_DESCRIPTION $CI_COMMIT_TIMESTAMP"
|
||||
- echo "${CI_JOB_STAGE}_reports_${CI_PROJECT_NAME}_${CI_BUILD_REF_NAME}"
|
||||
- ./gradlew runCodeInspect
|
||||
before_script:
|
||||
- source change_java_version
|
||||
artifacts:
|
||||
name: "${CI_JOB_STAGE}_reports_${CI_PROJECT_NAME}_$CI_COMMIT_REF_SLUG"
|
||||
when: always
|
||||
expire_in: 1 days
|
||||
paths:
|
||||
- "build/reports/*"
|
||||
only:
|
||||
- $CI_COMMIT_BRANCH
|
||||
- pushes
|
||||
- schedules
|
||||
except:
|
||||
- master
|
||||
allow_failure: true
|
||||
@@ -379,6 +379,11 @@ public class OrderModel {
|
||||
};
|
||||
|
||||
private final OchAdasStartFailureCallback mAdasStartFailureListener = new OchAdasStartFailureCallback() {
|
||||
@Override
|
||||
public void brakeStatusChanged(boolean isBrakeAvailable) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) {
|
||||
BusAnalyticsManager.INSTANCE.triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage);
|
||||
|
||||
@@ -10,7 +10,6 @@ import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
||||
import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.och.bus.constant.BusConst;
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.mogo.och.bus.fragment;
|
||||
import static com.mogo.och.bus.constant.BusConst.TIMER_START_AUTOPILOT_INTERVAL;
|
||||
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -27,7 +28,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager;
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView;
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView;
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView;
|
||||
@@ -49,8 +49,6 @@ import com.mogo.och.common.module.utils.SoundPoolHelper;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import bag_manager.BagManagerOuterClass;
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
import record_cache.RecordPanelOuterClass;
|
||||
@@ -137,21 +135,22 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
|
||||
mSwitchMapModeLayout.setOnClickListener(new OnPreventFastClickListener() {
|
||||
@Override
|
||||
public void onClickImpl(View v) {
|
||||
|
||||
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController();
|
||||
if (controller != null) {
|
||||
//切换地图的远近视图
|
||||
if (controller.getCurrentMapVisualAngle().isLongSight()) {
|
||||
//Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(true);
|
||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
|
||||
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
|
||||
//Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(false);
|
||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long);
|
||||
} else {
|
||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
|
||||
if(mapBizView != null){
|
||||
IMogoMapUIController uiController = mapBizView.getUI();
|
||||
if(uiController != null){
|
||||
//切换地图的远近视图
|
||||
if (uiController.getCurrentMapVisualAngle().isLongSight()) {
|
||||
uiController.setLockMode(true);
|
||||
uiController.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
|
||||
} else if (uiController.getCurrentMapVisualAngle().isMediumSight()) {
|
||||
uiController.setLockMode(false);
|
||||
uiController.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long);
|
||||
} else {
|
||||
uiController.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -199,7 +198,6 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
|
||||
|
||||
mSettingBtn = findViewById(R.id.module_mogo_och_setting_layout);
|
||||
mSettingBtn.setOnClickListener(v -> {
|
||||
// TODO: 2021/12/9
|
||||
CallerHmiManager.INSTANCE.showToolsView();
|
||||
});
|
||||
|
||||
@@ -256,14 +254,16 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
|
||||
protected abstract void onArriveStation();
|
||||
|
||||
private void updateSwitchMapIcon() {
|
||||
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController();
|
||||
if (controller != null) {
|
||||
if (controller.getCurrentMapVisualAngle().isLongSight()) {
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long);
|
||||
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
|
||||
} else {
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
|
||||
if(mapBizView != null){
|
||||
IMogoMapUIController uiController = mapBizView.getUI();
|
||||
if(uiController != null){
|
||||
if (uiController.getCurrentMapVisualAngle().isLongSight()) {
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long);
|
||||
} else if (uiController.getCurrentMapVisualAngle().isMediumSight()) {
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
|
||||
} else {
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -330,7 +330,7 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
|
||||
slidePanelView.setText(text);
|
||||
slidePanelView.setVisibility(View.VISIBLE);
|
||||
});
|
||||
setArrivedClikable(false);
|
||||
setArrivedClickable(false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -338,7 +338,7 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
|
||||
*
|
||||
* @param isClickable
|
||||
*/
|
||||
public void setArrivedClikable(boolean isClickable) {
|
||||
public void setArrivedClickable(boolean isClickable) {
|
||||
getActivity().runOnUiThread(() -> {
|
||||
tvArrived.setEnabled(isClickable);
|
||||
if (isClickable) {
|
||||
@@ -397,7 +397,7 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
|
||||
ctvAutopilotStatus.setBackground(getContext().getDrawable(R.drawable.bus_autopilot_2_status_bg));
|
||||
// ctvAutopilotStatus.setSelected(true);
|
||||
} else if (IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING
|
||||
== autopilotStatus){
|
||||
== autopilotStatus) {
|
||||
ctvAutopilotStatusTv.setText(R.string.bus_pingxing_driver);
|
||||
ctvAutopilotStatus.setClickable(false);
|
||||
ctvAutopilotStatus.setBackground(getContext().getDrawable(R.drawable.pingxingjiashi));
|
||||
@@ -421,12 +421,7 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
|
||||
ctvAutopilotStatus.setClickable(false);
|
||||
// ctvAutopilotStatus.setSelected(false);
|
||||
}
|
||||
UiThreadHandler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
setAutopilotBtnStatus(autopilotStatus);
|
||||
}
|
||||
}, 1000);
|
||||
UiThreadHandler.postDelayed(() -> setAutopilotBtnStatus(autopilotStatus), 1000);
|
||||
}
|
||||
|
||||
private void changeAutopilotBtnView(int autopilotStatus, boolean isAnimateRunning) {
|
||||
@@ -514,13 +509,10 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
|
||||
|
||||
private void startingAutoApilotCountDown() {
|
||||
//10s 若自动驾驶没有开启,则结束动画
|
||||
UiThreadHandler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() { //未启动成功做处理
|
||||
if (isAnimateRunning) {// 只判断动画是否在进行,根据自动驾驶当前状态去设置自动驾驶状态
|
||||
stopAutopilotAnimation();
|
||||
updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState());
|
||||
}
|
||||
UiThreadHandler.postDelayed(() -> { //未启动成功做处理
|
||||
if (isAnimateRunning) {// 只判断动画是否在进行,根据自动驾驶当前状态去设置自动驾驶状态
|
||||
stopAutopilotAnimation();
|
||||
updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState());
|
||||
}
|
||||
}, TIMER_START_AUTOPILOT_INTERVAL);
|
||||
|
||||
@@ -540,8 +532,6 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
|
||||
|
||||
/**
|
||||
* 迈速表实时更新
|
||||
*
|
||||
* @param newSpeed
|
||||
*/
|
||||
public void updateSpeedView(float newSpeed) {
|
||||
int speed = (int) (Math.abs(newSpeed) * 3.6F); // 倒车时工控机反馈定位信息中speed为负值
|
||||
@@ -553,7 +543,9 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
smallMapView.onDestroy();
|
||||
if(smallMapView != null){
|
||||
smallMapView.onDestroy();
|
||||
}
|
||||
MogoMapListenerHandler.Companion.getMogoMapListenerHandler().unregisterHostMapListener(TAG);
|
||||
}
|
||||
|
||||
@@ -592,6 +584,7 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
|
||||
private TextView trajMd5DPQPTV;
|
||||
private TextView stopMd5DPQPTV;
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
public void showHideTestBar() {
|
||||
if (busTestBar == null) {
|
||||
busTestBar = findViewById(R.id.module_mogo_och_bus_test_bar);
|
||||
@@ -617,6 +610,7 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
public void updateBusTestBarInfo() {
|
||||
if (busTestBar != null && busTestBar.getVisibility() == View.VISIBLE) {
|
||||
BusRoutesResult routesResult = OrderModel.getInstance().getBusRoutesResult();
|
||||
@@ -628,7 +622,5 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
|
||||
stopMd5DPQPTV.setText("SMd5DPQP:" + (routesResult == null ? "" : routesResult.txtFileMd5DPQP));
|
||||
}
|
||||
}
|
||||
/**
|
||||
* END
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
@@ -1,20 +1,23 @@
|
||||
package com.mogo.och.bus.fragment;
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS;
|
||||
import static com.mogo.map.MogoMap.DEFAULT;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import androidx.constraintlayout.widget.Group;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.alibaba.android.arouter.launcher.ARouter;
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
|
||||
import com.mogo.eagle.core.data.map.CenterLine;
|
||||
import com.mogo.eagle.core.data.temp.EventLogout;
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
|
||||
@@ -25,7 +28,6 @@ import com.mogo.eagle.core.utilcode.util.ToastUtils;
|
||||
import com.mogo.map.overlay.IMoGoOverlayManager;
|
||||
import com.mogo.map.overlay.core.Level;
|
||||
import com.mogo.map.overlay.point.Point;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
import com.mogo.och.bus.R;
|
||||
import com.mogo.och.bus.bean.BusStationBean;
|
||||
import com.mogo.och.bus.constant.BusConst;
|
||||
@@ -42,8 +44,10 @@ import com.mogo.och.common.module.utils.QRUtilsKt;
|
||||
import com.mogo.och.common.module.wigets.BindQRCodeDialog;
|
||||
import com.mogo.och.common.module.wigets.MarqueeTextView;
|
||||
import com.mogo.och.common.module.wigets.OCHCommitDialog;
|
||||
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils;
|
||||
@@ -81,10 +85,11 @@ public class BusFragment extends BaseBusTabFragment<BusFragment, BusPresenter>
|
||||
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
loginService = (LoginService) ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation();
|
||||
if(loginService!=null){
|
||||
loginService.registerFragment(this, getPresenter(),new LoginBusImpl());
|
||||
if (loginService != null) {
|
||||
loginService.registerFragment(this, getPresenter(), new LoginBusImpl());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
@@ -113,12 +118,9 @@ public class BusFragment extends BaseBusTabFragment<BusFragment, BusPresenter>
|
||||
|
||||
mSwitchLine.setOnClickListener(this);
|
||||
|
||||
mLineName.setOnLongClickListener(new View.OnLongClickListener() {
|
||||
@Override
|
||||
public boolean onLongClick(View v) {
|
||||
showHideTestBar();
|
||||
return false;
|
||||
}
|
||||
mLineName.setOnLongClickListener(v -> {
|
||||
showHideTestBar();
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -178,7 +180,7 @@ public class BusFragment extends BaseBusTabFragment<BusFragment, BusPresenter>
|
||||
}
|
||||
|
||||
public void updateLineEmptyUI(){
|
||||
setArrivedClikable(false);
|
||||
setArrivedClickable(false);
|
||||
showOrHideSwitchLineBtn(true);
|
||||
hideStationsPanel();
|
||||
hideSlidePanel();
|
||||
@@ -486,30 +488,19 @@ public class BusFragment extends BaseBusTabFragment<BusFragment, BusPresenter>
|
||||
.anchor(0.5f, 0.5f)
|
||||
.set3DMode(true)
|
||||
.isUseGps(true)
|
||||
.controlAngle(true)
|
||||
.controlAngle(false)
|
||||
.icon3DRes(resourceId)
|
||||
.latitude(lat)
|
||||
.longitude(longi);
|
||||
IMogoMapUIController mapUIController = CallerMapUIServiceManager.INSTANCE.getMapUIController();
|
||||
if (mapUIController != null) {
|
||||
CenterLine centerLine = mapUIController.getCenterLineInfo(
|
||||
longi,lat,-1);
|
||||
if (null != centerLine) { // 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致 地图未初始化会返回空
|
||||
Double angle = centerLine.getAngle();
|
||||
if (angle != null) {
|
||||
builder.rotate(angle.floatValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager();
|
||||
if (overlayManager != null) {
|
||||
overlayManager.showOrUpdatePoint(builder.build());
|
||||
overlayManager.showOrUpdatePoint(builder.build(), DEFAULT);
|
||||
}
|
||||
};
|
||||
|
||||
OCHThreadPoolManager.getsInstance().execute(setMapMarkerRunnable);
|
||||
|
||||
}else {
|
||||
} else {
|
||||
Runnable removeMapMarkerRunnable = () -> {
|
||||
CallerLogger.d(M_BUS + "RemoveMapMaker="+Thread.currentThread().getName(),
|
||||
uuid+"=latitude="+lat+",longitude="+longi);
|
||||
|
||||
@@ -144,7 +144,7 @@ public class BusPresenter extends Presenter<BusFragment>
|
||||
public void hideSlidePanel() {
|
||||
if (mView != null) {
|
||||
mView.hideSlidePanel();
|
||||
mView.setArrivedClikable(true);
|
||||
mView.setArrivedClickable(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
<com.mogo.eagle.core.function.view.MapBizView
|
||||
android:id="@+id/mapBizView"
|
||||
app:isWeatherEnable="false"
|
||||
app:locationIcon3DRes="@raw/xiaoba"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
|
||||
@@ -4,9 +4,9 @@ import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.net.ConnectivityManager
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import com.amap.api.maps.model.LatLng
|
||||
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager
|
||||
import com.mogo.commons.debug.DebugConfig
|
||||
import com.mogo.commons.module.intent.IMogoIntentListener
|
||||
import com.mogo.commons.module.intent.IntentManager
|
||||
import com.mogo.commons.module.status.IMogoStatusChangedListener
|
||||
@@ -31,7 +31,6 @@ import com.mogo.eagle.core.network.utils.GsonUtil
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils.isPassenger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P
|
||||
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
@@ -42,11 +41,7 @@ import com.mogo.och.bus.passenger.bean.BusPassengerOperationStatusResponse
|
||||
import com.mogo.och.bus.passenger.bean.BusPassengerRoutesResponse
|
||||
import com.mogo.och.bus.passenger.bean.BusPassengerRoutesResult
|
||||
import com.mogo.och.bus.passenger.bean.BusPassengerStation
|
||||
import com.mogo.och.bus.passenger.callback.IBusPassegerDriverStatusCallback
|
||||
import com.mogo.och.bus.passenger.callback.IBusPassengerADASStatusCallback
|
||||
import com.mogo.och.bus.passenger.callback.IBusPassengerAutopilotPlanningCallback
|
||||
import com.mogo.och.bus.passenger.callback.IBusPassengerControllerStatusCallback
|
||||
import com.mogo.och.bus.passenger.callback.IBusPassengerRouteLineInfoCallback
|
||||
import com.mogo.och.bus.passenger.callback.*
|
||||
import com.mogo.och.bus.passenger.constant.BusPassengerConst
|
||||
import com.mogo.och.bus.passenger.network.BusPassengerModelLoopManager
|
||||
import com.mogo.och.bus.passenger.network.BusPassengerServiceManager
|
||||
@@ -82,7 +77,7 @@ import java.util.concurrent.ConcurrentHashMap
|
||||
* Created on 2022/3/31
|
||||
*/
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
object BusPassengerModel{
|
||||
object BusPassengerModel {
|
||||
|
||||
private val TAG = BusPassengerModel::class.java.simpleName
|
||||
private const val MSG_QUERY_BUS_P_STATION = 1001
|
||||
@@ -105,7 +100,7 @@ object BusPassengerModel{
|
||||
var mStations: MutableList<BusPassengerStation> = ArrayList()
|
||||
private var mNextStationIndex = 0 // 要到达站的index
|
||||
private val mTwoStationsRouts: MutableList<MogoLocation> = ArrayList()
|
||||
private val handler = Handler(Handler.Callback { msg ->
|
||||
private val handler = Handler(Looper.getMainLooper(), Handler.Callback { msg ->
|
||||
if (msg.what == MSG_QUERY_BUS_P_STATION) {
|
||||
queryDriverOperationStatus()
|
||||
return@Callback true
|
||||
@@ -113,10 +108,12 @@ object BusPassengerModel{
|
||||
false
|
||||
})
|
||||
|
||||
@Volatile
|
||||
private var isGoingToNextStation = false
|
||||
|
||||
fun init(context: Context) {
|
||||
mContext = context.applicationContext
|
||||
initListeners()
|
||||
// TODO: 2022/3/31
|
||||
queryDriverOperationStatus()
|
||||
startOrStopOrderLoop(true)
|
||||
}
|
||||
@@ -147,8 +144,8 @@ object BusPassengerModel{
|
||||
"queryDriverOperationStatus = %s",
|
||||
data.data.plateNumber
|
||||
)
|
||||
mDriverStatusCallback!!.changeOperationStatus(data.data.driverStatus == 1)
|
||||
mDriverStatusCallback!!.updatePlateNumber(data.data.plateNumber)
|
||||
mDriverStatusCallback?.changeOperationStatus(data.data.driverStatus == 1)
|
||||
mDriverStatusCallback?.updatePlateNumber(data.data.plateNumber)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -179,9 +176,7 @@ object BusPassengerModel{
|
||||
mNextStationIndex = 0
|
||||
}
|
||||
cleanStation("queryDriverSiteByCoordinate")
|
||||
if (mRouteLineInfoCallback != null) {
|
||||
mRouteLineInfoCallback!!.showNoTaskView()
|
||||
}
|
||||
mRouteLineInfoCallback?.showNoTaskView()
|
||||
mRoutePoints.clear()
|
||||
return
|
||||
}
|
||||
@@ -216,9 +211,12 @@ object BusPassengerModel{
|
||||
|
||||
private fun updatePassengerRouteInfo(result: BusPassengerRoutesResult) {
|
||||
if (mRouteLineInfoCallback != null) {
|
||||
Logger.d(M_BUS_P + TAG, "order = BusPassengerRoutesResult= " +GsonUtil.jsonFromObject(result))
|
||||
mRouteLineInfoCallback!!.updateLineInfo(result.name, result.runningDur)
|
||||
mRouteLineInfoCallback!!.hideNoTaskView()
|
||||
d(
|
||||
M_BUS_P + TAG,
|
||||
"order = BusPassengerRoutesResult= " + GsonUtil.jsonFromObject(result)
|
||||
)
|
||||
mRouteLineInfoCallback?.updateLineInfo(result.name, result.runningDur)
|
||||
mRouteLineInfoCallback?.hideNoTaskView()
|
||||
if (result.sites != null) {
|
||||
val stations = result.sites
|
||||
mStations.clear()
|
||||
@@ -226,8 +224,9 @@ object BusPassengerModel{
|
||||
for (i in stations.indices) {
|
||||
val station = stations[i]
|
||||
if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && station.isLeaving && i + 1 < stations.size) { //离站
|
||||
Logger.d(M_BUS_P + TAG, "order = station= leave")
|
||||
mRouteLineInfoCallback!!.updateStationsInfo(stations, i + 1, false)
|
||||
d(M_BUS_P + TAG, "order = station= leave")
|
||||
isGoingToNextStation = true
|
||||
mRouteLineInfoCallback?.updateStationsInfo(stations, i + 1, false)
|
||||
if (mNextStationIndex != i + 1) {
|
||||
mTwoStationsRouts.clear()
|
||||
}
|
||||
@@ -241,11 +240,14 @@ object BusPassengerModel{
|
||||
if (i == stations.size - 1) {
|
||||
cleanStation("updatePassengerRouteInfo最后一个站点")
|
||||
}
|
||||
|
||||
isGoingToNextStation = false
|
||||
|
||||
suspendCalculate()
|
||||
|
||||
Logger.d(M_BUS_P + TAG, "order = station= arrive")
|
||||
d(M_BUS_P + TAG, "order = station= arrive")
|
||||
|
||||
mRouteLineInfoCallback!!.updateStationsInfo(stations, i, true)
|
||||
mRouteLineInfoCallback?.updateStationsInfo(stations, i, true)
|
||||
clearAutopilotControlParameters()
|
||||
return
|
||||
}
|
||||
@@ -379,17 +381,17 @@ object BusPassengerModel{
|
||||
override fun distanceCallback(distance: Float) {
|
||||
val lastTime: Double = distance / BusPassengerConst.BUS_AVERAGE_SPEED * 3.6 //秒
|
||||
d(M_BUS_P + TAG, "轨迹排查==lastSumLength = $distance")
|
||||
for (site in routesResult!!.sites) {
|
||||
if (site.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !site.isLeaving) {
|
||||
return
|
||||
routesResult?.let {
|
||||
for (site in it.sites) {
|
||||
if (site.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !site.isLeaving) {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
if (mAutopilotPlanningCallback != null) {
|
||||
mAutopilotPlanningCallback!!.routePlanningToNextStationChanged(
|
||||
distance.toLong(),
|
||||
lastTime.toLong()
|
||||
)
|
||||
}
|
||||
mAutopilotPlanningCallback?.routePlanningToNextStationChanged(
|
||||
distance.toLong(),
|
||||
lastTime.toLong()
|
||||
)
|
||||
}
|
||||
}
|
||||
private val trajectoryListener: ITrajectoryListener =
|
||||
@@ -400,19 +402,19 @@ object BusPassengerModel{
|
||||
location: MogoLocation
|
||||
) {
|
||||
if (mAutopilotPlanningCallback != null) {
|
||||
val routeArriviedTemp: MutableList<LatLng> = ArrayList()
|
||||
val routeArrivedTemp: MutableList<LatLng> = ArrayList()
|
||||
val routeArrivingTemp: MutableList<LatLng> = ArrayList()
|
||||
var temp: LatLng
|
||||
for (mogoLocation in routeArrivied) {
|
||||
temp = LatLng(mogoLocation.latitude, mogoLocation.longitude)
|
||||
routeArriviedTemp.add(temp)
|
||||
routeArrivedTemp.add(temp)
|
||||
}
|
||||
for (mogoLocation in routeArriving) {
|
||||
temp = LatLng(mogoLocation.latitude, mogoLocation.longitude)
|
||||
routeArrivingTemp.add(temp)
|
||||
}
|
||||
mAutopilotPlanningCallback!!.routeResult(
|
||||
routeArriviedTemp,
|
||||
mAutopilotPlanningCallback?.routeResult(
|
||||
routeArrivedTemp,
|
||||
routeArrivingTemp,
|
||||
location
|
||||
)
|
||||
@@ -421,16 +423,14 @@ object BusPassengerModel{
|
||||
}
|
||||
private val mReceivedMsgListener: IReceivedMsgListener = object : IReceivedMsgListener {
|
||||
override fun onReceivedServerSn(sn: String?) {
|
||||
Logger.d(M_BUS_P + TAG, "onReceivedServerSn = $sn")
|
||||
if (mDriverStatusCallback != null) {
|
||||
mDriverStatusCallback!!.updateDriverSn(sn)
|
||||
}
|
||||
d(M_BUS_P + TAG, "onReceivedServerSn = $sn")
|
||||
mDriverStatusCallback?.updateDriverSn(sn)
|
||||
}
|
||||
|
||||
override fun onReceivedMsg(type: Int, byteArray: ByteArray) {
|
||||
if (OchCommonConst.BUSINESS_STRING == type) {
|
||||
val baseMsg = GsonUtils.fromJson(String(byteArray), BaseDPMsg::class.java)
|
||||
Logger.d(
|
||||
d(
|
||||
M_BUS_P + TAG,
|
||||
"onReceivedMsg = " + GsonUtils.toJson(baseMsg)
|
||||
)
|
||||
@@ -486,18 +486,29 @@ object BusPassengerModel{
|
||||
private var arriveAtEnd = false //乘客app专用字段
|
||||
override fun onAutopilotStatusResponse(state: Int) {
|
||||
if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) {
|
||||
if (mADASStatusCallback != null) mADASStatusCallback!!.onAutopilotRunning()
|
||||
} else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) {
|
||||
mTwoStationsRouts.clear()
|
||||
if (mADASStatusCallback != null) mADASStatusCallback!!.onAutopilotEnable()
|
||||
} else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) {
|
||||
mTwoStationsRouts.clear()
|
||||
if (mADASStatusCallback != null) mADASStatusCallback!!.onAutopilotDisable()
|
||||
} else if (state == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING) {
|
||||
mTwoStationsRouts.clear()
|
||||
if (mADASStatusCallback != null) mADASStatusCallback!!.onAutopilotRunning()
|
||||
mADASStatusCallback?.onAutopilotRunning()
|
||||
} else {
|
||||
if (FunctionBuildConfig.isDemoMode &&
|
||||
mNextStationIndex >= 0 && mNextStationIndex <= mStations.size - 1
|
||||
&& isGoingToNextStation
|
||||
) {
|
||||
d(M_BUS_P + TAG, "FunctionBuildConfig.isDemoMode is true")
|
||||
return
|
||||
}
|
||||
|
||||
if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) {
|
||||
mTwoStationsRouts.clear()
|
||||
mADASStatusCallback?.onAutopilotEnable()
|
||||
} else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) {
|
||||
mTwoStationsRouts.clear()
|
||||
mADASStatusCallback?.onAutopilotDisable()
|
||||
} else if (state == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING) {
|
||||
mTwoStationsRouts.clear()
|
||||
mADASStatusCallback?.onAutopilotRunning()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAutopilotArriveAtStation(arrivalNotification: ArrivalNotification?) {
|
||||
if (FunctionBuildConfig.isDemoMode
|
||||
&& isPassenger(FunctionBuildConfig.appIdentityMode)
|
||||
@@ -505,13 +516,10 @@ object BusPassengerModel{
|
||||
arriveAtEnd = true
|
||||
}
|
||||
|
||||
// TODO: 2022/3/31
|
||||
if (DebugConfig.isDebug()) {
|
||||
// ToastUtils.showShort("到达目的地");
|
||||
}
|
||||
if (mADASStatusCallback != null) {
|
||||
mADASStatusCallback!!.onAutopilotArriveEnd()
|
||||
}
|
||||
// if (DebugConfig.isDebug()) {
|
||||
// ToastUtils.showShort("到达目的地");
|
||||
// }
|
||||
mADASStatusCallback?.onAutopilotArriveEnd()
|
||||
}
|
||||
|
||||
override fun onAutopilotStatusRespByQuery(status: SystemStatusInfo.StatusInfo) {}
|
||||
@@ -532,7 +540,8 @@ object BusPassengerModel{
|
||||
|
||||
fun updateRoutePoints(routePoints: List<MessagePad.Location>) {
|
||||
mRoutePoints.clear()
|
||||
val latLngModels: List<MogoLocation> = coordinateConverterWgsToGcjLocations(mContext, routePoints)
|
||||
val latLngModels: List<MogoLocation> =
|
||||
coordinateConverterWgsToGcjLocations(mContext, routePoints)
|
||||
mRoutePoints.addAll(latLngModels)
|
||||
calculateTwoStationsRoute()
|
||||
}
|
||||
@@ -573,9 +582,7 @@ object BusPassengerModel{
|
||||
val sumLength = calculateRouteSumLength(mTwoStationsRouts)
|
||||
SharedPrefsMgr.getInstance(mContext!!)
|
||||
.putInt(BusPassengerConst.BUS_SP_KEY_ORDER_SUM_DIS, sumLength.toInt())
|
||||
if (mAutopilotPlanningCallback != null) {
|
||||
mAutopilotPlanningCallback!!.updateTotalDistance()
|
||||
}
|
||||
mAutopilotPlanningCallback?.updateTotalDistance()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -603,7 +610,7 @@ object BusPassengerModel{
|
||||
setStationPoint(startStation, endStation, lineId.toLong())
|
||||
}
|
||||
|
||||
fun cleanStation(type:String) {
|
||||
fun cleanStation(type: String) {
|
||||
d(M_BUS_P + TAG, "清理站点 $type")
|
||||
setStationPoint(null, null, -1L)
|
||||
}
|
||||
|
||||
@@ -152,8 +152,8 @@ public class BaseBusPassengerPresenter extends Presenter<BusPassengerRouteFragme
|
||||
}
|
||||
|
||||
@Override
|
||||
public void routeResult(List<LatLng> routeArrivied,List<LatLng> routeArriving,MogoLocation location) {
|
||||
runOnUIThread(() ->mView.routeResult(routeArrivied,routeArriving,location));
|
||||
public void routeResult(List<LatLng> routeArrived,List<LatLng> routeArriving,MogoLocation location) {
|
||||
runOnUIThread(() ->mView.routeResult(routeArrived,routeArriving,location));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -12,7 +12,6 @@ import kotlinx.android.synthetic.jinlvvan.p_bus_view_blue_tooth.view.*
|
||||
/**
|
||||
* 魔戒蓝牙控件
|
||||
* 放置于StatusBar右侧位置
|
||||
* todo arrow
|
||||
*/
|
||||
class BusPBlueToothView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
|
||||
@@ -4,7 +4,6 @@ import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.MotionEvent
|
||||
import android.view.View
|
||||
import android.widget.RelativeLayout
|
||||
import com.amap.api.maps.AMap
|
||||
@@ -56,7 +55,7 @@ class BusPassengerMapDirectionView @JvmOverloads constructor(
|
||||
private var mArrivedRes: BitmapDescriptor? = null
|
||||
private var mUnArrivedRes: BitmapDescriptor? = null
|
||||
|
||||
private val routeArrivied: MutableList<LatLng> = ArrayList()
|
||||
private val routeArrived: MutableList<LatLng> = ArrayList()
|
||||
private val routeArriving: MutableList<LatLng> = ArrayList()
|
||||
private var location: MogoLocation? = null
|
||||
|
||||
@@ -165,7 +164,7 @@ class BusPassengerMapDirectionView @JvmOverloads constructor(
|
||||
try {
|
||||
//圈定地图显示范围
|
||||
val boundsBuilder = LatLngBounds.Builder()
|
||||
routeArrivied.forEach {
|
||||
routeArrived.forEach {
|
||||
boundsBuilder.include(it)
|
||||
}
|
||||
routeArriving.forEach {
|
||||
@@ -190,26 +189,28 @@ class BusPassengerMapDirectionView @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
override fun drawablePolyline() {
|
||||
if (routeArrivied.isEmpty() && routeArriving.isEmpty()) {
|
||||
if (routeArrived.isEmpty() && routeArriving.isEmpty()) {
|
||||
d(SceneConstant.M_TAXI + TAG, "没有点")
|
||||
return
|
||||
}
|
||||
texIndexList.clear()
|
||||
val allPoints = ArrayList(routeArrivied)
|
||||
for (i in routeArrivied.indices) {
|
||||
if (routeArrivied.size > 1 && i < routeArrivied.size - 1) {
|
||||
val allPoints = ArrayList(routeArrived)
|
||||
for (i in routeArrived.indices) {
|
||||
if (routeArrived.size > 1 && i < routeArrived.size - 1) {
|
||||
texIndexList.add(0)
|
||||
}
|
||||
}
|
||||
texIndexList.add(0)
|
||||
allPoints.add(LatLng(location!!.latitude, location!!.longitude))
|
||||
location?.let {
|
||||
allPoints.add(LatLng(it.latitude, it.longitude))
|
||||
}
|
||||
allPoints.addAll(routeArriving)
|
||||
for (ignored in routeArrivied) {
|
||||
for (ignored in routeArrived) {
|
||||
texIndexList.add(1)
|
||||
}
|
||||
if (mPolyline != null) {
|
||||
mPolyline!!.points = allPoints
|
||||
mPolyline!!.options.customTextureIndex = texIndexList
|
||||
mPolyline?.let {
|
||||
it.points = allPoints
|
||||
it.options.customTextureIndex = texIndexList
|
||||
return
|
||||
}
|
||||
if(textureList.isEmpty()) {
|
||||
@@ -231,10 +232,8 @@ class BusPassengerMapDirectionView @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
override fun clearPolyline() {
|
||||
if (mPolyline != null) {
|
||||
mPolyline!!.remove()
|
||||
mPolyline = null
|
||||
}
|
||||
mPolyline?.remove()
|
||||
mPolyline = null
|
||||
}
|
||||
|
||||
override fun setLineMarker() {}
|
||||
@@ -242,7 +241,7 @@ class BusPassengerMapDirectionView @JvmOverloads constructor(
|
||||
fun clearCoordinatesLatLng() {
|
||||
textureList.clear()
|
||||
texIndexList.clear()
|
||||
routeArrivied.clear()
|
||||
routeArrived.clear()
|
||||
routeArriving.clear()
|
||||
mLineStationLatLng.clear()
|
||||
d(M_BUS_P + TAG, " mCoordinatesLatLng.clear ")
|
||||
@@ -265,14 +264,14 @@ class BusPassengerMapDirectionView @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
fun setCoordinatesLatLng(
|
||||
routeArrivied: List<LatLng>?,
|
||||
routeArriving: List<LatLng>?,
|
||||
routeArrived: List<LatLng>,
|
||||
routeArriving: List<LatLng>,
|
||||
location: MogoLocation?
|
||||
) {
|
||||
this.routeArrivied.clear()
|
||||
this.routeArrivied.addAll(routeArrivied!!)
|
||||
this.routeArrived.clear()
|
||||
this.routeArrived.addAll(routeArrived)
|
||||
this.routeArriving.clear()
|
||||
this.routeArriving.addAll(routeArriving!!)
|
||||
this.routeArriving.addAll(routeArriving)
|
||||
this.location = location
|
||||
}
|
||||
|
||||
|
||||
@@ -240,9 +240,9 @@ public class BusPassengerRouteFragment extends
|
||||
}
|
||||
}
|
||||
|
||||
public void routeResult(List<LatLng> routeArrivied,List<LatLng> routeArriving,MogoLocation location) {
|
||||
if (routeArrivied.size() > 0||routeArriving.size()>0) {
|
||||
drawablePolyline(routeArrivied,routeArriving,location);
|
||||
public void routeResult(List<LatLng> routeArrived,List<LatLng> routeArriving,MogoLocation location) {
|
||||
if (routeArrived.size() > 0||routeArriving.size()>0) {
|
||||
drawablePolyline(routeArrived,routeArriving,location);
|
||||
} else {
|
||||
clearMapView();
|
||||
}
|
||||
@@ -250,12 +250,10 @@ public class BusPassengerRouteFragment extends
|
||||
|
||||
/**
|
||||
* 绘制
|
||||
*
|
||||
* @param coordinates
|
||||
*/
|
||||
private void drawablePolyline(List<LatLng> routeArrivied,List<LatLng> routeArriving,MogoLocation location) {
|
||||
private void drawablePolyline(List<LatLng> routeArrived,List<LatLng> routeArriving,MogoLocation location) {
|
||||
if (mMapDirectionView != null) {
|
||||
mMapDirectionView.setCoordinatesLatLng(routeArrivied,routeArriving,location);
|
||||
mMapDirectionView.setCoordinatesLatLng(routeArrived,routeArriving,location);
|
||||
UiThreadHandler.post(() -> mMapDirectionView.drawablePolyline());
|
||||
}
|
||||
}
|
||||
@@ -453,8 +451,6 @@ public class BusPassengerRouteFragment extends
|
||||
public void AutopilotStatusChanged(int status) {
|
||||
if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == status) {
|
||||
mAutopilotIv.setImageResource(R.drawable.auto_open);
|
||||
} else if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE == status){
|
||||
mAutopilotIv.setImageResource(R.drawable.auto_close);
|
||||
} else {
|
||||
mAutopilotIv.setImageResource(R.drawable.auto_close);
|
||||
}
|
||||
|
||||
@@ -1,19 +1,13 @@
|
||||
package com.mogo.och.bus.passenger.ui
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.RelativeLayout
|
||||
import androidx.viewpager.widget.PagerAdapter
|
||||
import androidx.viewpager.widget.ViewPager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.bus.passenger.ui.MapAndLiveVideoView.Companion.TAG
|
||||
import java.lang.Exception
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
@@ -33,7 +27,7 @@ class MapAndLiveVideoView @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
init {
|
||||
initView()
|
||||
initView()
|
||||
}
|
||||
|
||||
private fun initView() {
|
||||
@@ -46,53 +40,54 @@ class MapAndLiveVideoView @JvmOverloads constructor(
|
||||
viewPager?.addOnPageChangeListener(this)
|
||||
}
|
||||
|
||||
fun setData(list: MutableList<View>){
|
||||
fun setData(list: MutableList<View>) {
|
||||
pagerAdapter?.setData(list)
|
||||
pagerAdapter?.notifyDataSetChanged()
|
||||
}
|
||||
|
||||
fun setItemChangeListener(listener : ChangeItemListener?){
|
||||
fun setItemChangeListener(listener: ChangeItemListener?) {
|
||||
changeItemListener = listener
|
||||
}
|
||||
|
||||
fun changeToSecondView(){
|
||||
if (viewPager?.currentItem == 0){
|
||||
fun changeToSecondView() {
|
||||
if (viewPager?.currentItem == 0) {
|
||||
startPosition = 0
|
||||
}
|
||||
viewPager?.currentItem = 1
|
||||
}
|
||||
|
||||
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
|
||||
Logger.d(TAG, "onPageScrolled--position = $position")
|
||||
CallerLogger.d(TAG, "onPageScrolled--position = $position")
|
||||
}
|
||||
|
||||
override fun onPageSelected(position: Int) {
|
||||
Logger.d(TAG, "onPageSelected--position = $position")
|
||||
CallerLogger.d(TAG, "onPageSelected--position = $position")
|
||||
}
|
||||
|
||||
var startPosition = 1
|
||||
override fun onPageScrollStateChanged(state: Int) {
|
||||
Logger.d(TAG, "onPageScrollStateChanged--state = $state")
|
||||
CallerLogger.d(TAG, "onPageScrollStateChanged--state = $state")
|
||||
viewPager?.let {
|
||||
val position = it.currentItem
|
||||
if (state == 0) { //静止
|
||||
if (startPosition == position){
|
||||
if (position==0){
|
||||
if (startPosition == position) {
|
||||
if (position == 0) {
|
||||
it.currentItem = 1
|
||||
}else{
|
||||
} else {
|
||||
it.currentItem = 0
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
changeItemListener?.changeToItem(it.currentItem)
|
||||
}
|
||||
}else if (state == 1){ // 开始滑动
|
||||
} else if (state == 1) { // 开始滑动
|
||||
startPosition = it.currentItem
|
||||
}else{
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
interface ChangeItemListener{
|
||||
interface ChangeItemListener {
|
||||
fun changeToItem(position: Int)
|
||||
}
|
||||
}
|
||||
@@ -101,25 +96,25 @@ class AdvancePagerAdapter : PagerAdapter(),
|
||||
ViewPager.OnPageChangeListener {
|
||||
private var views: List<View>? = null
|
||||
|
||||
fun setData(views: List<View>?){
|
||||
fun setData(views: List<View>?) {
|
||||
this.views = views
|
||||
}
|
||||
|
||||
override fun instantiateItem(container: View, position: Int): Any {
|
||||
Logger.d(TAG, "instantiateItem--position = $position")
|
||||
CallerLogger.d(TAG, "instantiateItem--position = $position")
|
||||
return try {
|
||||
val currentItem = position % views!!.size
|
||||
(container as ViewPager).addView(views!![currentItem])
|
||||
views!![currentItem]
|
||||
}catch (e: Exception){
|
||||
} catch (e: Exception) {
|
||||
container
|
||||
}
|
||||
}
|
||||
|
||||
override fun getCount(): Int {
|
||||
return if (views == null){
|
||||
return if (views == null) {
|
||||
0
|
||||
}else{
|
||||
} else {
|
||||
views!!.size
|
||||
}
|
||||
}
|
||||
@@ -129,14 +124,14 @@ class AdvancePagerAdapter : PagerAdapter(),
|
||||
}
|
||||
|
||||
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
|
||||
// Logger.d(TAG, "onPageScrolled--position = $position")
|
||||
// CallerLogger.d(TAG, "onPageScrolled--position = $position")
|
||||
}
|
||||
|
||||
override fun onPageSelected(position: Int) {
|
||||
// Logger.d(TAG, "onPageSelected--position = $position")
|
||||
// CallerLogger.d(TAG, "onPageSelected--position = $position")
|
||||
}
|
||||
|
||||
override fun onPageScrollStateChanged(state: Int) {
|
||||
// Logger.d(TAG, "onPageScrollStateChanged--state = $state")
|
||||
// CallerLogger.d(TAG, "onPageScrollStateChanged--state = $state")
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,9 @@
|
||||
android:id="@+id/mapBizView"
|
||||
android:layout_width="1810dp"
|
||||
android:layout_height="match_parent"
|
||||
app:styleMode="MAP_STYLE_DAY_VR"
|
||||
app:isWeatherEnable="false"
|
||||
app:locationIcon3DRes="@raw/xiaoba"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
@@ -87,7 +87,17 @@ object CharterTrajectoryManager {
|
||||
// 5. 轨迹管理_轨迹下载超时
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() 轨迹下载超时")
|
||||
// ToastUtils.showShort("轨迹下载超时");
|
||||
} else if ("ISSM_FUNC_AUTO_PILOT_READY" == guardianInfo.getCode()) {
|
||||
} else if ("EMAP_ATTITUDE_INIT_FAILED" == guardianInfo.getCode()) {
|
||||
CallerMsgBoxManager.saveMsgBox(
|
||||
MsgBoxBean(
|
||||
MsgBoxType.OPERATION,
|
||||
OperationMsg(
|
||||
System.currentTimeMillis(), "请尽快操作车辆至适当位置掉头!", -1
|
||||
)
|
||||
)
|
||||
)
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getTopActivity(), R.raw.startautopilot)
|
||||
} else if ("EMAP_ATTITUDE_INIT_FAILED" == guardianInfo.getCode()) {
|
||||
// 收到ssm的自动驾驶变为ready,再次下发轨迹下载.解决:域控重启,或者102域控启动太早,107节点初始化未完成导致的轨迹未进行下载。
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() ssm ready,再次发起下载")
|
||||
syncTrajectoryInfo(get().getBusOrderResult()?.lineId!!,
|
||||
|
||||
@@ -333,6 +333,9 @@ class DriverM1Model {
|
||||
mControllerStatusCallback?.onStartAdasFailure()
|
||||
}
|
||||
}
|
||||
|
||||
override fun brakeStatusChanged(isBrakeAvailable: Boolean) {
|
||||
}
|
||||
}
|
||||
|
||||
//监听网络变化,避免启动机器时无网导致无法更新订单信息
|
||||
|
||||
@@ -22,7 +22,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListener
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager.initAiCollect
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager.initBadCase
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.showToolsView
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView.ClickListener
|
||||
@@ -40,7 +39,7 @@ import com.mogo.map.uicontroller.VisualAngleMode
|
||||
import com.mogo.och.common.module.utils.SoundPoolHelper
|
||||
import kotlinx.android.synthetic.main.charter_base_fragment.*
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import java.util.*
|
||||
import kotlin.math.abs
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
@@ -104,23 +103,20 @@ abstract class CharterBaseFragment<V : IView?, P : Presenter<V>?>() :
|
||||
updateSwitchMapIcon()
|
||||
mSwitchMapModeLayout!!.setOnClickListener(object : OnPreventFastClickListener() {
|
||||
override fun onClickImpl(v: View) {
|
||||
|
||||
val controller = getMapUIController()
|
||||
if (controller != null) {
|
||||
//切换地图的远近视图
|
||||
if (controller.currentMapVisualAngle.isLongSight) {
|
||||
//Objects.requireNonNull(getMapUIController())
|
||||
// ?.setLockMode(true)
|
||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null)
|
||||
mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_medium)
|
||||
} else if (controller.currentMapVisualAngle.isMediumSight) {
|
||||
//Objects.requireNonNull(getMapUIController())
|
||||
// ?.setLockMode(false)
|
||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null)
|
||||
mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_long)
|
||||
} else {
|
||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null)
|
||||
mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_medium)
|
||||
mapBizView?.let {
|
||||
it.getUI()?.let { ui ->
|
||||
if (ui.currentMapVisualAngle.isLongSight) {
|
||||
ui.setLockMode(true)
|
||||
ui.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null)
|
||||
mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_medium)
|
||||
} else if (ui.currentMapVisualAngle.isMediumSight) {
|
||||
ui.setLockMode(false)
|
||||
ui.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null)
|
||||
mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_long)
|
||||
} else {
|
||||
ui.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null)
|
||||
mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_medium)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -166,7 +162,6 @@ abstract class CharterBaseFragment<V : IView?, P : Presenter<V>?>() :
|
||||
|
||||
mSettingBtn = findViewById(R.id.module_mogo_och_setting_layout)
|
||||
mSettingBtn!!.setOnClickListener { v: View? ->
|
||||
// TODO: 2021/12/9
|
||||
showToolsView()
|
||||
}
|
||||
|
||||
@@ -268,14 +263,15 @@ abstract class CharterBaseFragment<V : IView?, P : Presenter<V>?>() :
|
||||
}
|
||||
|
||||
private fun updateSwitchMapIcon() {
|
||||
val controller = getMapUIController()
|
||||
if (controller != null) {
|
||||
if (controller.currentMapVisualAngle.isLongSight) {
|
||||
mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_long)
|
||||
} else if (controller.currentMapVisualAngle.isMediumSight) {
|
||||
mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_medium)
|
||||
} else {
|
||||
mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_medium)
|
||||
mapBizView?.let {
|
||||
it.getUI()?.let { ui ->
|
||||
if (ui.currentMapVisualAngle.isLongSight) {
|
||||
mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_long)
|
||||
} else if (ui.currentMapVisualAngle.isMediumSight) {
|
||||
mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_medium)
|
||||
} else {
|
||||
mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_medium)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -476,7 +472,7 @@ abstract class CharterBaseFragment<V : IView?, P : Presenter<V>?>() :
|
||||
* @param newSpeed
|
||||
*/
|
||||
open fun updateSpeedView(newSpeed: Float) {
|
||||
val speed = (Math.abs(newSpeed) * 3.6f).toInt() // 倒车时工控机反馈定位信息中speed为负值
|
||||
val speed = (abs(newSpeed) * 3.6f).toInt() // 倒车时工控机反馈定位信息中speed为负值
|
||||
if (mTrafficDataView != null) {
|
||||
mTrafficDataView!!.updateSpeedWithValue(speed)
|
||||
}
|
||||
@@ -484,7 +480,7 @@ abstract class CharterBaseFragment<V : IView?, P : Presenter<V>?>() :
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
smallMapView!!.onDestroy()
|
||||
smallMapView?.onDestroy()
|
||||
mogoMapListenerHandler.unregisterHostMapListener(TAG)
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
<com.mogo.eagle.core.function.view.MapBizView
|
||||
android:id="@+id/mapBizView"
|
||||
app:isWeatherEnable="false"
|
||||
app:locationIcon3DRes="@raw/m1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
|
||||
@@ -6,8 +6,6 @@ import androidx.fragment.app.FragmentActivity
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import com.alibaba.android.arouter.facade.annotation.Route
|
||||
import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController
|
||||
import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager.stepInDayMode
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.och.charter.passenger.constant.CharterPassengerConst
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.mogo.och.charter.passenger.bean.response
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -65,6 +66,20 @@ data class OrderInfoResponse(val data: OrderInfo?) : BaseData() {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "OrderInfo(orderNo=$orderNo, sn=$sn, productType=${getProductTypeName()}, lineId=$lineId, lineName=$lineName, startSiteId=$startSiteId, startSiteName=$startSiteName, startSiteNameKr=$startSiteNameKr, siteId=$siteId, siteName=$siteName, siteNameKr=$siteNameKr, wgs84Lat=$wgs84Lat, wgs84Lon=$wgs84Lon, startTime=${DateTimeUtil.formatLongToString(startTime?:System.currentTimeMillis(), DateTimeUtil.MM_dd_HH_mm)}, endTime=${DateTimeUtil.formatLongToString(endTime?:System.currentTimeMillis(), DateTimeUtil.MM_dd_HH_mm)}, passengerPhone=$passengerPhone, arriveStatus=$arriveStatus)"
|
||||
}
|
||||
|
||||
fun getProductTypeName(): String {
|
||||
return when (productType) {
|
||||
M1_LOVE -> "爱情号"
|
||||
M1_FAMILY -> "家庭号"
|
||||
M1_FRIENDLY -> "朋友号"
|
||||
else -> "未知"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
companion object{
|
||||
val ARRIVING = 1
|
||||
|
||||
@@ -42,6 +42,7 @@ import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.manager.CharterSendTripInfoManager
|
||||
import com.mogo.och.common.module.manager.CharterSendTripInfoManager.LEAVE_STATION
|
||||
import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager
|
||||
import com.mogo.och.common.module.manager.orderlogmanager.OchChainLogManager
|
||||
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.PinYinUtil
|
||||
@@ -52,6 +53,7 @@ import io.reactivex.Observable
|
||||
import io.reactivex.disposables.Disposable
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import mogo_msg.MogoReportMsg
|
||||
import java.util.*
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import java.util.concurrent.TimeUnit
|
||||
@@ -196,6 +198,14 @@ object CharterPassengerModel {
|
||||
d(M_BUS_P + TAG, "底盘给到站信息")
|
||||
arriveDest()
|
||||
}
|
||||
override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) {
|
||||
super.onAutopilotGuardian(guardianInfo)
|
||||
guardianInfo?.let {
|
||||
if (it.code=="IMAP_TRA_LOADED") {
|
||||
ToastCharterUtils.showToastShort("请等待车辆完成掉头后再出发吧~")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -393,6 +403,7 @@ object CharterPassengerModel {
|
||||
this.orderInfo = orderData
|
||||
setOrderStatus(OrderStatusEnum.OrdersWithLine)
|
||||
updateAutopilotControlParameters()
|
||||
OchChainLogManager.writeChainLog(this.orderInfo.toString(),"更改线路成功:${orderData.siteName}")
|
||||
} else {
|
||||
this.orderInfo = orderData
|
||||
}
|
||||
@@ -727,6 +738,7 @@ object CharterPassengerModel {
|
||||
private fun setOrderStatus(orderStatus: OrderStatusEnum) {
|
||||
if (this.orderStatus != orderStatus) {
|
||||
d(M_BUS_P + TAG, "${this.orderInfo?.orderNo}新的状态:$orderStatus")
|
||||
OchChainLogManager.writeChainLog(this.orderInfo.toString(),"新的状态:$orderStatus")
|
||||
this.orderStatus = orderStatus
|
||||
for (callback in orderStatusChangeListeners.values) {
|
||||
callback.onStatusChange(this.orderStatus)
|
||||
@@ -737,6 +749,7 @@ object CharterPassengerModel {
|
||||
fun setEndOrderStatus() {
|
||||
UiThreadHandler.postDelayed({
|
||||
setOrderStatus(OrderStatusEnum.NoOrderUse)
|
||||
OchChainLogManager.writeChainLog(this.orderInfo.toString(),"手动结束订单:$orderStatus")
|
||||
}, 1000)
|
||||
}
|
||||
|
||||
@@ -933,6 +946,7 @@ object CharterPassengerModel {
|
||||
}
|
||||
|
||||
if (order != null && lineId != null && siteId != null) {
|
||||
OchChainLogManager.writeChainLog(this.orderInfo.toString(),"到站成功:${order.siteName}")
|
||||
VoiceManager.arrivedStation(
|
||||
order.siteName!!,
|
||||
order.siteNameKr ?: "",
|
||||
|
||||
@@ -34,7 +34,7 @@ import com.mogo.och.charter.passenger.ui.overmapview.MakerWithSiteNamewithCheck
|
||||
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager
|
||||
import com.mogo.och.common.module.manager.StopSideStatusManager
|
||||
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorCallback
|
||||
import com.mogo.och.common.module.manager.devicemanage.callback.LightAirconditionDoorCallback
|
||||
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil
|
||||
import com.mogo.och.common.module.voice.VoiceNotice
|
||||
import com.mogo.och.common.module.wigets.toast.ToastCharterUtils
|
||||
@@ -79,19 +79,19 @@ class BusPassengerPresenter(view: MainFragment?) :
|
||||
override fun setCarChangeListener(productType: Int?) {
|
||||
when (productType) {
|
||||
OrderInfoResponse.M1_LOVE -> {
|
||||
mView?.setCarModle(R.raw.aiqinghao)
|
||||
mView?.setCarModel(R.raw.aiqinghao)
|
||||
}
|
||||
|
||||
OrderInfoResponse.M1_FAMILY -> {
|
||||
mView?.setCarModle(R.raw.jiatinghao)
|
||||
mView?.setCarModel(R.raw.jiatinghao)
|
||||
}
|
||||
|
||||
OrderInfoResponse.M1_FRIENDLY -> {
|
||||
mView?.setCarModle(R.raw.pengyouhao)
|
||||
mView?.setCarModel(R.raw.pengyouhao)
|
||||
}
|
||||
|
||||
else -> {
|
||||
mView?.setCarModle(R.raw.m1)
|
||||
mView?.setCarModel(R.raw.m1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,7 +198,7 @@ class MainFragment : MvpFragment<MainFragment?, BusPassengerPresenter?>(), IMogo
|
||||
}
|
||||
}
|
||||
|
||||
fun setCarModle(rawInfo: Int) {
|
||||
fun setCarModel(rawInfo: Int) {
|
||||
getMapUIController()?.changeCurrentIcon(rawInfo)
|
||||
HdMapBuildConfig.currentCarVrIconRes = rawInfo
|
||||
}
|
||||
|
||||
@@ -13,6 +13,9 @@ import kotlinx.android.synthetic.main.m1_itinerary_info.view.tv_distance_surplus
|
||||
import kotlinx.android.synthetic.main.m1_itinerary_info.view.tv_distance_unit
|
||||
import kotlinx.android.synthetic.main.m1_itinerary_info.view.tv_speed
|
||||
|
||||
/**
|
||||
* 速度、剩余时间、剩余距离和到达时间
|
||||
*/
|
||||
class ItineraryView : ConstraintLayout, ItineraryViewModel.ItineraryViewCallback {
|
||||
|
||||
private val TAG = "ItineraryView"
|
||||
|
||||
@@ -19,6 +19,9 @@ import kotlinx.android.synthetic.main.m1_devices_fragment.view.actv_order_times
|
||||
import kotlinx.android.synthetic.main.m1_devices_fragment.view.cl_order_info
|
||||
import kotlinx.android.synthetic.main.m1_devices_fragment.view.cl_order_info_endorder_comfit
|
||||
|
||||
/**
|
||||
* 剩余时间和结束订单入口
|
||||
*/
|
||||
class OrderInfoView : ConstraintLayout, OrderInfoViewModel.ItineraryViewCallback {
|
||||
|
||||
private val TAG = "OrderInfoView"
|
||||
|
||||
@@ -41,10 +41,11 @@ import kotlinx.android.synthetic.main.m1_order_loading.view.iv_loading_wait_ent
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
/**
|
||||
* 选择线路
|
||||
*/
|
||||
class SelectLineView : ConstraintLayout, SelectLineViewModel.SelectLineViewCallback {
|
||||
|
||||
private val TAG = "OrderInfoView"
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
|
||||
@@ -98,7 +99,7 @@ class SelectLineView : ConstraintLayout, SelectLineViewModel.SelectLineViewCallb
|
||||
rlv_line_list.layoutManager =
|
||||
LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)
|
||||
rlv_line_list.addItemDecoration(
|
||||
com.mogo.och.charter.passenger.ui.selectline.layoutmanage.BottomDecoration(
|
||||
BottomDecoration(
|
||||
AutoSizeUtils.dp2px(context, 60f)
|
||||
)
|
||||
)
|
||||
@@ -107,7 +108,7 @@ class SelectLineView : ConstraintLayout, SelectLineViewModel.SelectLineViewCallb
|
||||
rv_site_list.layoutManager =
|
||||
LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)
|
||||
rv_site_list.addItemDecoration(
|
||||
com.mogo.och.charter.passenger.ui.selectline.layoutmanage.BottomDecoration(
|
||||
BottomDecoration(
|
||||
AutoSizeUtils.dp2px(context, 90f)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -72,6 +72,9 @@ import kotlinx.android.synthetic.main.m1_soft_fragment.view.tv_temperature_title
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
/**
|
||||
* 空调、暖风机、声音控制
|
||||
*/
|
||||
class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallback {
|
||||
|
||||
private val TAG = "OrderInfoView"
|
||||
|
||||
@@ -6,7 +6,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.common.module.wigets.toast.ToastCharterUtils
|
||||
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorCallback
|
||||
import com.mogo.och.common.module.manager.devicemanage.callback.LightAirconditionDoorCallback
|
||||
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStatusManager
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.AirconditionStatus
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.HeaterStatue
|
||||
@@ -138,7 +138,7 @@ class SoftControlViewModel : ViewModel(), LightAirconditionDoorCallback {
|
||||
*/
|
||||
fun openAndSetAircondition(modeCmd: Int, windSpeedCmd: Int, temperatureCmd: Int) {
|
||||
CallerLogger.d(
|
||||
M_BUS_P + TAG, "" + "打开空调,模式$modeCmd--档位${windSpeedCmd}--温度:$temperatureCmd"
|
||||
M_BUS_P + TAG, "打开空调,模式$modeCmd--档位${windSpeedCmd}--温度:$temperatureCmd"
|
||||
)
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1AirConditionerCmd(
|
||||
1, modeCmd, windSpeedCmd, temperatureCmd
|
||||
|
||||
@@ -7,12 +7,14 @@
|
||||
<com.mogo.eagle.core.function.view.MapBizView
|
||||
android:id="@+id/mapBizView"
|
||||
android:layout_width="0dp"
|
||||
app:layout_constraintWidth_percent="0.662"
|
||||
app:styleMode="MAP_STYLE_DAY_VR"
|
||||
app:isWeatherEnable="false"
|
||||
app:locationIcon3DRes="@raw/m1"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintWidth_percent="0.662" />
|
||||
|
||||
app:layout_constraintBottom_toBottomOf="parent"/>
|
||||
<com.mogo.eagle.core.function.view.OverMapView
|
||||
android:id="@+id/omvOverMap"
|
||||
android:layout_width="0dp"
|
||||
@@ -90,12 +92,14 @@
|
||||
app:layout_constraintEnd_toEndOf="@+id/viewBusPM1MsgBoxButton"
|
||||
app:layout_constraintTop_toBottomOf="@+id/viewBusPM1MsgBoxButton" />
|
||||
|
||||
<!--速度、剩余时间、剩余距离和到达时间-->
|
||||
<com.mogo.och.charter.passenger.ui.itinerary.ItineraryView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--剩余时间和结束订单入口-->
|
||||
<com.mogo.och.charter.passenger.ui.orderinfo.OrderInfoView
|
||||
android:id="@+id/biz_orderinfo"
|
||||
android:layout_width="match_parent"
|
||||
@@ -105,12 +109,14 @@
|
||||
app:layout_constraintBottom_toTopOf="@+id/bb_boorombar"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--空调、暖风机、声音控制-->
|
||||
<com.mogo.och.charter.passenger.ui.softcontrol.SoftControlView
|
||||
android:id="@+id/biz_softcontrol"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="gone" />
|
||||
|
||||
<!--选择线路-->
|
||||
<com.mogo.och.charter.passenger.ui.selectline.SelectLineView
|
||||
android:id="@+id/biz_selectline"
|
||||
android:layout_width="0dp"
|
||||
@@ -122,13 +128,14 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--视频播放-->
|
||||
<com.mogo.och.charter.passenger.ui.video.VideoView
|
||||
android:id="@+id/biz_video"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="gone" />
|
||||
|
||||
|
||||
<!--底部导航栏-->
|
||||
<com.mogo.och.charter.passenger.ui.bottom.BottomBar
|
||||
android:id="@+id/bb_boorombar"
|
||||
android:layout_width="match_parent"
|
||||
@@ -137,6 +144,7 @@
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<!--调试面板-->
|
||||
<com.mogo.och.charter.passenger.ui.debugview.DebugView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -145,6 +153,7 @@
|
||||
app:layout_constraintEnd_toEndOf="@+id/mapBizView"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--锁定状态和解锁入口-->
|
||||
<com.mogo.och.charter.passenger.ui.lockview.UnlockView
|
||||
android:id="@+id/uv_only_unlock"
|
||||
android:visibility="gone"
|
||||
@@ -156,6 +165,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<!--锁定和解锁入口-->
|
||||
<com.mogo.och.charter.passenger.ui.lockview.LockAndUnlockView
|
||||
android:layout_width="@dimen/dp_138"
|
||||
android:layout_height="@dimen/dp_138"
|
||||
|
||||
@@ -62,13 +62,11 @@ dependencies {
|
||||
api project(":OCH:mogo-och-data")
|
||||
|
||||
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
|
||||
api rootProject.ext.dependencies.mogoutils
|
||||
api rootProject.ext.dependencies.mogocommons
|
||||
api rootProject.ext.dependencies.mogo_core_function_call
|
||||
api rootProject.ext.dependencies.mogo_core_function_hmi
|
||||
api rootProject.ext.dependencies.mogo_core_function_map
|
||||
}else {
|
||||
api project(":core:mogo-core-utils")
|
||||
api project(":foudations:mogo-commons")
|
||||
api project(':core:mogo-core-function-call')
|
||||
api project(':core:function-impl:mogo-core-function-hmi')
|
||||
|
||||
@@ -18,6 +18,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.och.common.module.debug.location.MogoLocationExit
|
||||
import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager
|
||||
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import mogo_msg.MogoReportMsg
|
||||
@@ -35,11 +36,13 @@ object DebugDataDispatch {
|
||||
const val locationMock = "location"
|
||||
const val carDoorMock = "carDoor"
|
||||
const val carNeedTurnAround = "trunAroud"
|
||||
const val trajectoryStation = "trajectoryStation"
|
||||
|
||||
// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "location" --es path "sy73_log.json"
|
||||
// aadb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "location" --es path "1111/11111"
|
||||
// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "globalPath" --es path "sy73.json"
|
||||
// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "carDoor" --ei doorPostion 1 --ei doorStatus 1
|
||||
// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "trunAroud" --es code "IMAP_TRA_LOADED"
|
||||
// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "trajectoryStation" --ef startLon 116.74053643938474 --ef startLat 40.200487993233246 --ef endLon 116.73876977409685 --ef endLat 40.20179054129441 --el lineID 8
|
||||
|
||||
|
||||
val ROOT_PATH =
|
||||
@@ -83,10 +86,31 @@ object DebugDataDispatch {
|
||||
newBuilder.level = ""
|
||||
CallerAutoPilotStatusListenerManager.invokeAutopilotGuardian(newBuilder.build())
|
||||
}
|
||||
trajectoryStation -> {
|
||||
val startLon = intent.getFloatExtra("startLon", -1.0f)
|
||||
val startLat = intent.getFloatExtra("startLat", -1.0f)
|
||||
val endLon = intent.getFloatExtra("endLon", -1.0f)
|
||||
val endLat = intent.getFloatExtra("endLat", -1.0f)
|
||||
val lineID = intent.getLongExtra("lineID", -1)
|
||||
setStation(startLon.toDouble(),startLat.toDouble(),endLon.toDouble(),endLat.toDouble(),lineID)
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
|
||||
fun setStation(startLon:Double,startLat:Double,endLon:Double,endLat:Double,lineID:Long){
|
||||
if(startLon<0||startLat<0||endLon<0||endLat<0||lineID<0){
|
||||
TrajectoryAndDistanceManager.setStationPoint(null,null,-1)
|
||||
}
|
||||
val startLocation = MogoLocation()
|
||||
startLocation.longitude = startLon
|
||||
startLocation.latitude = startLat
|
||||
val endLocation = MogoLocation()
|
||||
endLocation.longitude = endLon
|
||||
endLocation.latitude = endLat
|
||||
TrajectoryAndDistanceManager.setStationPoint(startLocation,endLocation,lineID)
|
||||
}
|
||||
|
||||
fun getLocaitonByLog(path:String) {
|
||||
ThreadUtils.getIoPool().execute {
|
||||
try {
|
||||
|
||||
@@ -6,4 +6,7 @@ package com.mogo.och.common.module.callback
|
||||
*/
|
||||
interface OchAdasStartFailureCallback {
|
||||
fun onStartAutopilotFailure(startFailedCode : String, startFailedMessage : String)
|
||||
|
||||
fun brakeStatusChanged(isBrakeAvailable: Boolean)
|
||||
|
||||
}
|
||||
@@ -6,12 +6,15 @@ import androidx.annotation.Nullable;
|
||||
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotActionsListener;
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatisticsListener;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotActionsListenerManager;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotStatisticsListenerManager;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerParallelDrivingActionsListenerManager;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
|
||||
import com.mogo.eagle.core.utilcode.util.ParseVersionUtils;
|
||||
import com.mogo.och.common.module.callback.OchAdasStartFailureCallback;
|
||||
import com.zhjt.mogo.adas.data.bean.AutopilotStatistics;
|
||||
import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason;
|
||||
import com.zhjt.mogo.adas.data.bean.UnableLaunchReason;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@@ -25,7 +28,7 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMo
|
||||
private static final String TAG = OCHAdasAbilityManager.class.getSimpleName();
|
||||
|
||||
private boolean isAutopilotAbility;
|
||||
private ArrayList<UnableAutopilotReason> unableAutopilotReasons;
|
||||
private ArrayList<UnableLaunchReason> unableAutopilotReasons;
|
||||
private String startFailedCode = "";
|
||||
private String startFailedMessage = "";
|
||||
|
||||
@@ -90,15 +93,25 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMo
|
||||
private void releaseListeners() {
|
||||
CallerAutopilotActionsListenerManager.INSTANCE.removeListener(this);
|
||||
CallerAutopilotStatisticsListenerManager.INSTANCE.removeListener(this);
|
||||
CallerParallelDrivingActionsListenerManager.INSTANCE.removeListener(TAG);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList<UnableAutopilotReason> unableAutopilotReasons) {
|
||||
public void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList<UnableLaunchReason> unableAutopilotReasons) {
|
||||
this.isAutopilotAbility = isAutopilotAbility;
|
||||
this.unableAutopilotReasons = unableAutopilotReasons;
|
||||
Logger.d(TAG, "是否可以启动自动驾驶=" + isAutopilotAbility + " 原因=" + (unableAutopilotReasons == null ? null : unableAutopilotReasons.toString()));
|
||||
}
|
||||
if (unableAutopilotReasons != null && getMapVersion() < 30600) {
|
||||
//刹车变化回调
|
||||
Logger.d(TAG,"onAutopilotAbility = " + isAutopilotAbility +
|
||||
" onAutopilotAbility =" + unableAutopilotReasons.toString());
|
||||
if (unableAutopilotReasons.toString().contains(UnableLaunchReason.SourceType.CHASSIS.name())
|
||||
&& unableAutopilotReasons.toString().contains(UnableLaunchReason.UnableType.BRAKE.name())) {
|
||||
failureCallback.brakeStatusChanged(isAutopilotAbility);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onAutopilotStatistics(@Nullable AutopilotStatistics statistics) {
|
||||
if (statistics == null) return;
|
||||
@@ -112,6 +125,9 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMo
|
||||
}
|
||||
}
|
||||
|
||||
private int getMapVersion(){
|
||||
return ParseVersionUtils.parseVersion(true, CallerAutoPilotStatusListenerManager.INSTANCE.getDockerVersion());
|
||||
}
|
||||
public void release() {
|
||||
releaseListeners();
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.mogo.och.common.module.manager.devicemanage
|
||||
import chassis.VehicleStateOuterClass
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoRoboBusJinlvM1StatesListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerRoboBusJinlvM1StatesListenerManager
|
||||
import com.mogo.och.common.module.manager.devicemanage.callback.LightAirconditionDoorCallback
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.AirconditionStatus
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.DoorStatus
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.HeaterStatue
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
package com.mogo.och.common.module.manager.devicemanage
|
||||
|
||||
import chassis.Chassis
|
||||
import chassis.VehicleStateOuterClass
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisDoorStateListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisDoorStateListenerManager
|
||||
import com.mogo.eagle.core.function.call.base.CallerBase
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.och.common.module.manager.devicemanage.callback.DoorStateCallback
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.DoorPosition
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.DoorState
|
||||
|
||||
object TaxiDoorStateManager : IMoGoChassisDoorStateListener,
|
||||
CallerBase<DoorStateCallback>() {
|
||||
private val TAG = TaxiDoorStateManager::class.java.simpleName
|
||||
|
||||
@Volatile
|
||||
private var haveOpenDoor: Boolean? = null
|
||||
|
||||
init {
|
||||
CallerChassisDoorStateListenerManager.addListener(TAG, this)
|
||||
}
|
||||
|
||||
override fun doSomeAfterAddListener(tag: String, listener: DoorStateCallback) {
|
||||
val doorList = CallerChassisDoorStateListenerManager.getDoorList()
|
||||
if(doorList is MutableList<VehicleStateOuterClass.DoorStateV2>){
|
||||
doSomeAfterAddListenerInner(doorList)
|
||||
doorList.forEach {
|
||||
onAutopilotSingleDoorState(it.number,it.status)
|
||||
}
|
||||
}else{
|
||||
doSomeAfterAddListenerInner(mutableListOf())
|
||||
}
|
||||
}
|
||||
|
||||
private fun doSomeAfterAddListenerInner(doorList: MutableList<VehicleStateOuterClass.DoorStateV2>){
|
||||
var have = false
|
||||
doorList.forEach {
|
||||
if (it.status == 1) {//0关闭 1开着 2未知
|
||||
have = true
|
||||
}
|
||||
}
|
||||
haveOpenDoor = have
|
||||
invokeOpenState(have)
|
||||
}
|
||||
|
||||
/**
|
||||
* 主要用来判断是否有门开着
|
||||
*/
|
||||
override fun onAutopilotDoorState(doorList: MutableList<VehicleStateOuterClass.DoorStateV2>) {
|
||||
var have = false
|
||||
doorList.forEach {
|
||||
if (it.status == 1) {//0关闭 1开着 2未知
|
||||
have = true
|
||||
}
|
||||
}
|
||||
if (have != haveOpenDoor) {
|
||||
haveOpenDoor = have
|
||||
invokeOpenState(have)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断单个车门是否开着
|
||||
*/
|
||||
override fun onAutopilotSingleDoorState(num: Chassis.DoorNumber, status: Int) {
|
||||
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "门太变化:${num}--${status}")
|
||||
when (status) {
|
||||
0 -> { exchangeEnum(num, DoorState.CLOSE)}
|
||||
1 -> {exchangeEnum(num, DoorState.OPEN)}
|
||||
2 -> {exchangeEnum(num, DoorState.UNKNOWN)}
|
||||
else -> {}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun exchangeEnum(num: Chassis.DoorNumber, state: DoorState) {
|
||||
when (num) {
|
||||
Chassis.DoorNumber.FRONT_LEFT -> {
|
||||
invokeSingleDoorOpenState(DoorPosition.FRONT_LEFT, state)
|
||||
}
|
||||
|
||||
Chassis.DoorNumber.FRONT_RIGHT -> {
|
||||
invokeSingleDoorOpenState(DoorPosition.FRONT_RIGHT, state)
|
||||
}
|
||||
|
||||
Chassis.DoorNumber.REAR_LEFT -> {
|
||||
invokeSingleDoorOpenState(DoorPosition.REAR_LEFT, state)
|
||||
}
|
||||
|
||||
Chassis.DoorNumber.REAR_RIGHT -> {
|
||||
invokeSingleDoorOpenState(DoorPosition.REAR_RIGHT, state)
|
||||
}
|
||||
|
||||
Chassis.DoorNumber.MIDDLE -> {
|
||||
invokeSingleDoorOpenState(DoorPosition.MIDDLE, state)
|
||||
}
|
||||
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param have true 有车门开着
|
||||
* false 没有车门开着(可能开着可能未知)
|
||||
*/
|
||||
@Synchronized
|
||||
private fun invokeOpenState(have: Boolean) {
|
||||
M_LISTENERS.forEach {
|
||||
val listener = it.value
|
||||
listener.hasOpenDoor(have)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param doorPosition 车门位置
|
||||
* @param doorState 车门状态
|
||||
*/
|
||||
@Synchronized
|
||||
private fun invokeSingleDoorOpenState(doorPosition: DoorPosition,doorState: DoorState) {
|
||||
M_LISTENERS.forEach {
|
||||
val listener = it.value
|
||||
listener.doorStateChangeCallback(doorPosition,doorState)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.mogo.och.common.module.manager.devicemanage.callback
|
||||
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.DoorPosition
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.DoorState
|
||||
|
||||
interface DoorStateCallback {
|
||||
|
||||
/**
|
||||
* @param have true 有车门开着
|
||||
* false 没有车门开着(可能开着可能未知)
|
||||
*/
|
||||
fun hasOpenDoor(have:Boolean){}
|
||||
|
||||
/**
|
||||
* @param position 车门位置
|
||||
* @param state 当前车门状态
|
||||
*/
|
||||
fun doorStateChangeCallback(position: DoorPosition,state: DoorState){}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.common.module.manager.devicemanage
|
||||
package com.mogo.och.common.module.manager.devicemanage.callback
|
||||
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.AirconditionStatus
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.HeaterStatue
|
||||
@@ -1,3 +1,12 @@
|
||||
package com.mogo.och.common.module.manager.devicemanage.data
|
||||
|
||||
data class DoorStatus(var isOpen: Boolean)
|
||||
data class DoorStatus(var isOpen: Boolean)
|
||||
|
||||
|
||||
enum class DoorPosition {
|
||||
FRONT_LEFT, FRONT_RIGHT, REAR_LEFT, REAR_RIGHT, MIDDLE
|
||||
}
|
||||
|
||||
enum class DoorState {
|
||||
OPEN,CLOSE,UNKNOWN
|
||||
}
|
||||
@@ -98,6 +98,8 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{
|
||||
d(M_OCHCOMMON + TAG, "重复轨迹")
|
||||
startCalculateDistanceLoop()
|
||||
return
|
||||
}else{
|
||||
resetStation()
|
||||
}
|
||||
this.lineId = globalPathResp.lineId
|
||||
}
|
||||
@@ -270,7 +272,7 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{
|
||||
) {
|
||||
//要前往的站在轨迹中对应的点的信息
|
||||
val startStationInfo = CoordinateCalculateRouteUtil.getNearestPointInfo(
|
||||
preCarLocationIndexInTrajectory, mRoutePoints!!.size,mRoutePoints!!, startStationInfo.stationPoint!!,1
|
||||
preCarLocationIndexInTrajectory, mRoutePoints!!.size,mRoutePoints!!, startStationInfo.stationPoint!!,1, useHeading = false
|
||||
)
|
||||
this.startStationInfo.isNext = startStationInfo.second
|
||||
this.startStationInfo.index = startStationInfo.first
|
||||
@@ -288,7 +290,7 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{
|
||||
) {
|
||||
//要前往的站在轨迹中对应的点
|
||||
val endStationInfo = CoordinateCalculateRouteUtil.getNearestPointInfo(
|
||||
preCarLocationIndexInTrajectory,mRoutePoints!!.size, mRoutePoints!!, endStationInfo.stationPoint!!,3
|
||||
preCarLocationIndexInTrajectory,mRoutePoints!!.size, mRoutePoints!!, endStationInfo.stationPoint!!,3, useHeading = false
|
||||
)
|
||||
this.endStationInfo.isNext = endStationInfo.second
|
||||
this.endStationInfo.index = endStationInfo.first
|
||||
@@ -324,7 +326,7 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{
|
||||
preCarLocationIndexInTrajectory,endStationInfo.index!!+1, mRoutePoints!!, location,2
|
||||
)
|
||||
}
|
||||
val calculateData = "距离结束站点最近的点:${carLocationInfo.first} 点在站的后面:${carLocationInfo.second} 距离点的距离:${carLocationInfo.third}"
|
||||
val calculateData = "距离轨迹点最近的点:${carLocationInfo.first} 点在站的后面:${carLocationInfo.second} 距离点的距离:${carLocationInfo.third}"
|
||||
writeLog(calculateData, locationInfo)
|
||||
if(carLocationInfo.second==null||carLocationInfo.third>1_000){
|
||||
preCarLocationIndexInTrajectory = 0
|
||||
@@ -549,13 +551,13 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{
|
||||
}
|
||||
}
|
||||
|
||||
@ChainLog(
|
||||
linkChainLog = ChainConstant.CHAIN_TYPE_OCH,
|
||||
linkCode = ChainConstant.CHAIN_SOURCE_OCH,
|
||||
nodeAliasCode = ChainConstant.CHAIN_CODE_OCH_COMMON_DISTANCE,
|
||||
paramIndexes = [0,1]
|
||||
)
|
||||
fun writeLog(carLocationInfo: String, location: String) {
|
||||
// @ChainLog(
|
||||
// linkChainLog = ChainConstant.CHAIN_TYPE_OCH,
|
||||
// linkCode = ChainConstant.CHAIN_SOURCE_OCH,
|
||||
// nodeAliasCode = ChainConstant.CHAIN_CODE_OCH_COMMON_DISTANCE,
|
||||
// paramIndexes = [0,1]
|
||||
// )
|
||||
private fun writeLog(carLocationInfo: String, location: String) {
|
||||
d(M_OCHCOMMON+ TAG,carLocationInfo)
|
||||
d(M_OCHCOMMON+ TAG,location)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.mogo.och.common.module.manager.orderlogmanager
|
||||
|
||||
import android.text.TextUtils
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
import com.mogo.commons.debug.DebugConfig
|
||||
import com.mogo.commons.utils.MogoAnalyticUtils
|
||||
import com.mogo.eagle.core.data.app.AppConfigInfo
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.util.DateTimeUtils
|
||||
import com.zhjt.service.chain.ChainLog
|
||||
|
||||
object OchChainLogManager {
|
||||
|
||||
private val TAG = OchChainLogManager::class.java.simpleName
|
||||
|
||||
const val EVENT_KEY_INFE_WITH_CHANGE = "event_key_och_common_info_and_changeinfo"
|
||||
|
||||
/**
|
||||
* @param Info 订单详细信息
|
||||
* @param changeInfo 变化信息
|
||||
*/
|
||||
@ChainLog(
|
||||
linkChainLog = ChainConstant.CHAIN_TYPE_OCH,
|
||||
linkCode = ChainConstant.CHAIN_SOURCE_OCH,
|
||||
nodeAliasCode = ChainConstant.CHAIN_CODE_OCH_COMMON_DISTANCE,
|
||||
paramIndexes = [0,1]
|
||||
)
|
||||
fun writeChainLog(Info: String, changeInfo: String,upload:Boolean = true) {
|
||||
d(SceneConstant.M_OCHCOMMON + TAG, Info)
|
||||
d(SceneConstant.M_OCHCOMMON + TAG, changeInfo)
|
||||
if(upload) {
|
||||
val plateNum = AppConfigInfo.plateNumber
|
||||
val params = HashMap<String, Any>()
|
||||
params["sn"] = MoGoAiCloudClientConfig.getInstance().sn
|
||||
params["env"] = DebugConfig.getNetMode()
|
||||
params["plate_number"] = if (TextUtils.isEmpty(plateNum)) "" else plateNum
|
||||
params["time"] = DateTimeUtils.getTimeText(DateTimeUtils.yyyy_MM_dd_HH_mm_ss)
|
||||
params["info"] = Info
|
||||
params["changeInfo"] = changeInfo
|
||||
MogoAnalyticUtils.track(EVENT_KEY_INFE_WITH_CHANGE, params)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.mogo.och.common.module.manager.orderlogmanager
|
||||
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.zhjt.service.chain.ChainLog
|
||||
|
||||
object OrderChainLogManager {
|
||||
|
||||
private val TAG = OrderChainLogManager::class.java.simpleName
|
||||
|
||||
/**
|
||||
* @param orderInfo 订单详细信息
|
||||
* @param changeInfo 变化信息
|
||||
*/
|
||||
@ChainLog(
|
||||
linkChainLog = ChainConstant.CHAIN_TYPE_OCH,
|
||||
linkCode = ChainConstant.CHAIN_SOURCE_OCH,
|
||||
nodeAliasCode = ChainConstant.CHAIN_CODE_OCH_COMMON_DISTANCE,
|
||||
paramIndexes = [0,1]
|
||||
)
|
||||
fun writeChainLog(orderInfo: String, changeInfo: String) {
|
||||
d(SceneConstant.M_OCHCOMMON + TAG, orderInfo)
|
||||
d(SceneConstant.M_OCHCOMMON + TAG, changeInfo)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -22,8 +22,10 @@ import com.amap.api.navi.model.AimLessModeCongestionInfo;
|
||||
import com.amap.api.navi.model.AimLessModeStat;
|
||||
import com.amap.api.navi.model.NaviInfo;
|
||||
import com.amap.api.navi.model.NaviLatLng;
|
||||
import com.mogo.commons.AbsMogoApplication;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil;
|
||||
import com.mogo.och.common.module.utils.PermissionUtil;
|
||||
import com.mogo.och.common.module.wigets.toast.ToastCharterUtils;
|
||||
|
||||
@@ -39,7 +41,6 @@ public class AmapNaviToDestinationModel implements AMapNaviListener {
|
||||
|
||||
public static final String TAG = "NaviToDestinationModel";
|
||||
|
||||
private static Context mContext;
|
||||
private AMapNavi mAMapNavi = null;
|
||||
protected final List<NaviLatLng> sList = new ArrayList<NaviLatLng>();
|
||||
protected final List<NaviLatLng> eList = new ArrayList<NaviLatLng>();
|
||||
@@ -49,7 +50,6 @@ public class AmapNaviToDestinationModel implements AMapNaviListener {
|
||||
private boolean isPlay;
|
||||
|
||||
public static AmapNaviToDestinationModel getInstance(Context context) {
|
||||
mContext = context;
|
||||
return SingletonHolder.INSTANCE;
|
||||
}
|
||||
|
||||
@@ -62,7 +62,8 @@ public class AmapNaviToDestinationModel implements AMapNaviListener {
|
||||
|
||||
public void initAMapNavi(NaviLatLng startLatLng, NaviLatLng endLatLng) {
|
||||
try {
|
||||
mAMapNavi = AMapNavi.getInstance(mContext);
|
||||
CallerLogger.i( TAG, "initAMapNavi()");
|
||||
mAMapNavi = AMapNavi.getInstance(AbsMogoApplication.getApp());
|
||||
mAMapNavi.addAMapNaviListener(this);
|
||||
mAMapNavi.setUseInnerVoice(true, true);
|
||||
sList.add(startLatLng);
|
||||
@@ -88,6 +89,7 @@ public class AmapNaviToDestinationModel implements AMapNaviListener {
|
||||
|
||||
public void destroyAmaNavi() {
|
||||
if (mAMapNavi != null) {
|
||||
CallerLogger.i( TAG, "destroyAmaNavi()");
|
||||
isPlay = false;
|
||||
sList.clear();
|
||||
eList.clear();
|
||||
@@ -104,7 +106,7 @@ public class AmapNaviToDestinationModel implements AMapNaviListener {
|
||||
|
||||
@Override
|
||||
public void onInitNaviFailure() {
|
||||
Toast.makeText(mContext, "init navi Failed", Toast.LENGTH_SHORT).show();
|
||||
Toast.makeText(AbsMogoApplication.getApp(), "init navi Failed", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -141,8 +143,8 @@ public class AmapNaviToDestinationModel implements AMapNaviListener {
|
||||
@Override
|
||||
public void onNaviInfoUpdate(NaviInfo naviinfo) {
|
||||
//导航过程中的信息更新,请看NaviInfo的具体说明
|
||||
CallerLogger.i( TAG, "距离=" + naviinfo.getPathRetainDistance() + ", 剩余时间 " + naviinfo.getPathRetainTime());
|
||||
if (null != mNaviChangedCallback) {
|
||||
CallerLogger.i(M_TAXI + TAG, "距离=" + naviinfo.getPathRetainDistance() + ", 剩余时间 " + naviinfo.getPathRetainTime());
|
||||
mNaviChangedCallback.onCurrentNaviDistAndTimeChanged(naviinfo.getPathRetainDistance(), naviinfo.getPathRetainTime());// 米、秒
|
||||
}
|
||||
}
|
||||
@@ -162,14 +164,14 @@ public class AmapNaviToDestinationModel implements AMapNaviListener {
|
||||
mNaviChangedCallback.reInitNaviAmap(isPlay, true);
|
||||
}
|
||||
}
|
||||
if (!NetworkUtils.isConnected(mContext) || result.getErrorCode() == 2) {
|
||||
if (!NetworkUtils.isConnected(AbsMogoApplication.getApp()) || result.getErrorCode() == 2) {
|
||||
ToastCharterUtils.showToastShort("网络异常,请重试");
|
||||
if (mNaviChangedCallback != null) {
|
||||
mNaviChangedCallback.reInitNaviAmap(isPlay, false);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (!PermissionUtil.isLocServiceEnable(mContext) || !PermissionUtil.checkPermission(mContext, new String[]{Manifest.permission.ACCESS_FINE_LOCATION})) {
|
||||
if (!PermissionUtil.isLocServiceEnable(AbsMogoApplication.getApp()) || !PermissionUtil.checkPermission(AbsMogoApplication.getApp(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION})) {
|
||||
ToastCharterUtils.showToastShort("请开启车机定位后重试");
|
||||
if (mNaviChangedCallback != null) {
|
||||
mNaviChangedCallback.reInitNaviAmap(isPlay, false);
|
||||
@@ -194,6 +196,11 @@ public class AmapNaviToDestinationModel implements AMapNaviListener {
|
||||
@Override
|
||||
public void onLocationChange(AMapNaviLocation location) {
|
||||
//当前位置回调
|
||||
// CallerLogger.i( TAG, "AMapNaviLocation = NaviLatLng = "+
|
||||
// location.getCoord().getLatitude()+ ", "+ location.getCoord().getLongitude()
|
||||
// + ", bearing = " +location.getBearing()
|
||||
// +", time = " + DateTimeUtil.formatLongToString(location.getTime(),DateTimeUtil.HH_mm)
|
||||
// + ", locationType = "+ location.getLocationType());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -162,10 +162,6 @@ class CommonAmapNaviVIew @JvmOverloads constructor(
|
||||
|
||||
override fun onNaviViewLoaded() {
|
||||
d(SceneConstant.M_TAXI + TAG, "导航页面加载成功")
|
||||
d(
|
||||
SceneConstant.M_TAXI + TAG,
|
||||
"请不要使用AMapNaviView.getMap().setOnMapLoadedListener();会overwrite导航SDK内部画线逻辑"
|
||||
)
|
||||
}
|
||||
|
||||
override fun onMapTypeChanged(p0: Int) {
|
||||
@@ -191,58 +187,4 @@ class CommonAmapNaviVIew @JvmOverloads constructor(
|
||||
fun onDestroy(){
|
||||
amapNaviView.onDestroy()
|
||||
}
|
||||
|
||||
// var array = arrayOf(
|
||||
// "直行车道",
|
||||
// "左转车道",
|
||||
// "左转或直行车道",
|
||||
// "右转车道",
|
||||
// "右转或直行车道",
|
||||
// "左掉头车道",
|
||||
// "左转或者右转车道",
|
||||
// " 左转或右转或直行车道",
|
||||
// "右转掉头车道",
|
||||
// "直行或左转掉头车道",
|
||||
// "直行或右转掉头车道",
|
||||
// "左转或左掉头车道",
|
||||
// "右转或右掉头车道",
|
||||
// "直行并且车道扩展",
|
||||
// "左转+左掉头+扩展",
|
||||
// "不可以选择该车道",
|
||||
// "直行+左转+左掉头车道",
|
||||
// "右转+左掉头",
|
||||
// "左转+右转+左掉头",
|
||||
// "直行+右转+左掉头",
|
||||
// "左转+右掉头",
|
||||
// "公交车道",
|
||||
// "空车道",
|
||||
// "可变车道"
|
||||
// )
|
||||
|
||||
// var actions = arrayOf(
|
||||
// "直行",
|
||||
// "左转",
|
||||
// "左转或直行",
|
||||
// "右转",
|
||||
// "右转或这行",
|
||||
// "左掉头",
|
||||
// "左转或者右转",
|
||||
// " 左转或右转或直行",
|
||||
// "右转掉头",
|
||||
// "直行或左转掉头",
|
||||
// "直行或右转掉头",
|
||||
// "左转或左掉头",
|
||||
// "右转或右掉头",
|
||||
// "直行并且车道扩展",
|
||||
// "左转+左掉头+扩展",
|
||||
// "不可以选择",
|
||||
// "直行+左转+左掉头",
|
||||
// "右转+左掉头",
|
||||
// "左转+右转+左掉头",
|
||||
// "直行+右转+左掉头",
|
||||
// "左转+右掉头",
|
||||
// "公交车道",
|
||||
// "空车道",
|
||||
// "可变车道"
|
||||
// )
|
||||
}
|
||||
@@ -737,7 +737,7 @@ object CoordinateCalculateRouteUtil {
|
||||
}
|
||||
|
||||
// 最近点中包含上次计算的点和上次计算的最近的一个点
|
||||
if(distanceMap.containsValue(preIndex)&&distanceMap.containsValue(preIndex+1)){
|
||||
if(distanceMap.containsValue(preIndex)&&distanceMap.containsValue(preIndex+1)&&type==1){
|
||||
var preIndexDistance:DistanceDegree?=null
|
||||
var preIndexNextDistance:DistanceDegree?=null
|
||||
distanceMap.iterator().forEach { en ->
|
||||
@@ -771,7 +771,7 @@ object CoordinateCalculateRouteUtil {
|
||||
distanceMap.clear()
|
||||
Logger.d(SceneConstant.M_OCHCOMMON + "calculateRouteSumLength",
|
||||
"计算时间:${startTime-System.currentTimeMillis()}")
|
||||
return Triple(currentIndex,preIndexNextDistance?.isNext,preIndexNextDistance!!.distance)
|
||||
return Triple(currentIndex,preIndexNextDistance?.isNext,preIndexNextDistance!!.distance)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -823,7 +823,7 @@ object CoordinateCalculateRouteUtil {
|
||||
val key = en.key
|
||||
val value = en.value
|
||||
// 排除没有第一个值0是
|
||||
if(value==preIndex+1&&preIndex!=0){
|
||||
if(value==preIndex+1&&preIndex!=0&&type==1){
|
||||
currentIndex = value
|
||||
val iterator1 = distanceMap.iterator()
|
||||
while (iterator1.hasNext()) {
|
||||
|
||||
@@ -35,11 +35,7 @@ public class DateTimeUtil {
|
||||
public static boolean compareDateIsCurrentDay(Calendar targetCalendar){
|
||||
Calendar currentCale = DateTimeUtils.getCurrentDateTime();
|
||||
String currentDay = formatCalendarToString(currentCale, yyyy_MM_dd);
|
||||
if (currentDay.equals(formatCalendarToString(targetCalendar, yyyy_MM_dd))){
|
||||
return true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
return currentDay.equals(formatCalendarToString(targetCalendar, yyyy_MM_dd));
|
||||
}
|
||||
|
||||
public static Calendar formatLongToCalendar(long time){
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
package com.mogo.och.common.module.utils
|
||||
|
||||
/**
|
||||
* @author aibingbing
|
||||
* @date: 2023/9/13
|
||||
* @desc Flow Bus
|
||||
*/
|
||||
import android.util.Log
|
||||
import androidx.lifecycle.*
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.channels.BufferOverflow
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
/**
|
||||
* FlowBus消息总线
|
||||
*/
|
||||
object FlowBus {
|
||||
private const val TAG = "FlowBus"
|
||||
private val busMap = mutableMapOf<String, EventBus<*>>()
|
||||
private val busStickMap = mutableMapOf<String, StickEventBus<*>>()
|
||||
|
||||
@Synchronized
|
||||
fun <T> with(key: String): EventBus<T> {
|
||||
var eventBus = busMap[key]
|
||||
if (eventBus == null) {
|
||||
eventBus = EventBus<T>(key)
|
||||
busMap[key] = eventBus
|
||||
}
|
||||
return eventBus as EventBus<T>
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun <T> withStick(key: String): StickEventBus<T> {
|
||||
var eventBus = busStickMap[key]
|
||||
if (eventBus == null) {
|
||||
eventBus = StickEventBus<T>(key)
|
||||
busStickMap[key] = eventBus
|
||||
}
|
||||
return eventBus as StickEventBus<T>
|
||||
}
|
||||
|
||||
//真正实现类
|
||||
open class EventBus<T>(private val key: String) : LifecycleObserver {
|
||||
|
||||
//私有对象用于发送消息
|
||||
private val _events: MutableSharedFlow<T> by lazy {
|
||||
obtainEvent()
|
||||
}
|
||||
|
||||
//暴露的公有对象用于接收消息
|
||||
private val events = _events.asSharedFlow()
|
||||
|
||||
open fun obtainEvent(): MutableSharedFlow<T> =
|
||||
MutableSharedFlow(0, 1, BufferOverflow.DROP_OLDEST)
|
||||
|
||||
//主线程接收数据
|
||||
fun register(lifecycleOwner: LifecycleOwner, action: (t: T) -> Unit) {
|
||||
lifecycleOwner.lifecycle.addObserver(this)
|
||||
lifecycleOwner.lifecycleScope.launch {
|
||||
events.collect {
|
||||
try {
|
||||
action(it)
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
Log.e(TAG, "FlowBus - Error:$e")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//协程中发送数据
|
||||
suspend fun post(event: T) {
|
||||
_events.emit(event)
|
||||
}
|
||||
|
||||
//主线程发送数据
|
||||
fun post(scope: CoroutineScope, event: T) {
|
||||
scope.launch {
|
||||
_events.emit(event)
|
||||
}
|
||||
}
|
||||
|
||||
//自动销毁
|
||||
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
|
||||
fun onDestroy() {
|
||||
Log.w(TAG, "FlowBus - 自动onDestroy")
|
||||
val subscriptCount = _events.subscriptionCount.value
|
||||
if (subscriptCount <= 0)
|
||||
busMap.remove(key)
|
||||
}
|
||||
}
|
||||
|
||||
class StickEventBus<T>(key: String) : EventBus<T>(key) {
|
||||
override fun obtainEvent(): MutableSharedFlow<T> =
|
||||
MutableSharedFlow(1, 1, BufferOverflow.DROP_OLDEST)
|
||||
}
|
||||
}
|
||||
@@ -7,9 +7,10 @@ import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.widget.ImageView
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import java.lang.RuntimeException
|
||||
import java.lang.ref.SoftReference
|
||||
|
||||
class FrameAnimatorContainer (resId: Int, fps: Int, imageView: ImageView,initFirstFrame:Boolean = true){
|
||||
class FrameAnimatorContainer (resId: Int, fps: Int, imageView: ImageView,initFirstFrame:Boolean = true,width:Int = -1,height:Int = -1){
|
||||
private lateinit var mFrames: IntArray // 帧数组
|
||||
private var mIndex = 0 // 当前帧
|
||||
private var mShouldRun = false // 开始/停止播放用
|
||||
@@ -22,10 +23,17 @@ class FrameAnimatorContainer (resId: Int, fps: Int, imageView: ImageView,initFir
|
||||
private var mBitmapOptions: BitmapFactory.Options? = null //Bitmap管理类,可有效减少Bitmap的OOM问题
|
||||
|
||||
init {
|
||||
createAnimation(imageView, getData(resId), fps,initFirstFrame)
|
||||
createAnimation(imageView, getData(resId), fps,initFirstFrame,width,height)
|
||||
}
|
||||
|
||||
private fun createAnimation(imageView: ImageView, frames: IntArray, fps: Int, initFirstFrame:Boolean) {
|
||||
private fun createAnimation(
|
||||
imageView: ImageView,
|
||||
frames: IntArray,
|
||||
fps: Int,
|
||||
initFirstFrame: Boolean,
|
||||
width: Int,
|
||||
height: Int
|
||||
) {
|
||||
mHandler = Handler(Looper.myLooper()!!)
|
||||
mFrames = frames
|
||||
mIndex = -1
|
||||
@@ -36,13 +44,25 @@ class FrameAnimatorContainer (resId: Int, fps: Int, imageView: ImageView,initFir
|
||||
if(initFirstFrame) {
|
||||
imageView.setImageResource(mFrames[0])
|
||||
}
|
||||
|
||||
var widthImage = -1
|
||||
var heightImage = -1
|
||||
var config = Bitmap.Config.ARGB_8888
|
||||
if(width>0&&height>0){
|
||||
widthImage = width
|
||||
heightImage = height
|
||||
}else{
|
||||
try {
|
||||
val bmp = (imageView.drawable as BitmapDrawable).bitmap
|
||||
widthImage = bmp.width
|
||||
heightImage = bmp.height
|
||||
config = bmp.config
|
||||
}catch (e:Exception){
|
||||
throw RuntimeException("请设置图片或传递大小")
|
||||
}
|
||||
}
|
||||
// 当图片大小类型相同时进行复用,避免频繁GC
|
||||
val bmp = (imageView.drawable as BitmapDrawable).bitmap
|
||||
val width = bmp.width
|
||||
val height = bmp.height
|
||||
val config = bmp.config
|
||||
mBitmap = Bitmap.createBitmap(width, height, config)
|
||||
|
||||
mBitmap = Bitmap.createBitmap(widthImage, heightImage, config)
|
||||
mBitmapOptions = BitmapFactory.Options()
|
||||
//设置Bitmap内存复用
|
||||
mBitmapOptions!!.inBitmap = mBitmap //Bitmap复用内存块,类似对象池,避免不必要的内存分配和回收
|
||||
@@ -121,6 +141,10 @@ class FrameAnimatorContainer (resId: Int, fps: Int, imageView: ImageView,initFir
|
||||
mShouldRun = false
|
||||
}
|
||||
|
||||
fun isPlaying():Boolean{
|
||||
return mShouldRun
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置停止播放监听
|
||||
* @param listener 设置监听
|
||||
|
||||
@@ -36,12 +36,11 @@ object RxUtils {
|
||||
}
|
||||
}
|
||||
|
||||
fun isDisposed(disposable: Disposable?):Boolean{
|
||||
if(disposable!=null){
|
||||
return true
|
||||
fun isNotDisposed(disposable: Disposable?):Boolean{
|
||||
if(disposable==null){
|
||||
return false
|
||||
}
|
||||
|
||||
return false
|
||||
return !disposable.isDisposed
|
||||
}
|
||||
|
||||
// 调用Disposable.dispose() 时候会出现InterruptedException 导致出现崩溃
|
||||
|
||||
@@ -0,0 +1,148 @@
|
||||
package com.mogo.och.common.module.wigets
|
||||
|
||||
import android.os.CountDownTimer
|
||||
import android.util.Log
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
* @date: 2023/9/18
|
||||
* 支持pause的倒计时, 由CountDownTimer实现的,
|
||||
* 注意CountdownTimer的源码,start(),pause(),cancel()方法都是用message和handler实现的
|
||||
* 如果是在子线程中执行,要加调用Looper.prepare()及Looper.loop()
|
||||
* 或者是使用 runOnMainThread 使其在主线程中执行
|
||||
**/
|
||||
abstract class CountDownTimerExt(
|
||||
private var millisInFuture: Long,
|
||||
/**
|
||||
* 间隔
|
||||
*/
|
||||
private var mInterval: Long
|
||||
) {
|
||||
/**
|
||||
* 倒计时实现类
|
||||
*/
|
||||
private var countDownTimer: CountDownTimer? = null
|
||||
private var isTimerPaused = true
|
||||
var remainingTime: Long
|
||||
|
||||
/**
|
||||
* @param millisInFutureIn 总时长
|
||||
* @param interval onTick间隔
|
||||
*/
|
||||
init {
|
||||
remainingTime = millisInFuture
|
||||
}
|
||||
|
||||
fun start() {
|
||||
startIt(remainingTime, mInterval)
|
||||
}
|
||||
|
||||
fun start(millisInFutureIn: Long, remainingTimeIn: Long, interval: Long) {
|
||||
millisInFuture = millisInFutureIn
|
||||
remainingTime = remainingTimeIn
|
||||
mInterval = interval
|
||||
start()
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun startIt(millisInFutureIn: Long, interval: Long) {
|
||||
remainingTime = millisInFutureIn
|
||||
mInterval = interval
|
||||
if (millisInFuture > 0L && interval > 0L) {
|
||||
if (!isTimerPaused) {
|
||||
// 有运行中的先stop
|
||||
stop()
|
||||
}
|
||||
if (isTimerPaused) {
|
||||
// 有暂停或未运行的,创建CountDownTimer实现, 确保运行在主线程
|
||||
countDownTimer = object : CountDownTimer(remainingTime, mInterval) {
|
||||
override fun onFinish() {
|
||||
onTimerFinish()
|
||||
stop()
|
||||
}
|
||||
|
||||
override fun onTick(millisUntilFinished: Long) {
|
||||
// 这里会记录剩余的时长保存到remainingTime, 方便暂停后能再恢复
|
||||
remainingTime = millisUntilFinished
|
||||
onTimerTick(millisUntilFinished)
|
||||
}
|
||||
}
|
||||
try {
|
||||
countDownTimer?.start()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
isTimerPaused = false
|
||||
} else {
|
||||
Log.d(TAG, "ignore start")
|
||||
}
|
||||
} else {
|
||||
Log.d(TAG, "invalid parameter")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 停止
|
||||
*/
|
||||
fun stop() {
|
||||
try {
|
||||
countDownTimer?.cancel()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
isTimerPaused = true
|
||||
remainingTime = millisInFuture
|
||||
}
|
||||
|
||||
/**
|
||||
* 暂停
|
||||
*/
|
||||
fun pause() {
|
||||
if (!isTimerPaused) {
|
||||
try {
|
||||
countDownTimer?.cancel()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
isTimerPaused = true
|
||||
onTimerPause()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 恢复
|
||||
*/
|
||||
fun resume() {
|
||||
if (!isRunning) {
|
||||
// 通过remainingTime得到剩余的时长
|
||||
startIt(remainingTime, mInterval)
|
||||
onTimerResume(remainingTime)
|
||||
}
|
||||
}
|
||||
|
||||
private val isRunning: Boolean
|
||||
/**
|
||||
* 运行中
|
||||
* @return
|
||||
*/
|
||||
get() = !isTimerPaused
|
||||
|
||||
/**
|
||||
* 每次触发倒计时回调
|
||||
* @param value
|
||||
*/
|
||||
abstract fun onTimerTick(value: Long)
|
||||
|
||||
/**
|
||||
* 倒计时完成回调
|
||||
*/
|
||||
abstract fun onTimerFinish()
|
||||
|
||||
abstract fun onTimerPause()
|
||||
|
||||
abstract fun onTimerResume(remainingTime: Long)
|
||||
|
||||
companion object {
|
||||
private const val TAG = "CountDownTimerExt"
|
||||
}
|
||||
}
|
||||
@@ -32,10 +32,13 @@ class StartAutopilotAnimationView @JvmOverloads constructor(
|
||||
private const val TAG = "StartAutopilotAnimationView"
|
||||
}
|
||||
|
||||
private var startTimer: CountDownTimer? = null
|
||||
private var startTimer: CountDownTimerExt? = null
|
||||
private val mContext: Context
|
||||
private var mTimerListener: AnimationViewTimerListener? = null
|
||||
|
||||
private val closeWarningTask: Runnable = Runnable {
|
||||
//开始倒计时
|
||||
countDownTimer()
|
||||
showWarning(DirectionEnum.ALERT_WARNING_NON)
|
||||
}
|
||||
|
||||
@@ -58,17 +61,36 @@ class StartAutopilotAnimationView @JvmOverloads constructor(
|
||||
super.onAttachedToWindow()
|
||||
}
|
||||
|
||||
fun show(direction: DirectionEnum, time: Long) {
|
||||
fun show(direction: DirectionEnum, time: Long,listener: AnimationViewTimerListener) {
|
||||
mTimerListener = listener
|
||||
//开始倒计时
|
||||
countDownTimer()
|
||||
showWarning(direction, time)
|
||||
}
|
||||
|
||||
fun pause(){
|
||||
pauseWarning()
|
||||
}
|
||||
|
||||
private fun pauseWarning() {
|
||||
startTimer?.pause()
|
||||
}
|
||||
|
||||
fun resume(){
|
||||
resumeWarning()
|
||||
}
|
||||
|
||||
private fun resumeWarning() {
|
||||
startTimer?.resume()
|
||||
}
|
||||
|
||||
fun dismiss(direction: DirectionEnum) {
|
||||
dismissWarning(direction)
|
||||
cancelCountdown()
|
||||
}
|
||||
|
||||
fun cancelCountdown(){ //防止内存泄漏
|
||||
startTimer?.cancel()
|
||||
startTimer?.stop()
|
||||
startTimer = null
|
||||
}
|
||||
|
||||
@@ -78,8 +100,6 @@ class StartAutopilotAnimationView @JvmOverloads constructor(
|
||||
* @see WarningDirectionEnum
|
||||
*/
|
||||
private fun showWarning(direction: DirectionEnum, time: Long = ALL_CLOSE_TIMER) {
|
||||
//开始倒计时
|
||||
countDownTimer()
|
||||
|
||||
// 如果传入的不是关闭显示,则设置倒计时,定时关闭红框警示
|
||||
if (oldDirection.get() == direction) {
|
||||
@@ -131,6 +151,26 @@ class StartAutopilotAnimationView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private fun pauseWarning(direction: DirectionEnum) {
|
||||
if (direction == DirectionEnum.ALERT_WARNING_NON) {
|
||||
return
|
||||
}
|
||||
removeCallbacks(closeWarningTask)
|
||||
post {
|
||||
when (direction) {
|
||||
DirectionEnum.ALERT_WARNING_TOP -> {
|
||||
startAutopilotTipImg.visibility = View.VISIBLE
|
||||
startAutopilotTip.visibility = View.VISIBLE
|
||||
}
|
||||
else -> {
|
||||
CallerLogger.d("$M_HMI$TAG", "Not Support Direction")
|
||||
}
|
||||
}
|
||||
clearAnimation()
|
||||
this.oldDirection.set(null)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
}
|
||||
@@ -148,21 +188,37 @@ class StartAutopilotAnimationView @JvmOverloads constructor(
|
||||
|
||||
startAutopilotTip.visibility = VISIBLE
|
||||
|
||||
startTimer = object : CountDownTimer(ALL_CLOSE_TIMER, 1000L) {// 5倒计时后开启自驾
|
||||
startTimer = object : CountDownTimerExt(ALL_CLOSE_TIMER, 1000L) {// 5倒计时后开启自驾
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
override fun onTick(millisUntilFinished: Long) {
|
||||
override fun onTimerTick(value: Long) {
|
||||
// 倒计时
|
||||
UiThreadHandler.post {
|
||||
startAutopilotTip.text = "${(millisUntilFinished/1000).toInt()} 车辆即将自动开启自动驾驶"
|
||||
startAutopilotTip.text = "${(value/1000).toInt()} 车辆即将自动开启自动驾驶"
|
||||
}
|
||||
playDI()
|
||||
}
|
||||
|
||||
override fun onFinish() {
|
||||
override fun onTimerFinish() {
|
||||
//倒计时结束了...
|
||||
UiThreadHandler.post {
|
||||
startAutopilotTip.text = "车辆正在自动开启自动驾驶"
|
||||
dismiss(DirectionEnum.ALERT_WARNING_TOP)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onTimerPause() {
|
||||
//倒计时暂停
|
||||
UiThreadHandler.post {
|
||||
pauseWarning(DirectionEnum.ALERT_WARNING_TOP)
|
||||
mTimerListener?.onTimerPause()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onTimerResume(remainingTime: Long) {
|
||||
//倒计时继续对动画UI处理
|
||||
UiThreadHandler.post {
|
||||
showWarning(DirectionEnum.ALERT_WARNING_TOP, remainingTime)
|
||||
mTimerListener?.onTimerResume(remainingTime)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -170,4 +226,9 @@ class StartAutopilotAnimationView @JvmOverloads constructor(
|
||||
startTimer?.start()
|
||||
}
|
||||
|
||||
interface AnimationViewTimerListener{
|
||||
fun onTimerResume(remainingTime: Long)
|
||||
|
||||
fun onTimerPause()
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.mogo.och.common.module
|
||||
|
||||
import com.mogo.eagle.core.utilcode.util.CoordinateTransform
|
||||
import com.zhidao.thirdlogin.utils.Aes
|
||||
import org.junit.Assert.*
|
||||
import org.junit.Test
|
||||
@@ -20,4 +21,621 @@ class ExampleUnitTest {
|
||||
val encrypt: String = Aes.encrypt(json, KEY, IVS, "UTF-8")
|
||||
println(encrypt)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun resetData(){
|
||||
val mutableListOf = mutableListOf<Data>()
|
||||
mutableListOf.add(Data(26.81618164239085,112.58250175297606,55.55709771386404 ,0.046407543))
|
||||
mutableListOf.add(Data(26.81618164239085,112.58250175297606,55.55709771386404 ,0.046407543))
|
||||
mutableListOf.add(Data(26.81618164239085,112.58250175297606,55.55709771386404 ,0.046407543))
|
||||
mutableListOf.add(Data(26.816181808122355,112.58250217912767,55.5367232595699 ,0.024934836))
|
||||
mutableListOf.add(Data(26.81618188427374,112.58250252407656,55.47659710430628 ,-0.0031026027))
|
||||
mutableListOf.add(Data(26.816182627199186,112.58250389674681,55.30434314853312 ,0.56499475))
|
||||
mutableListOf.add(Data(26.81619347196081,112.5825216510838,54.429112463003946 ,3.3143053))
|
||||
mutableListOf.add(Data(26.816212952303637,112.58255186583256,53.611788121258144 ,4.1918964))
|
||||
mutableListOf.add(Data(26.816239753303016,112.5825918107494,52.81322630916236 ,6.0459743))
|
||||
mutableListOf.add(Data(26.81627681379391,112.58264625538742,52.33910872792592 ,7.5077167))
|
||||
mutableListOf.add(Data(26.81632000870642,112.58270715442146,51.45473583419266 ,8.213942))
|
||||
mutableListOf.add(Data(26.816367868569504,112.58277449458916,51.894186790296715 ,9.117803))
|
||||
mutableListOf.add(Data(26.816419772705085,112.58284877034309,52.35565486119026 ,9.915305))
|
||||
mutableListOf.add(Data(26.816475594914255,112.58292938397568,52.452862113457854 ,10.67503))
|
||||
mutableListOf.add(Data(26.816535811576774,112.58301559606879,52.43356682905261 ,11.37326))
|
||||
mutableListOf.add(Data(26.816598457679355,112.5831078725796,53.85711144077209 ,11.978908))
|
||||
mutableListOf.add(Data(26.816662027735013,112.58320692287296,55.32445805563884 ,12.534072))
|
||||
mutableListOf.add(Data(26.816726886660476,112.58331188364737,55.79882835387457 ,13.077099))
|
||||
mutableListOf.add(Data(26.816726886660476,112.58331188364737,55.79882835387457 ,13.077099))
|
||||
mutableListOf.add(Data(26.816793247443773,112.58341938436075,55.82383367642598 ,13.111888))
|
||||
mutableListOf.add(Data(26.816793247443773,112.58341938436075,55.82383367642598 ,13.111888))
|
||||
mutableListOf.add(Data(26.816860045545038,112.5835283980739,55.95009655342284 ,13.205783))
|
||||
mutableListOf.add(Data(26.816860045545038,112.5835283980739,55.95009655342284 ,13.205783))
|
||||
mutableListOf.add(Data(26.816925196446753,112.58363575353036,56.266921708263055 ,12.377544))
|
||||
mutableListOf.add(Data(26.816925196446753,112.58363575353036,56.266921708263055 ,12.377544))
|
||||
mutableListOf.add(Data(26.8169850300721,112.58373523649801,56.48836327134404 ,11.37828))
|
||||
mutableListOf.add(Data(26.8169850300721,112.58373523649801,56.48836327134404 ,11.37828))
|
||||
mutableListOf.add(Data(26.817037934280332,112.58382376359087,56.24827187673429 ,9.676991))
|
||||
mutableListOf.add(Data(26.817037934280332,112.58382376359087,56.24827187673429 ,9.676991))
|
||||
mutableListOf.add(Data(26.817083166151374,112.5838975695181,55.88718368097784 ,7.9715595))
|
||||
mutableListOf.add(Data(26.817083166151374,112.5838975695181,55.88718368097784 ,7.9715595))
|
||||
mutableListOf.add(Data(26.817119554569622,112.58395525826116,54.790292866314246 ,5.8003225))
|
||||
mutableListOf.add(Data(26.817119554569622,112.58395525826116,54.790292866314246 ,5.8003225))
|
||||
mutableListOf.add(Data(26.817140378417207,112.58398757091575,54.00168947002834 ,2.0236187))
|
||||
mutableListOf.add(Data(26.817140378417207,112.58398757091575,54.00168947002834 ,2.0236187))
|
||||
mutableListOf.add(Data(26.817143666977085,112.58399300744259,53.873008706065264 ,0.072262354))
|
||||
mutableListOf.add(Data(26.817143666977085,112.58399300744259,53.873008706065264 ,0.072262354))
|
||||
mutableListOf.add(Data(26.81714331006102,112.58399316177113,53.87228129091869 ,0.0019371088))
|
||||
mutableListOf.add(Data(26.81714331006102,112.58399316177113,53.87228129091869 ,0.0019371088))
|
||||
mutableListOf.add(Data(26.81714313768666,112.58399312891899,53.870710347409556 ,-0.0011951944))
|
||||
mutableListOf.add(Data(26.81714313768666,112.58399312891899,53.870710347409556 ,-0.0011951944))
|
||||
mutableListOf.add(Data(26.81714315453284,112.58399311449793,53.86844272460513 ,-0.0039134827))
|
||||
mutableListOf.add(Data(26.81714315453284,112.58399311449793,53.86844272460513 ,-0.0039134827))
|
||||
mutableListOf.add(Data(26.817143235978477,112.5839931065896,53.868674951036894 ,0.009990219))
|
||||
mutableListOf.add(Data(26.817143235978477,112.5839931065896,53.868674951036894 ,0.009990219))
|
||||
mutableListOf.add(Data(26.8171432379633,112.58399311184859,53.86787240380943 ,0.0057474226))
|
||||
mutableListOf.add(Data(26.8171432379633,112.58399311184859,53.86787240380943 ,0.0057474226))
|
||||
mutableListOf.add(Data(26.817143234431487,112.58399311556684,53.868285630254206 ,0.0053468696))
|
||||
mutableListOf.add(Data(26.817143234431487,112.58399311556684,53.868285630254206 ,0.0053468696))
|
||||
mutableListOf.add(Data(26.81714323875891,112.5839931259286,53.867687988701846 ,0.008409082))
|
||||
mutableListOf.add(Data(26.81714323875891,112.5839931259286,53.867687988701846 ,0.008409082))
|
||||
mutableListOf.add(Data(26.817143254507762,112.58399313934659,53.86896181898203 ,0.008529294))
|
||||
mutableListOf.add(Data(26.817143254507762,112.58399313934659,53.86896181898203 ,0.008529294))
|
||||
mutableListOf.add(Data(26.817143260063123,112.58399314333123,53.865194969654794 ,0.0053140023))
|
||||
mutableListOf.add(Data(26.817143260063123,112.58399314333123,53.865194969654794 ,0.0053140023))
|
||||
mutableListOf.add(Data(26.81714326019063,112.58399314732564,53.868613479334385 ,0.0040332223))
|
||||
mutableListOf.add(Data(26.81714326019063,112.58399314732564,53.868613479334385 ,0.0040332223))
|
||||
mutableListOf.add(Data(26.81714326984717,112.5839931502497,53.869293083156776 ,0.0050935512))
|
||||
mutableListOf.add(Data(26.81714326984717,112.5839931502497,53.869293083156776 ,0.0050935512))
|
||||
mutableListOf.add(Data(26.817143276924913,112.5839931598786,53.87102112101678 ,0.0051586633))
|
||||
mutableListOf.add(Data(26.817143276924913,112.5839931598786,53.87102112101678 ,0.0051586633))
|
||||
mutableListOf.add(Data(26.817143271976438,112.58399317037059,53.86838808309176 ,0.006491186))
|
||||
mutableListOf.add(Data(26.817143271976438,112.58399317037059,53.86838808309176 ,0.006491186))
|
||||
mutableListOf.add(Data(26.817143265170607,112.5839931554377,53.86955946053439 ,-0.0019018989))
|
||||
mutableListOf.add(Data(26.817143265170607,112.5839931554377,53.86955946053439 ,-0.0019018989))
|
||||
mutableListOf.add(Data(26.817143273658317,112.58399316718146,53.86821049817331 ,0.0031056462))
|
||||
mutableListOf.add(Data(26.817143273658317,112.58399316718146,53.86821049817331 ,0.0031056462))
|
||||
mutableListOf.add(Data(26.81714327261351,112.58399317389184,53.867244026405785 ,0.0022922105))
|
||||
mutableListOf.add(Data(26.81714327261351,112.58399317389184,53.867244026405785 ,0.0022922105))
|
||||
mutableListOf.add(Data(26.81714328168219,112.58399317547813,53.869750705831166 ,0.0033199964))
|
||||
mutableListOf.add(Data(26.81714328168219,112.58399317547813,53.869750705831166 ,0.0033199964))
|
||||
mutableListOf.add(Data(26.81714329830482,112.58399317974332,53.868497366118504 ,0.0036278928))
|
||||
mutableListOf.add(Data(26.81714329830482,112.58399317974332,53.868497366118504 ,0.0036278928))
|
||||
mutableListOf.add(Data(26.81714329823904,112.58399318687029,53.869549215250686 ,9.618327E-4))
|
||||
mutableListOf.add(Data(26.81714329823904,112.58399318687029,53.869549215250686 ,9.618327E-4))
|
||||
mutableListOf.add(Data(26.81714329683728,112.58399318631112,53.87207297014896 ,-3.115031E-4))
|
||||
mutableListOf.add(Data(26.81714329683728,112.58399318631112,53.87207297014896 ,-3.115031E-4))
|
||||
mutableListOf.add(Data(26.817143299098106,112.5839931844786,53.86809438495743 ,5.291645E-4))
|
||||
mutableListOf.add(Data(26.817143299098106,112.5839931844786,53.86809438495743 ,5.291645E-4))
|
||||
mutableListOf.add(Data(26.817143308731524,112.58399319567121,53.86893449822537 ,0.002943732))
|
||||
mutableListOf.add(Data(26.817143308731524,112.58399319567121,53.86893449822537 ,0.002943732))
|
||||
mutableListOf.add(Data(26.81714331310618,112.58399323023308,53.86786898871486 ,0.016370257))
|
||||
mutableListOf.add(Data(26.81714331310618,112.58399323023308,53.86786898871486 ,0.016370257))
|
||||
mutableListOf.add(Data(26.817143303931818,112.58399320624724,53.86840174347009 ,-0.0065030125))
|
||||
mutableListOf.add(Data(26.817143303931818,112.58399320624724,53.86840174347009 ,-0.0065030125))
|
||||
mutableListOf.add(Data(26.81714328119793,112.58399322107572,53.86862030952352 ,-0.0044723027))
|
||||
mutableListOf.add(Data(26.81714328119793,112.58399322107572,53.86862030952352 ,-0.0044723027))
|
||||
mutableListOf.add(Data(26.81714326726879,112.58399321507112,53.87232910224287 ,-0.0035493786))
|
||||
mutableListOf.add(Data(26.81714326726879,112.58399321507112,53.87232910224287 ,-0.0035493786))
|
||||
mutableListOf.add(Data(26.81714326952943,112.58399321006907,53.872151517324426 ,7.5540715E-4))
|
||||
mutableListOf.add(Data(26.81714326952943,112.58399321006907,53.872151517324426 ,7.5540715E-4))
|
||||
mutableListOf.add(Data(26.817143279681396,112.58399321381509,53.872574989052964 ,0.001874776))
|
||||
mutableListOf.add(Data(26.817143279681396,112.58399321381509,53.872574989052964 ,0.001874776))
|
||||
mutableListOf.add(Data(26.817143286214396,112.58399322256894,53.86990780018209 ,0.0010117635))
|
||||
mutableListOf.add(Data(26.817143286214396,112.58399322256894,53.86990780018209 ,0.0010117635))
|
||||
mutableListOf.add(Data(26.817143290166985,112.58399321948606,53.866837630150144 ,-7.378759E-4))
|
||||
mutableListOf.add(Data(26.817143290166985,112.58399321948606,53.866837630150144 ,-7.378759E-4))
|
||||
mutableListOf.add(Data(26.817143296223914,112.58399321538221,53.871697309744604 ,-7.305082E-4))
|
||||
mutableListOf.add(Data(26.817143296223914,112.58399321538221,53.871697309744604 ,-7.305082E-4))
|
||||
mutableListOf.add(Data(26.817143305406848,112.58399321633149,53.86946042279146 ,-3.4410154E-4))
|
||||
mutableListOf.add(Data(26.817143305406848,112.58399321633149,53.86946042279146 ,-3.4410154E-4))
|
||||
mutableListOf.add(Data(26.817143309674115,112.58399323304309,53.86847346045636 ,0.015301721))
|
||||
mutableListOf.add(Data(26.817143309674115,112.58399323304309,53.86847346045636 ,0.015301721))
|
||||
mutableListOf.add(Data(26.817143300633735,112.5839932094286,53.869060856725014 ,-0.0041958815))
|
||||
mutableListOf.add(Data(26.817143300633735,112.5839932094286,53.869060856725014 ,-0.0041958815))
|
||||
mutableListOf.add(Data(26.81714329175772,112.58399321172573,53.868623724618146 ,-0.0041520167))
|
||||
mutableListOf.add(Data(26.81714329175772,112.58399321172573,53.868623724618146 ,-0.0041520167))
|
||||
mutableListOf.add(Data(26.81714327175831,112.58399320571804,53.867769950971876 ,-0.003427676))
|
||||
mutableListOf.add(Data(26.81714327175831,112.58399320571804,53.867769950971876 ,-0.003427676))
|
||||
mutableListOf.add(Data(26.81714327419855,112.58399319974227,53.86951164921021 ,1.3224973E-4))
|
||||
mutableListOf.add(Data(26.81714327419855,112.58399319974227,53.86951164921021 ,1.3224973E-4))
|
||||
mutableListOf.add(Data(26.817143286280604,112.58399319410101,53.86864421518561 ,0.0014093047))
|
||||
mutableListOf.add(Data(26.817143286280604,112.58399319410101,53.86864421518561 ,0.0014093047))
|
||||
mutableListOf.add(Data(26.817143301517042,112.58399319617503,53.869972686979224 ,0.0021324877))
|
||||
mutableListOf.add(Data(26.817143301517042,112.58399319617503,53.869972686979224 ,0.0021324877))
|
||||
mutableListOf.add(Data(26.81714329786978,112.58399320422272,53.87138653613738 ,5.9873355E-4))
|
||||
mutableListOf.add(Data(26.81714329786978,112.58399320422272,53.87138653613738 ,5.9873355E-4))
|
||||
mutableListOf.add(Data(26.817143290263108,112.58399320768578,53.868603234050624 ,-9.5163955E-4))
|
||||
mutableListOf.add(Data(26.817143290263108,112.58399320768578,53.868603234050624 ,-9.5163955E-4))
|
||||
mutableListOf.add(Data(26.81714330007566,112.58399319077888,53.8673567245271 ,-0.0016809735))
|
||||
mutableListOf.add(Data(26.81714330007566,112.58399319077888,53.8673567245271 ,-0.0016809735))
|
||||
mutableListOf.add(Data(26.81714331779051,112.58399320175057,53.86782459248525 ,0.013873377))
|
||||
mutableListOf.add(Data(26.81714331779051,112.58399320175057,53.86782459248525 ,0.013873377))
|
||||
mutableListOf.add(Data(26.81714331797703,112.58399319152798,53.86942285675099 ,-2.5552226E-4))
|
||||
mutableListOf.add(Data(26.81714331797703,112.58399319152798,53.86942285675099 ,-2.5552226E-4))
|
||||
mutableListOf.add(Data(26.817143301371033,112.58399320407928,53.87041323418066 ,-0.0022770471))
|
||||
mutableListOf.add(Data(26.817143301371033,112.58399320407928,53.87041323418066 ,-0.0022770471))
|
||||
mutableListOf.add(Data(26.817143286827157,112.58399319804838,53.869573120912776 ,-0.0025196006))
|
||||
mutableListOf.add(Data(26.817143286827157,112.58399319804838,53.869573120912776 ,-0.0025196006))
|
||||
mutableListOf.add(Data(26.81714328572524,112.58399318869752,53.87063521532872 ,-0.0016185519))
|
||||
mutableListOf.add(Data(26.81714328572524,112.58399318869752,53.87063521532872 ,-0.0016185519))
|
||||
mutableListOf.add(Data(26.817143275344343,112.58399317613704,53.87387955518443 ,-0.0021576409))
|
||||
mutableListOf.add(Data(26.817143275344343,112.58399317613704,53.87387955518443 ,-0.0021576409))
|
||||
mutableListOf.add(Data(26.817143275161378,112.58399317311375,53.86929991334597 ,0.001371147))
|
||||
mutableListOf.add(Data(26.817143275161378,112.58399317311375,53.86929991334597 ,0.001371147))
|
||||
mutableListOf.add(Data(26.817143281394475,112.58399317503098,53.86759919624262 ,0.003383463))
|
||||
mutableListOf.add(Data(26.817143281394475,112.58399317503098,53.86759919624262 ,0.003383463))
|
||||
mutableListOf.add(Data(26.81714327190517,112.58399318157332,53.86734306414877 ,8.065918E-4))
|
||||
mutableListOf.add(Data(26.81714327190517,112.58399318157332,53.86734306414877 ,8.065918E-4))
|
||||
mutableListOf.add(Data(26.817143260932923,112.58399316911094,53.86561844138333 ,-0.0014197703))
|
||||
mutableListOf.add(Data(26.817143260932923,112.58399316911094,53.86561844138333 ,-0.0014197703))
|
||||
mutableListOf.add(Data(26.817143261387983,112.58399316238105,53.868347101956715 ,0.0043071667))
|
||||
mutableListOf.add(Data(26.817143261387983,112.58399316238105,53.868347101956715 ,0.0043071667))
|
||||
mutableListOf.add(Data(26.817143256717934,112.58399314806874,53.870990385165555 ,-0.0019511797))
|
||||
mutableListOf.add(Data(26.817143256717934,112.58399314806874,53.870990385165555 ,-0.0019511797))
|
||||
mutableListOf.add(Data(26.81714325591799,112.58399315517725,53.86898572464412 ,0.0018099692))
|
||||
mutableListOf.add(Data(26.81714325591799,112.58399315517725,53.86898572464412 ,0.0018099692))
|
||||
mutableListOf.add(Data(26.817143252240935,112.58399316638,53.86619559236817 ,0.021292992))
|
||||
mutableListOf.add(Data(26.817143252240935,112.58399316638,53.86619559236817 ,0.021292992))
|
||||
mutableListOf.add(Data(26.81714402042069,112.583994386207,53.845687949385194 ,0.3348555))
|
||||
mutableListOf.add(Data(26.81714402042069,112.583994386207,53.845687949385194 ,0.3348555))
|
||||
mutableListOf.add(Data(26.817147405726278,112.58399956299603,53.73888769642832 ,0.9280623))
|
||||
mutableListOf.add(Data(26.817147405726278,112.58399956299603,53.73888769642832 ,0.9280623))
|
||||
mutableListOf.add(Data(26.817153799651898,112.58400914360494,53.58582657222291 ,1.4668413))
|
||||
mutableListOf.add(Data(26.817153799651898,112.58400914360494,53.58582657222291 ,1.4668413))
|
||||
mutableListOf.add(Data(26.81716245692801,112.58402187641425,52.39904705298733 ,1.690717))
|
||||
mutableListOf.add(Data(26.81716245692801,112.58402187641425,52.39904705298733 ,1.690717))
|
||||
mutableListOf.add(Data(26.817175410421267,112.58403959295411,49.84256188816494 ,3.0424085))
|
||||
mutableListOf.add(Data(26.817175410421267,112.58403959295411,49.84256188816494 ,3.0424085))
|
||||
mutableListOf.add(Data(26.817198616464147,112.58406783866415,45.33429552649801 ,4.4409986))
|
||||
mutableListOf.add(Data(26.817198616464147,112.58406783866415,45.33429552649801 ,4.4409986))
|
||||
mutableListOf.add(Data(26.81723059837678,112.58410013682379,39.67851981822855 ,5.031896))
|
||||
mutableListOf.add(Data(26.81723059837678,112.58410013682379,39.67851981822855 ,5.031896))
|
||||
mutableListOf.add(Data(26.81726793050972,112.58413123275119,33.760215543925824 ,5.287935))
|
||||
mutableListOf.add(Data(26.81726793050972,112.58413123275119,33.760215543925824 ,5.287935))
|
||||
mutableListOf.add(Data(26.817309703482323,112.58415777616139,26.470805435256466 ,5.290117))
|
||||
mutableListOf.add(Data(26.817309703482323,112.58415777616139,26.470805435256466 ,5.290117))
|
||||
mutableListOf.add(Data(26.8173539472737,112.5841781084828,19.413027531909677 ,5.2572174))
|
||||
mutableListOf.add(Data(26.8173539472737,112.5841781084828,19.413027531909677 ,5.2572174))
|
||||
mutableListOf.add(Data(26.81739827838705,112.58419180114795,10.869089257627422 ,5.054635))
|
||||
mutableListOf.add(Data(26.81739827838705,112.58419180114795,10.869089257627422 ,5.054635))
|
||||
mutableListOf.add(Data(26.817444316263447,112.58419779782906,1.290097286332184 ,5.1018424))
|
||||
mutableListOf.add(Data(26.817444316263447,112.58419779782906,1.290097286332184 ,5.1018424))
|
||||
mutableListOf.add(Data(26.81748941065244,112.5841957020102,351.87250951531354 ,4.951452))
|
||||
mutableListOf.add(Data(26.81748941065244,112.5841957020102,351.87250951531354 ,4.951452))
|
||||
mutableListOf.add(Data(26.817532025152016,112.58418464321606,343.08161892140026 ,4.856119))
|
||||
mutableListOf.add(Data(26.817532025152016,112.58418464321606,343.08161892140026 ,4.856119))
|
||||
mutableListOf.add(Data(26.817574411658125,112.58416696887566,337.3830350025077 ,5.0693793))
|
||||
mutableListOf.add(Data(26.817574411658125,112.58416696887566,337.3830350025077 ,5.0693793))
|
||||
mutableListOf.add(Data(26.817616516674775,112.58414506934275,332.70868576098275 ,5.4740086))
|
||||
mutableListOf.add(Data(26.817616516674775,112.58414506934275,332.70868576098275 ,5.4740086))
|
||||
mutableListOf.add(Data(26.81766656685223,112.58411337464841,328.82325068935097 ,7.248267))
|
||||
mutableListOf.add(Data(26.81766656685223,112.58411337464841,328.82325068935097 ,7.248267))
|
||||
mutableListOf.add(Data(26.81772616620445,112.58407132315536,327.0345880702647 ,8.242281))
|
||||
mutableListOf.add(Data(26.81772616620445,112.58407132315536,327.0345880702647 ,8.242281))
|
||||
mutableListOf.add(Data(26.81779051965125,112.58402390325215,326.6785986107236 ,8.845384))
|
||||
mutableListOf.add(Data(26.81779051965125,112.58402390325215,326.6785986107236 ,8.845384))
|
||||
mutableListOf.add(Data(26.817859422781524,112.58397291899796,326.7608614090873 ,9.471843))
|
||||
mutableListOf.add(Data(26.817859422781524,112.58397291899796,326.7608614090873 ,9.471843))
|
||||
mutableListOf.add(Data(26.81793317211832,112.58391890295081,326.7297430672287 ,10.078002))
|
||||
mutableListOf.add(Data(26.81793317211832,112.58391890295081,326.7297430672287 ,10.078002))
|
||||
mutableListOf.add(Data(26.818011331250453,112.5838615761508,326.8077438275502 ,10.587693))
|
||||
mutableListOf.add(Data(26.818011331250453,112.5838615761508,326.8077438275502 ,10.587693))
|
||||
mutableListOf.add(Data(26.818093147121697,112.58380194228982,327.1836637790894 ,10.954674))
|
||||
mutableListOf.add(Data(26.818093147121697,112.58380194228982,327.1836637790894 ,10.954674))
|
||||
mutableListOf.add(Data(26.818176204557567,112.58374205539742,327.38030492529407 ,10.941433))
|
||||
mutableListOf.add(Data(26.818176204557567,112.58374205539742,327.38030492529407 ,10.941433))
|
||||
mutableListOf.add(Data(26.81825883397749,112.58368252714435,327.3766985854123 ,10.857093))
|
||||
mutableListOf.add(Data(26.81825883397749,112.58368252714435,327.3766985854123 ,10.857093))
|
||||
mutableListOf.add(Data(26.81834151434389,112.58362366928625,327.43886696723774 ,10.841235))
|
||||
mutableListOf.add(Data(26.81834151434389,112.58362366928625,327.43886696723774 ,10.841235))
|
||||
mutableListOf.add(Data(26.81842401797818,112.58356478174697,327.7210084214726 ,10.823341))
|
||||
mutableListOf.add(Data(26.81842401797818,112.58356478174697,327.7210084214726 ,10.823341))
|
||||
mutableListOf.add(Data(26.81850681918393,112.58350666007705,328.004174404083 ,10.829654))
|
||||
mutableListOf.add(Data(26.81850681918393,112.58350666007705,328.004174404083 ,10.829654))
|
||||
mutableListOf.add(Data(26.8185898344893,112.58344838988543,327.71930087418013 ,10.8667))
|
||||
mutableListOf.add(Data(26.8185898344893,112.58344838988543,327.71930087418013 ,10.8667))
|
||||
mutableListOf.add(Data(26.818672593565683,112.58339009877655,328.01237063108704 ,10.824985))
|
||||
mutableListOf.add(Data(26.818672593565683,112.58339009877655,328.01237063108704 ,10.824985))
|
||||
mutableListOf.add(Data(26.818754990090127,112.58333306728635,328.4332332273649 ,10.844356))
|
||||
mutableListOf.add(Data(26.818754990090127,112.58333306728635,328.4332332273649 ,10.844356))
|
||||
mutableListOf.add(Data(26.818839320542985,112.5832751250177,328.3993418287033 ,10.843772))
|
||||
mutableListOf.add(Data(26.818839320542985,112.5832751250177,328.3993418287033 ,10.843772))
|
||||
mutableListOf.add(Data(26.818922809041855,112.58321765401757,328.4574394177834 ,10.858223))
|
||||
mutableListOf.add(Data(26.818922809041855,112.58321765401757,328.4574394177834 ,10.858223))
|
||||
mutableListOf.add(Data(26.819006465861534,112.5831607927747,328.98921062580393 ,10.842939))
|
||||
mutableListOf.add(Data(26.819006465861534,112.5831607927747,328.98921062580393 ,10.842939))
|
||||
mutableListOf.add(Data(26.81909075060507,112.5831046560205,329.1766036958724 ,10.863632))
|
||||
mutableListOf.add(Data(26.81909075060507,112.5831046560205,329.1766036958724 ,10.863632))
|
||||
mutableListOf.add(Data(26.819174866875375,112.58304877028208,328.96620654867934 ,10.821545))
|
||||
mutableListOf.add(Data(26.819174866875375,112.58304877028208,328.96620654867934 ,10.821545))
|
||||
mutableListOf.add(Data(26.819258542148233,112.58299212297055,328.94003326377987 ,10.827973))
|
||||
mutableListOf.add(Data(26.819258542148233,112.58299212297055,328.94003326377987 ,10.827973))
|
||||
mutableListOf.add(Data(26.81934275109521,112.5829359856361,329.7044680356877 ,10.862666))
|
||||
mutableListOf.add(Data(26.81934275109521,112.5829359856361,329.7044680356877 ,10.862666))
|
||||
mutableListOf.add(Data(26.819427513346156,112.58288107998513,329.94292359999116 ,10.841335))
|
||||
mutableListOf.add(Data(26.819427513346156,112.58288107998513,329.94292359999116 ,10.841335))
|
||||
mutableListOf.add(Data(26.819512958196423,112.58282775043037,332.0790516025343 ,10.830255))
|
||||
mutableListOf.add(Data(26.819512958196423,112.58282775043037,332.0790516025343 ,10.830255))
|
||||
mutableListOf.add(Data(26.819600500579643,112.58277846653539,333.6954431903745 ,10.856668))
|
||||
mutableListOf.add(Data(26.819600500579643,112.58277846653539,333.6954431903745 ,10.856668))
|
||||
mutableListOf.add(Data(26.819688638518134,112.5827299064952,333.5301526124602 ,10.898559))
|
||||
mutableListOf.add(Data(26.819688638518134,112.5827299064952,333.5301526124602 ,10.898559))
|
||||
mutableListOf.add(Data(26.81977658685566,112.58268010365491,332.9125532473293 ,10.915252))
|
||||
mutableListOf.add(Data(26.81977658685566,112.58268010365491,332.9125532473293 ,10.915252))
|
||||
mutableListOf.add(Data(26.819864103260052,112.58263021476887,333.12991718747577 ,10.862293))
|
||||
mutableListOf.add(Data(26.819864103260052,112.58263021476887,333.12991718747577 ,10.862293))
|
||||
mutableListOf.add(Data(26.819952185172603,112.58258048416751,332.5388326167029 ,10.938454))
|
||||
mutableListOf.add(Data(26.819952185172603,112.58258048416751,332.5388326167029 ,10.938454))
|
||||
mutableListOf.add(Data(26.82003906202077,112.58252887677297,331.2750700353321 ,10.86753))
|
||||
mutableListOf.add(Data(26.82003906202077,112.58252887677297,331.2750700353321 ,10.86753))
|
||||
mutableListOf.add(Data(26.82012530838014,112.58247555120677,331.0627194540364 ,10.9164505))
|
||||
mutableListOf.add(Data(26.82012530838014,112.58247555120677,331.0627194540364 ,10.9164505))
|
||||
mutableListOf.add(Data(26.82021139090915,112.58242212128593,331.2748378089003 ,10.884517))
|
||||
mutableListOf.add(Data(26.82021139090915,112.58242212128593,331.2748378089003 ,10.884517))
|
||||
mutableListOf.add(Data(26.820298208800885,112.58236931876395,331.2973910935397 ,10.954199))
|
||||
mutableListOf.add(Data(26.820298208800885,112.58236931876395,331.2973910935397 ,10.954199))
|
||||
mutableListOf.add(Data(26.820384970888565,112.58231658502292,331.0287870742398 ,10.913742))
|
||||
mutableListOf.add(Data(26.820384970888565,112.58231658502292,331.0287870742398 ,10.913742))
|
||||
mutableListOf.add(Data(26.820471244437208,112.58226359177391,331.06717273737524 ,10.912278))
|
||||
mutableListOf.add(Data(26.820471244437208,112.58226359177391,331.06717273737524 ,10.912278))
|
||||
mutableListOf.add(Data(26.820558007789558,112.58221052491533,331.5169816753556 ,10.94842))
|
||||
mutableListOf.add(Data(26.820558007789558,112.58221052491533,331.5169816753556 ,10.94842))
|
||||
mutableListOf.add(Data(26.820645407773025,112.58215812417345,331.71754335014384 ,10.979202))
|
||||
mutableListOf.add(Data(26.820645407773025,112.58215812417345,331.71754335014384 ,10.979202))
|
||||
mutableListOf.add(Data(26.820732568459803,112.58210589578515,331.6438729297561 ,10.946945))
|
||||
mutableListOf.add(Data(26.820732568459803,112.58210589578515,331.6438729297561 ,10.946945))
|
||||
mutableListOf.add(Data(26.820819910169977,112.58205326357,331.767485693355 ,10.988325))
|
||||
mutableListOf.add(Data(26.820819910169977,112.58205326357,331.767485693355 ,10.988325))
|
||||
mutableListOf.add(Data(26.82090739738908,112.58200156651718,332.347204829349 ,10.947101))
|
||||
mutableListOf.add(Data(26.82090739738908,112.58200156651718,332.347204829349 ,10.947101))
|
||||
mutableListOf.add(Data(26.820995056276622,112.58195061688777,332.4727163855371 ,10.950606))
|
||||
mutableListOf.add(Data(26.820995056276622,112.58195061688777,332.4727163855371 ,10.950606))
|
||||
mutableListOf.add(Data(26.821083357477672,112.58189977279349,333.5770486913015 ,11.0240345))
|
||||
mutableListOf.add(Data(26.821083357477672,112.58189977279349,333.5770486913015 ,11.0240345))
|
||||
mutableListOf.add(Data(26.821172475162726,112.58185287422074,336.05104566151766 ,11.047021))
|
||||
mutableListOf.add(Data(26.821172475162726,112.58185287422074,336.05104566151766 ,11.047021))
|
||||
mutableListOf.add(Data(26.821264484994177,112.58180877707832,336.721654124797 ,10.947278))
|
||||
mutableListOf.add(Data(26.821264484994177,112.58180877707832,336.721654124797 ,10.947278))
|
||||
mutableListOf.add(Data(26.821355586119605,112.5817640770223,336.0527258880535 ,11.0230665))
|
||||
mutableListOf.add(Data(26.821355586119605,112.5817640770223,336.0527258880535 ,11.0230665))
|
||||
mutableListOf.add(Data(26.821446396198834,112.58171813418576,335.6811840877723 ,11.044201))
|
||||
mutableListOf.add(Data(26.821446396198834,112.58171813418576,335.6811840877723 ,11.044201))
|
||||
mutableListOf.add(Data(26.821537394395577,112.58167296050368,336.12904642183923 ,11.024753))
|
||||
mutableListOf.add(Data(26.821537394395577,112.58167296050368,336.12904642183923 ,11.024753))
|
||||
mutableListOf.add(Data(26.82162819539147,112.58162746655287,335.0245706821023 ,11.01271))
|
||||
mutableListOf.add(Data(26.82162819539147,112.58162746655287,335.0245706821023 ,11.01271))
|
||||
mutableListOf.add(Data(26.821718933471065,112.58157993539679,334.1465498642972 ,11.123078))
|
||||
mutableListOf.add(Data(26.821718933471065,112.58157993539679,334.1465498642972 ,11.123078))
|
||||
mutableListOf.add(Data(26.821809477042866,112.58153187161871,333.93389875467795 ,11.069262))
|
||||
mutableListOf.add(Data(26.821809477042866,112.58153187161871,333.93389875467795 ,11.069262))
|
||||
mutableListOf.add(Data(26.82189924216394,112.5814829554966,333.64357473381745 ,11.037714))
|
||||
mutableListOf.add(Data(26.82189924216394,112.5814829554966,333.64357473381745 ,11.037714))
|
||||
mutableListOf.add(Data(26.82198886489619,112.58143265217548,333.8418414650445 ,11.124701))
|
||||
mutableListOf.add(Data(26.82198886489619,112.58143265217548,333.8418414650445 ,11.124701))
|
||||
mutableListOf.add(Data(26.82207943977267,112.58138371825058,334.74234726559735 ,11.168612))
|
||||
mutableListOf.add(Data(26.82207943977267,112.58138371825058,334.74234726559735 ,11.168612))
|
||||
mutableListOf.add(Data(26.82217079652045,112.58133629724179,334.6802745064203 ,11.136633))
|
||||
mutableListOf.add(Data(26.82217079652045,112.58133629724179,334.6802745064203 ,11.136633))
|
||||
mutableListOf.add(Data(26.82226125835418,112.58128793467625,334.04232117756277 ,11.089879))
|
||||
mutableListOf.add(Data(26.82226125835418,112.58128793467625,334.04232117756277 ,11.089879))
|
||||
mutableListOf.add(Data(26.822351660082763,112.5812387113965,334.4818438506531 ,11.136156))
|
||||
mutableListOf.add(Data(26.822351660082763,112.5812387113965,334.4818438506531 ,11.136156))
|
||||
mutableListOf.add(Data(26.822442570811926,112.581190668316,335.08963506413585 ,11.129769))
|
||||
mutableListOf.add(Data(26.822442570811926,112.581190668316,335.08963506413585 ,11.129769))
|
||||
mutableListOf.add(Data(26.822533871293896,112.58114380339613,335.2726704735138 ,11.116067))
|
||||
mutableListOf.add(Data(26.822533871293896,112.58114380339613,335.2726704735138 ,11.116067))
|
||||
mutableListOf.add(Data(26.822625356286988,112.5810963629318,334.7990514960868 ,11.171506))
|
||||
mutableListOf.add(Data(26.822625356286988,112.5810963629318,334.7990514960868 ,11.171506))
|
||||
mutableListOf.add(Data(26.822717040623075,112.58104834264921,335.2455546225089 ,11.233819))
|
||||
mutableListOf.add(Data(26.822717040623075,112.58104834264921,335.2455546225089 ,11.233819))
|
||||
mutableListOf.add(Data(26.822809222350063,112.58100143507674,335.7449848848094 ,11.209728))
|
||||
mutableListOf.add(Data(26.822809222350063,112.58100143507674,335.7449848848094 ,11.209728))
|
||||
mutableListOf.add(Data(26.822901437574036,112.5809551957787,335.54689573850067 ,11.171629))
|
||||
mutableListOf.add(Data(26.822901437574036,112.5809551957787,335.54689573850067 ,11.171629))
|
||||
mutableListOf.add(Data(26.822993570002573,112.58090876870207,335.8036083984556 ,11.158639))
|
||||
mutableListOf.add(Data(26.822993570002573,112.58090876870207,335.8036083984556 ,11.158639))
|
||||
mutableListOf.add(Data(26.823085804697456,112.5808628704648,336.06588083239495 ,11.160056))
|
||||
mutableListOf.add(Data(26.823085804697456,112.5808628704648,336.06588083239495 ,11.160056))
|
||||
mutableListOf.add(Data(26.8231782941641,112.5808170301043,336.1425838567742 ,11.196213))
|
||||
mutableListOf.add(Data(26.8231782941641,112.5808170301043,336.1425838567742 ,11.196213))
|
||||
mutableListOf.add(Data(26.82327070139615,112.58077156018408,336.3930127426927 ,11.158848))
|
||||
mutableListOf.add(Data(26.82327070139615,112.58077156018408,336.3930127426927 ,11.158848))
|
||||
mutableListOf.add(Data(26.82336315989599,112.58072645624978,336.4708632388525 ,11.134174))
|
||||
mutableListOf.add(Data(26.82336315989599,112.58072645624978,336.4708632388525 ,11.134174))
|
||||
mutableListOf.add(Data(26.82345461520168,112.58068198624507,336.6187095136266 ,10.997278))
|
||||
mutableListOf.add(Data(26.82345461520168,112.58068198624507,336.6187095136266 ,10.997278))
|
||||
mutableListOf.add(Data(26.82354701100081,112.58063771053577,337.4698740276152 ,11.121712))
|
||||
mutableListOf.add(Data(26.82354701100081,112.58063771053577,337.4698740276152 ,11.121712))
|
||||
mutableListOf.add(Data(26.823638365508067,112.58059644124914,338.7054689088489 ,10.727212))
|
||||
mutableListOf.add(Data(26.823638365508067,112.58059644124914,338.7054689088489 ,10.727212))
|
||||
mutableListOf.add(Data(26.823727664550493,112.58055870143195,339.8902335222793 ,10.347593))
|
||||
mutableListOf.add(Data(26.823727664550493,112.58055870143195,339.8902335222793 ,10.347593))
|
||||
mutableListOf.add(Data(26.823812318470793,112.58052555925428,340.5650493820874 ,9.4535055))
|
||||
mutableListOf.add(Data(26.823812318470793,112.58052555925428,340.5650493820874 ,9.4535055))
|
||||
mutableListOf.add(Data(26.823887553495833,112.58049561807807,339.6516276938141 ,8.247951))
|
||||
mutableListOf.add(Data(26.823887553495833,112.58049561807807,339.6516276938141 ,8.247951))
|
||||
mutableListOf.add(Data(26.82395168024204,112.58046870159896,340.5628364007963 ,6.9784737))
|
||||
mutableListOf.add(Data(26.82395168024204,112.58046870159896,340.5628364007963 ,6.9784737))
|
||||
mutableListOf.add(Data(26.82400846212442,112.58045082651485,351.1414880288254 ,6.062161))
|
||||
mutableListOf.add(Data(26.82400846212442,112.58045082651485,351.1414880288254 ,6.062161))
|
||||
mutableListOf.add(Data(26.824060398302887,112.58044942761538,6.345352517490426 ,5.5890617))
|
||||
mutableListOf.add(Data(26.824060398302887,112.58044942761538,6.345352517490426 ,5.5890617))
|
||||
mutableListOf.add(Data(26.82410717835299,112.58045986670147,15.169950094957699 ,5.0569997))
|
||||
mutableListOf.add(Data(26.82410717835299,112.58045986670147,15.169950094957699 ,5.0569997))
|
||||
mutableListOf.add(Data(26.824153274522928,112.58047698923471,22.21982546943474 ,5.927354))
|
||||
mutableListOf.add(Data(26.824153274522928,112.58047698923471,22.21982546943474 ,5.927354))
|
||||
mutableListOf.add(Data(26.82420820422086,112.58050675346034,28.072225248435984 ,7.5890827))
|
||||
mutableListOf.add(Data(26.82420820422086,112.58050675346034,28.072225248435984 ,7.5890827))
|
||||
mutableListOf.add(Data(26.824271397494158,112.58054781114281,33.366052157113586 ,8.47322))
|
||||
mutableListOf.add(Data(26.824271397494158,112.58054781114281,33.366052157113586 ,8.47322))
|
||||
mutableListOf.add(Data(26.824335395451552,112.58059964957953,39.51156267415672 ,8.985364))
|
||||
mutableListOf.add(Data(26.824335395451552,112.58059964957953,39.51156267415672 ,8.985364))
|
||||
mutableListOf.add(Data(26.824395490943697,112.58066019726031,45.24210163308118 ,9.010218))
|
||||
mutableListOf.add(Data(26.824395490943697,112.58066019726031,45.24210163308118 ,9.010218))
|
||||
mutableListOf.add(Data(26.824450500955546,112.5807291061281,51.63071224306344 ,9.249808))
|
||||
mutableListOf.add(Data(26.824450500955546,112.5807291061281,51.63071224306344 ,9.249808))
|
||||
mutableListOf.add(Data(26.82449811991814,112.58080421285314,58.4833590750672 ,9.367973))
|
||||
mutableListOf.add(Data(26.82449811991814,112.58080421285314,58.4833590750672 ,9.367973))
|
||||
mutableListOf.add(Data(26.824538848426627,112.58088982957428,65.9710803111933 ,9.695224))
|
||||
mutableListOf.add(Data(26.824538848426627,112.58088982957428,65.9710803111933 ,9.695224))
|
||||
mutableListOf.add(Data(26.8245709793362,112.58098361641142,72.2269171663524 ,10.104207))
|
||||
mutableListOf.add(Data(26.8245709793362,112.58098361641142,72.2269171663524 ,10.104207))
|
||||
mutableListOf.add(Data(26.82459393783725,112.5810786789352,76.83474207290874 ,9.46164))
|
||||
mutableListOf.add(Data(26.82459393783725,112.5810786789352,76.83474207290874 ,9.46164))
|
||||
mutableListOf.add(Data(26.82461098240031,112.58116886149608,78.96607186755995 ,8.802579))
|
||||
mutableListOf.add(Data(26.82461098240031,112.58116886149608,78.96607186755995 ,8.802579))
|
||||
mutableListOf.add(Data(26.824624897258907,112.58125259016583,79.77531524174401 ,8.213966))
|
||||
mutableListOf.add(Data(26.824624897258907,112.58125259016583,79.77531524174401 ,8.213966))
|
||||
mutableListOf.add(Data(26.824637602560202,112.58133367965361,80.0445023884443 ,8.11556))
|
||||
mutableListOf.add(Data(26.824637602560202,112.58133367965361,80.0445023884443 ,8.11556))
|
||||
mutableListOf.add(Data(26.824650401766355,112.58141466975431,80.0775895323311 ,8.164914))
|
||||
mutableListOf.add(Data(26.824650401766355,112.58141466975431,80.0775895323311 ,8.164914))
|
||||
mutableListOf.add(Data(26.824664299167868,112.58149569608165,78.12252130694856 ,8.347733))
|
||||
mutableListOf.add(Data(26.824664299167868,112.58149569608165,78.12252130694856 ,8.347733))
|
||||
mutableListOf.add(Data(26.824680465602725,112.58158016934632,77.63346354067636 ,8.871422))
|
||||
mutableListOf.add(Data(26.824680465602725,112.58158016934632,77.63346354067636 ,8.871422))
|
||||
mutableListOf.add(Data(26.824698071237794,112.5816714712686,77.57790507442019 ,9.538839))
|
||||
mutableListOf.add(Data(26.824698071237794,112.5816714712686,77.57790507442019 ,9.538839))
|
||||
mutableListOf.add(Data(26.824716810952108,112.58176774318086,77.44957350387847 ,10.009091))
|
||||
mutableListOf.add(Data(26.824716810952108,112.58176774318086,77.44957350387847 ,10.009091))
|
||||
mutableListOf.add(Data(26.824736346219844,112.58186742933266,77.70056588040353 ,10.273892))
|
||||
mutableListOf.add(Data(26.824736346219844,112.58186742933266,77.70056588040353 ,10.273892))
|
||||
mutableListOf.add(Data(26.82475624119252,112.58196927550934,77.2926738133595 ,10.368853))
|
||||
mutableListOf.add(Data(26.82475624119252,112.58196927550934,77.2926738133595 ,10.368853))
|
||||
mutableListOf.add(Data(26.824776321201686,112.58207074730377,77.99243352401652 ,10.352851))
|
||||
mutableListOf.add(Data(26.824776321201686,112.58207074730377,77.99243352401652 ,10.352851))
|
||||
mutableListOf.add(Data(26.824795173856856,112.58217470637561,79.23096197149869 ,10.704494))
|
||||
mutableListOf.add(Data(26.824795173856856,112.58217470637561,79.23096197149869 ,10.704494))
|
||||
mutableListOf.add(Data(26.824813008893262,112.58228182337149,79.66565313952486 ,10.874358))
|
||||
mutableListOf.add(Data(26.824813008893262,112.58228182337149,79.66565313952486 ,10.874358))
|
||||
mutableListOf.add(Data(26.824830937998897,112.5823899189086,79.68082128212416 ,10.942389))
|
||||
mutableListOf.add(Data(26.824830937998897,112.5823899189086,79.68082128212416 ,10.942389))
|
||||
mutableListOf.add(Data(26.824848069663854,112.58249889778686,80.14145692371261 ,10.985577))
|
||||
mutableListOf.add(Data(26.824848069663854,112.58249889778686,80.14145692371261 ,10.985577))
|
||||
mutableListOf.add(Data(26.824864747770675,112.58260734311246,80.0448934167743 ,10.931011))
|
||||
mutableListOf.add(Data(26.824864747770675,112.58260734311246,80.0448934167743 ,10.931011))
|
||||
mutableListOf.add(Data(26.824882072902202,112.58271533362611,79.72259813418253 ,10.872131))
|
||||
mutableListOf.add(Data(26.824882072902202,112.58271533362611,79.72259813418253 ,10.872131))
|
||||
mutableListOf.add(Data(26.824898658212664,112.58282301050227,80.15790572678134 ,10.803015))
|
||||
mutableListOf.add(Data(26.824898658212664,112.58282301050227,80.15790572678134 ,10.803015))
|
||||
mutableListOf.add(Data(26.824915330378445,112.58293057308566,79.8746065554821 ,10.830168))
|
||||
mutableListOf.add(Data(26.824915330378445,112.58293057308566,79.8746065554821 ,10.830168))
|
||||
mutableListOf.add(Data(26.824932651505765,112.58303827378298,79.61621110767044 ,10.868644))
|
||||
mutableListOf.add(Data(26.824932651505765,112.58303827378298,79.61621110767044 ,10.868644))
|
||||
mutableListOf.add(Data(26.82494998141344,112.58314556269549,80.13490250343034 ,10.779586))
|
||||
mutableListOf.add(Data(26.82494998141344,112.58314556269549,80.13490250343034 ,10.779586))
|
||||
mutableListOf.add(Data(26.82496632888347,112.58325114989803,80.10408298234796 ,10.57883))
|
||||
mutableListOf.add(Data(26.82496632888347,112.58325114989803,80.10408298234796 ,10.57883))
|
||||
mutableListOf.add(Data(26.824982616660503,112.5833574520516,80.0832449289639 ,10.798956))
|
||||
mutableListOf.add(Data(26.824982616660503,112.5833574520516,80.0832449289639 ,10.798956))
|
||||
mutableListOf.add(Data(26.825000029272786,112.58346564536672,79.64116349625579 ,11.000219))
|
||||
mutableListOf.add(Data(26.825000029272786,112.58346564536672,79.64116349625579 ,11.000219))
|
||||
mutableListOf.add(Data(26.82501782306914,112.58357367268343,80.0479729783163 ,10.887358))
|
||||
mutableListOf.add(Data(26.82501782306914,112.58357367268343,80.0479729783163 ,10.887358))
|
||||
mutableListOf.add(Data(26.825034644140306,112.5836819669284,80.39041646518592 ,10.887838))
|
||||
mutableListOf.add(Data(26.825034644140306,112.5836819669284,80.39041646518592 ,10.887838))
|
||||
mutableListOf.add(Data(26.825050825910466,112.58379012234309,79.99435343201077 ,10.847428))
|
||||
mutableListOf.add(Data(26.825050825910466,112.58379012234309,79.99435343201077 ,10.847428))
|
||||
mutableListOf.add(Data(26.82506848640962,112.58389620345477,79.68656034857423 ,10.79047))
|
||||
mutableListOf.add(Data(26.82508624503321,112.58400483164121,80.33252805064916 ,10.902022))
|
||||
mutableListOf.add(Data(26.825102551245067,112.5841132971028,80.34150291921856 ,10.943128))
|
||||
mutableListOf.add(Data(26.825119995319334,112.58422127548491,79.928671771631 ,10.812377))
|
||||
mutableListOf.add(Data(26.825136584562436,112.58432887362649,80.3882692244656 ,10.840047))
|
||||
mutableListOf.add(Data(26.825152339750225,112.58443770296758,80.06505101256226 ,10.956093))
|
||||
mutableListOf.add(Data(26.82516950026469,112.58454632285358,79.41718024902991 ,10.955121))
|
||||
mutableListOf.add(Data(26.825187322302735,112.58465452397829,79.75200465988036 ,10.914424))
|
||||
mutableListOf.add(Data(26.82520508970052,112.58476268654412,80.23870430334165 ,10.900922))
|
||||
mutableListOf.add(Data(26.82522160867826,112.5848709467686,80.44165825188668 ,10.936707))
|
||||
mutableListOf.add(Data(26.825238429747245,112.5849796588726,79.97719514304202 ,10.95725))
|
||||
mutableListOf.add(Data(26.82525602953279,112.58508773702944,80.00920140949273 ,10.904101))
|
||||
mutableListOf.add(Data(26.82527317500041,112.58519603083177,80.24089764783884 ,10.8971195))
|
||||
mutableListOf.add(Data(26.825290036476883,112.58530443946485,80.20050390908739 ,10.926449))
|
||||
mutableListOf.add(Data(26.82530659361771,112.58541239287453,80.04904787933697 ,10.85935))
|
||||
mutableListOf.add(Data(26.82532336881114,112.5855199067927,80.04164736937122 ,10.782148))
|
||||
mutableListOf.add(Data(26.825340290024027,112.58562428673645,79.76805645820355 ,10.10985))
|
||||
mutableListOf.add(Data(26.82535567687754,112.58571917203813,80.07238578195722 ,9.093919))
|
||||
mutableListOf.add(Data(26.82536901649892,112.58580534392024,80.083560825213 ,8.268731))
|
||||
mutableListOf.add(Data(26.825381954739342,112.58588575869024,79.89287389641731 ,8.168556))
|
||||
mutableListOf.add(Data(26.825394786288715,112.58596894528253,80.33394019226006 ,8.655088))
|
||||
mutableListOf.add(Data(26.82540806483152,112.5860544640404,79.8452282043146 ,8.341439))
|
||||
mutableListOf.add(Data(26.825421391715953,112.58613679909993,79.92148641262412 ,8.457919))
|
||||
mutableListOf.add(Data(26.82543495743159,112.5862224944188,80.25262935151198 ,8.937425))
|
||||
mutableListOf.add(Data(26.82544887111177,112.58631295507655,80.08629375465466 ,9.368444))
|
||||
mutableListOf.add(Data(26.82546366378044,112.58640477758786,79.78908661065805 ,9.034008))
|
||||
mutableListOf.add(Data(26.82547791361014,112.58649216206204,80.10327445870496 ,8.63131))
|
||||
mutableListOf.add(Data(26.825491576317813,112.58658089699335,80.45077996952324 ,9.251799))
|
||||
mutableListOf.add(Data(26.825506335597126,112.58667589584078,80.12832503125964 ,9.939442))
|
||||
mutableListOf.add(Data(26.82552223441907,112.58677732670597,80.41312599040259 ,10.415545))
|
||||
mutableListOf.add(Data(26.825538277383547,112.58688045012173,80.3277366729464 ,10.310362))
|
||||
mutableListOf.add(Data(26.825554208115665,112.5869811637487,80.0571194553886 ,9.979941))
|
||||
mutableListOf.add(Data(26.82556927129904,112.58707547979726,80.22023034918402 ,9.056645))
|
||||
mutableListOf.add(Data(26.825582903082594,112.5871616534857,80.40227623490603 ,8.297718))
|
||||
mutableListOf.add(Data(26.825595447076772,112.58724267783181,80.58279642712216 ,8.240325))
|
||||
mutableListOf.add(Data(26.825607062333198,112.58732773893132,82.92822447772295 ,8.885467))
|
||||
mutableListOf.add(Data(26.8256163967207,112.58742007652688,83.91451403915653 ,9.53883))
|
||||
mutableListOf.add(Data(26.825625805673585,112.58751790162299,83.49849276633978 ,9.8336315))
|
||||
mutableListOf.add(Data(26.82563596715511,112.58761468270157,83.35401718992108 ,9.501984))
|
||||
mutableListOf.add(Data(26.825646863924856,112.5877102491863,82.55524663016877 ,9.71343))
|
||||
mutableListOf.add(Data(26.825659541247234,112.58780732835037,81.94595789771051 ,9.71838))
|
||||
mutableListOf.add(Data(26.825672293111914,112.5879045928294,81.89237762499266 ,9.677105))
|
||||
mutableListOf.add(Data(26.825685337681932,112.58799809299924,80.8824043826121 ,9.080445))
|
||||
mutableListOf.add(Data(26.82569847648075,112.58808400269606,79.89877603363385 ,8.160078))
|
||||
mutableListOf.add(Data(26.825711805743254,112.58816030310517,79.63162684462714 ,7.2267))
|
||||
mutableListOf.add(Data(26.82572189552541,112.58822581838183,83.05601176756522 ,5.997647))
|
||||
mutableListOf.add(Data(26.82572447823082,112.5882790961332,92.82558460020824 ,4.5657516))
|
||||
mutableListOf.add(Data(26.825718263255567,112.58831958891977,105.99306916896894 ,3.6916084))
|
||||
mutableListOf.add(Data(26.825705384757367,112.58835137594669,117.39571481846839 ,3.4976408))
|
||||
mutableListOf.add(Data(26.82568773592112,112.58838171407714,126.8308015341406 ,3.7412977))
|
||||
mutableListOf.add(Data(26.825664209114287,112.58841049240998,136.7715408144472 ,3.8619535))
|
||||
mutableListOf.add(Data(26.825635321161386,112.58843565279595,146.28077606374907 ,4.1901913))
|
||||
mutableListOf.add(Data(26.82560115459976,112.5884567796701,156.0422092179645 ,4.372593))
|
||||
mutableListOf.add(Data(26.8255626836711,112.58847136977255,166.78803655611884 ,4.56643))
|
||||
mutableListOf.add(Data(26.82552087332516,112.58847674422513,178.44471060122942 ,5.053988))
|
||||
mutableListOf.add(Data(26.825468360723992,112.58847264490073,185.2122805969315 ,6.715906))
|
||||
mutableListOf.add(Data(26.825401186671062,112.58846318500233,186.65640115352562 ,8.006904))
|
||||
mutableListOf.add(Data(26.82532605586703,112.58845198261439,187.28742867056476 ,8.70072))
|
||||
mutableListOf.add(Data(26.8252457471272,112.58843933355529,188.2250770398241 ,9.278515))
|
||||
mutableListOf.add(Data(26.82516033433597,112.58842418755573,188.72999194402811 ,9.884587))
|
||||
mutableListOf.add(Data(26.825068937761582,112.58840750767082,188.55380038419847 ,10.508339))
|
||||
mutableListOf.add(Data(26.824972867801122,112.58839022105084,189.05396147674017 ,10.945375))
|
||||
mutableListOf.add(Data(26.824875043536103,112.58837048811633,190.37926406253277 ,11.015351))
|
||||
mutableListOf.add(Data(26.82477736812146,112.58834859022588,190.74765714560658 ,10.961484))
|
||||
mutableListOf.add(Data(26.82468029797548,112.58832657515805,190.7464003907993 ,10.924771))
|
||||
mutableListOf.add(Data(26.824583225389507,112.58830488028168,191.0691678102174 ,10.944002))
|
||||
mutableListOf.add(Data(26.824486236537098,112.58828204069819,191.41682443897108 ,10.972908))
|
||||
mutableListOf.add(Data(26.82438935491626,112.58825925251047,191.13828932461794 ,10.922421))
|
||||
mutableListOf.add(Data(26.824292058061655,112.58823714439076,190.51417395901885 ,10.983685))
|
||||
mutableListOf.add(Data(26.824194978703208,112.58821677322887,189.4132567478395 ,10.865106))
|
||||
mutableListOf.add(Data(26.824097661934157,112.58819829218662,188.33140942482285 ,10.886163))
|
||||
mutableListOf.add(Data(26.82399966406215,112.5881817191164,186.76314334987458 ,10.996041))
|
||||
mutableListOf.add(Data(26.82390099423371,112.58816868906779,184.95688616348636 ,10.964688))
|
||||
mutableListOf.add(Data(26.823802803259678,112.58815906442507,183.5099242481975 ,10.888597))
|
||||
mutableListOf.add(Data(26.823703886909744,112.58815186387652,182.20369155056758 ,10.969546))
|
||||
mutableListOf.add(Data(26.823604841012653,112.58814776818956,180.27973654440171 ,10.942759))
|
||||
mutableListOf.add(Data(26.823506182087286,112.58814756502561,178.41990335416392 ,10.901522))
|
||||
mutableListOf.add(Data(26.8234077732812,112.58815050565116,177.07771654074304 ,10.863581))
|
||||
mutableListOf.add(Data(26.823309027975455,112.58815577451051,175.84363796150515 ,10.914522))
|
||||
mutableListOf.add(Data(26.823210579428864,112.58816315720807,174.83184105861613 ,10.904749))
|
||||
mutableListOf.add(Data(26.82311176082705,112.58817200770986,174.3510777033173 ,10.960163))
|
||||
mutableListOf.add(Data(26.8230130510353,112.58818159990454,174.25116569613834 ,10.949297))
|
||||
mutableListOf.add(Data(26.8229147108448,112.58819100914526,174.4300620108793 ,10.86557))
|
||||
mutableListOf.add(Data(26.822815982451136,112.58819998942029,174.38741430970174 ,10.961633))
|
||||
mutableListOf.add(Data(26.822717658398695,112.58820959147286,173.98943284714346 ,10.884146))
|
||||
mutableListOf.add(Data(26.822619025345805,112.58821937006674,174.21477444824052 ,10.94364))
|
||||
mutableListOf.add(Data(26.822520398766574,112.58822881737137,174.50188828019117 ,10.928565))
|
||||
mutableListOf.add(Data(26.82242135045806,112.58823800170606,174.39203151758068 ,11.003972))
|
||||
mutableListOf.add(Data(26.82232288454279,112.58824734785314,174.21564871245428 ,10.937689))
|
||||
mutableListOf.add(Data(26.82222440307578,112.58825691597944,174.16925806761154 ,10.9371195))
|
||||
mutableListOf.add(Data(26.822125599059973,112.58826617121782,174.505658544613 ,10.904333))
|
||||
mutableListOf.add(Data(26.822027680356275,112.58827501278103,174.41369687762796 ,10.894905))
|
||||
mutableListOf.add(Data(26.82192881779245,112.58828425392758,174.03677971846997 ,10.942385))
|
||||
mutableListOf.add(Data(26.821829987245398,112.58829436532618,174.09423526976812 ,10.993935))
|
||||
mutableListOf.add(Data(26.821731474322508,112.58830369366189,174.458011144963 ,10.912243))
|
||||
mutableListOf.add(Data(26.82163298773937,112.58831277133513,174.29083543483776 ,10.906608))
|
||||
mutableListOf.add(Data(26.821534477288782,112.58832251669477,174.07890832527062 ,10.930833))
|
||||
mutableListOf.add(Data(26.82143603055604,112.58833213847254,174.3435371744736 ,10.910077))
|
||||
mutableListOf.add(Data(26.821337437902788,112.58834046715273,175.3574104548703 ,10.923147))
|
||||
mutableListOf.add(Data(26.82123870294786,112.5883459066746,177.2432256847108 ,10.943883))
|
||||
mutableListOf.add(Data(26.821139617348642,112.58834848729124,177.67729786684345 ,10.97326))
|
||||
mutableListOf.add(Data(26.82104042684288,112.5883516739536,176.89996769778264 ,10.979047))
|
||||
mutableListOf.add(Data(26.820941492509043,112.58835610568427,177.2468047038359 ,10.953704))
|
||||
mutableListOf.add(Data(26.820842365150224,112.58835964324697,176.68708436173168 ,10.956896))
|
||||
mutableListOf.add(Data(26.82074348179931,112.58836548765069,175.08942115259566 ,10.924478))
|
||||
mutableListOf.add(Data(26.820644894992096,112.5883738706066,174.5613928882403 ,10.922756))
|
||||
mutableListOf.add(Data(26.82054592431787,112.58838272264623,174.56396103936825 ,10.973723))
|
||||
mutableListOf.add(Data(26.82044709968575,112.58839144578067,174.37763347881028 ,10.921038))
|
||||
mutableListOf.add(Data(26.820350203145193,112.58840097729004,173.61869017899517 ,10.51492))
|
||||
mutableListOf.add(Data(26.820258686700708,112.58841127187114,173.23824864222544 ,9.750838))
|
||||
mutableListOf.add(Data(26.82017508368214,112.58842030622239,174.08024704234793 ,8.816113))
|
||||
mutableListOf.add(Data(26.820100223700994,112.58842630948175,176.73598851618897 ,7.82164))
|
||||
mutableListOf.add(Data(26.820033299572902,112.58842614363626,183.5862311216049 ,6.977247))
|
||||
mutableListOf.add(Data(26.81997327271163,112.58841548604096,193.57521885820844 ,6.478256))
|
||||
mutableListOf.add(Data(26.81991927150576,112.58839498736432,202.85463190231775 ,6.3534274))
|
||||
mutableListOf.add(Data(26.819867127007132,112.58836446736944,210.9787321086977 ,6.6902227))
|
||||
mutableListOf.add(Data(26.81981675325887,112.58832481437109,218.38637279190002 ,6.9047847))
|
||||
mutableListOf.add(Data(26.819771552548968,112.58827786859652,226.603035721912 ,6.7886267))
|
||||
mutableListOf.add(Data(26.81973314144824,112.58822495699303,232.99868825692852 ,6.7599373))
|
||||
mutableListOf.add(Data(26.819698452510536,112.58816757745821,237.22470388133385 ,7.2045116))
|
||||
mutableListOf.add(Data(26.819663217361732,112.5881007591936,240.00845676059924 ,8.158858))
|
||||
mutableListOf.add(Data(26.819626000292175,112.58802453540116,240.8784999174538 ,8.999233))
|
||||
mutableListOf.add(Data(26.819586534576935,112.58794197732135,240.76522806025832 ,9.600716))
|
||||
mutableListOf.add(Data(26.819543977857247,112.58785492336641,240.00827917568083 ,10.142109))
|
||||
mutableListOf.add(Data(26.819497317310454,112.58776324429233,239.45918660792518 ,10.695647))
|
||||
mutableListOf.add(Data(26.819448768856812,112.587668386066,239.3843823761352 ,10.932611))
|
||||
mutableListOf.add(Data(26.81939918638018,112.58757314768673,238.63705039790906 ,10.928658))
|
||||
mutableListOf.add(Data(26.819348833837722,112.58747899858194,238.34806509412584 ,10.828743))
|
||||
mutableListOf.add(Data(26.819298543965182,112.58738510707593,238.20517753668918 ,10.846967))
|
||||
mutableListOf.add(Data(26.819247448176384,112.58729177541909,237.1934625960702 ,10.858182))
|
||||
mutableListOf.add(Data(26.819194632031977,112.5871997947454,236.50368179179063 ,10.823321))
|
||||
mutableListOf.add(Data(26.81914190798688,112.58710814764821,236.76342022554786 ,10.759948))
|
||||
mutableListOf.add(Data(26.81908940434915,112.58701628899507,236.13558923704028 ,10.808216))
|
||||
mutableListOf.add(Data(26.819035575518786,112.58692584568828,235.18217679117654 ,10.71068))
|
||||
mutableListOf.add(Data(26.81898073231781,112.5868359376484,235.13092305164477 ,10.8211355))
|
||||
mutableListOf.add(Data(26.81892555318869,112.58674535807322,235.32996842443728 ,10.85881))
|
||||
mutableListOf.add(Data(26.81887105463057,112.58665496701065,235.21492071805758 ,10.777623))
|
||||
mutableListOf.add(Data(26.818815922622132,112.58656520621176,234.90702945065175 ,10.759572))
|
||||
mutableListOf.add(Data(26.818760790349998,112.58647523807899,235.211041170609 ,10.825326))
|
||||
mutableListOf.add(Data(26.818706084816025,112.5863853958238,235.1533533928791 ,10.755462))
|
||||
mutableListOf.add(Data(26.818651422997945,112.58629555556442,235.04497195112933 ,10.756754))
|
||||
mutableListOf.add(Data(26.818596768469828,112.58620567612797,235.18598803673342 ,10.776001))
|
||||
mutableListOf.add(Data(26.818542351463606,112.58611652045523,234.8494782767052 ,10.687228))
|
||||
mutableListOf.add(Data(26.818487635742752,112.58602741332314,234.98692900356255 ,10.736459))
|
||||
mutableListOf.add(Data(26.818433311586134,112.5859383346022,235.22746094537374 ,10.653758))
|
||||
mutableListOf.add(Data(26.818378710306522,112.58584926454115,235.01718674158573 ,10.708648))
|
||||
mutableListOf.add(Data(26.81832410447011,112.58575969356657,235.37343574831525 ,10.767325))
|
||||
mutableListOf.add(Data(26.818270113201255,112.5856699225492,235.18238169685165 ,10.741438))
|
||||
mutableListOf.add(Data(26.818215754477475,112.5855806078428,234.962640850874 ,10.717836))
|
||||
mutableListOf.add(Data(26.81816119807655,112.58549201301568,235.00922274101347 ,10.64606))
|
||||
mutableListOf.add(Data(26.818106882589856,112.58540284786379,235.37503401258104 ,10.699273))
|
||||
mutableListOf.add(Data(26.818052845270795,112.58531349223125,235.15450086465967 ,10.689224))
|
||||
mutableListOf.add(Data(26.81799849537033,112.58522428835666,235.13877776919028 ,10.715375 ))
|
||||
mutableListOf.add(Data(26.817944471910003,112.58513476623239,235.33824661371133 ,10.698519))
|
||||
mutableListOf.add(Data(26.817890134992844,112.58504554973807,234.86815201389604 ,10.693531))
|
||||
mutableListOf.add(Data(26.817835319728093,112.58495664165265,235.02019202482052 ,10.712638))
|
||||
mutableListOf.add(Data(26.817780786837695,112.58486759996185,234.98798085269473 ,10.703126))
|
||||
mutableListOf.add(Data(26.817726344560015,112.58477895119715,234.72041502214867 ,10.559478))
|
||||
mutableListOf.add(Data(26.817672896045035,112.58469285935371,234.80909819833212 ,10.268126))
|
||||
mutableListOf.add(Data(26.81762034092348,112.5846076693991,235.4481989989702 ,10.194944))
|
||||
mutableListOf.add(Data(26.81757000080714,112.58452312548724,236.82009713528063 ,9.998541))
|
||||
mutableListOf.add(Data(26.81752307710616,112.58443938857062,238.62282994405712 ,9.646217))
|
||||
mutableListOf.add(Data(26.81747927640272,112.5843556948273,239.96605494623182 ,9.61409))
|
||||
mutableListOf.add(Data(26.817437035117667,112.5842705975036,241.02851819238398 ,9.784999))
|
||||
mutableListOf.add(Data(26.817394588032748,112.58418206729552,241.47888720587628 ,10.220616))
|
||||
mutableListOf.add(Data(26.81734916434496,112.58408728482055,240.92852422293498 ,10.946569))
|
||||
mutableListOf.add(Data(26.817300427653745,112.58398997361219,239.22969225181274 ,11.08842))
|
||||
mutableListOf.add(Data(26.81724905918242,112.58389508879584,237.37255015610793 ,10.959397))
|
||||
mutableListOf.add(Data(26.817195687670125,112.58380236411111,236.10377421588638 ,10.868602))
|
||||
mutableListOf.add(Data(26.817141281661353,112.58371061366645,235.69349841282204 ,10.867909))
|
||||
mutableListOf.add(Data(26.81708765945191,112.58361944929223,236.51455545294928 ,10.751019))
|
||||
mutableListOf.add(Data(26.817037237801387,112.58352946632557,238.18176364821437 ,10.172699))
|
||||
mutableListOf.add(Data(26.816991758745935,112.58344394169914,238.81318731622537 ,9.476438))
|
||||
mutableListOf.add(Data(26.81695008311907,112.58336549123571,238.35449913232398 ,8.670373))
|
||||
mutableListOf.add(Data(26.816911519966908,112.58329384142816,238.00583163557317 ,7.9418206))
|
||||
mutableListOf.add(Data(26.816875769929663,112.58322842149074,237.9069304963914 ,7.250271))
|
||||
mutableListOf.add(Data(26.816842700317792,112.58316889814716,237.12501044020834 ,6.608085))
|
||||
mutableListOf.add(Data(26.816812547895015,112.58311627111057,236.47424367646786 ,5.8385525))
|
||||
mutableListOf.add(Data(26.81678497120257,112.58306956006162,235.61325735045273 ,5.1207457))
|
||||
mutableListOf.add(Data(26.816762161812772,112.58303220941076,235.7694501163926 ,3.907349))
|
||||
mutableListOf.add(Data(26.816744452403828,112.58300245495224,236.2325232817411 ,3.0969348))
|
||||
mutableListOf.add(Data(26.816731497575027,112.58298000037128,236.6114211957584 ,2.2574704 ))
|
||||
mutableListOf.add(Data(26.816722462577506,112.58296434850722,236.4161051062527 ,1.5331981 ))
|
||||
mutableListOf.add(Data(26.816716398581754,112.5829537450492,236.21764712972882 ,1.0040071 ))
|
||||
mutableListOf.add(Data(26.816712164282283,112.5829466272515,236.12834923652008 ,0.737751 ))
|
||||
mutableListOf.add(Data(26.816193817151735,112.58251966330332,54.59367562577165 ,0.018921295))
|
||||
mutableListOf.add(Data(26.816193817151735,112.58251966330332,54.59367562577165 ,0.018921295))
|
||||
mutableListOf.add(Data(26.816193817151735,112.58251966330332,54.59367562577165 ,0.018921295))
|
||||
mutableListOf.add(Data(26.81619396445322,112.58251998494924,54.613592457391405 ,0.027000831))
|
||||
mutableListOf.add(Data(26.81619407811497,112.58252024223145,54.669067253830235 ,-0.0011194336))
|
||||
mutableListOf.add(Data(26.816195171832447,112.582522095685,54.64187627074443 ,0.612925))
|
||||
mutableListOf.add(Data(26.816204331708672,112.58253646642525,53.960872259548296 ,2.6901135))
|
||||
mutableListOf.add(Data(26.816223192189753,112.58256468184578,51.595331863162755 ,4.345004))
|
||||
mutableListOf.add(Data(26.816251222259027,112.5826029300781,49.506195562109326 ,5.6220856))
|
||||
mutableListOf.add(Data(26.816287694595495,112.58265190405298,50.01768110829488 ,7.31063))
|
||||
mutableListOf.add(Data(26.816332750019175,112.58271403398732,50.59955858406664 ,8.614218))
|
||||
|
||||
mutableListOf.forEach {
|
||||
val wgS84ToGCJ02 = CoordinateTransform.GCJ02ToWGS84(it.a2,it.a1)
|
||||
println("{\"localTime\":1694072487989,\"class\":\"MoGoAdasListenerImpl\",\"msg\":{\"GnssInfo\":{\"longitude\": ${wgS84ToGCJ02[0]},\"latitude\": ${wgS84ToGCJ02[1]},\"altitude\": 26.97,\"heading\": ${it.heading},\"acceleration\": 0.33836419161950765,\"yawRate\": 0.00300991842921123,\"gnssSpeed\": ${it.speed},\"vehicleSpeed\": 15.375,\"satelliteTime\": 1.69407248798E9,\"systemTime\": 1.6940724879893079E9},\"traceInfo\":{\"endPoint\":true,\"linkChainLog\":1,\"linkCode\":1,\"methodName\":\"onGnssInfo\",\"nodeAliasCode\":\"CHAIN_CODE_ADAS_CAR_LOC\",\"paramIndexes\":[0,1],\"parentNodeAliasCode\":\"\",\"recordDataChange\":true,\"spanId\":null,\"traceId\":null},\"Header\":{\"msgID\": 160606,\"msgType\": \"MsgTypeGnssInfo\",\"timestamp\": 1.6940724879929435E9,\"sourceTimestamp\": 1.69407248798E9}}}")
|
||||
}
|
||||
}
|
||||
|
||||
data class Data(val a1:Double,val a2:Double,val heading:Double,val speed:Double)
|
||||
}
|
||||
@@ -1,16 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/clHmiContainer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.mogo.eagle.core.function.view.MapBizView
|
||||
android:id="@+id/mapBizView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugViewTrigger
|
||||
android:layout_width="@dimen/dp_400"
|
||||
android:layout_height="@dimen/dp_100"
|
||||
@@ -19,23 +13,6 @@
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<!--刹车、转向-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.vehicle.SteeringBrakeView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--V2X预警红色边框-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.V2XWarningView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
@@ -81,169 +58,6 @@
|
||||
app:layout_constraintLeft_toLeftOf="@+id/viewSpeedChart"
|
||||
app:layout_constraintTop_toBottomOf="@+id/viewSpeedChart" />
|
||||
|
||||
<!--超视距-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.CameraView
|
||||
android:id="@+id/ivCameraIcon"
|
||||
android:layout_width="120dp"
|
||||
android:layout_height="120dp"
|
||||
android:layout_marginTop="45dp"
|
||||
android:layout_marginEnd="40dp"
|
||||
app:layout_constraintRight_toLeftOf="@id/viewTrafficLightVr"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<!--限速牌子-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.LimitingVelocityView
|
||||
android:id="@+id/viewLimitingVelocity"
|
||||
android:layout_width="120dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="30dp"
|
||||
android:layout_marginEnd="40dp"
|
||||
android:elevation="@dimen/dp_10"
|
||||
android:gravity="center"
|
||||
android:text="60"
|
||||
android:textColor="#FFFFFF"
|
||||
android:textSize="60dp"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/ivCameraIcon"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<!--红绿灯-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.SingleTrafficLightView
|
||||
android:id="@+id/viewTrafficLightVr"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/hmi_traffic_light_layout_margin_top"
|
||||
android:layout_marginEnd="@dimen/hmi_traffic_light_layout_margin_right"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--地图视角切换-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.PerspectiveSwitchView
|
||||
android:id="@+id/viewPerspectiveSwitch"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="50dp"
|
||||
android:layout_marginBottom="40dp"
|
||||
android:elevation="@dimen/dp_10"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<!--工具箱-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.tools.ToolsImageView
|
||||
android:id="@+id/ivToolsView"
|
||||
android:layout_width="@dimen/module_hmi_check_size"
|
||||
android:layout_height="@dimen/module_hmi_check_size"
|
||||
android:layout_marginStart="25dp"
|
||||
android:layout_marginBottom="40dp"
|
||||
android:contentDescription="工具箱"
|
||||
android:elevation="@dimen/dp_10"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/viewPerspectiveSwitch"
|
||||
app:layout_goneMarginStart="50dp" />
|
||||
|
||||
<!--问题反馈-->
|
||||
<ImageView
|
||||
android:id="@+id/ivBadCaseTools"
|
||||
android:layout_width="120dp"
|
||||
android:layout_height="120dp"
|
||||
android:layout_marginStart="50dp"
|
||||
android:layout_marginBottom="40dp"
|
||||
android:contentDescription="BadCase"
|
||||
android:src="@drawable/bad_case_selector"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/ivToolsView" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivAiCollectTools"
|
||||
android:layout_width="120dp"
|
||||
android:layout_height="120dp"
|
||||
android:layout_marginStart="50dp"
|
||||
android:layout_marginBottom="40dp"
|
||||
android:contentDescription="数据采集"
|
||||
android:src="@drawable/ai_collect_selector"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/ivBadCaseTools" />
|
||||
|
||||
<View
|
||||
android:id="@+id/viewUpgradeTips"
|
||||
android:layout_width="22dp"
|
||||
android:layout_height="22dp"
|
||||
android:background="@drawable/version_upgrade_tips_background"
|
||||
android:translationZ="30dp"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintCircle="@id/ivToolsView"
|
||||
app:layout_constraintCircleAngle="45"
|
||||
app:layout_constraintCircleRadius="60dp"
|
||||
tools:ignore="MissingConstraints" />
|
||||
|
||||
<!--消息盒子司机端选择入口-->
|
||||
<CheckBox
|
||||
android:id="@+id/cbMsgBoxDriver"
|
||||
android:layout_width="150dp"
|
||||
android:layout_height="150dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginEnd="25dp"
|
||||
android:background="@drawable/selector_msg_box"
|
||||
android:button="@null"
|
||||
android:visibility="visible"
|
||||
app:layout_constraintRight_toLeftOf="@id/viewLimitingVelocity"
|
||||
app:layout_constraintTop_toBottomOf="@+id/ivCameraIcon" />
|
||||
|
||||
<!--司机端消息提示-->
|
||||
<View
|
||||
android:id="@+id/MsgBoxTipView"
|
||||
android:layout_width="8dp"
|
||||
android:layout_height="8dp"
|
||||
android:background="@drawable/version_upgrade_tips_background"
|
||||
android:translationZ="30dp"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintCircle="@id/cbMsgBoxDriver"
|
||||
app:layout_constraintCircleAngle="40"
|
||||
app:layout_constraintCircleRadius="32dp"
|
||||
tools:ignore="MissingConstraints" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView
|
||||
android:id="@+id/viewDriverMsgBoxList"
|
||||
android:layout_width="864px"
|
||||
android:layout_height="746px"
|
||||
android:layout_marginEnd="40dp"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/cbMsgBoxDriver"
|
||||
tools:visibility="gone" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView
|
||||
android:id="@+id/viewDriverMsgBoxBubble"
|
||||
android:layout_width="864px"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="visible"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/cbMsgBoxDriver"
|
||||
tools:visibility="gone" />
|
||||
|
||||
<!--左右转向灯-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.vehicle.TurnLightViewStatus
|
||||
android:id="@+id/turnLightView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="42dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--刹车ui-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.vehicle.BrakeViewStatus
|
||||
android:id="@+id/brakeView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="42dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--pnc行为决策-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.vehicle.PncActionsView
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -10,7 +10,6 @@ import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
||||
import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.och.bus.constant.BusConst;
|
||||
|
||||
@@ -28,8 +28,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager;
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
||||
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager;
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView;
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView;
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView;
|
||||
@@ -140,21 +138,21 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
|
||||
mSwitchMapModeLayout.setOnClickListener(new OnPreventFastClickListener() {
|
||||
@Override
|
||||
public void onClickImpl(View v) {
|
||||
|
||||
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController();
|
||||
if (controller != null) {
|
||||
//切换地图的远近视图
|
||||
if (controller.getCurrentMapVisualAngle().isLongSight()) {
|
||||
//Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(true);
|
||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
|
||||
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
|
||||
//Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(false);
|
||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long);
|
||||
} else {
|
||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
|
||||
if(mapBizView != null){
|
||||
IMogoMapUIController uiController = mapBizView.getUI();
|
||||
if(uiController != null){
|
||||
if (uiController.getCurrentMapVisualAngle().isLongSight()) {
|
||||
uiController.setLockMode(true);
|
||||
uiController.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
|
||||
} else if (uiController.getCurrentMapVisualAngle().isMediumSight()) {
|
||||
uiController.setLockMode(false);
|
||||
uiController.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long);
|
||||
} else {
|
||||
uiController.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -263,14 +261,16 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
|
||||
protected abstract void onArriveStation();
|
||||
|
||||
private void updateSwitchMapIcon() {
|
||||
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController();
|
||||
if (controller != null) {
|
||||
if (controller.getCurrentMapVisualAngle().isLongSight()) {
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long);
|
||||
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
|
||||
} else {
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
|
||||
if(mapBizView != null){
|
||||
IMogoMapUIController uiController = mapBizView.getUI();
|
||||
if(uiController != null){
|
||||
if (uiController.getCurrentMapVisualAngle().isLongSight()) {
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long);
|
||||
} else if (uiController.getCurrentMapVisualAngle().isMediumSight()) {
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
|
||||
} else {
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -560,7 +560,9 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
smallMapView.onDestroy();
|
||||
if(smallMapView != null){
|
||||
smallMapView.onDestroy();
|
||||
}
|
||||
MogoMapListenerHandler.Companion.getMogoMapListenerHandler().unregisterHostMapListener(TAG);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.mogo.och.bus.fragment;
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS;
|
||||
import static com.mogo.map.MogoMap.DEFAULT;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
@@ -15,9 +17,7 @@ import androidx.annotation.Nullable;
|
||||
|
||||
import com.alibaba.android.arouter.launcher.ARouter;
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
|
||||
import com.mogo.commons.AbsMogoApplication;
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
|
||||
import com.mogo.eagle.core.data.map.CenterLine;
|
||||
import com.mogo.eagle.core.data.temp.EventLogout;
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
|
||||
@@ -28,7 +28,6 @@ import com.mogo.eagle.core.utilcode.util.ToastUtils;
|
||||
import com.mogo.map.overlay.IMoGoOverlayManager;
|
||||
import com.mogo.map.overlay.core.Level;
|
||||
import com.mogo.map.overlay.point.Point;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
import com.mogo.och.bus.R;
|
||||
import com.mogo.och.data.bean.BusStationBean;
|
||||
import com.mogo.och.bus.constant.BusConst;
|
||||
@@ -493,24 +492,13 @@ public class BusFragment extends BaseBusTabFragment<BusFragment, BusPresenter>
|
||||
.anchor(0.5f, 0.5f)
|
||||
.set3DMode(true)
|
||||
.isUseGps(true)
|
||||
.controlAngle(true)
|
||||
.controlAngle(false)
|
||||
.icon3DRes(resourceId)
|
||||
.latitude(lat)
|
||||
.longitude(longi);
|
||||
IMogoMapUIController mapUIController = CallerMapUIServiceManager.INSTANCE.getMapUIController();
|
||||
if (mapUIController != null) {
|
||||
CenterLine centerLine = mapUIController.getCenterLineInfo(
|
||||
longi,lat,-1);
|
||||
if (null != centerLine) { // 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致 地图未初始化会返回空
|
||||
Double angle = centerLine.getAngle();
|
||||
if (angle != null) {
|
||||
builder.rotate(angle.floatValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager();
|
||||
if (overlayManager != null) {
|
||||
overlayManager.showOrUpdatePoint(builder.build());
|
||||
overlayManager.showOrUpdatePoint(builder.build(),DEFAULT);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -382,6 +382,11 @@ public class OrderModel {
|
||||
};
|
||||
|
||||
private final OchAdasStartFailureCallback mAdasStartFailureListener = new OchAdasStartFailureCallback() {
|
||||
@Override
|
||||
public void brakeStatusChanged(boolean isBrakeAvailable) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) {
|
||||
BusAnalyticsManager.getInstance().triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage);
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
<com.mogo.eagle.core.function.view.MapBizView
|
||||
android:id="@+id/mapBizView"
|
||||
app:isWeatherEnable="false"
|
||||
app:locationIcon3DRes="@raw/m2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
|
||||
@@ -119,6 +119,8 @@ public class BusPassengerModel {
|
||||
private int mPreRouteIndex = 0;
|
||||
private int mWipePreIndex = 0;
|
||||
|
||||
private volatile boolean isGoingToNextStation = false;
|
||||
|
||||
private static final int MSG_QUERY_BUS_P_STATION = 1001;
|
||||
private final Handler handler = new Handler(new Handler.Callback() {
|
||||
@Override
|
||||
@@ -291,6 +293,8 @@ public class BusPassengerModel {
|
||||
for (int i = 0; i< stations.size(); i++){
|
||||
BusStationBean station = stations.get(i);
|
||||
if (station.getDrivingStatus() == STATION_STATUS_STOPPED && station.isLeaving() && i+1 < stations.size()){
|
||||
Logger.d(M_BUS_P + TAG, "order = station= leave");
|
||||
isGoingToNextStation = true;
|
||||
mRouteLineInfoCallback.updateStationsInfo(stations,i+1,false);
|
||||
if(mNextStationIndex != i+1){
|
||||
mTwoStationsRouts.clear();
|
||||
@@ -302,6 +306,9 @@ public class BusPassengerModel {
|
||||
if (i == 0){
|
||||
startOrStopRouteAndWipe(false);
|
||||
}
|
||||
|
||||
isGoingToNextStation = false;
|
||||
Logger.d(M_BUS_P + TAG, "order = station= arrive");
|
||||
mPreRouteIndex = 0;
|
||||
startOrStopCalculateRouteInfo(false);
|
||||
mRouteLineInfoCallback.updateStationsInfo(stations,i,true);
|
||||
@@ -452,8 +459,6 @@ public class BusPassengerModel {
|
||||
}
|
||||
};
|
||||
|
||||
private volatile int mPreAutoStatus = -1;
|
||||
|
||||
private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener(){
|
||||
@Override
|
||||
public void onSystemStatus(@NonNull SsmInfo.SsmStatusInf statusInf) {
|
||||
@@ -492,27 +497,29 @@ public class BusPassengerModel {
|
||||
int state = autopilotStatusInfo.getState();
|
||||
if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) {
|
||||
//2022.7.20 自动驾驶更换成带档位的
|
||||
if(state != mPreAutoStatus && null != routesResult){
|
||||
if(null != routesResult){
|
||||
CallerAutoPilotControlManager.INSTANCE.getGlobalPath();
|
||||
}
|
||||
if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotRunning();
|
||||
} else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) {
|
||||
if(state != mPreAutoStatus){
|
||||
mTwoStationsRouts.clear();
|
||||
} else{
|
||||
if (FunctionBuildConfig.isDemoMode &&
|
||||
mNextStationIndex>= 0 && mNextStationIndex <= mStations.size() - 1
|
||||
&& isGoingToNextStation){
|
||||
Logger.d(M_BUS_P + TAG, "FunctionBuildConfig.isDemoMode is true");
|
||||
return;
|
||||
}
|
||||
if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotEnable();
|
||||
} else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) {
|
||||
if(state != mPreAutoStatus){
|
||||
|
||||
if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) {
|
||||
mTwoStationsRouts.clear();
|
||||
}
|
||||
if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotDisable();
|
||||
}else if (state == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING){
|
||||
if(state != mPreAutoStatus){
|
||||
if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotEnable();
|
||||
} else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) {
|
||||
mTwoStationsRouts.clear();
|
||||
if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotDisable();
|
||||
}else if (state == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING){
|
||||
mTwoStationsRouts.clear();
|
||||
if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotRunning();
|
||||
}
|
||||
if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotRunning();
|
||||
}
|
||||
mPreAutoStatus = state;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -12,7 +12,6 @@ import kotlinx.android.synthetic.jinlvvan.p_bus_view_blue_tooth.view.*
|
||||
/**
|
||||
* 魔戒蓝牙控件
|
||||
* 放置于StatusBar右侧位置
|
||||
* todo arrow
|
||||
*/
|
||||
class BusPBlueToothView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
|
||||
@@ -389,8 +389,6 @@ public class BusPassengerRouteFragment extends
|
||||
public void AutopilotStatusChanged(int status) {
|
||||
if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == status) {
|
||||
mAutopilotIv.setImageResource(R.drawable.auto_open);
|
||||
} else if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE == status){
|
||||
mAutopilotIv.setImageResource(R.drawable.auto_close);
|
||||
} else {
|
||||
mAutopilotIv.setImageResource(R.drawable.auto_close);
|
||||
}
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
android:id="@+id/mapBizView"
|
||||
android:layout_width="1810dp"
|
||||
android:layout_height="match_parent"
|
||||
app:styleMode="MAP_STYLE_DAY_VR"
|
||||
app:isWeatherEnable="false"
|
||||
app:locationIcon3DRes="@raw/m2"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"/>
|
||||
|
||||
@@ -54,7 +54,6 @@ class MogoOCHBusPassenger : IMogoOCH, IMogoStatusChangedListener {
|
||||
*/
|
||||
private fun stepIntoVrMode() {
|
||||
d(SceneConstant.M_TAXI_P + TAG, "进入vr模式")
|
||||
getMapUIController()?.stepInVrMode(true) // 白天模式
|
||||
stepInDayMode() //白天模式 状态栏字体颜色变黑
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getOverla
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.map.overlay.core.Level
|
||||
import com.mogo.map.overlay.point.Point
|
||||
import com.mogo.map.MapDataWrapper
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.och.bus.passenger.constant.M2Const.Companion.TYPE_MARKER_M2_LINE
|
||||
import com.mogo.och.bus.passenger.presenter.PM2ADASPresenter
|
||||
@@ -80,8 +81,10 @@ class PM2HPMapFragment :
|
||||
) {
|
||||
//开启线程执行起终点marker设置
|
||||
val setMapMarkerRunnable = Runnable {
|
||||
d("setMapMaker= " + Thread.currentThread().name,
|
||||
uuid + "=latitude=" + station[1] + ",longitude=" + station[0])
|
||||
d(
|
||||
"setMapMaker= " + Thread.currentThread().name,
|
||||
uuid + "=latitude=" + station[1] + ",longitude=" + station[0]
|
||||
)
|
||||
|
||||
val builder = Point.Options.Builder(
|
||||
TYPE_MARKER_M2_LINE,
|
||||
@@ -95,16 +98,12 @@ class PM2HPMapFragment :
|
||||
.icon3DRes(R.raw.star_marker)
|
||||
.longitude(station[0])
|
||||
.latitude(station[1])
|
||||
val mapUIController = getMapUIController()
|
||||
if (mapUIController != null) {
|
||||
val centerLine = mapUIController.getCenterLineInfo(
|
||||
station[0], station[1], -1f
|
||||
)
|
||||
if (null != centerLine) { // 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致 地图未初始化会返回空
|
||||
val angle = centerLine.angle
|
||||
if (angle != null) {
|
||||
builder.rotate(angle.toFloat())
|
||||
}
|
||||
MapDataWrapper.getCenterLineInfo(
|
||||
station[0], station[1], -1f
|
||||
) {
|
||||
// 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致 地图未初始化会返回空
|
||||
it?.let{
|
||||
builder.rotate(it.angle.toFloat())
|
||||
}
|
||||
}
|
||||
val overlayManager = getOverlayManager()
|
||||
|
||||
@@ -12,7 +12,6 @@ import kotlinx.android.synthetic.m2.p_m2_view_blue_tooth.view.*
|
||||
/**
|
||||
* 魔戒蓝牙控件
|
||||
* 放置于StatusBar右侧位置
|
||||
* todo arrow
|
||||
*/
|
||||
class M2BlueToothView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
|
||||
@@ -5,9 +5,13 @@
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<!-- 高精地图 -->
|
||||
|
||||
<com.mogo.eagle.core.function.view.MapBizView
|
||||
android:id="@+id/mapBizView"
|
||||
app:styleMode="MAP_STYLE_DAY_VR"
|
||||
app:carPosition="-0.5"
|
||||
app:default_perspective="MAP_STYLE_VR_ERHAI_B2"
|
||||
app:isWeatherEnable="false"
|
||||
app:locationIcon3DRes="@raw/m2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.mogo.och.sweepercloud.callback
|
||||
import chassis.ChassisStatesOuterClass
|
||||
import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean
|
||||
import com.mogo.och.sweepercloud.database.bean.WeltDataBean
|
||||
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable.IsBootableResp
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon
|
||||
@@ -22,7 +22,7 @@ interface ISweeperCloudTaskCallback {
|
||||
/**
|
||||
* 接取云端任务/正在执行中任务信息回调
|
||||
*/
|
||||
fun onSweeperCloudTask(messageType: SweeperCloudTask.MessageType,taskInfo: SweeperTask.TaskInfo?)
|
||||
fun onSweeperCloudTask(messageType: AiCloudTask.MessageType, taskInfo: SweeperTask.TaskInfo?)
|
||||
|
||||
/**
|
||||
* 云端下发子任务请求pad确认
|
||||
@@ -42,7 +42,7 @@ interface ISweeperCloudTaskCallback {
|
||||
/**
|
||||
* 挂起/恢复
|
||||
*/
|
||||
fun onSweeperCloudTaskSuspendResume(messageType: SweeperCloudTask.MessageType,taskId:String,subTaskId:String,code:Code)
|
||||
fun onSweeperCloudTaskSuspendResume(messageType: AiCloudTask.MessageType,taskId:String,subTaskId:String,code:Code)
|
||||
|
||||
/**
|
||||
* pad请求云端进入自驾
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.mogo.och.sweepercloud.fragment;
|
||||
|
||||
import static com.mogo.map.MogoMap.DEFAULT;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
@@ -48,12 +50,11 @@ import com.mogo.och.sweepercloud.util.AutopilotModeConfigManager;
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils;
|
||||
import com.mogo.och.sweepercloud.view.SweeperTrafficDataView;
|
||||
import com.mogo.och.sweepercloud.view.WeltSmallMapView;
|
||||
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask;
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Random;
|
||||
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
|
||||
@@ -183,7 +184,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
);
|
||||
// 模拟 云端发送任务
|
||||
findViewById(R.id.btnSendTask).setOnClickListener(view -> {
|
||||
SweeperCloudTaskUtils.mockSendCloudTaskInfo(SweeperCloudTask.MessageType.CloudPushTask);
|
||||
SweeperCloudTaskUtils.mockSendCloudTaskInfo(AiCloudTask.MessageType.CloudPushTask);
|
||||
UiThreadHandler.postDelayed(() -> {
|
||||
debugEndSubTask();
|
||||
}, 5000);
|
||||
@@ -236,7 +237,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
}
|
||||
|
||||
private void updateSwitchMapIcon() {
|
||||
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController();
|
||||
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController(DEFAULT);
|
||||
if (controller != null) {
|
||||
if (controller.getCurrentMapVisualAngle().isLongSight()) {
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_big_selector);
|
||||
@@ -412,7 +413,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
mSwitchMapModeImage.setOnClickListener(new OnPreventFastClickListener() {
|
||||
@Override
|
||||
public void onClickImpl(View v) {
|
||||
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController();
|
||||
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController(DEFAULT);
|
||||
if (controller != null) {
|
||||
//切换地图的远近视图
|
||||
if (controller.getCurrentMapVisualAngle().isLongSight()) {
|
||||
|
||||
@@ -34,7 +34,7 @@ import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createSweeperTaskRes
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createSweeperTaskSuspendDialog
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.printMessage
|
||||
import com.mogo.och.sweepercloud.view.SweeperCurrentTaskInfoView
|
||||
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon.TaskStatus
|
||||
@@ -44,9 +44,8 @@ import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.TaskModel
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.cloud.s_r.SweeperTaskCloudSuspendResume
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop
|
||||
import kotlinx.android.synthetic.main.fragment_och_sweeper.sweeper_cl_work_mode
|
||||
import kotlinx.android.synthetic.main.fragment_och_sweeper.sweeper_current_task_view
|
||||
import kotlinx.android.synthetic.main.sweeper_no_data_common_view.noTaskDataView
|
||||
import kotlinx.android.synthetic.main.fragment_och_sweeper.*
|
||||
import kotlinx.android.synthetic.main.sweeper_no_data_common_view.*
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@@ -148,7 +147,8 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
getCurrentTaskView().updateStartAutoPilotBtnByAutoPilotState(
|
||||
state == STATUS_AUTOPILOT_ENABLE,
|
||||
mCurrentRunningSubTaskInfo?.taskModel == TaskModel.AUTO,
|
||||
mCurrentRunningSubTaskInfo?.taskStatus == TaskStatus.RUNNING)
|
||||
mCurrentRunningSubTaskInfo?.taskStatus == TaskStatus.RUNNING
|
||||
)
|
||||
}
|
||||
|
||||
fun onSweeperFutianCleanSystemState(cleanSystemState: ChassisStatesOuterClass.SweeperFuTianTaskSystemStates) {
|
||||
@@ -204,7 +204,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
* 设置云端任务信息
|
||||
*/
|
||||
fun onSweeperCloudTask(
|
||||
messageType: SweeperCloudTask.MessageType,
|
||||
messageType: AiCloudTask.MessageType,
|
||||
taskInfo: SweeperTask.TaskInfo?
|
||||
) {
|
||||
this.mTaskInfo = taskInfo
|
||||
@@ -215,7 +215,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
return
|
||||
}
|
||||
//主动拉取云端正在执行的任务,有则直接在任务列表展示
|
||||
if (messageType == SweeperCloudTask.MessageType.PadSendGetTaskReq) {
|
||||
if (messageType == AiCloudTask.MessageType.PadSendGetTaskReq) {
|
||||
getCurrentTaskView().setData(taskInfo, getCurrentRunningSubTaskPosition())
|
||||
setShowCurrentTaskPanelView(true)
|
||||
addTaskData()
|
||||
@@ -293,7 +293,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
if (subTaskList[index].subTaskId == subTaskId) {
|
||||
val subBuilder = subTaskList[index].toBuilder()
|
||||
subBuilder.taskStatus = subTaskStatus
|
||||
if (subTaskStatus == SweeperCommon.TaskStatus.RUNNING) {
|
||||
if (subTaskStatus == TaskStatus.RUNNING) {
|
||||
mCurrentRunningSubTaskInfo = subBuilder.build()
|
||||
//更新当前正在执行的任务状态
|
||||
updateCurrentSubTaskInfo(index + 1)
|
||||
@@ -303,13 +303,13 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
} else {
|
||||
mCurrentRunningSubTaskInfo = null
|
||||
}
|
||||
if (subTaskStatus == SweeperCommon.TaskStatus.SUSPENDED) {
|
||||
if (subTaskStatus == TaskStatus.SUSPENDED) {
|
||||
mCurrentSuspendSubTaskInfo = subBuilder.build()
|
||||
} else {
|
||||
mCurrentSuspendSubTaskInfo = null
|
||||
}
|
||||
//判断是否结束子任务
|
||||
if (subTaskStatus == SweeperCommon.TaskStatus.FINISHED) {
|
||||
if (subTaskStatus == TaskStatus.FINISHED) {
|
||||
//已完成的计入任务进度,未完成的不计入
|
||||
ToastUtils.showLong("任务完成")
|
||||
showNotice("任务完成")
|
||||
@@ -317,8 +317,8 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
removeHDMapMarkerBySubTask(subTaskList[index])
|
||||
}
|
||||
// 其他异常结束时也需要remove marker
|
||||
if (subTaskStatus == SweeperCommon.TaskStatus.ABNORMAL ||
|
||||
subTaskStatus == SweeperCommon.TaskStatus.CANCEL
|
||||
if (subTaskStatus == TaskStatus.ABNORMAL ||
|
||||
subTaskStatus == TaskStatus.CANCEL
|
||||
) {
|
||||
removeHDMapMarkerBySubTask(subTaskList[index])
|
||||
}
|
||||
@@ -384,7 +384,10 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
// mLoadingDialog.showLoading()
|
||||
// //ToastUtils.showLong("确认")
|
||||
// 发送接收到信息的ACK回执
|
||||
mPresenter?.sendSweeperStopTaskResp(taskId, SweeperTaskStop.StopTaskCode.RECEIVED)
|
||||
mPresenter?.sendSweeperStopTaskResp(
|
||||
taskId,
|
||||
SweeperTaskStop.StopTaskCode.RECEIVED
|
||||
)
|
||||
}
|
||||
|
||||
override fun onRefuseOrEnd() {
|
||||
@@ -398,7 +401,10 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
// mLoadingDialog.showLoading()
|
||||
// //ToastUtils.showLong("倒计时")
|
||||
// 发送接收到信息的ACK回执
|
||||
mPresenter?.sendSweeperStopTaskResp(taskId, SweeperTaskStop.StopTaskCode.RECEIVED)
|
||||
mPresenter?.sendSweeperStopTaskResp(
|
||||
taskId,
|
||||
SweeperTaskStop.StopTaskCode.RECEIVED
|
||||
)
|
||||
}
|
||||
|
||||
override fun onNext() {
|
||||
@@ -468,7 +474,11 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
/**
|
||||
* 云端同步大任务状态
|
||||
*/
|
||||
fun onSweeperCloudBigTaskStatus(taskId: String, bigTaskStatus: SweeperCommon.TaskStatus, isPop: Boolean) {
|
||||
fun onSweeperCloudBigTaskStatus(
|
||||
taskId: String,
|
||||
bigTaskStatus: SweeperCommon.TaskStatus,
|
||||
isPop: Boolean
|
||||
) {
|
||||
//隐藏loading
|
||||
mLoadingDialog.hideLoading()
|
||||
mTaskInfo?.let {
|
||||
@@ -477,16 +487,17 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
return
|
||||
}
|
||||
//大任务处于取消状态/异常结束/正常结束 时都代表大任务结束了,任务列表切换为无任务列表状态
|
||||
if (bigTaskStatus == SweeperCommon.TaskStatus.CANCEL
|
||||
|| bigTaskStatus == SweeperCommon.TaskStatus.ABNORMAL
|
||||
|| bigTaskStatus == SweeperCommon.TaskStatus.FINISHED
|
||||
if (bigTaskStatus == TaskStatus.CANCEL
|
||||
|| bigTaskStatus == TaskStatus.ABNORMAL
|
||||
|| bigTaskStatus == TaskStatus.FINISHED
|
||||
) {
|
||||
mPresenter?.isHasTaskInfo(false)
|
||||
if (isPop) {
|
||||
mDialog = if (bigTaskStatus == SweeperCommon.TaskStatus.CANCEL
|
||||
|| bigTaskStatus == SweeperCommon.TaskStatus.ABNORMAL){
|
||||
sweeperCloudTaskExceptionEndDialog(bigTaskStatus == SweeperCommon.TaskStatus.CANCEL)}
|
||||
else
|
||||
mDialog = if (bigTaskStatus == TaskStatus.CANCEL
|
||||
|| bigTaskStatus == TaskStatus.ABNORMAL
|
||||
) {
|
||||
sweeperCloudTaskExceptionEndDialog(bigTaskStatus == TaskStatus.CANCEL)
|
||||
} else
|
||||
sweeperCloudTaskNormalEndDialog()
|
||||
mDialog?.show()
|
||||
}
|
||||
@@ -495,29 +506,29 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
// 大任务这里也判断移除HD Marker, 双重判断
|
||||
removeHDMapMarkerBySubTask(mCurrentRunningSubTaskInfo)
|
||||
resetTaskInfoPanel()
|
||||
} else if (bigTaskStatus == SweeperCommon.TaskStatus.SUSPENDED) {// 暂停
|
||||
} else if (bigTaskStatus == TaskStatus.SUSPENDED) {// 暂停
|
||||
showNotice("任务已暂停")
|
||||
ToastUtils.showLong("任务已暂停")
|
||||
//更新任务列表中大任务状态
|
||||
val builder = it.toBuilder()
|
||||
builder.taskStatus = SweeperCommon.TaskStatus.SUSPENDED
|
||||
builder.taskStatus = TaskStatus.SUSPENDED
|
||||
mTaskInfo = builder.build()
|
||||
getCurrentTaskView().setData(mTaskInfo, getCurrentRunningSubTaskPosition())
|
||||
} else if (it.taskStatus == SweeperCommon.TaskStatus.SUSPENDED
|
||||
&& bigTaskStatus == SweeperCommon.TaskStatus.RUNNING
|
||||
} else if (it.taskStatus == TaskStatus.SUSPENDED
|
||||
&& bigTaskStatus == TaskStatus.RUNNING
|
||||
) { //恢复
|
||||
showNotice("任务已恢复")
|
||||
ToastUtils.showLong("任务已恢复")
|
||||
|
||||
//更新任务列表中大任务状态
|
||||
val builder = it.toBuilder()
|
||||
builder.taskStatus = SweeperCommon.TaskStatus.RUNNING
|
||||
builder.taskStatus = TaskStatus.RUNNING
|
||||
mTaskInfo = builder.build()
|
||||
getCurrentTaskView().setData(mTaskInfo, getCurrentRunningSubTaskPosition())
|
||||
} else if (bigTaskStatus == SweeperCommon.TaskStatus.RUNNING) { //首次开始运行的时候,非恢复后的运行
|
||||
} else if (bigTaskStatus == TaskStatus.RUNNING) { //首次开始运行的时候,非恢复后的运行
|
||||
//更新任务列表中大任务状态
|
||||
val builder = it.toBuilder()
|
||||
builder.taskStatus = SweeperCommon.TaskStatus.RUNNING
|
||||
builder.taskStatus = TaskStatus.RUNNING
|
||||
mTaskInfo = builder.build()
|
||||
getCurrentTaskView().setData(mTaskInfo, getCurrentRunningSubTaskPosition())
|
||||
}
|
||||
@@ -637,7 +648,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
mSubMutableList = mTaskInfo?.subListList
|
||||
mSubMutableList?.apply {
|
||||
for (index in 0 until size) {
|
||||
if (get(index).taskStatus == SweeperCommon.TaskStatus.RUNNING) {
|
||||
if (get(index).taskStatus == TaskStatus.RUNNING) {
|
||||
mCurrentRunningSubTaskInfo = get(index)
|
||||
updateCurrentSubTaskInfo(index + 1)
|
||||
return index
|
||||
@@ -691,7 +702,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
if (mTaskInfo?.taskId != taskId) return
|
||||
val subInfo = getSubTaskInfoBySubId(subTaskId)
|
||||
subInfo?.let {
|
||||
updateSubTaskInfo(taskId, subTaskId, SweeperCommon.TaskStatus.RUNNING)
|
||||
updateSubTaskInfo(taskId, subTaskId, TaskStatus.RUNNING)
|
||||
|
||||
if (isPop) {
|
||||
showSubTaskConfirmDialog(taskId, subTaskId, it)
|
||||
@@ -858,7 +869,10 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
/**
|
||||
* 大任务恢复弹框
|
||||
*/
|
||||
private fun sweeperCloudTaskResumeDialog(contentStr: String, taskId: String): SweeperCloudDialog? {
|
||||
private fun sweeperCloudTaskResumeDialog(
|
||||
contentStr: String,
|
||||
taskId: String
|
||||
): SweeperCloudDialog? {
|
||||
return createSweeperTaskResumeDialog(context, object : SweeperCloudDialogClickListener {
|
||||
override fun onConfirm() {
|
||||
// 发送接收到信息的ACK回执
|
||||
@@ -901,8 +915,18 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
val hdMarkerIdStart = "marker_sweeper_subtask_${subTask.subTaskId}_start"
|
||||
val hdMarkerIdEnd = "marker_sweeper_subtask_${subTask.subTaskId}_end"
|
||||
|
||||
val setStartMarkerRunnable = createSetHDMapMakerRunnable(hdMarkerIdStart, startPoint.wgsLongitude, startPoint.wgsLatitude, true)
|
||||
val setEndMarkerRunnable = createSetHDMapMakerRunnable(hdMarkerIdEnd, endPoint.wgsLongitude, endPoint.wgsLatitude, false)
|
||||
val setStartMarkerRunnable = createSetHDMapMakerRunnable(
|
||||
hdMarkerIdStart,
|
||||
startPoint.wgsLongitude,
|
||||
startPoint.wgsLatitude,
|
||||
true
|
||||
)
|
||||
val setEndMarkerRunnable = createSetHDMapMakerRunnable(
|
||||
hdMarkerIdEnd,
|
||||
endPoint.wgsLongitude,
|
||||
endPoint.wgsLatitude,
|
||||
false
|
||||
)
|
||||
val removeMarkerRunnable = createRemoveHDMapMakerRunnable()
|
||||
|
||||
val addSubTaskHDMarkRunnable = Runnable {
|
||||
@@ -930,11 +954,11 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
longitude: Double,
|
||||
latitude: Double,
|
||||
isStartMarker: Boolean
|
||||
) : Runnable {
|
||||
): Runnable {
|
||||
//开启线程执行起终点marker设置
|
||||
val setMapMarkerRunnable = Runnable {
|
||||
CallerLogger.d(
|
||||
SceneConstant.M_SWEEPER + "-" +TAG + "-setMapMaker",
|
||||
SceneConstant.M_SWEEPER + "-" + TAG + "-setMapMaker",
|
||||
"threadName=${Thread.currentThread().name}, uuid=$uuid, latitude=$latitude, longitude=$longitude"
|
||||
)
|
||||
|
||||
@@ -944,20 +968,10 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
.anchor(0.5f, 0.5f)
|
||||
.set3DMode(true)
|
||||
.isUseGps(true)
|
||||
.controlAngle(true)
|
||||
.controlAngle(false)
|
||||
.icon3DRes(if (isStartMarker) R.raw.star_marker else R.raw.end_marker)
|
||||
.longitude(longitude)
|
||||
.latitude(latitude)
|
||||
val mapUIController = CallerMapUIServiceManager.getMapUIController()
|
||||
if (mapUIController != null) {
|
||||
val centerLine = mapUIController.getCenterLineInfo(longitude, latitude, -1f)
|
||||
if (null != centerLine) { // 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致 地图未初始化会返回空
|
||||
val angle = centerLine.angle
|
||||
if (angle != null) {
|
||||
builder.rotate(angle.toFloat())
|
||||
}
|
||||
}
|
||||
}
|
||||
val overlayManager = CallerMapUIServiceManager.getOverlayManager()
|
||||
overlayManager?.showOrUpdatePoint(builder.build())
|
||||
}
|
||||
@@ -967,11 +981,11 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
/**
|
||||
* 移除高精地图里的Marker Runnable
|
||||
*/
|
||||
private fun createRemoveHDMapMakerRunnable() : Runnable{
|
||||
private fun createRemoveHDMapMakerRunnable(): Runnable {
|
||||
//开启线程移除起终点marker设置
|
||||
val removeMapMarkerRunnable = Runnable {
|
||||
CallerLogger.d(
|
||||
SceneConstant.M_SWEEPER + "-" +TAG + "-RemoveMapMaker",
|
||||
SceneConstant.M_SWEEPER + "-" + TAG + "-RemoveMapMaker",
|
||||
"threadName=${Thread.currentThread().name}"
|
||||
)
|
||||
val overlayManager = CallerMapUIServiceManager.getOverlayManager()
|
||||
|
||||
@@ -39,7 +39,7 @@ import com.mogo.och.sweepercloud.constant.SweeperConst;
|
||||
import com.mogo.och.sweepercloud.database.MyDataBase;
|
||||
import com.mogo.och.sweepercloud.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils;
|
||||
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask;
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask;
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable;
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask;
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus;
|
||||
@@ -332,7 +332,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperFutianCloudTask(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
public void onSweeperFutianCloudTask(@NonNull AiCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
SweeperTask.TaskInfo taskInfo) {
|
||||
|
||||
CallerLogger.d(M_SWEEPER + TAG,
|
||||
@@ -344,7 +344,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperFutianCloudTaskConfirm(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
public void onSweeperFutianCloudTaskConfirm(@NonNull AiCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
SweeperTaskConfirm.TaskConfirm taskConfirm) {
|
||||
|
||||
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
|
||||
@@ -356,7 +356,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperFutianCloudTaskStatus(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
public void onSweeperFutianCloudTaskStatus(@NonNull AiCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
SweeperTaskStatus.TaskStatusPush taskStatusPush) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
|
||||
"onSweeperFutianCloudTaskStatus:" + printMessage(taskStatusPush));
|
||||
@@ -367,7 +367,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperFutianCloudTaskStop(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
public void onSweeperFutianCloudTaskStop(@NonNull AiCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
SweeperTaskStop.StopTaskReq stopTaskReq) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
|
||||
"onSweeperFutianCloudTaskStop:" + printMessage(stopTaskReq));
|
||||
@@ -378,7 +378,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperFutianCloudTaskSuspendResume(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
public void onSweeperFutianCloudTaskSuspendResume(@NonNull AiCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
SweeperTaskSuspendResume.SuspendResumeTaskResp suspendResumeTaskResp) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
|
||||
"onSweeperFutianCloudTaskSuspendResume:" + printMessage(suspendResumeTaskResp));
|
||||
@@ -390,7 +390,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperFutianCloudBootable(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
public void onSweeperFutianCloudBootable(@NonNull AiCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
SweeperBootable.IsBootableResp isBootableResp) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
|
||||
"onSweeperFutianCloudBootable:" + printMessage(isBootableResp));
|
||||
@@ -401,7 +401,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperFutianCloudBigTaskStatus(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
public void onSweeperFutianCloudBigTaskStatus(@NonNull AiCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
SweeperBigTaskStatus.BigTaskStatusPush bigTaskStatusPush) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
|
||||
"onSweeperFutianCloudBigTaskStatus:" + printMessage(bigTaskStatusPush));
|
||||
@@ -412,7 +412,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperFutianCloudTaskCloudSuspendResume(@NonNull SweeperCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime,
|
||||
public void onSweeperFutianCloudTaskCloudSuspendResume(@NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime,
|
||||
@Nullable SweeperTaskCloudSuspendResume.BigTaskActionPush bigTaskActionPush) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
|
||||
"onSweeperFutianCloudTaskCloudSuspendResume:" + printMessage(bigTaskActionPush));
|
||||
@@ -521,7 +521,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
SweeperTask.GetTaskReq getTaskReq = builder.build();
|
||||
|
||||
CallerLogger.d(M_SWEEPER + TAG,
|
||||
"getCurrentTask:" + printMessage(getTaskReq) + " reqNo:" + reqNo + " messageType:" + SweeperCloudTask.MessageType.PadSendGetTaskReq.getNumber());
|
||||
"getCurrentTask:" + printMessage(getTaskReq) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.PadSendGetTaskReq.getNumber());
|
||||
getAutoPilotControlManager().sendSweeperGetTaskReq(reqNo, getTaskReq);
|
||||
}
|
||||
|
||||
@@ -534,11 +534,11 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
builder.setTaskId(taskId);
|
||||
builder.setCode(code);
|
||||
SweeperTask.StartTaskResp startTaskResp = builder.build();
|
||||
String reqNo = msgTypeAndReqNo.get(SweeperCloudTask.MessageType.CloudPushTask.getNumber());
|
||||
String reqNo = msgTypeAndReqNo.get(AiCloudTask.MessageType.CloudPushTask.getNumber());
|
||||
|
||||
getAutoPilotControlManager().sendSweeperStartTaskResp(reqNo, startTaskResp);
|
||||
CallerLogger.d(M_SWEEPER + TAG,
|
||||
"sendSweeperStartTaskResp:" + printMessage(startTaskResp) + " reqNo:" + reqNo + " messageType:" + SweeperCloudTask.MessageType.CloudPushTask.getNumber());
|
||||
"sendSweeperStartTaskResp:" + printMessage(startTaskResp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTask.getNumber());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -551,9 +551,9 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
builder.setSubTaskId(subTaskId);
|
||||
builder.setCode(code);
|
||||
SweeperTaskConfirm.TaskConfirmResp taskConfirmResp = builder.build();
|
||||
String reqNo = msgTypeAndReqNo.get(SweeperCloudTask.MessageType.CloudPushTaskConfirm.getNumber());
|
||||
String reqNo = msgTypeAndReqNo.get(AiCloudTask.MessageType.CloudPushTaskConfirm.getNumber());
|
||||
CallerLogger.d(M_SWEEPER + TAG,
|
||||
"sendSweeperTaskConfirmResp" + printMessage(taskConfirmResp) + " reqNo:" + reqNo + " messageType:" + SweeperCloudTask.MessageType.CloudPushTaskConfirm.getNumber());
|
||||
"sendSweeperTaskConfirmResp" + printMessage(taskConfirmResp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTaskConfirm.getNumber());
|
||||
getAutoPilotControlManager().sendSweeperTaskConfirmResp(reqNo, taskConfirmResp);
|
||||
}
|
||||
|
||||
@@ -569,10 +569,10 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
builder.setTaskId(taskId);
|
||||
builder.setCode(code);
|
||||
SweeperTaskStop.StopTaskResp stopTaskResp = builder.build();
|
||||
String reqNo = msgTypeAndReqNo.get(SweeperCloudTask.MessageType.CloudPushTaskStop.getNumber());
|
||||
String reqNo = msgTypeAndReqNo.get(AiCloudTask.MessageType.CloudPushTaskStop.getNumber());
|
||||
|
||||
CallerLogger.d(M_SWEEPER + TAG,
|
||||
"sendSweeperStopTaskResp" + printMessage(stopTaskResp) + " reqNo:" + reqNo + " messageType:" + SweeperCloudTask.MessageType.CloudPushTaskStop.getNumber());
|
||||
"sendSweeperStopTaskResp" + printMessage(stopTaskResp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTaskStop.getNumber());
|
||||
getAutoPilotControlManager().sendSweeperStopTaskResp(reqNo, stopTaskResp);
|
||||
}
|
||||
|
||||
@@ -593,7 +593,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
String reqNo = SweeperCloudTaskUtils.getRequestId();
|
||||
|
||||
CallerLogger.d(M_SWEEPER + TAG,
|
||||
"sendSweeperAutopilotBootable" + printMessage(isBootable) + " reqNo:" + reqNo + " messageType:" + SweeperCloudTask.MessageType.PadSendBootable.getNumber());
|
||||
"sendSweeperAutopilotBootable" + printMessage(isBootable) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.PadSendBootable.getNumber());
|
||||
getAutoPilotControlManager().sendSweeperAutopilotBootable(reqNo, isBootable);
|
||||
//SweeperCloudTaskUtils.mockSendCloudBootable();
|
||||
}
|
||||
@@ -609,10 +609,10 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
builder.setTaskId(taskId);
|
||||
builder.setCode(code);
|
||||
SweeperTaskCloudSuspendResume.BigTaskActionResp resp = builder.build();
|
||||
String reqNo = msgTypeAndReqNo.get(SweeperCloudTask.MessageType.CloudPushTaskSuspendResume.getNumber());
|
||||
String reqNo = msgTypeAndReqNo.get(AiCloudTask.MessageType.CloudPushTaskSuspendResume.getNumber());
|
||||
|
||||
CallerLogger.d(M_SWEEPER + TAG,
|
||||
"sendSweeperSuspendResumeTaskResp" + printMessage(resp) + " reqNo:" + reqNo + " messageType:" + SweeperCloudTask.MessageType.CloudPushTaskSuspendResume);
|
||||
"sendSweeperSuspendResumeTaskResp" + printMessage(resp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTaskSuspendResume);
|
||||
getAutoPilotControlManager().sendSweeperCloudSuspendResumeTaskResp(reqNo, resp);
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ import com.mogo.och.sweepercloud.callback.ISweeperTaskRouteCallback;
|
||||
import com.mogo.och.sweepercloud.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweepercloud.fragment.SweeperFragment;
|
||||
import com.mogo.och.sweepercloud.model.SweeperTaskModel;
|
||||
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask;
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask;
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable;
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon;
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask;
|
||||
@@ -190,7 +190,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperCloudTask(@NonNull SweeperCloudTask.MessageType messageType, SweeperTask.TaskInfo taskInfo) {
|
||||
public void onSweeperCloudTask(@NonNull AiCloudTask.MessageType messageType, SweeperTask.TaskInfo taskInfo) {
|
||||
ThreadUtils.runOnUiThread(() -> mView.onSweeperCloudTask(messageType, taskInfo));
|
||||
}
|
||||
|
||||
@@ -210,7 +210,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperCloudTaskSuspendResume(@NonNull SweeperCloudTask.MessageType messageType, @NonNull String taskId,
|
||||
public void onSweeperCloudTaskSuspendResume(@NonNull AiCloudTask.MessageType messageType, @NonNull String taskId,
|
||||
@NonNull String subTaskId, SweeperCommon.Code code) {
|
||||
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ import com.mogo.och.sweepercloud.callback.SweeperCloudDialogClickListener
|
||||
import com.mogo.och.sweepercloud.constant.SweeperConst
|
||||
import com.mogo.och.sweepercloud.model.SweeperTaskModel
|
||||
import com.mogo.och.sweepercloud.ui.dialog.SweeperCloudDialog
|
||||
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask.MessageType
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.Location
|
||||
@@ -30,7 +30,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm.TaskConfirm
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.status.SweeperTaskStatus
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop
|
||||
import java.util.UUID
|
||||
import java.util.*
|
||||
|
||||
object SweeperCloudTaskUtils {
|
||||
const val TAG = "SweeperCloudTaskUtils"
|
||||
@@ -50,7 +50,7 @@ object SweeperCloudTaskUtils {
|
||||
* 模拟云控发送任务给pad
|
||||
*/
|
||||
@JvmStatic
|
||||
fun mockSendCloudTaskInfo(messageType: MessageType) {
|
||||
fun mockSendCloudTaskInfo(messageType: AiCloudTask.MessageType) {
|
||||
val builder = TaskInfo.newBuilder()
|
||||
builder.sn = getDriverSn()
|
||||
builder.taskId = "10"
|
||||
@@ -66,10 +66,10 @@ object SweeperCloudTaskUtils {
|
||||
subBuilder0.taskStatus = SweeperCommon.TaskStatus.TO_START
|
||||
val startLocation0 = Location.newBuilder()
|
||||
startLocation0.siteName = "自动驾驶子任务起点0"
|
||||
startLocation0.wgsLongitude =112.56970262448544
|
||||
startLocation0.wgsLongitude = 112.56970262448544
|
||||
startLocation0.wgsLatitude = 26.817567832504274
|
||||
startLocation0.longitude = 112.57493487730413
|
||||
startLocation0.latitude = 26.81397095451884
|
||||
startLocation0.latitude = 26.81397095451884
|
||||
subBuilder0.startLocation = startLocation0.build()
|
||||
val endLocation0 = Location.newBuilder()
|
||||
endLocation0.siteName = "自动驾驶子任务终点0"
|
||||
@@ -156,7 +156,10 @@ object SweeperCloudTaskUtils {
|
||||
System.currentTimeMillis(),
|
||||
builder.build()
|
||||
)
|
||||
CallerLogger.d(SceneConstant.M_SWEEPER + TAG, "messageType:" + messageType.number + "taskInfo:" + printMessage(builder.build()))
|
||||
CallerLogger.d(
|
||||
SceneConstant.M_SWEEPER + TAG,
|
||||
"messageType:" + messageType.number + "taskInfo:" + printMessage(builder.build())
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -169,7 +172,7 @@ object SweeperCloudTaskUtils {
|
||||
builder.taskId = "10"
|
||||
builder.subTaskId = "1"
|
||||
SweeperTaskModel.getInstance().onSweeperFutianCloudTaskConfirm(
|
||||
MessageType.CloudPushTaskConfirm, "${System.currentTimeMillis()}",
|
||||
AiCloudTask.MessageType.CloudPushTaskConfirm, "${System.currentTimeMillis()}",
|
||||
System.currentTimeMillis(), builder.build()
|
||||
)
|
||||
}
|
||||
@@ -185,7 +188,7 @@ object SweeperCloudTaskUtils {
|
||||
builder.subTaskId = "1"
|
||||
builder.taskStatus = SweeperCommon.TaskStatus.RUNNING
|
||||
SweeperTaskModel.getInstance().onSweeperFutianCloudTaskStatus(
|
||||
MessageType.CloudPushTaskStatus, "${System.currentTimeMillis()}",
|
||||
AiCloudTask.MessageType.CloudPushTaskStatus, "${System.currentTimeMillis()}",
|
||||
System.currentTimeMillis(), builder.build()
|
||||
)
|
||||
}
|
||||
@@ -200,7 +203,7 @@ object SweeperCloudTaskUtils {
|
||||
builder.taskId = "10"
|
||||
builder.type = SweeperTaskStop.StopTaskType.ADVANCE
|
||||
SweeperTaskModel.getInstance().onSweeperFutianCloudTaskStop(
|
||||
MessageType.CloudPushTaskStop, "${System.currentTimeMillis()}",
|
||||
AiCloudTask.MessageType.CloudPushTaskStop, "${System.currentTimeMillis()}",
|
||||
System.currentTimeMillis(), builder.build()
|
||||
)
|
||||
}
|
||||
@@ -216,7 +219,7 @@ object SweeperCloudTaskUtils {
|
||||
builder.taskStatus = SweeperCommon.TaskStatus.FINISHED
|
||||
builder.systemTime = System.currentTimeMillis()
|
||||
SweeperTaskModel.getInstance().onSweeperFutianCloudBigTaskStatus(
|
||||
MessageType.CloudPushBigTaskStatus, "${System.currentTimeMillis()}",
|
||||
AiCloudTask.MessageType.CloudPushBigTaskStatus, "${System.currentTimeMillis()}",
|
||||
System.currentTimeMillis(), builder.build()
|
||||
)
|
||||
}
|
||||
@@ -233,7 +236,7 @@ object SweeperCloudTaskUtils {
|
||||
builder.code = SweeperCommon.Code.SUCCEED
|
||||
UiThreadHandler.getsUiHandler().postDelayed({
|
||||
SweeperTaskModel.getInstance().onSweeperFutianCloudBootable(
|
||||
MessageType.PadSendBootable, "${System.currentTimeMillis()}",
|
||||
AiCloudTask.MessageType.PadSendBootable, "${System.currentTimeMillis()}",
|
||||
System.currentTimeMillis(), builder.build()
|
||||
)
|
||||
}, 10000)
|
||||
@@ -244,28 +247,21 @@ object SweeperCloudTaskUtils {
|
||||
*/
|
||||
@JvmStatic
|
||||
fun mockAddHdMarker(uuid: String, longitude: Double, latitude: Double, isStartMarker: Boolean) {
|
||||
//开启线程执行起终点marker设置
|
||||
//开启线程执行起终点marker设置
|
||||
val setMapMarkerRunnable = Runnable {
|
||||
val builder =
|
||||
Point.Options.Builder(SweeperConst.TYPE_MARKER_SWEEPER_SUBTASK_START_END, Level.MAP_MARKER)
|
||||
Point.Options.Builder(
|
||||
SweeperConst.TYPE_MARKER_SWEEPER_SUBTASK_START_END,
|
||||
Level.MAP_MARKER
|
||||
)
|
||||
.setId(uuid)
|
||||
.anchor(0.5f, 0.5f)
|
||||
.set3DMode(true)
|
||||
.isUseGps(true)
|
||||
.controlAngle(true)
|
||||
.controlAngle(false)
|
||||
.icon3DRes(if (isStartMarker) R.raw.star_marker else R.raw.end_marker)
|
||||
.longitude(longitude)
|
||||
.latitude(latitude)
|
||||
val mapUIController = CallerMapUIServiceManager.getMapUIController()
|
||||
if (mapUIController != null) {
|
||||
val centerLine = mapUIController.getCenterLineInfo(longitude, latitude, -1f)
|
||||
if (null != centerLine) { // 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致 地图未初始化会返回空
|
||||
val angle = centerLine.angle
|
||||
if (angle != null) {
|
||||
builder.rotate(angle.toFloat())
|
||||
}
|
||||
}
|
||||
}
|
||||
val overlayManager = CallerMapUIServiceManager.getOverlayManager()
|
||||
Log.d(TAG, "CallerMapUIServiceManager.getOverlayManager()=$overlayManager")
|
||||
overlayManager?.showOrUpdatePoint(builder.build())
|
||||
@@ -294,18 +290,23 @@ object SweeperCloudTaskUtils {
|
||||
* 创建接收大任务弹窗
|
||||
*/
|
||||
@JvmStatic
|
||||
fun createReceivedBigTaskInfoDialog(context: Context?, listener: SweeperCloudDialogClickListener?, taskInfo: TaskInfo): SweeperCloudDialog? {
|
||||
var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
fun createReceivedBigTaskInfoDialog(
|
||||
context: Context?,
|
||||
listener: SweeperCloudDialogClickListener?,
|
||||
taskInfo: TaskInfo
|
||||
): SweeperCloudDialog? {
|
||||
val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
val startCalendar = DateTimeUtil.formatLongToCalendar(taskInfo.taskStartTime)
|
||||
val endCalendar = DateTimeUtil.formatLongToCalendar(taskInfo.taskEndTime)
|
||||
builder.titleStr = "任务接取"
|
||||
builder.contentStr = "已为您接取任务${taskInfo.taskName}"
|
||||
builder.tipStr = "(任务时间${DateTimeUtil.formatCalendarToString(startCalendar, DateTimeUtil.HH_mm)}-${
|
||||
DateTimeUtil.formatCalendarToString(
|
||||
endCalendar,
|
||||
DateTimeUtil.HH_mm
|
||||
)
|
||||
})"
|
||||
builder.tipStr =
|
||||
"(任务时间${DateTimeUtil.formatCalendarToString(startCalendar, DateTimeUtil.HH_mm)}-${
|
||||
DateTimeUtil.formatCalendarToString(
|
||||
endCalendar,
|
||||
DateTimeUtil.HH_mm
|
||||
)
|
||||
})"
|
||||
builder.leftStr = "确认"
|
||||
builder.middleStr = ""
|
||||
builder.rightStr = ""
|
||||
@@ -323,7 +324,7 @@ object SweeperCloudTaskUtils {
|
||||
listener: SweeperCloudDialogClickListener?,
|
||||
subTaskInfo: SubTaskInfo
|
||||
): SweeperCloudDialog? {
|
||||
var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
builder.titleStr = "子任务确认"
|
||||
builder.contentStr = "请确认并执行子任务 ${subTaskInfo.subTaskName}"
|
||||
builder.tipStr =
|
||||
@@ -346,7 +347,7 @@ object SweeperCloudTaskUtils {
|
||||
stopTaskType: SweeperTaskStop.StopTaskType,
|
||||
timeoutStr: String
|
||||
): SweeperCloudDialog? {
|
||||
var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
val titleStr = when (stopTaskType) {
|
||||
SweeperTaskStop.StopTaskType.ADVANCE -> "任务中止"
|
||||
SweeperTaskStop.StopTaskType.EXCEPTION -> "任务异常结束"
|
||||
@@ -386,7 +387,7 @@ object SweeperCloudTaskUtils {
|
||||
context: Context?,
|
||||
listener: SweeperCloudDialogClickListener?
|
||||
): SweeperCloudDialog? {
|
||||
var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
builder.titleStr = "任务结束"
|
||||
builder.contentStr = "任务已完成,干的漂亮!"
|
||||
builder.tipStr = ""
|
||||
@@ -407,7 +408,7 @@ object SweeperCloudTaskUtils {
|
||||
listener: SweeperCloudDialogClickListener?,
|
||||
isCancel: Boolean
|
||||
): SweeperCloudDialog? {
|
||||
var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
builder.titleStr = "任务结束"
|
||||
builder.contentStr = if (isCancel) "任务已取消!" else "任务已异常结束!"
|
||||
builder.tipStr = ""
|
||||
@@ -424,7 +425,7 @@ object SweeperCloudTaskUtils {
|
||||
context: Context?,
|
||||
listener: SweeperCloudDialogClickListener?
|
||||
): SweeperCloudDialog? {
|
||||
var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
builder.titleStr = "任务暂停"
|
||||
builder.contentStr = "云端暂停任务,注意车辆即将停车!"
|
||||
builder.tipStr = "【云端任务恢复前不可启动自动驾驶】"
|
||||
@@ -442,7 +443,7 @@ object SweeperCloudTaskUtils {
|
||||
listener: SweeperCloudDialogClickListener?,
|
||||
contentStr: String
|
||||
): SweeperCloudDialog? {
|
||||
var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
builder.titleStr = "任务恢复"
|
||||
builder.contentStr = contentStr
|
||||
builder.tipStr = "【注意安全,坐稳扶好】"
|
||||
@@ -456,11 +457,11 @@ object SweeperCloudTaskUtils {
|
||||
|
||||
@JvmStatic
|
||||
fun printMessage(message: MessageOrBuilder): String {
|
||||
return "\n"+TextFormat.printer().escapingNonAscii(false).printToString(message)
|
||||
return "\n" + TextFormat.printer().escapingNonAscii(false).printToString(message)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun getRequestId():String{
|
||||
fun getRequestId(): String {
|
||||
return UUID.randomUUID().toString()
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
|
||||
<com.mogo.eagle.core.function.view.MapBizView
|
||||
android:id="@+id/mapBizView"
|
||||
app:isWeatherEnable="false"
|
||||
app:locationIcon3DRes="@raw/huanwei"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
|
||||
@@ -9,7 +9,6 @@ import android.widget.ImageView;
|
||||
|
||||
import com.amap.api.maps.model.LatLng;
|
||||
import com.amap.api.navi.model.NaviLatLng;
|
||||
import com.mogo.commons.AbsMogoApplication;
|
||||
import com.mogo.commons.mvp.IView;
|
||||
import com.mogo.commons.mvp.MvpFragment;
|
||||
import com.mogo.commons.mvp.Presenter;
|
||||
@@ -17,7 +16,6 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager;
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView;
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView;
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView;
|
||||
@@ -27,7 +25,6 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
import com.mogo.map.listener.IMogoMapListener;
|
||||
import com.mogo.map.listener.MogoMapListenerHandler;
|
||||
import com.mogo.map.overlay.IMoGoOverlayManager;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
import com.mogo.map.uicontroller.VisualAngleMode;
|
||||
import com.mogo.och.common.module.map.AmapNaviToDestinationModel;
|
||||
@@ -158,22 +155,22 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
}
|
||||
|
||||
private void updateSwitchMapIcon() {
|
||||
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController();
|
||||
if (controller != null) {
|
||||
if (controller.getCurrentMapVisualAngle().isLongSight()) {
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_big_selector);
|
||||
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_small_selector);
|
||||
} else {
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_small_selector);
|
||||
if(mapBizView != null){
|
||||
IMogoMapUIController uiController = mapBizView.getUI();
|
||||
if(uiController != null){
|
||||
if (uiController.getCurrentMapVisualAngle().isLongSight()) {
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_big_selector);
|
||||
} else if (uiController.getCurrentMapVisualAngle().isMediumSight()) {
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_small_selector);
|
||||
} else {
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_small_selector);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置任务进度
|
||||
*
|
||||
* @param progress
|
||||
*/
|
||||
protected void setTaskProgress(String progress) {
|
||||
ThreadUtils.runOnUiThread(() -> {
|
||||
@@ -257,9 +254,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
MogoMapListenerHandler.Companion.getMogoMapListenerHandler().registerHostMapListener(TAG, this);
|
||||
mCloseNavIcon.setOnClickListener(this);
|
||||
mRefreshNavi.setOnClickListener(this);
|
||||
mMapWeltView.getSwitchToBig().setOnClickListener((v) -> {
|
||||
showOrHideOverMapViewFragment(true);
|
||||
});
|
||||
mMapWeltView.getSwitchToBig().setOnClickListener((v) -> showOrHideOverMapViewFragment(true));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -271,15 +266,11 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
|
||||
/**
|
||||
* 模拟自动驾驶返回状态
|
||||
*
|
||||
* @param status
|
||||
*/
|
||||
public abstract void debugAutoPilotStatus(int status);
|
||||
|
||||
/**
|
||||
* 迈速表实时更新
|
||||
*
|
||||
* @param newSpeed
|
||||
*/
|
||||
public void updateSpeedView(float newSpeed) {
|
||||
int speed = (int) (Math.abs(newSpeed) * 3.6F); // 倒车时工控机反馈定位信息中speed为负值
|
||||
@@ -290,8 +281,6 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
|
||||
/**
|
||||
* 车辆基本信息View
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public SweeperTrafficDataView getTrafficDataView() {
|
||||
return mTrafficDataView;
|
||||
@@ -338,34 +327,24 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
mSwitchMapModeImage.setOnClickListener(new OnPreventFastClickListener() {
|
||||
@Override
|
||||
public void onClickImpl(View v) {
|
||||
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController();
|
||||
|
||||
if (controller != null) {
|
||||
//切换地图的远近视图
|
||||
if (controller.getCurrentMapVisualAngle().isLongSight()) {
|
||||
// 2.11.0去掉
|
||||
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).visibleAllMarkers();
|
||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_small_selector);
|
||||
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
|
||||
// 2.11.0去掉
|
||||
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
|
||||
// .inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS, BusConst.TYPE_MARKER_BUS_ORDER);
|
||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_big_selector);
|
||||
} else {
|
||||
// 2.11.0去掉
|
||||
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).visibleAllMarkers();
|
||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_big_selector);
|
||||
if(mapBizView != null){
|
||||
IMogoMapUIController uiController = mapBizView.getUI();
|
||||
if(uiController != null){
|
||||
if (uiController.getCurrentMapVisualAngle().isLongSight()) {
|
||||
uiController.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_small_selector);
|
||||
} else if (uiController.getCurrentMapVisualAngle().isMediumSight()) {
|
||||
uiController.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_big_selector);
|
||||
} else {
|
||||
uiController.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_big_selector);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
mSettingBtn.setOnClickListener(v -> {
|
||||
// TODO: 2021/12/9
|
||||
CallerHmiManager.INSTANCE.showToolsView();
|
||||
});
|
||||
mSettingBtn.setOnClickListener(v -> CallerHmiManager.INSTANCE.showToolsView());
|
||||
if (mCardBtn != null) {
|
||||
CallerDevaToolsManager.INSTANCE.initBadCase(mCardBtn);
|
||||
}
|
||||
@@ -423,8 +402,6 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
|
||||
/**
|
||||
* 设置作业任务全览图隐藏或者显示
|
||||
*
|
||||
* @param isShow
|
||||
*/
|
||||
public void showOrHideOverMapViewFragment(boolean isShow) {
|
||||
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
|
||||
@@ -470,20 +447,15 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
|
||||
/**
|
||||
* 设置贴边数据到地图
|
||||
*
|
||||
* @param weltDataBeans
|
||||
*/
|
||||
public void setWeltDataToMap(ArrayList<WeltDataBean> weltDataBeans, Boolean isWeltData, String distance) {
|
||||
mWeltDataBeanList = weltDataBeans;
|
||||
ThreadUtils.getSinglePool().execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (mMapWeltView != null) {
|
||||
mMapWeltView.setWeltData(weltDataBeans, isWeltData, distance);
|
||||
}
|
||||
if (mTaskDataToFragmentCallback != null) {
|
||||
mTaskDataToFragmentCallback.setWeltData(weltDataBeans, distance);
|
||||
}
|
||||
ThreadUtils.getSinglePool().execute(() -> {
|
||||
if (mMapWeltView != null) {
|
||||
mMapWeltView.setWeltData(weltDataBeans, isWeltData, distance);
|
||||
}
|
||||
if (mTaskDataToFragmentCallback != null) {
|
||||
mTaskDataToFragmentCallback.setWeltData(weltDataBeans, distance);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -535,13 +507,10 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
*/
|
||||
public void setTaskRouteList(ArrayList<SweeperRoutePlanningUpdateReqBean.Result> routeList) {
|
||||
mRouteList = routeList;
|
||||
ThreadUtils.getSinglePool().execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
mMapWeltView.setRouteList(routeList);
|
||||
if (mTaskDataToFragmentCallback != null) {
|
||||
mTaskDataToFragmentCallback.setRouteList(routeList);
|
||||
}
|
||||
ThreadUtils.getSinglePool().execute(() -> {
|
||||
mMapWeltView.setRouteList(routeList);
|
||||
if (mTaskDataToFragmentCallback != null) {
|
||||
mTaskDataToFragmentCallback.setRouteList(routeList);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -287,6 +287,11 @@ public class SweeperTaskModel {
|
||||
};
|
||||
|
||||
private final OchAdasStartFailureCallback mAdasStartFailureListener = new OchAdasStartFailureCallback() {
|
||||
@Override
|
||||
public void brakeStatusChanged(boolean isBrakeAvailable) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) {
|
||||
SweeperAnalyticsManager.getInstance().triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage);
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
|
||||
<com.mogo.eagle.core.function.view.MapBizView
|
||||
android:id="@+id/mapBizView"
|
||||
app:isWeatherEnable="false"
|
||||
app:locationIcon3DRes="@raw/huanwei"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ enum class TaxiOrderStatusEnum(val code: Int) {
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun valueOf(code: Int): TaxiOrderStatusEnum? {
|
||||
fun valueOf(code: Int): TaxiOrderStatusEnum {
|
||||
for (value in values()) {
|
||||
if (value.code == code) {
|
||||
return value
|
||||
|
||||
@@ -894,12 +894,9 @@ public class TaxiModel {
|
||||
|
||||
//检测当前订单
|
||||
public boolean checkCurrentOCHOrder() {
|
||||
if (mCurrentOCHOrder != null
|
||||
return mCurrentOCHOrder != null
|
||||
&& mCurrentOCHOrder.startSiteGcjPoint != null
|
||||
&& mCurrentOCHOrder.endSiteGcjPoint != null) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
&& mCurrentOCHOrder.endSiteGcjPoint != null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1064,6 +1061,11 @@ public class TaxiModel {
|
||||
};
|
||||
|
||||
private final OchAdasStartFailureCallback mAdasStartFailureListener = new OchAdasStartFailureCallback() {
|
||||
@Override
|
||||
public void brakeStatusChanged(boolean isBrakeAvailable) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) {
|
||||
TaxiAnalyticsManager.INSTANCE.triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage);
|
||||
|
||||
@@ -48,8 +48,6 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
|
||||
|
||||
private static final String TAG = TaxiPresenter.class.getSimpleName();
|
||||
|
||||
private int preAutopilotStatus = 0;
|
||||
|
||||
public TaxiPresenter(TaxiFragment view) {
|
||||
super(view);
|
||||
TaxiModel.getInstance().init(AbsMogoApplication.getApp());
|
||||
@@ -192,30 +190,24 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
|
||||
public void onAutopilotEnable() {
|
||||
runOnUIThread(() -> mView.updateAutopilotStatus(
|
||||
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE));
|
||||
preAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotDisable() {
|
||||
runOnUIThread(() -> mView.updateAutopilotStatus(
|
||||
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE));
|
||||
preAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotRunning() {
|
||||
if (preAutopilotStatus != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){
|
||||
runOnUIThread(() -> mView.updateAutopilotStatus(
|
||||
runOnUIThread(() -> mView.updateAutopilotStatus(
|
||||
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING));
|
||||
}
|
||||
preAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onManMachineCoDriving() {
|
||||
runOnUIThread(() -> mView.onManMachineCoDriving(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING));
|
||||
preAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,6 +22,7 @@ import androidx.annotation.Nullable;
|
||||
import androidx.constraintlayout.widget.Group;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
|
||||
import com.mogo.commons.AbsMogoApplication;
|
||||
import com.mogo.commons.mvp.IView;
|
||||
import com.mogo.commons.mvp.MvpFragment;
|
||||
import com.mogo.commons.mvp.Presenter;
|
||||
@@ -31,13 +32,13 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager;
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView;
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView;
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView;
|
||||
import com.mogo.eagle.core.function.view.MapBizView;
|
||||
import com.mogo.eagle.core.function.smp.view.SmallMapView;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant;
|
||||
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener;
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
@@ -45,12 +46,14 @@ import com.mogo.map.listener.IMogoMapListener;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
import com.mogo.map.uicontroller.VisualAngleMode;
|
||||
import com.mogo.och.common.module.utils.AnimatorDrawableUtil;
|
||||
import com.mogo.och.common.module.utils.FrameAnimatorContainer;
|
||||
import com.mogo.och.taxi.R;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
|
||||
import bag_manager.BagManagerOuterClass;
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils;
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
import record_cache.RecordPanelOuterClass;
|
||||
|
||||
@@ -92,63 +95,10 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
|
||||
|
||||
protected SmallMapView smallMapView;
|
||||
|
||||
private Handler mHandler = new Handler(Looper.getMainLooper());
|
||||
private final Handler mHandler = new Handler(Looper.getMainLooper());
|
||||
|
||||
private Integer[] startAutopilotDrawableIds = new Integer[]{
|
||||
R.drawable.anim_flow_00000, R.drawable.anim_flow_00001, R.drawable.anim_flow_00002,
|
||||
R.drawable.anim_flow_00003, R.drawable.anim_flow_00004, R.drawable.anim_flow_00005,
|
||||
R.drawable.anim_flow_00006, R.drawable.anim_flow_00007, R.drawable.anim_flow_00008,
|
||||
R.drawable.anim_flow_00009, R.drawable.anim_flow_00010, R.drawable.anim_flow_00011,
|
||||
R.drawable.anim_flow_00012, R.drawable.anim_flow_00013, R.drawable.anim_flow_00014,
|
||||
R.drawable.anim_flow_00015, R.drawable.anim_flow_00016, R.drawable.anim_flow_00017,
|
||||
R.drawable.anim_flow_00018, R.drawable.anim_flow_00019, R.drawable.anim_flow_00020,
|
||||
R.drawable.anim_flow_00021, R.drawable.anim_flow_00022, R.drawable.anim_flow_00023,
|
||||
R.drawable.anim_flow_00024, R.drawable.anim_flow_00025, R.drawable.anim_flow_00026,
|
||||
R.drawable.anim_flow_00027, R.drawable.anim_flow_00028, R.drawable.anim_flow_00029,
|
||||
R.drawable.anim_flow_00030, R.drawable.anim_flow_00031, R.drawable.anim_flow_00032,
|
||||
R.drawable.anim_flow_00033, R.drawable.anim_flow_00034, R.drawable.anim_flow_00035,
|
||||
R.drawable.anim_flow_00036, R.drawable.anim_flow_00037, R.drawable.anim_flow_00038,
|
||||
R.drawable.anim_flow_00039, R.drawable.anim_flow_00040, R.drawable.anim_flow_00041,
|
||||
R.drawable.anim_flow_00042, R.drawable.anim_flow_00043, R.drawable.anim_flow_00044,
|
||||
R.drawable.anim_flow_00045, R.drawable.anim_flow_00046, R.drawable.anim_flow_00047,
|
||||
R.drawable.anim_flow_00048, R.drawable.anim_flow_00049, R.drawable.anim_flow_00050,
|
||||
R.drawable.anim_flow_00051, R.drawable.anim_flow_00052, R.drawable.anim_flow_00053,
|
||||
R.drawable.anim_flow_00054, R.drawable.anim_flow_00055, R.drawable.anim_flow_00056,
|
||||
R.drawable.anim_flow_00057, R.drawable.anim_flow_00058, R.drawable.anim_flow_00059
|
||||
};
|
||||
|
||||
private Integer[] startManCODrawableIds = new Integer[]{
|
||||
R.drawable.anim_flow_man_co_00000, R.drawable.anim_flow_man_co_00001,
|
||||
R.drawable.anim_flow_man_co_00002, R.drawable.anim_flow_man_co_00003,
|
||||
R.drawable.anim_flow_man_co_00004, R.drawable.anim_flow_man_co_00005,
|
||||
R.drawable.anim_flow_man_co_00006, R.drawable.anim_flow_man_co_00007,
|
||||
R.drawable.anim_flow_man_co_00008, R.drawable.anim_flow_man_co_00009,
|
||||
R.drawable.anim_flow_man_co_00010, R.drawable.anim_flow_man_co_00011,
|
||||
R.drawable.anim_flow_man_co_00012, R.drawable.anim_flow_man_co_00013,
|
||||
R.drawable.anim_flow_man_co_00014, R.drawable.anim_flow_man_co_00015,
|
||||
R.drawable.anim_flow_man_co_00016, R.drawable.anim_flow_man_co_00017,
|
||||
R.drawable.anim_flow_man_co_00018, R.drawable.anim_flow_man_co_00019,
|
||||
R.drawable.anim_flow_man_co_00020, R.drawable.anim_flow_man_co_00021,
|
||||
R.drawable.anim_flow_man_co_00022, R.drawable.anim_flow_man_co_00023,
|
||||
R.drawable.anim_flow_man_co_00024, R.drawable.anim_flow_man_co_00025,
|
||||
R.drawable.anim_flow_man_co_00026, R.drawable.anim_flow_man_co_00027,
|
||||
R.drawable.anim_flow_man_co_00028, R.drawable.anim_flow_man_co_00029,
|
||||
R.drawable.anim_flow_man_co_00030, R.drawable.anim_flow_man_co_00031,
|
||||
R.drawable.anim_flow_man_co_00032, R.drawable.anim_flow_man_co_00033,
|
||||
R.drawable.anim_flow_man_co_00034, R.drawable.anim_flow_man_co_00035,
|
||||
R.drawable.anim_flow_man_co_00036, R.drawable.anim_flow_man_co_00037,
|
||||
R.drawable.anim_flow_man_co_00038, R.drawable.anim_flow_man_co_00039,
|
||||
R.drawable.anim_flow_man_co_00040, R.drawable.anim_flow_man_co_00041,
|
||||
R.drawable.anim_flow_man_co_00042, R.drawable.anim_flow_man_co_00043,
|
||||
R.drawable.anim_flow_man_co_00044, R.drawable.anim_flow_man_co_00045,
|
||||
R.drawable.anim_flow_man_co_00046, R.drawable.anim_flow_man_co_00047,
|
||||
R.drawable.anim_flow_man_co_00048, R.drawable.anim_flow_man_co_00049,
|
||||
R.drawable.anim_flow_man_co_00050, R.drawable.anim_flow_man_co_00051,
|
||||
R.drawable.anim_flow_man_co_00052, R.drawable.anim_flow_man_co_00053,
|
||||
R.drawable.anim_flow_man_co_00054, R.drawable.anim_flow_man_co_00055,
|
||||
R.drawable.anim_flow_man_co_00056, R.drawable.anim_flow_man_co_00057,
|
||||
R.drawable.anim_flow_man_co_00058, R.drawable.anim_flow_man_co_00059
|
||||
};
|
||||
private FrameAnimatorContainer startAutopilotAnimator;
|
||||
private FrameAnimatorContainer startManCOAnimator;
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
@@ -189,19 +139,20 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
|
||||
//视角切换
|
||||
long start = SystemClock.elapsedRealtime();
|
||||
try {
|
||||
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController();
|
||||
if (controller != null) {
|
||||
//切换地图的远近视图
|
||||
if (controller.getCurrentMapVisualAngle().isLongSight()) {
|
||||
//Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(true);
|
||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);
|
||||
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
|
||||
//Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(false);
|
||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
||||
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_long);
|
||||
} else {
|
||||
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);
|
||||
if(mapBizView != null){
|
||||
IMogoMapUIController uiController = mapBizView.getUI();
|
||||
if(uiController != null){
|
||||
if (uiController.getCurrentMapVisualAngle().isLongSight()) {
|
||||
uiController.setLockMode(true);
|
||||
uiController.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);
|
||||
} else if (uiController.getCurrentMapVisualAngle().isMediumSight()) {
|
||||
uiController.setLockMode(false);
|
||||
uiController.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
||||
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_long);
|
||||
} else {
|
||||
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);
|
||||
}
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
@@ -273,8 +224,11 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
|
||||
findViewById(R.id.btnAutopilotmanco).setOnClickListener(view ->
|
||||
onAutopilotStatusChanged(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING));
|
||||
|
||||
tvOperationStatus.setOnClickListener(view -> {
|
||||
onChangeOperationStatus();
|
||||
tvOperationStatus.setOnClickListener(new OnPreventFastClickListener() {
|
||||
@Override
|
||||
public void onClickImpl(View v) {
|
||||
onChangeOperationStatus();
|
||||
}
|
||||
});
|
||||
mCloseNaviIcon.setOnClickListener(v -> {
|
||||
showAmapNaviToStationFragment(false);
|
||||
@@ -295,6 +249,14 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
|
||||
});
|
||||
|
||||
smallMapView = findViewById(R.id.smallMapView);
|
||||
|
||||
|
||||
int width = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(), 420f);
|
||||
int height = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(), 220f);
|
||||
startAutopilotAnimator = new FrameAnimatorContainer(R.array.anim_flow, 20,mAnimFlowIv,false,width,height);
|
||||
startAutopilotAnimator.setOnAnimStopListener(() -> CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "自动驾驶动画暂停"));
|
||||
startManCOAnimator = new FrameAnimatorContainer(R.array.nim_flow_man_co, 20,mAnimFlowIv,false,width,height);
|
||||
startManCOAnimator.setOnAnimStopListener(() -> CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "平行驾驶动画暂停"));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -323,14 +285,16 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
|
||||
}
|
||||
|
||||
private void updateSwitchMapIcon() {
|
||||
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController();
|
||||
if (controller != null) {
|
||||
if (controller.getCurrentMapVisualAngle().isLongSight()) {
|
||||
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_long);
|
||||
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
|
||||
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);
|
||||
} else {
|
||||
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);
|
||||
if(mapBizView != null){
|
||||
IMogoMapUIController uiController = mapBizView.getUI();
|
||||
if(uiController != null){
|
||||
if (uiController.getCurrentMapVisualAngle().isLongSight()) {
|
||||
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_long);
|
||||
} else if (uiController.getCurrentMapVisualAngle().isMediumSight()) {
|
||||
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);
|
||||
} else {
|
||||
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -356,8 +320,10 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
if(smallMapView != null){
|
||||
smallMapView.onDestroy();
|
||||
}
|
||||
super.onDestroy();
|
||||
smallMapView.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -372,21 +338,13 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
|
||||
public void onBagManagerResult(@NonNull BagManagerOuterClass.BagManager bagManager) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 改变自动驾驶状态
|
||||
*
|
||||
* @param status 2 - running 1 - enable 2 - disable
|
||||
*/
|
||||
private int mPrevAPStatus = -1;
|
||||
|
||||
public void onAutopilotStatusChanged(int status) {
|
||||
getActivity().runOnUiThread(() -> {
|
||||
if (isStarting && IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING != status) {
|
||||
// 1. 主动开启自动驾驶中,不为2(为0、1)则继续loading
|
||||
return;
|
||||
}
|
||||
if (isStarting && IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == status
|
||||
&& mPrevAPStatus != status) {
|
||||
if (isStarting && IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == status) {
|
||||
// 2. 主动开启自动驾驶中,为2则停止loading,并isStarting = false
|
||||
startAutopilotDone(true);
|
||||
return;
|
||||
@@ -394,7 +352,6 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
|
||||
// 3. 其他过程直接更新
|
||||
startOrStopLoadingAnim(false);
|
||||
autopilotStatusAnimchanged(status);
|
||||
mPrevAPStatus = status;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -404,10 +361,7 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
|
||||
}
|
||||
|
||||
public void onManMachineCoDriving(int manMachineCoDriving) {
|
||||
if (mPrevAPStatus != manMachineCoDriving) {
|
||||
autopilotStatusAnimchanged(manMachineCoDriving);
|
||||
}
|
||||
mPrevAPStatus = manMachineCoDriving;
|
||||
autopilotStatusAnimchanged(manMachineCoDriving);
|
||||
}
|
||||
|
||||
public void updateCtvAutopilotStatusTag(boolean tag) {
|
||||
@@ -423,52 +377,51 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
|
||||
|
||||
protected abstract void updateOrderBottomBtnUI();
|
||||
|
||||
private AnimatorDrawableUtil animatorDrawableUtil = null;
|
||||
|
||||
public void autopilotStatusAnimchanged(int status) {
|
||||
if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == status) {
|
||||
mAutopilotTv.setText("自动驾驶");
|
||||
mAutopilotTv.setTextColor(getResources().getColor(R.color.taxi_autopilot_text_color_normal));
|
||||
mAutopilotImage.setImageResource(R.drawable.taxi_ic_autopilot);
|
||||
|
||||
if (animatorDrawableUtil == null) {
|
||||
animatorDrawableUtil = new AnimatorDrawableUtil();
|
||||
if(startManCOAnimator!=null) {
|
||||
startManCOAnimator.stop();
|
||||
}
|
||||
if(startAutopilotAnimator!=null) {
|
||||
startAutopilotAnimator.reStart();
|
||||
}
|
||||
animatorDrawableUtil.setAnimation(mAnimFlowIv, Arrays.asList(startAutopilotDrawableIds));
|
||||
animatorDrawableUtil.start(true, 100, null);
|
||||
|
||||
} else if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE == status) {
|
||||
mAutopilotTv.setText("自动驾驶");
|
||||
mAutopilotTv.setTextColor(getResources().getColor(R.color.taxi_autopilot_text_color_normal));
|
||||
mAutopilotImage.setImageResource(R.drawable.taxi_ic_autopilot);
|
||||
if (animatorDrawableUtil != null) {
|
||||
animatorDrawableUtil.stop();
|
||||
mAnimFlowIv.setImageResource(0);
|
||||
}
|
||||
|
||||
// ctvAutopilotStatusRL.setBackground(getResources().getDrawable(R.drawable.taxi_autopilot_bg_selector));
|
||||
animatorDrawableUtil = null;
|
||||
if(startAutopilotAnimator!=null) {
|
||||
startAutopilotAnimator.stop();
|
||||
}
|
||||
if(startManCOAnimator!=null) {
|
||||
startManCOAnimator.stop();
|
||||
}
|
||||
mAnimFlowIv.setImageResource(0);
|
||||
|
||||
} else if (IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING == status) {
|
||||
mAutopilotTv.setText("远程代驾");
|
||||
mAutopilotTv.setTextColor(getResources().getColor(R.color.taxi_autopilot_text_color_normal));
|
||||
mAutopilotImage.setImageResource(R.drawable.taxi_ic_autopilot);
|
||||
if (animatorDrawableUtil == null) {
|
||||
animatorDrawableUtil = new AnimatorDrawableUtil();
|
||||
if(startAutopilotAnimator!=null) {
|
||||
startAutopilotAnimator.stop();
|
||||
}
|
||||
if(startManCOAnimator!=null) {
|
||||
startManCOAnimator.reStart();
|
||||
}
|
||||
animatorDrawableUtil.setAnimation(mAnimFlowIv, Arrays.asList(startManCODrawableIds));
|
||||
animatorDrawableUtil.start(true, 100, null);
|
||||
|
||||
} else {
|
||||
mAutopilotTv.setText("自动驾驶");
|
||||
mAutopilotTv.setTextColor(getResources().getColor(R.color.taxi_autopilot_text_color_disable));
|
||||
mAutopilotImage.setImageResource(R.drawable.taxi_ic_autopilot_disable);
|
||||
if (animatorDrawableUtil != null) {
|
||||
animatorDrawableUtil.stop();
|
||||
mAnimFlowIv.setImageResource(0);
|
||||
if(startAutopilotAnimator!=null) {
|
||||
startAutopilotAnimator.stop();
|
||||
}
|
||||
|
||||
// ctvAutopilotStatusRL.setBackground(getResources().getDrawable(R.drawable.taxi_ic_autopilot_bg));
|
||||
animatorDrawableUtil = null;
|
||||
if(startManCOAnimator!=null) {
|
||||
startManCOAnimator.stop();
|
||||
}
|
||||
mAnimFlowIv.setImageResource(0);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -589,11 +542,6 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
|
||||
mSpeedView.setText(String.valueOf(speed));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMapVisualAngleChanged(VisualAngleMode visualAngleMode) {
|
||||
//todo ui 切换
|
||||
}
|
||||
|
||||
protected void showAmapNaviToStationFragment(boolean isShow) {
|
||||
|
||||
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
|
||||
@@ -613,7 +561,7 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
|
||||
smallMapView.setVisibility(View.GONE);
|
||||
} else {
|
||||
mCloseNaviIcon.setVisibility(View.GONE);
|
||||
flNaviPanelContainer.setVisibility(View.GONE);
|
||||
flNaviPanelContainer.setVisibility(View.INVISIBLE);
|
||||
smallMapView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
@@ -657,7 +605,7 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
|
||||
} else {
|
||||
closeRouteViewIFHadeAdd();
|
||||
mCloseNaviIcon.setVisibility(View.GONE);
|
||||
flNaviPanelContainer.setVisibility(View.GONE);
|
||||
flNaviPanelContainer.setVisibility(View.INVISIBLE);
|
||||
smallMapView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.mogo.och.taxi.ui;
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI;
|
||||
import static com.mogo.map.MogoMap.DEFAULT;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.graphics.Color;
|
||||
@@ -17,7 +18,6 @@ import androidx.annotation.RequiresApi;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
|
||||
import com.amap.api.navi.model.NaviLatLng;
|
||||
import com.mogo.eagle.core.data.map.CenterLine;
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager;
|
||||
@@ -29,7 +29,6 @@ import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
import com.mogo.map.overlay.IMoGoOverlayManager;
|
||||
import com.mogo.map.overlay.core.Level;
|
||||
import com.mogo.map.overlay.point.Point;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
import com.mogo.och.common.module.map.AmapNaviToDestinationModel;
|
||||
import com.mogo.och.common.module.map.ICommonNaviChangedCallback;
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil;
|
||||
@@ -344,15 +343,20 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment
|
||||
}
|
||||
|
||||
private void startNaviToStation(boolean isVoicePlay, double stationLat, double stationLng) {
|
||||
AmapNaviToDestinationModel.getInstance(getContext()).destroyAmaNavi();
|
||||
UiThreadHandler.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
AmapNaviToDestinationModel.getInstance(getContext()).destroyAmaNavi();
|
||||
|
||||
double mCurLatitude = CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLatitude();
|
||||
double mCurLongitude =CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLongitude();
|
||||
double mCurLatitude = CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLatitude();
|
||||
double mCurLongitude =CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLongitude();
|
||||
|
||||
CallerLogger.d(M_TAXI + TAG, "currentLatLng=" + mCurLatitude + " " +mCurLongitude);
|
||||
NaviLatLng startNaviLatLng = new NaviLatLng(mCurLatitude, mCurLongitude);
|
||||
NaviLatLng endNaviLatLng = new NaviLatLng(stationLat, stationLng);
|
||||
AmapNaviToDestinationModel.getInstance(getContext()).initAMapNavi(startNaviLatLng, endNaviLatLng);
|
||||
CallerLogger.d(M_TAXI + TAG, "currentLatLng=" + mCurLatitude + " " +mCurLongitude);
|
||||
NaviLatLng startNaviLatLng = new NaviLatLng(mCurLatitude, mCurLongitude);
|
||||
NaviLatLng endNaviLatLng = new NaviLatLng(stationLat, stationLng);
|
||||
AmapNaviToDestinationModel.getInstance(getContext()).initAMapNavi(startNaviLatLng, endNaviLatLng);
|
||||
}
|
||||
});
|
||||
AmapNaviToDestinationModel.getInstance(getContext()).setVoiceIsMute(isVoicePlay);
|
||||
AmapNaviToDestinationModel.getInstance(getContext()).setTaxiNaviChangedCallback(this);
|
||||
}
|
||||
@@ -762,24 +766,13 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment
|
||||
.anchor(0.5f, 0.5f)
|
||||
.set3DMode(true)
|
||||
.isUseGps(true)
|
||||
.controlAngle(true)
|
||||
.controlAngle(false)
|
||||
.icon3DRes(resourceId)
|
||||
.latitude(station.get(1))
|
||||
.longitude(station.get(0));
|
||||
IMogoMapUIController mapUIController = CallerMapUIServiceManager.INSTANCE.getMapUIController();
|
||||
if (mapUIController != null) {
|
||||
CenterLine centerLine = mapUIController.getCenterLineInfo(station.get(0)
|
||||
, station.get(1), -1);
|
||||
if (null != centerLine) {// 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致
|
||||
Double angle = centerLine.getAngle();
|
||||
if (angle != null) {
|
||||
builder.rotate(angle.floatValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager();
|
||||
if (overlayManager != null) {
|
||||
overlayManager.showOrUpdatePoint(builder.build());
|
||||
overlayManager.showOrUpdatePoint(builder.build(),DEFAULT);
|
||||
}
|
||||
};
|
||||
OCHThreadPoolManager.getsInstance().execute(setMapMarkerRunnable);
|
||||
|
||||
@@ -21,7 +21,6 @@ import com.mogo.eagle.core.data.temp.EventLogout;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.och.common.module.biz.constant.OchCommonConst;
|
||||
import com.mogo.och.common.module.biz.provider.LoginService;
|
||||
import com.mogo.och.common.module.voice.VoiceNotice;
|
||||
import com.mogo.och.taxi.R;
|
||||
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum;
|
||||
import com.mogo.och.taxi.bean.OrderQueryRespBean;
|
||||
@@ -106,7 +105,6 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
|
||||
return "TaxiFragment";
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
||||
@Override
|
||||
protected void initViews() {
|
||||
super.initViews();
|
||||
@@ -201,10 +199,6 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMapLoaded() {
|
||||
}
|
||||
|
||||
public void updateAutopilotStatus(int status) {
|
||||
onAutopilotStatusChanged(status);
|
||||
}
|
||||
|
||||
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00000.png
Normal file → Executable file
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 14 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00001.png
Normal file → Executable file
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 14 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00002.png
Normal file → Executable file
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 14 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00003.png
Normal file → Executable file
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00004.png
Normal file → Executable file
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00005.png
Normal file → Executable file
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00006.png
Normal file → Executable file
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00007.png
Normal file → Executable file
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00008.png
Normal file → Executable file
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00009.png
Normal file → Executable file
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 16 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00010.png
Normal file → Executable file
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 14 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00011.png
Normal file → Executable file
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 14 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00012.png
Normal file → Executable file
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00013.png
Normal file → Executable file
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00014.png
Normal file → Executable file
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00015.png
Normal file → Executable file
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 14 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00016.png
Normal file → Executable file
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00017.png
Normal file → Executable file
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 15 KiB |