From a4a7333b8d0f49ba13de8d45c09c6642e664413d Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 31 Jan 2024 11:27:56 +0800 Subject: [PATCH 1/8] =?UTF-8?q?[5.2.9]=20[shutle=5Fp]=20[bus=5Fp]=20[?= =?UTF-8?q?=E8=BD=A6=E8=BE=86=E7=BB=98=E5=88=B6=E9=99=8D=E9=A2=91]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.kt | 2 +- .../ui/mapdirectionview/BusPassengerMapDirectionView.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.kt b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.kt index 599b5bdfbc..ba29d8b746 100644 --- a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.kt +++ b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.kt @@ -74,7 +74,7 @@ class BusPassengerMapDirectionView @JvmOverloads constructor( initAMapView() // 注册定位监听 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10, this) + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 1, this) } override fun onDetachedFromWindow() { diff --git a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/mapdirectionview/BusPassengerMapDirectionView.kt b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/mapdirectionview/BusPassengerMapDirectionView.kt index 4a060b9c11..cf67c239da 100644 --- a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/mapdirectionview/BusPassengerMapDirectionView.kt +++ b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/mapdirectionview/BusPassengerMapDirectionView.kt @@ -77,7 +77,7 @@ class BusPassengerMapDirectionView @JvmOverloads constructor( initAMapView() // 注册定位监听 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10, this) + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 1, this) } override fun onDetachedFromWindow() { From 753fb7e9304c9f3e8c7db0425f18e816ed549a7b Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 31 Jan 2024 11:48:24 +0800 Subject: [PATCH 2/8] =?UTF-8?q?[5.2.9]=20[shutle]=20[=E6=A0=B8=E9=94=80?= =?UTF-8?q?=E4=BA=BA=E6=95=B0=E7=BA=BF=E7=A8=8B=E7=AE=A1=E7=90=86]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mogo/och/bus/net/IBascApiService.java | 2 +- .../src/main/java/com/mogo/och/bus/net/OrderServiceManager.kt | 3 ++- .../src/main/java/com/mogo/och/bus/ui/writeoff/WriteOffView.kt | 1 + .../java/com/mogo/och/bus/ui/writeoff/WriteOffViewModel.kt | 2 ++ 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/net/IBascApiService.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/net/IBascApiService.java index e1503c35cb..0bea27008e 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/net/IBascApiService.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/net/IBascApiService.java @@ -97,7 +97,7 @@ public interface IBascApiService { Observable queryBusLines(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn); /** - * 查询路线当天的任务 + * 查询线路的任务 * @param appId * @param ticket * @param lineId 线路id diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/net/OrderServiceManager.kt b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/net/OrderServiceManager.kt index 6792800f9e..38d1bf28ef 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/net/OrderServiceManager.kt +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/net/OrderServiceManager.kt @@ -9,6 +9,7 @@ import com.mogo.och.bus.bean.* import com.mogo.och.common.module.biz.constant.OchCommonConst import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.biz.network.OchCommonSubscribeImpl +import com.mogo.och.common.module.biz.network.interceptor.transformIoTry import com.mogo.och.common.module.biz.network.interceptor.transformTry /** @@ -216,7 +217,7 @@ object OrderServiceManager { taskId, siteId ) - .transformTry() + .transformIoTry() .subscribe(OchCommonSubscribeImpl(context, callback, "writeOffCount")) } } \ No newline at end of file diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/ui/writeoff/WriteOffView.kt b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/ui/writeoff/WriteOffView.kt index c3542fc18a..2f877f4691 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/ui/writeoff/WriteOffView.kt +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/ui/writeoff/WriteOffView.kt @@ -2,6 +2,7 @@ package com.mogo.och.bus.ui.writeoff import android.content.Context import android.util.AttributeSet +import android.util.Log import android.view.LayoutInflater import androidx.constraintlayout.widget.ConstraintLayout import androidx.lifecycle.ViewModelProvider diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/ui/writeoff/WriteOffViewModel.kt b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/ui/writeoff/WriteOffViewModel.kt index 297d35b959..95e4f4993d 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/ui/writeoff/WriteOffViewModel.kt +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/ui/writeoff/WriteOffViewModel.kt @@ -9,6 +9,7 @@ import com.mogo.och.bus.model.TicketModel import com.mogo.och.common.module.utils.RxUtils import io.reactivex.Observable import io.reactivex.Observer +import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable class WriteOffViewModel : ViewModel() { @@ -52,6 +53,7 @@ class WriteOffViewModel : ViewModel() { CallerLogger.d(SceneConstant.M_BUS + TAG, "显示文案:${showText}") Observable.just(showText) } + .observeOn(AndroidSchedulers.mainThread()) .subscribe(observer) } From c2f613f2329634863f370cb05fa75e6782a0eebe Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 31 Jan 2024 15:38:00 +0800 Subject: [PATCH 3/8] [target api] [27->29] --- .../wigets/media/MediaPlayerActivity.kt | 54 ++----------------- config.gradle | 2 +- 2 files changed, 4 insertions(+), 52 deletions(-) diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerActivity.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerActivity.kt index 3687df24a3..aed9530eac 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerActivity.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerActivity.kt @@ -32,71 +32,23 @@ class MediaPlayerActivity : AppCompatActivity() { override fun onStart() { super.onStart() - i(SceneConstant.M_BUS_P + TAG, "onResume") + i(SceneConstant.M_BUS_P + TAG, "onStart") } override fun onResume() { super.onResume() i(SceneConstant.M_BUS_P + TAG, "onResume") - checkPermissionSelf() } override fun onPause() { super.onPause() - i(SceneConstant.M_BUS_P + TAG, "onResume") + i(SceneConstant.M_BUS_P + TAG, "onPause") } override fun onStop() { super.onStop() - i(SceneConstant.M_BUS_P + TAG, "onResume") + i(SceneConstant.M_BUS_P + TAG, "onStop") } - fun checkPermissionSelf(){ - i(SceneConstant.M_BUS_P + TAG, "checkPermissionSelf") - val isAllGranted: Boolean = checkPermissionAllGranted( - arrayOf( - Manifest.permission.RECORD_AUDIO, // Manifest.permission.CAMERA, - Manifest.permission.BLUETOOTH, - Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS, - Manifest.permission.ACCESS_FINE_LOCATION - ) - ) - if (isAllGranted&&Settings.canDrawOverlays(this)) { - restartActivity() - return - } - RxUtils.createSubscribe { - checkPermissionSelf() - } - } - - fun restartActivity(){ - val activityList = ActivityUtils.getActivityList() - activityList.forEach { - if (it is MainLauncherActivity) { - i(SceneConstant.M_BUS_P + TAG, "restartActivity") - val options = ActivityOptions.makeBasic() - options.launchDisplayId = Display.INVALID_DISPLAY - val intent = Intent(this, MainLauncherActivity::class.java) - startActivity(intent, options.toBundle()) - } - } - } - - private fun checkPermissionAllGranted(permissions: Array): Boolean { - for (permission in permissions) { - if (ContextCompat.checkSelfPermission( - this, - permission - ) != PackageManager.PERMISSION_GRANTED - ) { - // 只要有一个权限没有被授予, 则直接返回 false - return false - } - } - return true - } } \ No newline at end of file diff --git a/config.gradle b/config.gradle index 83d123e51d..b410c7eace 100644 --- a/config.gradle +++ b/config.gradle @@ -245,7 +245,7 @@ ext { compileSdkVersion : 33, buildToolsVersion : "29.0.2", minSdkVersion : 23, - targetSdkVersion : 27, + targetSdkVersion : 29, koomxhook : "com.kuaishou.koom:xhook-static:2.2.0", ] } From 7d10603da62917b11878d0a7e89007032e614379 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 31 Jan 2024 16:23:34 +0800 Subject: [PATCH 4/8] =?UTF-8?q?[shuttle=5Fp]=20[=E8=B7=9D=E7=A6=BB?= =?UTF-8?q?=E7=AE=97=E6=B3=95=E5=8D=87=E7=BA=A7=E3=80=81=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=95=B4=E7=90=86]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../passenger/model/PM2DrivingModel.kt | 310 +++++------------- .../passenger/network/PM2ModelLoopManager.kt | 127 ------- 2 files changed, 73 insertions(+), 364 deletions(-) delete mode 100644 OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/network/PM2ModelLoopManager.kt diff --git a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/model/PM2DrivingModel.kt b/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/model/PM2DrivingModel.kt index ee8f705ac9..1adc4bd9a0 100644 --- a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/model/PM2DrivingModel.kt +++ b/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/model/PM2DrivingModel.kt @@ -16,18 +16,15 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.map.MogoLocation import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener -import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager -import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.sendMsgToServer import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.Logger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant -import com.mogo.eagle.core.utilcode.util.CoordinateUtils import com.mogo.eagle.core.utilcode.util.GsonUtils import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.mogo.eagle.core.utilcode.util.StringUtils @@ -36,9 +33,11 @@ import com.mogo.och.common.module.bean.dpmsg.* import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager.pushAppOperationalMsgBox import com.mogo.och.common.module.biz.constant.OchCommonConst import com.mogo.och.common.module.biz.network.OchCommonServiceCallback -import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil +import com.mogo.och.common.module.manager.distancemamager.IDistanceListener +import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager +import com.mogo.och.common.module.manager.loopmanager.BizLoopManager +import com.mogo.och.common.module.manager.loopmanager.LoopInfo import com.mogo.och.common.module.utils.DateTimeUtil -import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.common.module.voice.VoiceNotice.showNotice import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.data.bean.BusStationBean @@ -49,10 +48,8 @@ import com.mogo.och.shuttle.passenger.bean.response.PassengerRoutesResponse import com.mogo.och.shuttle.passenger.callback.AutoPilotStatusCallback import com.mogo.och.shuttle.passenger.callback.DrivingInfoCallback import com.mogo.och.shuttle.passenger.constant.BusPassengerConst -import com.mogo.och.shuttle.passenger.network.PM2ModelLoopManager import com.mogo.och.shuttle.passenger.network.PassengerServiceManager -import io.reactivex.disposables.Disposable -import mogo.telematics.pad.MessagePad +import io.reactivex.schedulers.Schedulers import kotlin.math.abs /** @@ -62,29 +59,19 @@ import kotlin.math.abs class PM2DrivingModel private constructor() { private var mContext: Context? = null - private var mLocation: MogoLocation? = null - private var mRoutePoints = mutableListOf() private var routesResult: BusRoutesResult? = null - private var mCurrentAutoStatus = -1 var mStations = mutableListOf() private var mNextStationIndex = 0 // A-B要到达站的index private var isGoingToNextStation = false //是否前往下一站过程中 - private var mTwoStationsRouts = mutableListOf() - private var mPreRouteIndex = 0 - private var mWipePreIndex = 0 - private var mDrivingInfoCallback: DrivingInfoCallback? = null //行程信息 private var mAutoStatusCallback: AutoPilotStatusCallback? = null //自动驾驶状态 private var operationStatus: PassengerOperationStatusResponse.Result? = null - @Volatile - private var globalPathTruncation: Disposable? = null - private val handler = Handler(Handler.Callback { msg -> if (msg.what == MSG_QUERY_BUS_P_STATION) { queryDriverOperationStatus() @@ -101,12 +88,12 @@ class PM2DrivingModel private constructor() { } } - fun init(context : Context){ + fun init(context: Context) { mContext = context initListener() queryDriverByLocalDriver() queryDriverOperationStatus() - startOrStopOrderLoop(true) + BizLoopManager.setLoopFunction(TAG, LoopInfo(2,::queryDriverSiteByCoordinate, scheduler = Schedulers.io())) } private fun queryDriverByLocalDriver() { @@ -120,16 +107,16 @@ class PM2DrivingModel private constructor() { CallerAutoPilotStatusListenerManager.addListener(TAG, mAutoPilotStatusListener) // 定位监听 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10,mMapLocationListener) + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10, mMapLocationListener) //司乘屏通信监听 - CallerTelematicListenerManager.addListener(TAG,mReceivedMsgListener) - - //自动驾驶轨迹监听 - CallerPlanningRottingListenerManager.addListener(TAG, moGoAutopilotPlanningListener) + CallerTelematicListenerManager.addListener(TAG, mReceivedMsgListener) //网络监听 - IntentManager.getInstance().registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener) + IntentManager.getInstance() + .registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener) + + TrajectoryAndDistanceManager.addDistanceListener(TAG, trajectoryListener) } @@ -140,7 +127,7 @@ class PM2DrivingModel private constructor() { ) } - fun releaseListener(){ + fun releaseListener() { //自动驾驶状态监听 CallerAutoPilotStatusListenerManager.removeListener(TAG) @@ -149,8 +136,10 @@ class PM2DrivingModel private constructor() { CallerTelematicListenerManager.removeListener(TAG) - //自动驾驶轨迹监听 - CallerPlanningRottingListenerManager.removeListener(TAG) + cleanStation("release") + + TrajectoryAndDistanceManager.removeListener(TAG) + } fun setDrivingInfoCallback(drivingInfoCallback : DrivingInfoCallback?){ @@ -216,15 +205,43 @@ class PM2DrivingModel private constructor() { } } + private val trajectoryListener: IDistanceListener = object : IDistanceListener { + override fun distanceCallback(distance: Float) { + val lastTime = distance / BusPassengerConst.BUS_AVERAGE_SPEED * 3.6 //秒 + d(SceneConstant.M_BUS_P + TAG, "轨迹排查==lastSumLength = $distance") + if (routesResult != null) { + for (site in routesResult!!.sites) { + if (site.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !site.isLeaving) { + return + } + } + } + // 小于200m 播报站点介绍 + if (distance < 200) { + val stationNext = mStations[mNextStationIndex] + if (!stationNext.isPlayTts) { + if (!StringUtils.isEmpty(stationNext.introduction)) { + showNotice(stationNext.introduction) + stationNext.isPlayTts = true + } + } + } + mDrivingInfoCallback?.updateRemainMT( + distance.toLong(), + lastTime.toLong() + ) + } + } + @RequiresApi(Build.VERSION_CODES.O) private fun speakTTS(msg: String) { - var mAudioManager = mContext?.getSystemService(Context.AUDIO_SERVICE) as AudioManager - var mAudioAttributes = AudioAttributes.Builder() + val mAudioManager = mContext?.getSystemService(Context.AUDIO_SERVICE) as AudioManager + val mAudioAttributes = AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_MEDIA) //设置声音的用途 .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) //设置声音的类型 .build() - var mAudioFocusRequest = AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK) //设置焦点类型 + val mAudioFocusRequest = AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK) //设置焦点类型 .setAudioAttributes(mAudioAttributes) //设置声音属性 .setAcceptsDelayedFocusGain(false) //设置接受延迟获取焦点,需要设置OnAudioFocusChangeListener来监听焦点的获取 .build() @@ -249,50 +266,10 @@ class PM2DrivingModel private constructor() { object : IMoGoChassisLocationGCJ02Listener{ override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { if (null == mogoLocation) return - mLocation = mogoLocation updateSpeed(mogoLocation) } } - private val moGoAutopilotPlanningListener = object : IMoGoPlanningRottingListener{ - - @Synchronized - override fun onAutopilotRotting(globalPathResp: MessagePad.GlobalPathResp?) { - d(SceneConstant.M_BUS_P + TAG, "och-rotting==globalPathResp = " + GsonUtils.toJson(globalPathResp)) - globalPathResp?.let { - d(SceneConstant.M_BUS_P + TAG, "och-rotting==wayPointsSize = " + it.wayPointsList.size) - - if (globalPathTruncation != null && !globalPathTruncation!!.isDisposed) { - d(SceneConstant.M_BUS_P + TAG, "1s内不可以接受轨迹") - return@let - } - - globalPathTruncation = RxUtils.createSubscribe(1_000) { - d(SceneConstant.M_BUS_P + TAG, "可以接受轨迹") - } - d(SceneConstant.M_BUS_P + TAG, "接受轨迹中") - it.wayPointsList?.let {list-> - updateRoutePoints(list) - } - } - } - - } - - @Synchronized - fun updateRoutePoints(routePoints: List) { - mRoutePoints.clear() - val latLngModels = CoordinateCalculateRouteUtil - .coordinateConverterWgsToGcjLocations(mContext, routePoints) - d(SceneConstant.M_BUS_P + TAG, "och-rotting==latLngModels = " + latLngModels.size) - mRoutePoints.addAll(latLngModels) - - if (isGoingToNextStation){ - mTwoStationsRouts.clear() - startRemainRouteInfo() - } - } - private fun updateSpeed(mogoLocation: MogoLocation) { // km/h val speedKM = (abs(mogoLocation.gnssSpeed) * 3.6f).toInt() @@ -407,6 +384,7 @@ class PM2DrivingModel private constructor() { d(SceneConstant.M_BUS_P+TAG, "queryDriverSiteByCoordinate = %s", msg) if (code == 1003){ queryDriverOperationDelay() + cleanStation("queryDriverSiteByCoordinate 1003") } if (PassengerServiceManager.driverAppSn.isEmpty()){ return @@ -414,7 +392,6 @@ class PM2DrivingModel private constructor() { if (code == 1003) { routesResult = null isGoingToNextStation = false - startOrStopCalculateRouteInfo(false) return } } @@ -424,11 +401,10 @@ class PM2DrivingModel private constructor() { } private fun updateLocalOrder(){ - mRoutePoints.clear() routesResult = null mNextStationIndex = 0 + cleanStation("queryDriverSiteByCoordinate") isGoingToNextStation = false - startOrStopCalculateRouteInfo(false) mDrivingInfoCallback?.showNoTaskView(true) } @@ -460,20 +436,20 @@ class PM2DrivingModel private constructor() { && station.isLeaving && i + 1 < stations.size) { mDrivingInfoCallback?.updateStationsInfo(stations as MutableList, i + 1, false) d(SceneConstant.M_BUS_P+TAG,"och-rotting--mNextStationIndex = $mNextStationIndex , i = $i") -// if (mNextStationIndex != i + 1) { - d(SceneConstant.M_BUS_P+TAG,"och-rotting--start ") - mTwoStationsRouts.clear() - startRemainRouteInfo() -// } + d(SceneConstant.M_BUS_P+TAG,"och-rotting--start ") isGoingToNextStation = true mNextStationIndex = i + 1 + val startStation = mStations[i] + val endStation = mStations[i + 1] + setTrajectoryStation(startStation, endStation, result.lineId) return } else if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !station.isLeaving) { d(SceneConstant.M_BUS_P+TAG,"och-rotting--mNextStationIndex = $mNextStationIndex , i = $i") d(SceneConstant.M_BUS_P+TAG,"och-rotting--arrived ") - mPreRouteIndex = 0 + if (i == stations.size - 1) { + cleanStation("updatePassengerRouteInfo最后一个站点") + } isGoingToNextStation = false - startOrStopCalculateRouteInfo(false) mDrivingInfoCallback?.updateStationsInfo(stations as MutableList, i, true) return }else{ @@ -484,162 +460,22 @@ class PM2DrivingModel private constructor() { } - fun loopRouteAndWipe(){ - if (mRoutePoints != null && mRoutePoints.size > 0 && mLocation != null) { - val haveArrivedIndex = CoordinateCalculateRouteUtil - .getArrivedPointIndexNew( - mWipePreIndex, - mRoutePoints, - mLocation!! - ) - mWipePreIndex = haveArrivedIndex - d(SceneConstant.M_BUS_P + TAG, - "thread = " + Thread.currentThread().name + " haveArrivedIndex== " + haveArrivedIndex - ) -// if (mAutopilotPlanningCallback != null) { -// val routePoints = CoordinateCalculateRouteUtil -// .coordinateConverterLocationToLatLng(mContext, mRoutePoints) -// mAutopilotPlanningCallback.routeResult(routePoints, haveArrivedIndex) -// } - } + private fun setTrajectoryStation( + startStationInfo: BusStationBean, + endStationInfo: BusStationBean, + lineId: Int + ) { + val startStation = MogoLocation() + startStation.longitude = startStationInfo.gcjLon + startStation.latitude = startStationInfo.gcjLat + val endStation = MogoLocation() + endStation.longitude = endStationInfo.gcjLon + endStation.latitude = endStationInfo.gcjLat + TrajectoryAndDistanceManager.setStationPoint(startStation, endStation, lineId.toLong()) } - private fun startRemainRouteInfo() { - //开启实时计算剩余距离,剩余时间,预计时间 - startOrStopCalculateRouteInfo(true) - } - - fun dynamicCalculateRouteInfo(){ - //计算当前位置和下一站的剩余点集合 - //计算剩余点总里程和时间 - d(SceneConstant.M_BUS_P + TAG, "och-rotting==mTwoStationsRouts.size() = " + mTwoStationsRouts.size) - //计算当前位置和下一站的剩余点集合 - //计算剩余点总里程和时间 - if (mTwoStationsRouts.size == 0) { - calculateTwoStationsRoute() - } - - if (mTwoStationsRouts.size > 0 && mLocation != null) { - val lastPointsMap = CoordinateCalculateRouteUtil - .getRemainPointListByCompareNew(mPreRouteIndex, mTwoStationsRouts, mLocation!!) - for (index in lastPointsMap.keys) { - mPreRouteIndex = index - break - } - for (lastPoints in lastPointsMap.values) { - d(SceneConstant.M_BUS_P + TAG, "och-rotting==lastPoints.size() = " + lastPoints.size) - var lastSumLength = 0f - lastSumLength = if (lastPoints.size == 1) { //只是最后一个点,计算当前位置和最后一个点的距离 - if (mNextStationIndex <= mStations.size - 1 && mNextStationIndex >= 0) { - val stationNext: BusStationBean = mStations[mNextStationIndex] - CoordinateUtils.calculateLineDistance( - stationNext.gcjLon, stationNext.gcjLat, - mLocation!!.longitude, mLocation!!.latitude - ) - } else { - CoordinateUtils.calculateLineDistance( - lastPoints[0].longitude, lastPoints[0].latitude, - mLocation!!.longitude, mLocation!!.latitude - ) - } - } else { - CoordinateCalculateRouteUtil.calculateRouteSumLength(lastPoints) - } - val lastTime = lastSumLength / BusPassengerConst.SHUTTLE_AVERAGE_SPEED * 3.6 //秒 - d(SceneConstant.M_BUS_P + TAG, "och-rotting==lastSumLength = $lastSumLength") - - // 小于200m 播报站点介绍 - // 小于200m 播报站点介绍 - if (lastSumLength < 200) { - val stationNext = mStations[mNextStationIndex] - if (!stationNext.isPlayTts) { - if (!StringUtils.isEmpty(stationNext.introduction)) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - speakTTS(stationNext.introduction) - } - stationNext.isPlayTts = true - } - } - } - - mDrivingInfoCallback?.updateRemainMT( - lastSumLength.toLong(), - lastTime.toLong() - ) - } - } - } - - private fun calculateTwoStationsRoute() { - //找出前往站对应的轨迹点,拿出两站点的集合 - d(SceneConstant.M_BUS_P + TAG, "mRoutePoints.size() = " + mRoutePoints.size) - if (mRoutePoints.size > 0) { - if (mStations.size > 1) { //两个站点及以上要计算两个站点间的轨迹路线 - if (mNextStationIndex <= mStations.size - 1 && mNextStationIndex - 1 >= 0) { - mTwoStationsRouts.clear() - val stationNext: BusStationBean = mStations[mNextStationIndex] - val stationCur: BusStationBean = mStations[mNextStationIndex - 1] - //当前站在轨迹中对应的点 - val currentRouteIndex = CoordinateCalculateRouteUtil.getArrivedPointIndexNew( - 0, mRoutePoints, stationCur.gcjLon, stationCur.gcjLat - ) - //要前往的站在轨迹中对应的点 - val nextRouteIndex = CoordinateCalculateRouteUtil.getArrivedPointIndexNew( - currentRouteIndex, - mRoutePoints, - stationNext.gcjLon, - stationNext.gcjLat - ) - - d(SceneConstant.M_BUS_P + TAG, "och-rotting==currentRouteIndex = " + currentRouteIndex - + ", nextRouteIndex = " + nextRouteIndex) - - if (currentRouteIndex < nextRouteIndex) { //如果找到的next在起点的轨迹前面,直接舍弃这个轨迹,不显示 - mTwoStationsRouts.addAll( - mRoutePoints.subList( - currentRouteIndex, - nextRouteIndex + 1 - ) - ) - } - } - } - } - } - - /** - * 开始轮询计算剩余里程和时间 - * @param isStart - */ - fun startOrStopCalculateRouteInfo(isStart: Boolean) { - d(SceneConstant.M_BUS_P+TAG, "startOrStopCalculateRouteInfo() $isStart") - if (isStart) { - PM2ModelLoopManager.startCalculateRouteInfoLoop() - } else { - mTwoStationsRouts.clear() - PM2ModelLoopManager.stopCalculateRouteInfLoop() - } - } - - /** - * 实时轨迹擦除 - * @param isStart - */ - private fun startOrStopRouteAndWipe(isStart: Boolean) { - if (isStart) { - PM2ModelLoopManager.startOrStopRouteAndWipe() - } else { - mWipePreIndex = 0 - PM2ModelLoopManager.stopOrStopRouteAndWipe() - } - } - - private fun startOrStopOrderLoop(start: Boolean) { - d(SceneConstant.M_BUS_P + TAG, "startOrStopOrderLoop() $start") - if (start) { - PM2ModelLoopManager.startQueryDriverLineLoop() - } else { - PM2ModelLoopManager.stopQueryDriverLineLoop() - } + private fun cleanStation(type: String) { + d(SceneConstant.M_BUS_P + TAG, "清理站点:$type") + TrajectoryAndDistanceManager.setStationPoint(null, null, -1L) } } \ No newline at end of file diff --git a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/network/PM2ModelLoopManager.kt b/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/network/PM2ModelLoopManager.kt deleted file mode 100644 index 8f3082bce1..0000000000 --- a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/network/PM2ModelLoopManager.kt +++ /dev/null @@ -1,127 +0,0 @@ -package com.mogo.och.shuttle.passenger.network - -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant -import com.mogo.och.shuttle.passenger.constant.BusPassengerConst -import com.mogo.och.shuttle.passenger.model.PM2DrivingModel -import io.reactivex.Observable -import io.reactivex.ObservableOnSubscribe -import io.reactivex.android.schedulers.AndroidSchedulers -import io.reactivex.disposables.CompositeDisposable -import io.reactivex.disposables.Disposable -import io.reactivex.schedulers.Schedulers -import java.util.concurrent.TimeUnit - -/** - * @author: wangmingjun - * @date: 2023/2/1 - */ -object PM2ModelLoopManager { - - private val TAG: String = PM2ModelLoopManager::class.java.getSimpleName() - - private var mQueryLineDisposable: Disposable? = null //心跳轮询 - private var mRouteWipeDisposable: CompositeDisposable? = null //估计擦除 - private var mCalculateRouteDisposable: CompositeDisposable? = null //每隔2s计算一次剩余里程和时间 - - - fun startOrStopRouteAndWipe() { - i(SceneConstant.M_BUS_P + TAG, "startOrStopRouteWipe()") - if (mRouteWipeDisposable != null) return - if (mRouteWipeDisposable == null) { - mRouteWipeDisposable = CompositeDisposable() - } - val disposable = startLoopRouteAndWipe() - .doOnSubscribe { } - .doOnError { } - .delay( - BusPassengerConst.LOOP_LINE_1S, - TimeUnit.MILLISECONDS, - true - ) // 设置delayError为true,表示出现错误的时候也需要延迟5s进行通知,达到无论是请求正常还是请求失败,都是5s后重新订阅,即重新请求。 - .subscribeOn(Schedulers.io()) - .repeat() // repeat保证请求成功后能够重新订阅。 - .retry() // retry保证请求失败后能重新订阅 - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { } - mRouteWipeDisposable!!.add(disposable) - } - - fun stopOrStopRouteAndWipe() { - if (mRouteWipeDisposable != null) { - mRouteWipeDisposable!!.dispose() - mRouteWipeDisposable = null - } - } - - fun startQueryDriverLineLoop() { - if (mQueryLineDisposable != null && !mQueryLineDisposable!!.isDisposed) { - return - } - i(SceneConstant.M_BUS_P + TAG, "startQueryDriverLineLoop()") - mQueryLineDisposable = Observable.interval( - BusPassengerConst.LOOP_DELAY, - BusPassengerConst.LOOP_LINE_2S, TimeUnit.MILLISECONDS - ) - .map { aLong: Long -> aLong + 1 } - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { aLong: Long? -> - PM2DrivingModel.INSTANCE.queryDriverSiteByCoordinate() - } - } - - fun stopQueryDriverLineLoop() { - if (mQueryLineDisposable != null) { - i(SceneConstant.M_BUS_P + TAG, "stopQueryDriverLineLoop()") - mQueryLineDisposable!!.dispose() - mQueryLineDisposable = null - } - } - - fun startCalculateRouteInfoLoop() { - i(SceneConstant.M_BUS_P + TAG, "startCalculateRouteInfoLoop()") - if (mCalculateRouteDisposable != null) return - if (mCalculateRouteDisposable == null) { - mCalculateRouteDisposable = CompositeDisposable() - } - val disposable = startLoopCalculateRouteInfo() - .doOnSubscribe { } - .doOnError { } - .delay( - BusPassengerConst.LOOP_LINE_2S, - TimeUnit.MILLISECONDS, - true - ) // 设置delayError为true,表示出现错误的时候也需要延迟5s进行通知,达到无论是请求正常还是请求失败,都是5s后重新订阅,即重新请求。 - .subscribeOn(Schedulers.io()) - .repeat() // repeat保证请求成功后能够重新订阅。 - .retry() // retry保证请求失败后能重新订阅 - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { } - mCalculateRouteDisposable!!.add(disposable) - } - - fun stopCalculateRouteInfLoop() { - if (mCalculateRouteDisposable != null) { - i(SceneConstant.M_BUS_P + TAG, "stopCalculateRouteInfLoop()") - mCalculateRouteDisposable!!.dispose() - mCalculateRouteDisposable = null - } - } - - private fun startLoopRouteAndWipe(): Observable { - return Observable.create(ObservableOnSubscribe { emitter -> - if (emitter.isDisposed) return@ObservableOnSubscribe - PM2DrivingModel.INSTANCE.loopRouteAndWipe() - emitter.onComplete() - }) - } - - private fun startLoopCalculateRouteInfo(): Observable { - return Observable.create(ObservableOnSubscribe { emitter -> - if (emitter.isDisposed) return@ObservableOnSubscribe - PM2DrivingModel.INSTANCE.dynamicCalculateRouteInfo() - emitter.onComplete() - }) - } -} \ No newline at end of file From c3c8bad8745878bcda4837aa116f1ec2017eeac0 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Sun, 4 Feb 2024 16:56:53 +0800 Subject: [PATCH 5/8] =?UTF-8?q?[bus][shuttle][passenger]=20[=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=95=B4=E7=90=86][=E5=9C=B0=E5=9B=BE=E6=8A=BD?= =?UTF-8?q?=E5=8F=96]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusPassengerOperationStatusResponse.java | 0 .../bean/BusPassengerQueryLineRequest.java | 0 .../passenger/bean/PM2RoutesResponse.java | 2 +- .../network/BusPassengerServiceManager.kt | 6 +- .../network/PassengerSAASServiceApi.java | 6 +- .../network/PassengerServiceApi.java | 6 +- .../bean/BusPassengerRoutesResponse.java | 28 -- .../bean/BusPassengerRoutesResult.java | 103 ---- .../passenger/bean/BusPassengerStation.java | 173 ------- .../IBusPassengerADASStatusCallback.java | 2 - ...BusPassengerAutopilotPlanningCallback.java | 1 - .../IBusPassengerRouteLineInfoCallback.java | 4 +- .../bus/passenger/model/BusPassengerModel.kt | 138 ++--- .../network/BusPassengerModelLoopManager.java | 62 --- .../presenter/BaseBusPassengerPresenter.java | 13 +- .../ui/BusPassengerMapDirectionView.kt | 334 ------------- .../ui/BusPassengerRouteFragment.java | 26 +- .../BusPassengerLineStationsAdapter.java | 12 +- .../passenger/utils/BPRouteDataTestUtils.java | 56 --- .../bean/PM2OperationStatusResponse.java | 21 - .../passenger/bean/PM2QueryLineRequest.java | 16 - .../passenger/bean/PM2RoutesResult.java | 79 --- .../passenger/passenger/bean/PM2Station.java | 173 ------- .../passenger/model/PM2DrivingModel.kt | 473 ++++++------------ .../passenger/model/PM2ServiceManager.kt | 108 ---- .../passenger/network/PM2ModelLoopManager.kt | 127 ----- .../passenger/network/PM2ServiceApi.java | 40 -- .../network/PassengerSAASServiceApi.java | 38 -- .../network/PassengerServiceApi.java | 40 -- .../res/jinlv/layout/bus_p_route_fragment.xml | 2 +- .../mapdirectionview/IMapDirectionView.java} | 4 +- .../mapdirectionview/MapDirectionView.kt} | 132 +++-- .../mapdirectionview/MapDirectionViewModel.kt | 0 .../common_map_arrived_point.png | Bin 0 -> 1239 bytes .../res/drawable-nodpi/common_map_car.png | Bin 0 -> 6793 bytes .../drawable-nodpi/common_map_end_point.png | Bin 0 -> 4405 bytes .../drawable-nodpi/common_map_start_point.png | Bin 0 -> 4322 bytes .../common_map_unarrived_point.png | Bin 0 -> 1308 bytes .../main/res/layout/shuttle_p_jl_map_view.xml | 12 + .../common/src/main/res/values/attrs.xml | 27 + .../ui/BusPassengerRouteFragment.java | 5 +- .../layout/shuttle_p_jl_route_fragment.xml | 2 +- 42 files changed, 343 insertions(+), 1928 deletions(-) rename OCH/bus/passenger/src/main/java/{jinlv => }/com/mogo/och/bus/passenger/bean/BusPassengerOperationStatusResponse.java (100%) rename OCH/bus/passenger/src/main/java/{jinlv => }/com/mogo/och/bus/passenger/bean/BusPassengerQueryLineRequest.java (100%) rename OCH/bus/passenger/src/main/java/{m2/com/mogo/och/bus/passenger => com/mogo/och/bus}/passenger/bean/PM2RoutesResponse.java (92%) rename OCH/bus/passenger/src/main/java/{jinlv => }/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt (95%) rename OCH/bus/passenger/src/main/java/{jinlv => }/com/mogo/och/bus/passenger/network/PassengerSAASServiceApi.java (82%) rename OCH/bus/passenger/src/main/java/{jinlv => }/com/mogo/och/bus/passenger/network/PassengerServiceApi.java (81%) delete mode 100644 OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/bean/BusPassengerRoutesResponse.java delete mode 100644 OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/bean/BusPassengerRoutesResult.java delete mode 100644 OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/bean/BusPassengerStation.java delete mode 100644 OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/network/BusPassengerModelLoopManager.java delete mode 100644 OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.kt rename OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/{ => ui}/adapter/BusPassengerLineStationsAdapter.java (95%) delete mode 100644 OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/utils/BPRouteDataTestUtils.java delete mode 100644 OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/bean/PM2OperationStatusResponse.java delete mode 100644 OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/bean/PM2QueryLineRequest.java delete mode 100644 OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/bean/PM2RoutesResult.java delete mode 100644 OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/bean/PM2Station.java delete mode 100644 OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/model/PM2ServiceManager.kt delete mode 100644 OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/network/PM2ModelLoopManager.kt delete mode 100644 OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/network/PM2ServiceApi.java delete mode 100644 OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/network/PassengerSAASServiceApi.java delete mode 100644 OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/network/PassengerServiceApi.java rename OCH/{bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/ui/IBusPassengerMapDirectionView.java => common/common/src/main/java/com/mogo/och/common/module/wigets/mapdirectionview/IMapDirectionView.java} (74%) rename OCH/{shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/mapdirectionview/BusPassengerMapDirectionView.kt => common/common/src/main/java/com/mogo/och/common/module/wigets/mapdirectionview/MapDirectionView.kt} (66%) rename OCH/{shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui => common/common/src/main/java/com/mogo/och/common/module/wigets}/mapdirectionview/MapDirectionViewModel.kt (100%) create mode 100644 OCH/common/common/src/main/res/drawable-nodpi/common_map_arrived_point.png create mode 100644 OCH/common/common/src/main/res/drawable-nodpi/common_map_car.png create mode 100644 OCH/common/common/src/main/res/drawable-nodpi/common_map_end_point.png create mode 100644 OCH/common/common/src/main/res/drawable-nodpi/common_map_start_point.png create mode 100644 OCH/common/common/src/main/res/drawable-nodpi/common_map_unarrived_point.png create mode 100644 OCH/common/common/src/main/res/layout/shuttle_p_jl_map_view.xml diff --git a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/bean/BusPassengerOperationStatusResponse.java b/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/bean/BusPassengerOperationStatusResponse.java similarity index 100% rename from OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/bean/BusPassengerOperationStatusResponse.java rename to OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/bean/BusPassengerOperationStatusResponse.java diff --git a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/bean/BusPassengerQueryLineRequest.java b/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/bean/BusPassengerQueryLineRequest.java similarity index 100% rename from OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/bean/BusPassengerQueryLineRequest.java rename to OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/bean/BusPassengerQueryLineRequest.java diff --git a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/bean/PM2RoutesResponse.java b/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/bean/PM2RoutesResponse.java similarity index 92% rename from OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/bean/PM2RoutesResponse.java rename to OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/bean/PM2RoutesResponse.java index 06d25677a8..32306a33c1 100644 --- a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/bean/PM2RoutesResponse.java +++ b/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/bean/PM2RoutesResponse.java @@ -1,4 +1,4 @@ -package com.mogo.och.bus.passenger.passenger.bean; +package com.mogo.och.bus.passenger.bean; import com.mogo.eagle.core.data.BaseData; import com.mogo.och.data.bean.BusRoutesResult; diff --git a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt b/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt similarity index 95% rename from OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt rename to OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt index 8d92a70a56..626fe265ae 100644 --- a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt +++ b/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt @@ -2,7 +2,7 @@ package com.mogo.och.bus.passenger.network import android.content.Context import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.getServerToken -import com.mogo.och.bus.passenger.bean.BusPassengerRoutesResponse +import com.mogo.och.bus.passenger.bean.PM2RoutesResponse import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.commons.debug.DebugConfig import com.mogo.och.bus.passenger.bean.BusPassengerQueryLineRequest @@ -31,7 +31,7 @@ object BusPassengerServiceManager { * 获取Bus司机端的sn * @return */ - val driverAppSn: String + public val driverAppSn: String get() { val serverToken = getServerToken() if (serverToken != driverSnCache && serverToken.isNotEmpty()) { @@ -47,7 +47,7 @@ object BusPassengerServiceManager { */ @JvmStatic fun queryDriverSiteByCoordinate( - context: Context, callback: OchCommonServiceCallback? + context: Context, callback: OchCommonServiceCallback? ) { if (DebugConfig.getProjectFlavor().contains("saas")){ mBusPassengerSaasServiceApi.queryDriverSiteByCoordinate( diff --git a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/network/PassengerSAASServiceApi.java b/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/network/PassengerSAASServiceApi.java similarity index 82% rename from OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/network/PassengerSAASServiceApi.java rename to OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/network/PassengerSAASServiceApi.java index 1810e79298..577a72524c 100644 --- a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/network/PassengerSAASServiceApi.java +++ b/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/network/PassengerSAASServiceApi.java @@ -2,7 +2,7 @@ package com.mogo.och.bus.passenger.network; import com.mogo.och.bus.passenger.bean.BusPassengerOperationStatusResponse; import com.mogo.och.bus.passenger.bean.BusPassengerQueryLineRequest; -import com.mogo.och.bus.passenger.bean.BusPassengerRoutesResponse; +import com.mogo.och.bus.passenger.bean.PM2RoutesResponse; import io.reactivex.Observable; import retrofit2.http.Body; @@ -17,7 +17,7 @@ import retrofit2.http.Query; * * Bus乘客端接口定义 */ -interface PassengerSAASServiceApi { +public interface PassengerSAASServiceApi { /** * 查询bus司机端绑定路线 * @return 接口返回数据 @@ -25,7 +25,7 @@ interface PassengerSAASServiceApi { @Headers( {"Content-Type:application/json;charset=UTF-8"} ) // @POST( "/autopilot-car-hailing/line/v2/driver/bus/passenger/lineDataWithDriver/query" ) @GET( "/och-bus-cabin/api/business/v1/driver/bus/lineDataWithDriver/query" ) - Observable queryDriverSiteByCoordinate(@Header("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn); + Observable queryDriverSiteByCoordinate(@Header("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn); /** * 查询司机端的登陆状态 diff --git a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/network/PassengerServiceApi.java b/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/network/PassengerServiceApi.java similarity index 81% rename from OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/network/PassengerServiceApi.java rename to OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/network/PassengerServiceApi.java index b1c16037d0..00b312ee2d 100644 --- a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/network/PassengerServiceApi.java +++ b/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/network/PassengerServiceApi.java @@ -2,7 +2,7 @@ package com.mogo.och.bus.passenger.network; import com.mogo.och.bus.passenger.bean.BusPassengerOperationStatusResponse; import com.mogo.och.bus.passenger.bean.BusPassengerQueryLineRequest; -import com.mogo.och.bus.passenger.bean.BusPassengerRoutesResponse; +import com.mogo.och.bus.passenger.bean.PM2RoutesResponse; import io.reactivex.Observable; import retrofit2.http.Body; @@ -17,14 +17,14 @@ import retrofit2.http.Query; * * Bus乘客端接口定义 */ -interface PassengerServiceApi { +public interface PassengerServiceApi { /** * 查询bus司机端绑定路线 * @return 接口返回数据 */ @Headers( {"Content-Type:application/json;charset=UTF-8"} ) @POST( "/autopilot-car-hailing/line/v2/driver/bus/passenger/lineDataWithDriver/query" ) - Observable queryDriverSiteByCoordinate(@Header("appId") String appId, @Header("ticket") String ticket, @Body BusPassengerQueryLineRequest request); + Observable queryDriverSiteByCoordinate(@Header("appId") String appId, @Header("ticket") String ticket, @Body BusPassengerQueryLineRequest request); /** * 查询司机端的登陆状态 diff --git a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/bean/BusPassengerRoutesResponse.java b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/bean/BusPassengerRoutesResponse.java deleted file mode 100644 index 01163fd6c5..0000000000 --- a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/bean/BusPassengerRoutesResponse.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.mogo.och.bus.passenger.bean; - -import com.mogo.eagle.core.data.BaseData; - -/** - * 网约车小巴路线接口请求响应结果 返回的是对应司机屏的线路信息 - * - * @author tongchenfei - */ -public class BusPassengerRoutesResponse extends BaseData { - private BusPassengerRoutesResult data; - - public BusPassengerRoutesResult getResult() { - return data; - } - - public void setResult(BusPassengerRoutesResult data) { - this.data = data; - } - - @Override - public String toString() { - return "OchBusRoutesResponse{" + - "data=" + data + - '}'; - } - -} diff --git a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/bean/BusPassengerRoutesResult.java b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/bean/BusPassengerRoutesResult.java deleted file mode 100644 index fa4a2ae0be..0000000000 --- a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/bean/BusPassengerRoutesResult.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.mogo.och.bus.passenger.bean; - -import java.util.List; -import java.util.Objects; - -/** - * 网约车小巴路线接口返回接口数据封装 - * - * @author tongchenfei - */ -public class BusPassengerRoutesResult { - private List sites; - private int lineId; - private String name; //线路名称 - private int lineType; //线路类型,0:环形 - private String description; - private int status; - private String runningDur; //运营时间 - private long taskTime; //线路时间班次 - - public List getSites() { - return sites; - } - - public int getLineId() { - return lineId; - } - - public String getName() { - return name; - } - - public int getLineType() { - return lineType; - } - - public String getDescription() { - return description; - } - - public int getStatus() { - return status; - } - - public String getRunningDur() { - return runningDur; - } - - public String csvFileUrl = ""; //轨迹文件下载的cos url,默认“” - public String csvFileMd5 = ""; //轨迹文件md5,默认“” - public String txtFileUrl = ""; //打点文件下载的cos url,默认“” - public String txtFileMd5 = ""; //轨迹文件md5,默认“” - public long contrailSaveTime; //上传轨迹完成时间戳ms:用于MEC本地手动导入轨迹验证时不会被云端轨迹覆盖 - public String carModel = ""; //[optional] 车型号(如红旗H9),默认“”,暂不加入校验逻辑、用于人工排查问题 - public String csvFileUrlDPQP = ""; //轨迹文件下载的cos url,默认“” - public String csvFileMd5DPQP = ""; //轨迹文件md5,默认“” - public String txtFileUrlDPQP = ""; //打点文件下载的cos url,默认“” - public String txtFileMd5DPQP = ""; //轨迹文件md5,默认“” - public long contrailSaveTimeDPQP; //上传轨迹完成时间戳ms:用于MEC本地手动导入轨迹验证时不会被云端轨迹覆盖 - - @Override - public String toString() { - return "BusPassengerRoutesResult{" + - "sites=" + sites + - ", lineId=" + lineId + - ", name='" + name + '\'' + - ", lineType=" + lineType + - ", description='" + description + '\'' + - ", status=" + status + - ", runningDur='" + runningDur + '\'' + - ", taskTime=" + taskTime + - ", csvFileUrl='" + csvFileUrl + '\'' + - ", csvFileMd5='" + csvFileMd5 + '\'' + - ", txtFileUrl='" + txtFileUrl + '\'' + - ", txtFileMd5='" + txtFileMd5 + '\'' + - ", contrailSaveTime=" + contrailSaveTime + - ", carModel='" + carModel + '\'' + - ", csvFileUrlDPQP='" + csvFileUrlDPQP + '\'' + - ", csvFileMd5DPQP='" + csvFileMd5DPQP + '\'' + - ", txtFileUrlDPQP='" + txtFileUrlDPQP + '\'' + - ", txtFileMd5DPQP='" + txtFileMd5DPQP + '\'' + - ", contrailSaveTimeDPQP=" + contrailSaveTimeDPQP + - '}'; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - BusPassengerRoutesResult that = (BusPassengerRoutesResult) o; - return lineId == that.lineId - && lineType == that.lineType - && status == that.status - && sites.equals(that.sites) - && name.equals(that.name) - && runningDur.equals(that.runningDur); - } - - @Override - public int hashCode() { - return Objects.hash(sites, lineId, name, lineType, description, status, runningDur); - } -} diff --git a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/bean/BusPassengerStation.java b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/bean/BusPassengerStation.java deleted file mode 100644 index 401bcd9dd1..0000000000 --- a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/bean/BusPassengerStation.java +++ /dev/null @@ -1,173 +0,0 @@ -package com.mogo.och.bus.passenger.bean; - -import java.util.Objects; - -/** - * 单个网约车小巴车站信息 - * - * @author wangmingjun - */ -public class BusPassengerStation { - - private String name; - private String description; - private String cityCode; - private double lon; //高精坐标 - private double lat; //高精坐标 - private double gcjLon; //高德坐标 - private double gcjLat; //高德坐标 - private int businessType; //站点类型,9:taxi,10:bus - private int status; - private int siteId; - private int seq; - private int drivingStatus;//行驶信息,0初始值;1已经过;2当前站;3未到站 - private int ifStop = 1; // 是否需要停靠、1需要、0不需要 // TODO: 2021/10/19 原来站点里有设计是否需要停靠字段,现设计暂无,默认都需要停靠 - private boolean leaving; - - public void setName(String name) { - this.name = name; - } - - public void setDescription(String description) { - this.description = description; - } - - public void setCityCode(String cityCode) { - this.cityCode = cityCode; - } - - public void setLon(double lon) { - this.lon = lon; - } - - public void setLat(double lat) { - this.lat = lat; - } - - public void setBusinessType(int businessType) { - this.businessType = businessType; - } - - public void setStatus(int status) { - this.status = status; - } - - public void setSiteId(int siteId) { - this.siteId = siteId; - } - - public void setSeq(int seq) { - this.seq = seq; - } - - public void setDrivingStatus(int drivingStatus) { - this.drivingStatus = drivingStatus; - } - - public String getName() { - return name; - } - - public String getDescription() { - return description; - } - - public String getCityCode() { - return cityCode; - } - - public double getGcjLon() { - return gcjLon; - } - - public double getGcjLat() { - return gcjLat; - } - - public int getBusinessType() { - return businessType; - } - - public int getStatus() { - return status; - } - - public int getSiteId() { - return siteId; - } - - public int getSeq() { - return seq; - } - - public int getDrivingStatus() { - return drivingStatus; - } - - public double getLon() { - return lon; - } - - public double getLat() { - return lat; - } - - public void setIfStop(int ifStop) { - this.ifStop = ifStop; - } - - public int getIfStop() { - return ifStop; - } - - public void setLeaving(boolean leaving) { - this.leaving = leaving; - } - - public boolean isLeaving() { - return leaving; - } - - @Override - public String toString() { - return "OchBusStation{" + - "name='" + name + '\'' + - ", description='" + description + '\'' + - ", cityCode='" + cityCode + '\'' + - ", lon=" + lon + - ", lat=" + lat + - ", businessType=" + businessType + - ", status=" + status + - ", siteId=" + siteId + - ", seq=" + seq + - ", drivingStatus=" + drivingStatus + - ", ifStop=" + ifStop + - ", leaving=" + leaving + - '}'; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - BusPassengerStation that = (BusPassengerStation) o; - return Double.compare(that.lon, lon) == 0 - && Double.compare(that.lat, lat) == 0 - && Double.compare(that.gcjLon, gcjLon) == 0 - && Double.compare(that.gcjLat, gcjLat) == 0 - && businessType == that.businessType - && status == that.status - && siteId == that.siteId - && seq == that.seq - && drivingStatus == that.drivingStatus - && ifStop == that.ifStop - && leaving == that.leaving - && Objects.equals(name, that.name) - && Objects.equals(cityCode, that.cityCode); - } - - @Override - public int hashCode() { - return Objects.hash(name, description, cityCode, lon, lat, gcjLon, gcjLat, businessType, status, siteId, seq, drivingStatus, ifStop, leaving); - } -} diff --git a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/callback/IBusPassengerADASStatusCallback.java b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/callback/IBusPassengerADASStatusCallback.java index 4dbf53010c..ce58b08413 100644 --- a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/callback/IBusPassengerADASStatusCallback.java +++ b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/callback/IBusPassengerADASStatusCallback.java @@ -6,8 +6,6 @@ package com.mogo.och.bus.passenger.callback; * Model->Presenter回调:ADAS相关(自动驾驶状态回调,到达终点等等) */ public interface IBusPassengerADASStatusCallback { - // 自动驾驶触发的已到达目的地:暂未用到 - void onAutopilotArriveEnd(); // 自动驾驶可用状态 void onAutopilotEnable(); diff --git a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/callback/IBusPassengerAutopilotPlanningCallback.java b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/callback/IBusPassengerAutopilotPlanningCallback.java index 7f07057f98..3a09bc436d 100644 --- a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/callback/IBusPassengerAutopilotPlanningCallback.java +++ b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/callback/IBusPassengerAutopilotPlanningCallback.java @@ -11,5 +11,4 @@ import java.util.List; public interface IBusPassengerAutopilotPlanningCallback { void routeResult(List routeArrivied, List routeArriving, MogoLocation location); void routePlanningToNextStationChanged(long meters, long timeInSecond); - void updateTotalDistance(); } diff --git a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/callback/IBusPassengerRouteLineInfoCallback.java b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/callback/IBusPassengerRouteLineInfoCallback.java index b7d348a2b2..caf252a64e 100644 --- a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/callback/IBusPassengerRouteLineInfoCallback.java +++ b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/callback/IBusPassengerRouteLineInfoCallback.java @@ -1,6 +1,6 @@ package com.mogo.och.bus.passenger.callback; -import com.mogo.och.bus.passenger.bean.BusPassengerStation; +import com.mogo.och.data.bean.BusStationBean; import java.util.List; @@ -10,7 +10,7 @@ import java.util.List; */ public interface IBusPassengerRouteLineInfoCallback { void updateLineInfo(String lineName, String lineDurTime); - void updateStationsInfo(List stations, int currentStationIndex, boolean isArrived); + void updateStationsInfo(List stations, int currentStationIndex, boolean isArrived); void showNoTaskView(); void hideNoTaskView(); } diff --git a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/model/BusPassengerModel.kt b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/model/BusPassengerModel.kt index 1e8c2ea0fa..1fd3869bda 100644 --- a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/model/BusPassengerModel.kt +++ b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/model/BusPassengerModel.kt @@ -38,12 +38,9 @@ import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.bus.passenger.R 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.bean.PM2RoutesResponse 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 import com.mogo.och.bus.passenger.network.BusPassengerServiceManager.driverAppSn import com.mogo.och.common.module.bean.dpmsg.AppConnectMsg @@ -61,14 +58,14 @@ import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceM import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager.addTrajectoryListener import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager.setStationPoint import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager.suspendCalculate -import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil.calculateRouteSumLength -import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil.coordinateConverterWgsToGcjLocations -import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil.getArrivedPointIndexNew +import com.mogo.och.common.module.manager.loopmanager.BizLoopManager +import com.mogo.och.common.module.manager.loopmanager.LoopInfo import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.common.module.utils.PinYinUtil -import mogo.telematics.pad.MessagePad +import com.mogo.och.data.bean.BusRoutesResult +import com.mogo.och.data.bean.BusStationBean +import io.reactivex.schedulers.Schedulers import mogo.telematics.pad.MessagePad.ArrivalNotification -import mogo.telematics.pad.MessagePad.GlobalPathResp import java.util.concurrent.ConcurrentHashMap /** @@ -78,24 +75,21 @@ import java.util.concurrent.ConcurrentHashMap object BusPassengerModel { private val TAG = BusPassengerModel::class.java.simpleName + private val TAG_LOOP_QUERY_BIND_LINE = "${TAG}_TAG_LOOP_QUERY_BIND_LINE" private const val MSG_QUERY_BUS_P_STATION = 1001 - private val mRoutePoints: MutableList = ArrayList() - private var mContext: Context? = null - private var mADASStatusCallback //Model->Presenter:自动驾驶状态相关 - : IBusPassengerADASStatusCallback? = null - private var mAutopilotPlanningCallback //Model->Presenter:自动驾驶线路规划 - : IBusPassengerAutopilotPlanningCallback? = null + private var mADASStatusCallback: IBusPassengerADASStatusCallback? = + null//Model->Presenter:自动驾驶状态相关 + private var mAutopilotPlanningCallback: IBusPassengerAutopilotPlanningCallback? = + null//Model->Presenter:自动驾驶线路规划 private val mControllerStatusCallbackMap: MutableMap = ConcurrentHashMap() - private var mDriverStatusCallback //出车收车状态 - : IBusPassegerDriverStatusCallback? = null - private var mRouteLineInfoCallback // bus路线信息更新 - : IBusPassengerRouteLineInfoCallback? = null + private var mDriverStatusCallback: IBusPassegerDriverStatusCallback? = null//出车收车状态 + private var mRouteLineInfoCallback: IBusPassengerRouteLineInfoCallback? = null// bus路线信息更新 private var mLocation: MogoLocation? = null - private var routesResult: BusPassengerRoutesResult? = null - var mStations: MutableList = ArrayList() + private var routesResult: BusRoutesResult? = null + var mStations: MutableList = ArrayList() private var mNextStationIndex = 0 // 要到达站的index private val mTwoStationsRouts: MutableList = ArrayList() private val handler = Handler(Looper.getMainLooper(), Handler.Callback { msg -> @@ -113,7 +107,10 @@ object BusPassengerModel { mContext = context.applicationContext initListeners() queryDriverOperationStatus() - startOrStopOrderLoop(true) + BizLoopManager.setLoopFunction( + TAG_LOOP_QUERY_BIND_LINE, + LoopInfo(2, ::queryDriverSiteByCoordinate, scheduler = Schedulers.io()) + ) } fun setDriverStatusCallback(callback: IBusPassegerDriverStatusCallback?) { @@ -163,10 +160,10 @@ object BusPassengerModel { }) } - fun queryDriverSiteByCoordinate() { + private fun queryDriverSiteByCoordinate() { BusPassengerServiceManager.queryDriverSiteByCoordinate( - mContext!!, object : OchCommonServiceCallback { - override fun onSuccess(data: BusPassengerRoutesResponse) { + mContext!!, object : OchCommonServiceCallback { + override fun onSuccess(data: PM2RoutesResponse) { if (data.result == null) { d(M_BUS_P + TAG, "order = queryDriverSiteByCoordinate = null") if (routesResult != null) { @@ -175,7 +172,6 @@ object BusPassengerModel { } cleanStation("queryDriverSiteByCoordinate") mRouteLineInfoCallback?.showNoTaskView() - mRoutePoints.clear() return } if (routesResult != null && data.result.equals(routesResult)) { @@ -207,7 +203,7 @@ object BusPassengerModel { }) } - private fun updatePassengerRouteInfo(result: BusPassengerRoutesResult) { + private fun updatePassengerRouteInfo(result: BusRoutesResult) { if (mRouteLineInfoCallback != null) { d( M_BUS_P + TAG, @@ -255,7 +251,7 @@ object BusPassengerModel { } private fun updateAutopilotControlParameters( - busRoutesResult: BusPassengerRoutesResult, + busRoutesResult: BusRoutesResult, leaveIndex: Int ) { val parameters = initAutopilotControlParameters(busRoutesResult, leaveIndex) @@ -273,7 +269,7 @@ object BusPassengerModel { } private fun initAutopilotControlParameters( - busRoutesResult: BusPassengerRoutesResult, + busRoutesResult: BusRoutesResult, leaveIndex: Int ): AutopilotControlParameters? { if (busRoutesResult.sites == null) { @@ -311,7 +307,7 @@ object BusPassengerModel { fun release() { releaseListeners() cleanStation("release") - startOrStopOrderLoop(false) + BizLoopManager.removeLoopFunction(TAG_LOOP_QUERY_BIND_LINE) } fun setMoGoAutopilotPlanningListener(moGoAutopilotPlanningCallback: IBusPassengerAutopilotPlanningCallback?) { @@ -348,9 +344,6 @@ object BusPassengerModel { // 定位监听 addListener(TAG, 10, mMapLocationListener) - //2021.11.1 自动驾驶路线规划接口 - CallerPlanningRottingListenerManager.addListener(TAG, moGoAutopilotPlanningListener) - //监听司机端消息 CallerTelematicListenerManager.addListener(TAG, mReceivedMsgListener) startLoopAbnormalFactors(mContext!!) @@ -370,7 +363,6 @@ object BusPassengerModel { MogoAiCloudSocketManager.getInstance(mContext) .unregisterLifecycleListener(10010) CallerAutoPilotStatusListenerManager.removeListener(mGoAutopilotStatusListener) - CallerPlanningRottingListenerManager.removeListener(moGoAutopilotPlanningListener) CallerTelematicListenerManager.removeListener(TAG) stopLoopAbnormalFactors() } @@ -513,86 +505,12 @@ object BusPassengerModel { ) { arriveAtEnd = true } - -// if (DebugConfig.isDebug()) { - // ToastUtils.showShort("到达目的地") -// } - mADASStatusCallback?.onAutopilotArriveEnd() } } - private val moGoAutopilotPlanningListener: IMoGoPlanningRottingListener = - object : IMoGoPlanningRottingListener { - override fun onAutopilotRotting(globalPathResp: GlobalPathResp?) { - globalPathResp?.wayPointsList?.let { - if (it.size > 0) { - d(M_BUS_P + TAG, "收到轨迹:${it.size}--第一个点${it[0]}--最后一个点:${it.last()}") - updateRoutePoints(it) - } - } - } - } - - fun updateRoutePoints(routePoints: List) { - mRoutePoints.clear() - val latLngModels: List = - coordinateConverterWgsToGcjLocations(mContext, routePoints) - mRoutePoints.addAll(latLngModels) - calculateTwoStationsRoute() - } - - private fun calculateTwoStationsRoute() { - //找出前往站对应的轨迹点,拿出两站点的集合 - d(M_BUS_P + TAG, "mRoutePoints.size() = " + mRoutePoints.size) - if (mRoutePoints.size > 0) { - if (mStations.size > 1) { //两个站点及以上要计算两个站点间的轨迹路线 - if (mNextStationIndex <= mStations.size - 1 && mNextStationIndex - 1 >= 0) { - mTwoStationsRouts.clear() - val stationNext = mStations[mNextStationIndex] - val stationCur = mStations[mNextStationIndex - 1] - //当前站在轨迹中对应的点 - val currentRouteIndex = getArrivedPointIndexNew( - 0, mRoutePoints, stationCur.gcjLon, stationCur.gcjLat - ) - //要前往的站在轨迹中对应的点 - val nextRouteIndex = getArrivedPointIndexNew( - currentRouteIndex, mRoutePoints, stationNext.gcjLon, stationNext.gcjLat - ) - d( - M_BUS_P + TAG, - "轨迹排查==currentRouteIndex = " + currentRouteIndex - + ", nextRouteIndex = " + nextRouteIndex - ) - if (currentRouteIndex < nextRouteIndex) { //如果找到的next在起点的轨迹前面,直接舍弃这个轨迹,不显示 - mTwoStationsRouts.addAll( - mRoutePoints.subList( - currentRouteIndex, - nextRouteIndex + 1 - ) - ) - } - } - } - if (mTwoStationsRouts.size > 0) { - val sumLength = calculateRouteSumLength(mTwoStationsRouts) - SharedPrefsMgr.getInstance() - .putInt(BusPassengerConst.BUS_SP_KEY_ORDER_SUM_DIS, sumLength.toInt()) - mAutopilotPlanningCallback?.updateTotalDistance() - } - } - } - - private fun startOrStopOrderLoop(start: Boolean) { - d(M_BUS_P + TAG, "startOrStopOrderLoop() $start") - if (start) { - BusPassengerModelLoopManager.getInstance().startQueryDriverLineLoop() - } else { - BusPassengerModelLoopManager.getInstance().stopQueryDriverLineLoop() - } - } private fun setTrajectoryStation( - startStationInfo: BusPassengerStation, - endStationInfo: BusPassengerStation, + startStationInfo: BusStationBean, + endStationInfo: BusStationBean, lineId: Int ) { val startStation = MogoLocation() diff --git a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/network/BusPassengerModelLoopManager.java b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/network/BusPassengerModelLoopManager.java deleted file mode 100644 index f10f9537c9..0000000000 --- a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/network/BusPassengerModelLoopManager.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.mogo.och.bus.passenger.network; - -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.och.bus.passenger.model.BusPassengerModel; - -import java.util.concurrent.TimeUnit; - -import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; -import io.reactivex.ObservableOnSubscribe; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.CompositeDisposable; -import io.reactivex.disposables.Disposable; -import io.reactivex.functions.Consumer; -import io.reactivex.schedulers.Schedulers; - -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS_P; -import static com.mogo.och.bus.passenger.constant.BusPassengerConst.LOOP_DELAY; -import static com.mogo.och.bus.passenger.constant.BusPassengerConst.LOOP_LINE_2S; -import static com.mogo.och.bus.passenger.constant.BusPassengerConst.LOOP_LINE_1S; - -/** - * Created on 2021/11/22 - * - * 管理轮询逻辑(订单轮询、新单轮询、新单抢单结果轮询等等) - */ -public class BusPassengerModelLoopManager { - - private static final String TAG = BusPassengerModelLoopManager.class.getSimpleName(); - - private static final class SingletonHolder { - private static final BusPassengerModelLoopManager INSTANCE = new BusPassengerModelLoopManager(); - } - - public static BusPassengerModelLoopManager getInstance() { - return SingletonHolder.INSTANCE; - } - - private Disposable mQueryLineDisposable; //心跳轮询 - - public void startQueryDriverLineLoop() { - if (mQueryLineDisposable != null && !mQueryLineDisposable.isDisposed()) { - return; - } - CallerLogger.i(M_BUS_P + TAG, "startQueryDriverLineLoop()"); - mQueryLineDisposable = Observable.interval(LOOP_DELAY, - LOOP_LINE_2S, TimeUnit.MILLISECONDS) - .map((aLong -> aLong + 1)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(aLong -> BusPassengerModel.INSTANCE.queryDriverSiteByCoordinate()); - } - - public void stopQueryDriverLineLoop() { - if (mQueryLineDisposable != null) { - CallerLogger.i(M_BUS_P + TAG, "stopQueryDriverLineLoop()"); - mQueryLineDisposable.dispose(); - mQueryLineDisposable = null; - } - } - -} diff --git a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java index f16f4c521d..e0b8add9a9 100644 --- a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java +++ b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java @@ -14,7 +14,6 @@ import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; -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; @@ -80,12 +79,6 @@ public class BaseBusPassengerPresenter extends Presenter mView.onAutopilotStatusChanged( @@ -137,7 +130,7 @@ public class BaseBusPassengerPresenter extends Presenter stations, int currentStationIndex, boolean isArrived) { + public void updateStationsInfo(List stations, int currentStationIndex, boolean isArrived) { runOnUIThread(() -> mView.updateStationsInfo(stations,currentStationIndex, isArrived)); } @@ -161,8 +154,4 @@ public class BaseBusPassengerPresenter extends Presenter mView.updateRoutePlanningToNextStation(meters, timeInSecond)); } - @Override - public void updateTotalDistance() { -// runOnUIThread(() -> mView.setProgressBarMax()); - } } diff --git a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.kt b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.kt deleted file mode 100644 index ba29d8b746..0000000000 --- a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.kt +++ /dev/null @@ -1,334 +0,0 @@ -package com.mogo.och.bus.passenger.ui - -import android.content.Context -import android.os.Bundle -import android.util.AttributeSet -import android.view.LayoutInflater -import android.view.View -import android.widget.RelativeLayout -import com.amap.api.maps.AMap -import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.TextureMapView -import com.amap.api.maps.model.BitmapDescriptor -import com.amap.api.maps.model.BitmapDescriptorFactory -import com.amap.api.maps.model.CameraPosition -import com.amap.api.maps.model.CustomMapStyleOptions -import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.LatLngBounds -import com.amap.api.maps.model.Marker -import com.amap.api.maps.model.MarkerOptions -import com.amap.api.maps.model.Polyline -import com.amap.api.maps.model.PolylineOptions -import com.mogo.eagle.core.data.map.MogoLocation -import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener -import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager -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.mogo.logger.scene.SceneConstant.Companion.M_BUS_P -import com.mogo.och.bus.passenger.R -import com.mogo.och.bus.passenger.utils.BusPassengerMapAssetStyleUtil - -/** - * 乘客屏小地图 - */ -class BusPassengerMapDirectionView @JvmOverloads constructor( - context: Context, - attrs: AttributeSet? = null, - defStyleAttr: Int = 0 -) : RelativeLayout(context, attrs, defStyleAttr), IMoGoChassisLocationGCJ02Listener, - IBusPassengerMapDirectionView, AMap.OnCameraChangeListener { - - companion object { - //小地图名称 - const val TAG = "BusPassengerMapDirectionView" - } - - private lateinit var mAMapNaviView: TextureMapView - private lateinit var mAMap: AMap - private var mPolyline: Polyline? = null - private val mLineMarkers: MutableList = ArrayList() - private lateinit var mCarMarker: Marker - - private val mLineStationLatLng: MutableList = ArrayList() //站点坐标数据 - var textureList: MutableList = ArrayList() - var texIndexList: MutableList = ArrayList() - private var mArrivedRes: BitmapDescriptor? = null - private var mUnArrivedRes: BitmapDescriptor? = null - - private val routeArrived: MutableList = ArrayList() - private val routeArriving: MutableList = ArrayList() - private var location: MogoLocation? = null - - init { - try { - initView(context) - } catch (e: Exception) { - e.printStackTrace() - } - } - - private fun initView(context: Context) { - d(M_BUS_P + TAG, "initView") - val smpView = LayoutInflater.from(context).inflate(R.layout.bus_p_map_view, this) - mAMapNaviView = smpView.findViewById(R.id.bus_p_line_amap_view) as TextureMapView - initAMapView() - - // 注册定位监听 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 1, this) - } - - override fun onDetachedFromWindow() { - super.onDetachedFromWindow() - // 注册定位监听 - CallerChassisLocationGCJ02ListenerManager.removeListener(TAG) - } - - private fun initAMapView() { - mAMap = mAMapNaviView.map - // 设置导航地图模式,aMap是地图控制器对象。 - mAMap.mapType = AMap.MAP_TYPE_NIGHT - - // 关闭显示实时路况图层,aMap是地图控制器对象。 - mAMap.isTrafficEnabled = false - - // 设置 锚点 图标 - mCarMarker = mAMap.addMarker(MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.bus_p_map_car)).anchor(0.5f, 0.5f)) - mArrivedRes = BitmapDescriptorFactory.fromResource(R.drawable.bus_p_map_arrow_arrived) - mUnArrivedRes = BitmapDescriptorFactory.fromResource(R.drawable.bus_p_map_arrow_un_arrive) - - // 加载自定义样式 - val customMapStyleOptions = CustomMapStyleOptions() - .setEnable(true) - .setStyleData( - BusPassengerMapAssetStyleUtil.getAssetsStyle( - context, "map_style.data" - ) - ) - .setStyleExtraData( - BusPassengerMapAssetStyleUtil.getAssetsExtraStyle( - context, "map_style_extra.data" - ) - ) - // 设置自定义样式 - mAMap.setCustomMapStyle(customMapStyleOptions) - - // 设置地图的样式 - mAMap.uiSettings.apply { - isZoomControlsEnabled = false // 地图缩放级别的交换按钮 - setAllGesturesEnabled(true) // 所有手势 - isMyLocationButtonEnabled = false // 显示默认的定位按钮 - setLogoBottomMargin(-150) //设置Logo下边界距离屏幕底部的边距,设置为负值即可 - } - - mAMap.setOnMapLoadedListener { - d(M_BUS_P + TAG, "smp---onMapLoaded") - // 加载自定义样式 - val options = CustomMapStyleOptions() - .setEnable(true) - .setStyleData( - BusPassengerMapAssetStyleUtil.getAssetsStyle( - context, "map_style.data" - ) - ) - .setStyleExtraData( - BusPassengerMapAssetStyleUtil.getAssetsExtraStyle( - context, "map_style_extra.data" - ) - ) - // 设置自定义样式 - mAMap.setCustomMapStyle(options) - mAMapNaviView.map.setPointToCenter( - mAMapNaviView.width / 2, - mAMapNaviView.height / 2 - ) - } - - //设置地图状态的监听接口 - mAMap.setOnCameraChangeListener(this) - } - -// override fun onInterceptTouchEvent(ev: MotionEvent): Boolean { -// return true -// } - - override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { - if (mogoLocation == null) { - return - } - val currentLatLng = LatLng(mogoLocation.latitude, mogoLocation.longitude) - - //更新车辆位置 - mCarMarker.rotateAngle = (360 - mogoLocation.heading).toFloat() - mCarMarker.position = currentLatLng - mCarMarker.setToTop() - try { - //圈定地图显示范围 - val boundsBuilder = LatLngBounds.Builder() - routeArrived.forEach { - boundsBuilder.include(it) - } - routeArriving.forEach { - boundsBuilder.include(it) - } - mLineStationLatLng.forEach { - boundsBuilder.include(it) - } - boundsBuilder.include(currentLatLng) - mAMap.moveCamera( - CameraUpdateFactory.newLatLngBoundsRect( - boundsBuilder.build(), - 100, - 100, - 100, - 100 - ) - ) - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun drawablePolyline() { - if (routeArrived.isEmpty() && routeArriving.isEmpty()) { - d(SceneConstant.M_TAXI + TAG, "没有点") - return - } - try { - texIndexList.clear() - val allPoints = ArrayList(routeArrived) - for (i in routeArrived.indices) { - if (routeArrived.size > 1 && i < routeArrived.size - 1) { - texIndexList.add(0) - } - } - texIndexList.add(0) - location?.let { - allPoints.add(LatLng(it.latitude, it.longitude)) - } - allPoints.addAll(routeArriving) - for (ignored in routeArrived) { - texIndexList.add(1) - } - mPolyline?.let { - it.points = allPoints - it.options.customTextureIndex = texIndexList - return - } - if(textureList.isEmpty()) { - textureList.add(mArrivedRes) - textureList.add(mUnArrivedRes) - } - //设置线段纹理 - val polylineOptions = PolylineOptions().apply { - addAll(allPoints) - isUseTexture = true - width(15f) - lineCapType(PolylineOptions.LineCapType.LineCapRound) - customTextureList = textureList - customTextureIndex = texIndexList - } - - // 绘制线 - mPolyline = mAMap.addPolyline(polylineOptions) - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun clearPolyline() { - mPolyline?.remove() - mPolyline = null - } - - override fun setLineMarker() {} - - fun clearCoordinatesLatLng() { - textureList.clear() - texIndexList.clear() - routeArrived.clear() - routeArriving.clear() - mLineStationLatLng.clear() - d(M_BUS_P + TAG, " mCoordinatesLatLng.clear ") - } - - fun onCreateView(savedInstanceState: Bundle?) { - mAMapNaviView.onCreate(savedInstanceState) - } - - fun onResume() { - mAMapNaviView.onResume() - } - - fun onPause() { - mAMapNaviView.onPause() - } - - fun onDestroy() { - mAMapNaviView.onDestroy() - } - - fun setCoordinatesLatLng( - routeArrived: List, - routeArriving: List, - location: MogoLocation? - ) { - this.routeArrived.clear() - this.routeArrived.addAll(routeArrived) - this.routeArriving.clear() - this.routeArriving.addAll(routeArriving) - this.location = location - } - - fun clearLineMarkers() { - for (i in mLineMarkers.indices) { - mLineMarkers[i].isVisible = false - mLineMarkers[i].remove() - } - mLineMarkers.clear() - } - - fun setLinePointMarkerAndDraw(mLineStationsList: List, currentIndex: Int) { - clearLineMarkers() - mLineStationLatLng.clear() - mLineStationLatLng.addAll(mLineStationsList) - if (mLineStationsList.isNotEmpty()) { - // 起点marker, 终点marker, 过站marker, 未过站marker - val size = mLineStationsList.size - val mStartMarker = mAMap.addMarker( - MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.bus_p_map_start_point)) - ) - val mEndMarker = mAMap.addMarker( - MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.bus_p_map_end_point)) - ) - mStartMarker.position = mLineStationsList[0] - mLineMarkers.add(0, mStartMarker) - for (i in mLineStationsList.indices) { - if (currentIndex <= i && i < size - 1 && i > 0) { //未到达 - val unArrivedMarker = mAMap.addMarker( - MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.bus_p_map_unarrived_point)) - ) - unArrivedMarker.position = mLineStationsList[i] - mLineMarkers.add(i, unArrivedMarker) - } else if (i in 1 until currentIndex) { - val arrivedMarker = mAMap.addMarker( - MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.bus_p_map_arrived_point)) - ) - arrivedMarker.position = mLineStationsList[i] - mLineMarkers.add(i, arrivedMarker) - } - } - mEndMarker.position = mLineStationsList[size - 1] - mLineMarkers.add(size - 1, mEndMarker) - } - } - - override fun onCameraChange(cameraPosition: CameraPosition) { - } - - override fun onCameraChangeFinish(cameraPosition: CameraPosition) {} - -} \ No newline at end of file diff --git a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java index e576d70bc2..2c4f6750f7 100644 --- a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java +++ b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java @@ -16,21 +16,20 @@ import androidx.recyclerview.widget.RecyclerView; import com.amap.api.maps.model.LatLng; import com.elegant.utils.UiThreadHandler; -import com.mogo.commons.debug.DebugConfig; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.hmi.ui.widget.DriverMonitorView; import com.mogo.commons.storage.SharedPrefsMgr; import com.mogo.och.bus.passenger.R; -import com.mogo.och.bus.passenger.adapter.BusPassengerLineStationsAdapter; -import com.mogo.och.bus.passenger.bean.BusPassengerStation; +import com.mogo.och.bus.passenger.ui.adapter.BusPassengerLineStationsAdapter; import com.mogo.och.bus.passenger.constant.BusPassengerConst; import com.mogo.och.bus.passenger.presenter.BaseBusPassengerPresenter; import com.mogo.och.bus.passenger.ui.layoutmanager.CenterLayoutManager; -import com.mogo.och.bus.passenger.utils.BPRouteDataTestUtils; import com.mogo.och.common.module.utils.NumberFormatUtil; import com.mogo.och.common.module.wigets.MarqueeTextView; import com.mogo.och.common.module.wigets.OCHGradientTextView; +import com.mogo.och.data.bean.BusStationBean; +import com.mogo.och.common.module.wigets.mapdirectionview.MapDirectionView; import java.util.ArrayList; import java.util.List; @@ -44,14 +43,14 @@ public class BusPassengerRouteFragment extends public static final String TAG = "BusPassengerRouteFragment"; - private final List mStationsList = new ArrayList<>(); + private final List mStationsList = new ArrayList<>(); private OCHGradientTextView mSpeedTv; private ConstraintLayout mNoLineInfoView; private MarqueeTextView mLineName; private Group mRouteInfoView; private RecyclerView mStationsListRv; - private BusPassengerMapDirectionView mMapDirectionView; + private MapDirectionView mMapDirectionView; private BusPassengerLineStationsAdapter mAdapter; private TextView emptyTv; private AppCompatImageView mAutopilotIv; @@ -129,17 +128,6 @@ public class BusPassengerRouteFragment extends } }); - //测试 - if (DebugConfig.isDebug()){ - mSpeedTv.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - BPRouteDataTestUtils.converToRouteData(); - return false; - } - }); - } - mapAndLiveVideoView = findViewById(R.id.mapAndLiveVideoView); initLiveView(); @@ -324,7 +312,7 @@ public class BusPassengerRouteFragment extends * @param currentStationIndex * @param isArrived 是否到站并离开,true 到达当前站 currentStationIndex 未离开, false 正在前往此站 currentStationIndex */ - public void updateStationsInfo(List stations, int currentStationIndex, boolean isArrived) { + public void updateStationsInfo(List stations, int currentStationIndex, boolean isArrived) { updateArrivedStation(stations.get(currentStationIndex).getName(),currentStationIndex,isArrived); mStationsList.clear(); mStationsList.addAll(stations); @@ -345,7 +333,7 @@ public class BusPassengerRouteFragment extends } } - private void updateWayPointList(List stations,int currentStationIndex) { + private void updateWayPointList(List stations,int currentStationIndex) { List mLineStationsList = new ArrayList<>(); for (int i = 0; i< stations.size(); i++) {//站点集合 LatLng latLng = new LatLng(stations.get(i).getGcjLat(),stations.get(i).getGcjLon());// lat,lon diff --git a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/ui/adapter/BusPassengerLineStationsAdapter.java similarity index 95% rename from OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java rename to OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/ui/adapter/BusPassengerLineStationsAdapter.java index 2e50c6ddc0..cf4298c31a 100644 --- a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java +++ b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/ui/adapter/BusPassengerLineStationsAdapter.java @@ -1,4 +1,4 @@ -package com.mogo.och.bus.passenger.adapter; +package com.mogo.och.bus.passenger.ui.adapter; import static com.mogo.och.bus.passenger.constant.BusPassengerConst.STATION_STATUS_ARRIVING; import static com.mogo.och.bus.passenger.constant.BusPassengerConst.STATION_STATUS_LEAVING; @@ -16,9 +16,9 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.mogo.och.bus.passenger.R; -import com.mogo.och.bus.passenger.bean.BusPassengerStation; import com.mogo.och.common.module.utils.BlinkAnimationUtil; import com.mogo.och.common.module.wigets.MarqueeTextView; +import com.mogo.och.data.bean.BusStationBean; import java.util.List; @@ -29,9 +29,9 @@ import java.util.List; public class BusPassengerLineStationsAdapter extends RecyclerView.Adapter { private Context mContext; - private List mStations; + private List mStations; - public BusPassengerLineStationsAdapter(Context context, List stations){ + public BusPassengerLineStationsAdapter(Context context, List stations){ this.mContext = context; this.mStations = stations; } @@ -46,7 +46,7 @@ public class BusPassengerLineStationsAdapter extends RecyclerView.Adapter list = new ArrayList<>(); - - try { - JSONObject jsonObject = new JSONObject(jsonStr); - JSONArray jsonElements = jsonObject.getJSONArray("models"); - for (int i = 0; i < jsonElements.length(); i++) { - JSONObject s = jsonElements.getJSONObject(i); - MessagePad.Location.Builder builder = MessagePad.Location.newBuilder(); - builder.setLatitude(s.getDouble("latitude_")); - builder.setLongitude(s.getDouble("longitude_")); - list.add(builder.build()); - } - BusPassengerModel.INSTANCE.updateRoutePoints(list); - } catch (JSONException e) { - e.printStackTrace(); - } - } -} diff --git a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/bean/PM2OperationStatusResponse.java b/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/bean/PM2OperationStatusResponse.java deleted file mode 100644 index 315ca0568e..0000000000 --- a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/bean/PM2OperationStatusResponse.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.mogo.och.bus.passenger.passenger.bean; - -import com.mogo.eagle.core.data.BaseData; - -/** - * @author congtaowang - * @since 2021/3/22 - * - * 小巴车运营状态返回参数 - */ -public class PM2OperationStatusResponse extends BaseData { - - public Result data; - - public static class Result { - private String sn; //司机屏sn - private String phone; //司机手机号 - public String plateNumber; //车牌号 - public int driverStatus;//0:已收车,1:已出车 - } -} diff --git a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/bean/PM2QueryLineRequest.java b/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/bean/PM2QueryLineRequest.java deleted file mode 100644 index ed7d4835c6..0000000000 --- a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/bean/PM2QueryLineRequest.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.mogo.och.bus.passenger.passenger.bean; - -public -/** - * @author congtaowang - * @since 2021/3/22 - * - * 根据车机行驶线路站点信息 - */ -class PM2QueryLineRequest { - - private String sn; - public PM2QueryLineRequest(String sn) { - this.sn = sn; - } -} diff --git a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/bean/PM2RoutesResult.java b/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/bean/PM2RoutesResult.java deleted file mode 100644 index 89e77ee2f1..0000000000 --- a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/bean/PM2RoutesResult.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.mogo.och.bus.passenger.passenger.bean; - -import java.util.List; -import java.util.Objects; - -/** - * 网约车小巴路线接口返回接口数据封装 - * - * @author tongchenfei - */ -public class PM2RoutesResult { - private List sites; - private int lineId; - private String name; //线路名称 - private int lineType; //线路类型,0:环形 - private String description; - private int status; - private String runningDur; //运营时间 - private long taskTime; //线路时间班次 - - public List getSites() { - return sites; - } - - public int getLineId() { - return lineId; - } - - public String getName() { - return name; - } - - public int getLineType() { - return lineType; - } - - public String getDescription() { - return description; - } - - public int getStatus() { - return status; - } - - public String getRunningDur() { - return runningDur; - } - - @Override - public String toString() { - return "BusPassengerRoutesResult{" + - "sites=" + sites + - ", lineId=" + lineId + - ", name='" + name + '\'' + - ", lineType=" + lineType + - ", description='" + description + '\'' + - ", status=" + status + - ", runningDur='" + runningDur + '\'' + - '}'; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - PM2RoutesResult that = (PM2RoutesResult) o; - return lineId == that.lineId - && lineType == that.lineType - && status == that.status - && sites.equals(that.sites) - && name.equals(that.name) - && runningDur.equals(that.runningDur); - } - - @Override - public int hashCode() { - return Objects.hash(sites, lineId, name, lineType, description, status, runningDur); - } -} diff --git a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/bean/PM2Station.java b/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/bean/PM2Station.java deleted file mode 100644 index 78881be174..0000000000 --- a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/bean/PM2Station.java +++ /dev/null @@ -1,173 +0,0 @@ -package com.mogo.och.bus.passenger.passenger.bean; - -import java.util.Objects; - -/** - * 单个网约车小巴车站信息 - * - * @author wangmingjun - */ -public class PM2Station { - - private String name; - private String description; - private String cityCode; - private double lon; //高精坐标 - private double lat; //高精坐标 - private double gcjLon; //高德坐标 - private double gcjLat; //高德坐标 - private int businessType; //站点类型,9:taxi,10:bus - private int status; - private int siteId; - private int seq; - private int drivingStatus;//行驶信息,0初始值;1已经过;2当前站;3未到站 - private int ifStop = 1; // 是否需要停靠、1需要、0不需要 // TODO: 2021/10/19 原来站点里有设计是否需要停靠字段,现设计暂无,默认都需要停靠 - private boolean leaving; - - public void setName(String name) { - this.name = name; - } - - public void setDescription(String description) { - this.description = description; - } - - public void setCityCode(String cityCode) { - this.cityCode = cityCode; - } - - public void setLon(double lon) { - this.lon = lon; - } - - public void setLat(double lat) { - this.lat = lat; - } - - public void setBusinessType(int businessType) { - this.businessType = businessType; - } - - public void setStatus(int status) { - this.status = status; - } - - public void setSiteId(int siteId) { - this.siteId = siteId; - } - - public void setSeq(int seq) { - this.seq = seq; - } - - public void setDrivingStatus(int drivingStatus) { - this.drivingStatus = drivingStatus; - } - - public String getName() { - return name; - } - - public String getDescription() { - return description; - } - - public String getCityCode() { - return cityCode; - } - - public double getGcjLon() { - return gcjLon; - } - - public double getGcjLat() { - return gcjLat; - } - - public int getBusinessType() { - return businessType; - } - - public int getStatus() { - return status; - } - - public int getSiteId() { - return siteId; - } - - public int getSeq() { - return seq; - } - - public int getDrivingStatus() { - return drivingStatus; - } - - public double getLon() { - return lon; - } - - public double getLat() { - return lat; - } - - public void setIfStop(int ifStop) { - this.ifStop = ifStop; - } - - public int getIfStop() { - return ifStop; - } - - public void setLeaving(boolean leaving) { - this.leaving = leaving; - } - - public boolean isLeaving() { - return leaving; - } - - @Override - public String toString() { - return "OchBusStation{" + - "name='" + name + '\'' + - ", description='" + description + '\'' + - ", cityCode='" + cityCode + '\'' + - ", lon=" + lon + - ", lat=" + lat + - ", businessType=" + businessType + - ", status=" + status + - ", siteId=" + siteId + - ", seq=" + seq + - ", drivingStatus=" + drivingStatus + - ", ifStop=" + ifStop + - ", leaving=" + leaving + - '}'; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - PM2Station that = (PM2Station) o; - return Double.compare(that.lon, lon) == 0 - && Double.compare(that.lat, lat) == 0 - && Double.compare(that.gcjLon, gcjLon) == 0 - && Double.compare(that.gcjLat, gcjLat) == 0 - && businessType == that.businessType - && status == that.status - && siteId == that.siteId - && seq == that.seq - && drivingStatus == that.drivingStatus - && ifStop == that.ifStop - && leaving == that.leaving - && Objects.equals(name, that.name) - && Objects.equals(cityCode, that.cityCode); - } - - @Override - public int hashCode() { - return Objects.hash(name, description, cityCode, lon, lat, gcjLon, gcjLat, businessType, status, siteId, seq, drivingStatus, ifStop, leaving); - } -} diff --git a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/model/PM2DrivingModel.kt b/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/model/PM2DrivingModel.kt index 3eff2a3f93..f055443186 100644 --- a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/model/PM2DrivingModel.kt +++ b/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/model/PM2DrivingModel.kt @@ -16,40 +16,36 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.map.MogoLocation import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener -import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager -import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.sendMsgToServer import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.Logger -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant -import com.mogo.eagle.core.utilcode.util.CoordinateUtils +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P import com.mogo.eagle.core.utilcode.util.GsonUtils import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.bus.passenger.R +import com.mogo.och.bus.passenger.bean.BusPassengerOperationStatusResponse import com.mogo.och.bus.passenger.constant.BusPassengerConst import com.mogo.och.bus.passenger.passenger.callback.AutoPilotStatusCallback import com.mogo.och.bus.passenger.passenger.callback.DrivingInfoCallback -import com.mogo.och.bus.passenger.passenger.model.PM2ServiceManager.driverAppSn -import com.mogo.och.bus.passenger.passenger.network.PM2ModelLoopManager import com.mogo.och.common.module.bean.dpmsg.* import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager.pushAppOperationalMsgBox import com.mogo.och.common.module.biz.constant.OchCommonConst import com.mogo.och.common.module.biz.network.OchCommonServiceCallback -import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil import com.mogo.och.common.module.utils.DateTimeUtil -import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.data.bean.BusStationBean import com.mogo.och.data.bean.BusTransferData -import io.reactivex.disposables.Disposable -import mogo.telematics.pad.MessagePad -import com.mogo.och.bus.passenger.passenger.bean.PM2OperationStatusResponse -import com.mogo.och.bus.passenger.passenger.bean.PM2RoutesResponse +import com.mogo.och.bus.passenger.bean.PM2RoutesResponse +import com.mogo.och.bus.passenger.network.BusPassengerServiceManager +import com.mogo.och.common.module.manager.distancemamager.IDistanceListener +import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager +import com.mogo.och.common.module.manager.loopmanager.BizLoopManager +import com.mogo.och.common.module.manager.loopmanager.LoopInfo import kotlin.math.abs /** @@ -64,23 +60,14 @@ class PM2DrivingModel private constructor() { private var mRoutePoints = mutableListOf() private var routesResult: BusRoutesResult? = null - private var mCurrentAutoStatus = -1 - var mStations = mutableListOf() private var mNextStationIndex = 0 // A-B要到达站的index private var isGoingToNextStation = false //是否前往下一站过程中 - private var mTwoStationsRouts = mutableListOf() - private var mPreRouteIndex = 0 - private var mWipePreIndex = 0 - private var mDrivingInfoCallback: DrivingInfoCallback? = null //行程信息 private var mAutoStatusCallback: AutoPilotStatusCallback? = null //自动驾驶状态 - private var operationStatus: PM2OperationStatusResponse.Result? = null - - @Volatile - private var globalPathTruncation: Disposable? = null + private var operationStatus: BusPassengerOperationStatusResponse.Result? = null private val handler = Handler(Handler.Callback { msg -> if (msg.what == MSG_QUERY_BUS_P_STATION) { @@ -92,18 +79,22 @@ class PM2DrivingModel private constructor() { companion object { val TAG = PM2DrivingModel::class.java.simpleName + val TAG_LOOP_QUERY_BIND_LINE = "${TAG}_TAG_LOOP_QUERY_BIND_LINE" const val MSG_QUERY_BUS_P_STATION = 1001 val INSTANCE: PM2DrivingModel by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { PM2DrivingModel() } } - fun init(context : Context){ + fun init(context: Context) { mContext = context initListener() queryDriverByLocalDriver() queryDriverOperationStatus() - startOrStopOrderLoop(true) + BizLoopManager.setLoopFunction( + TAG_LOOP_QUERY_BIND_LINE, + LoopInfo(2, ::queryDriverSiteByCoordinate) + ) } private fun queryDriverByLocalDriver() { @@ -117,17 +108,16 @@ class PM2DrivingModel private constructor() { CallerAutoPilotStatusListenerManager.addListener(TAG, mAutoPilotStatusListener) // 定位监听 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10,mMapLocationListener) + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10, mMapLocationListener) //司乘屏通信监听 - CallerTelematicListenerManager.addListener(TAG,mReceivedMsgListener) - - //自动驾驶轨迹监听 - CallerPlanningRottingListenerManager.addListener(TAG, moGoAutopilotPlanningListener) + CallerTelematicListenerManager.addListener(TAG, mReceivedMsgListener) //网络监听 - IntentManager.getInstance().registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener) + IntentManager.getInstance() + .registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener) + TrajectoryAndDistanceManager.addDistanceListener(TAG, trajectoryListener) } private fun sendMsgToServer(msg: String) { @@ -137,7 +127,7 @@ class PM2DrivingModel private constructor() { ) } - fun releaseListener(){ + fun releaseListener() { //自动驾驶状态监听 CallerAutoPilotStatusListenerManager.removeListener(TAG) @@ -146,64 +136,67 @@ class PM2DrivingModel private constructor() { CallerTelematicListenerManager.removeListener(TAG) - //自动驾驶轨迹监听 - CallerPlanningRottingListenerManager.removeListener(TAG) + TrajectoryAndDistanceManager.removeListener(TAG) + + BizLoopManager.removeLoopFunction(TAG_LOOP_QUERY_BIND_LINE) + + cleanStation("release") } - fun setDrivingInfoCallback(drivingInfoCallback : DrivingInfoCallback?){ + fun setDrivingInfoCallback(drivingInfoCallback: DrivingInfoCallback?) { mDrivingInfoCallback = drivingInfoCallback } - fun setAutoStatusCallback(autoPilotStatusCallback: AutoPilotStatusCallback?){ + fun setAutoStatusCallback(autoPilotStatusCallback: AutoPilotStatusCallback?) { mAutoStatusCallback = autoPilotStatusCallback } private val mNetWorkIntentListener = IMogoIntentListener { intentStr, _ -> - if (ConnectivityManager.CONNECTIVITY_ACTION == intentStr) { - if (NetworkUtils.isConnected(mContext)) { - queryDriverOperationStatus() - } + if (ConnectivityManager.CONNECTIVITY_ACTION == intentStr) { + if (NetworkUtils.isConnected(mContext)) { + queryDriverOperationStatus() } } + } private val mReceivedMsgListener: IReceivedMsgListener = - object : IReceivedMsgListener{ + object : IReceivedMsgListener { @RequiresApi(Build.VERSION_CODES.O) override fun onReceivedMsg(type: Int, byteArray: ByteArray) {//接收司机端发来的信息 - if (OchCommonConst.BUSINESS_STRING == type){ + if (OchCommonConst.BUSINESS_STRING == type) { val baseMsg = GsonUtils.fromJson(String(byteArray), BaseDPMsg::class.java) Logger.d( - SceneConstant.M_BUS_P + TAG, "onReceivedMsg = " + GsonUtils.toJson(baseMsg) + M_BUS_P + TAG, "onReceivedMsg = " + GsonUtils.toJson(baseMsg) ) if (baseMsg != null && baseMsg.type == DPMsgType.TYPE_COMMON.type) { val msg = GsonUtils.fromJson(String(byteArray), AppConnectMsg::class.java) - if (msg != null && msg.isPlay){ //播报 + if (msg != null && msg.isPlay) { //播报 speakTTS(msg.msg) } if (msg != null && msg.isViewShow) { //消息盒子显示内容 - pushAppOperationalMsgBox( - DateTimeUtil.getCurrentTimeStamp(),msg.msg) + pushAppOperationalMsgBox( + DateTimeUtil.getCurrentTimeStamp(), msg.msg + ) } - }else if (baseMsg != null && baseMsg.type == DPMsgType.TYPE_TASK_DETAILS.type) { + } else if (baseMsg != null && baseMsg.type == DPMsgType.TYPE_TASK_DETAILS.type) { val msg = GsonUtils.fromJson(String(byteArray), TaskDetailsMsg::class.java) - Logger.d( - SceneConstant.M_BUS_P + TAG, "onReceivedMsg = " + GsonUtils.toJson(msg) - ) + Logger.d(M_BUS_P + TAG, "onReceivedMsg = " + GsonUtils.toJson(msg)) if (msg == null || msg.msg?.isEmpty() == true) { updateLocalOrder() return } val result = GsonUtils.fromJson(msg.msg, BusTransferData::class.java) mDrivingInfoCallback?.changeOperationStatus(result.loginStatus == 1) - if (result != null && result.routesResult == null){ + if (result != null && result.routesResult == null) { updateLocalOrder() } if (routesResult == null || - (result != null && result.routesResult?.writeVersion!! > routesResult!!.writeVersion)) { + (result != null && result.routesResult?.writeVersion!! > routesResult!!.writeVersion) + ) { routesResult = result.routesResult updatePassengerRouteInfo(routesResult!!) } @@ -216,34 +209,51 @@ class PM2DrivingModel private constructor() { @RequiresApi(Build.VERSION_CODES.O) private fun speakTTS(msg: String) { - var mAudioManager = mContext?.getSystemService(Context.AUDIO_SERVICE) as AudioManager - var mAudioAttributes = AudioAttributes.Builder() - .setUsage(AudioAttributes.USAGE_MEDIA) //设置声音的用途 - .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) //设置声音的类型 - .build() - var mAudioFocusRequest = AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK) //设置焦点类型 - .setAudioAttributes(mAudioAttributes) //设置声音属性 - .setAcceptsDelayedFocusGain(false) //设置接受延迟获取焦点,需要设置OnAudioFocusChangeListener来监听焦点的获取 + val mAudioManager = mContext?.getSystemService(Context.AUDIO_SERVICE) as AudioManager + val mAudioAttributes = AudioAttributes.Builder() + .setUsage(AudioAttributes.USAGE_MEDIA) //设置声音的用途 + .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) //设置声音的类型 .build() + val mAudioFocusRequest = + AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK) //设置焦点类型 + .setAudioAttributes(mAudioAttributes) //设置声音属性 + .setAcceptsDelayedFocusGain(false) //设置接受延迟获取焦点,需要设置OnAudioFocusChangeListener来监听焦点的获取 + .build() mAudioManager.requestAudioFocus(mAudioFocusRequest) //抢占焦点 - AIAssist.getInstance(mContext).speakTTSVoiceWithLevel(msg,AIAssist.LEVEL0,object : IMogoVoiceCmdCallBack{ - override fun onSpeakEnd(speakText: String?) { - mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest) - } + AIAssist.getInstance(mContext) + .speakTTSVoiceWithLevel(msg, AIAssist.LEVEL0, object : IMogoVoiceCmdCallBack { + override fun onSpeakEnd(speakText: String?) { + mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest) + } - override fun onSpeakError(speakText: String?, errorMsg: String?) { - mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest) - } + override fun onSpeakError(speakText: String?, errorMsg: String?) { + mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest) + } - override fun onSpeakSelectTimeOut(speakText: String?) { - mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest) + override fun onSpeakSelectTimeOut(speakText: String?) { + mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest) + } + }) + } + + private val trajectoryListener: IDistanceListener = object : IDistanceListener { + override fun distanceCallback(distance: Float) { + val lastTime = distance / BusPassengerConst.BUS_AVERAGE_SPEED * 3.6 //秒 + d(M_BUS_P + TAG, "轨迹排查==lastSumLength = $distance") + if (routesResult != null) { + for (site in routesResult!!.sites) { + if (site.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !site.isLeaving) { + return + } + } } - }) + mDrivingInfoCallback?.updateRemainMT(distance.toLong(), lastTime.toLong()) + } } private val mMapLocationListener: IMoGoChassisLocationGCJ02Listener = - object : IMoGoChassisLocationGCJ02Listener{ + object : IMoGoChassisLocationGCJ02Listener { override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { if (null == mogoLocation) return mLocation = mogoLocation @@ -251,45 +261,6 @@ class PM2DrivingModel private constructor() { } } - private val moGoAutopilotPlanningListener = object : IMoGoPlanningRottingListener{ - - @Synchronized - override fun onAutopilotRotting(globalPathResp: MessagePad.GlobalPathResp?) { - d(SceneConstant.M_BUS_P + TAG, "och-rotting==globalPathResp = " + GsonUtils.toJson(globalPathResp)) - globalPathResp?.let { - d(SceneConstant.M_BUS_P + TAG, "och-rotting==wayPointsSize = " + it.wayPointsList.size) - - if (globalPathTruncation != null && !globalPathTruncation!!.isDisposed) { - d(SceneConstant.M_BUS_P + TAG, "1s内不可以接受轨迹") - return@let - } - - globalPathTruncation = RxUtils.createSubscribe(1_000) { - d(SceneConstant.M_BUS_P + TAG, "可以接受轨迹") - } - d(SceneConstant.M_BUS_P + TAG, "接受轨迹中") - it.wayPointsList?.let {list-> - updateRoutePoints(list) - } - } - } - - } - - @Synchronized - fun updateRoutePoints(routePoints: List) { - mRoutePoints.clear() - val latLngModels = CoordinateCalculateRouteUtil - .coordinateConverterWgsToGcjLocations(mContext, routePoints) - d(SceneConstant.M_BUS_P + TAG, "och-rotting==latLngModels = " + latLngModels.size) - mRoutePoints.addAll(latLngModels) - - if (isGoingToNextStation){ - mTwoStationsRouts.clear() - startRemainRouteInfo() - } - } - private fun updateSpeed(mogoLocation: MogoLocation) { // km/h val speedKM = (abs(mogoLocation.gnssSpeed) * 3.6f).toInt() @@ -302,17 +273,18 @@ class PM2DrivingModel private constructor() { override fun onAutopilotStatusResponse(state: Int) { super.onAutopilotStatusResponse(state) - d(SceneConstant.M_BUS_P+ TAG, "onAutopilotStatusResponse ===== $state") - if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING != state){ + d(M_BUS_P + TAG, "onAutopilotStatusResponse ===== $state") + if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING != state) { //美化模式下且行程中 if (FunctionBuildConfig.isDemoMode && - mNextStationIndex>= 0 && mNextStationIndex <= mStations.size - 1 - && isGoingToNextStation){ + mNextStationIndex >= 0 && mNextStationIndex <= mStations.size - 1 + && isGoingToNextStation + ) { mAutoStatusCallback?.updateAutoStatus(true) - }else{//非美化模式下 + } else {//非美化模式下 mAutoStatusCallback?.updateAutoStatus(false) } - }else{//自驾状态 2 + } else {//自驾状态 2 mAutoStatusCallback?.updateAutoStatus(true) } } @@ -328,22 +300,21 @@ class PM2DrivingModel private constructor() { private fun queryDriverOperationStatus() { mContext?.let { - PM2ServiceManager.queryDriverOperationStatus( + BusPassengerServiceManager.queryDriverOperationStatus( it, - object : OchCommonServiceCallback { - override fun onSuccess(data: PM2OperationStatusResponse?) { + object : OchCommonServiceCallback { + override fun onSuccess(data: BusPassengerOperationStatusResponse?) { if (data?.data == null) return if (data.data.driverStatus != operationStatus?.driverStatus || data.data.plateNumber != operationStatus?.plateNumber ) { d( - SceneConstant.M_BUS_P + TAG, + M_BUS_P + TAG, "queryDriverOperationStatus ===== 车牌或者登陆状态有变更" ) mDrivingInfoCallback?.changeOperationStatus(data.data.driverStatus == 1) } - operationStatus = data.data as PM2OperationStatusResponse.Result -// mDrivingInfoCallback?.updatePlateNumber(data.data.plateNumber) + operationStatus = data.data as BusPassengerOperationStatusResponse.Result } override fun onError() { @@ -352,7 +323,6 @@ class PM2DrivingModel private constructor() { } else { ToastUtils.showShort(mContext!!.getString(R.string.request_error_tip)) } -// queryDriverOperationDelay() queryDriverByLocalDriver() } @@ -364,9 +334,9 @@ class PM2DrivingModel private constructor() { } } - fun queryDriverSiteByCoordinate(){ + private fun queryDriverSiteByCoordinate() { mContext?.let { - PM2ServiceManager.queryDriverSiteByCoordinate(it, + BusPassengerServiceManager.queryDriverSiteByCoordinate(it, object : OchCommonServiceCallback { override fun onSuccess(data: PM2RoutesResponse?) { @@ -374,19 +344,13 @@ class PM2DrivingModel private constructor() { if (routesResult != null) { routesResult = null updateLocalOrder() - d( - SceneConstant.M_BUS_P + TAG, - "queryDriverSiteByCoordinate= result is null" - ) + d(M_BUS_P + TAG, "queryDriverSiteByCoordinate= result is null") return } return } if (data.result != null && data.result.equals(routesResult)) { - d( - SceneConstant.M_BUS_P + TAG, - "queryDriverSiteByCoordinate= not update" - ) + d(M_BUS_P + TAG, "queryDriverSiteByCoordinate= not update") return } @@ -403,26 +367,22 @@ class PM2DrivingModel private constructor() { } override fun onError() { - d( - SceneConstant.M_BUS_P + TAG, - "queryDriverSiteByCoordinate = onError =" - + ", sn = " + driverAppSn - ) + d(M_BUS_P + TAG, "queryDriverSiteByCoordinate = onError = sn = " + BusPassengerServiceManager.driverAppSn) queryDriverByLocalDriver() } override fun onFail(code: Int, msg: String?) { - d(SceneConstant.M_BUS_P + TAG, "queryDriverSiteByCoordinate = %s", msg) + d(M_BUS_P + TAG, "queryDriverSiteByCoordinate = %s", msg) if (code == 1003) { queryDriverOperationDelay() + cleanStation("queryDriverSiteByCoordinate 1003") } - if (driverAppSn.isEmpty()) { + if (BusPassengerServiceManager.driverAppSn.isEmpty()) { return } if (code == 1003) { routesResult = null isGoingToNextStation = false - startOrStopCalculateRouteInfo(false) return } } @@ -431,208 +391,91 @@ class PM2DrivingModel private constructor() { } } - private fun updateLocalOrder(){ + private fun updateLocalOrder() { mRoutePoints.clear() routesResult = null mNextStationIndex = 0 + cleanStation("queryDriverSiteByCoordinate") isGoingToNextStation = false - startOrStopCalculateRouteInfo(false) mDrivingInfoCallback?.showNoTaskView(true) } - private fun updatePassengerRouteInfo(result: BusRoutesResult) { + private fun updatePassengerRouteInfo(result: BusRoutesResult?) { if (result == null) { updateLocalOrder() return } - if (routesResult != null && routesResult!!.lineId != result.lineId){ - d(SceneConstant.M_BUS_P+ TAG, "lineId change= clearCustomPolyline") + if (routesResult != null && routesResult!!.lineId != result.lineId) { + d(M_BUS_P + TAG, "lineId change= clearCustomPolyline") mDrivingInfoCallback?.clearCustomPolyline() } - d(SceneConstant.M_BUS_P+ TAG, "queryDriverSiteByCoordinate= update") + d(M_BUS_P + TAG, "queryDriverSiteByCoordinate= update") routesResult = result mDrivingInfoCallback?.updateLine(result.name, result.runningDur) - if (result.sites != null) { - mDrivingInfoCallback?.showNoTaskView(false) - val stations: List = result.sites - mStations.clear() - mStations.addAll(stations) - mDrivingInfoCallback?.updateLineStations(mStations) - for (i in stations.indices) { - val station: BusStationBean = stations[i] - if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED - && station.isLeaving && i + 1 < stations.size) { - mDrivingInfoCallback?.updateStationsInfo(stations as MutableList, i + 1, false) - d(SceneConstant.M_BUS_P+ TAG,"och-rotting--mNextStationIndex = $mNextStationIndex , i = $i") -// if (mNextStationIndex != i + 1) { - d(SceneConstant.M_BUS_P+ TAG,"och-rotting--start ") - mTwoStationsRouts.clear() - startRemainRouteInfo() -// } - isGoingToNextStation = true - mNextStationIndex = i + 1 - return - } else if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !station.isLeaving) { - d(SceneConstant.M_BUS_P+ TAG,"och-rotting--mNextStationIndex = $mNextStationIndex , i = $i") - d(SceneConstant.M_BUS_P+ TAG,"och-rotting--arrived ") - mPreRouteIndex = 0 - isGoingToNextStation = false - startOrStopCalculateRouteInfo(false) - mDrivingInfoCallback?.updateStationsInfo(stations as MutableList, i, true) - return - }else{ -// d(SceneConstant.M_BUS_P+TAG,"och-rotting--BusStationBean = " + GsonUtils.toJson(station)) - } - } - } - - } - - fun loopRouteAndWipe(){ - if (mRoutePoints != null && mRoutePoints.size > 0 && mLocation != null) { - val haveArrivedIndex = CoordinateCalculateRouteUtil - .getArrivedPointIndexNew( - mWipePreIndex, - mRoutePoints, - mLocation!! - ) - mWipePreIndex = haveArrivedIndex - d(SceneConstant.M_BUS_P + TAG, - "thread = " + Thread.currentThread().name + " haveArrivedIndex== " + haveArrivedIndex - ) -// if (mAutopilotPlanningCallback != null) { -// val routePoints = CoordinateCalculateRouteUtil -// .coordinateConverterLocationToLatLng(mContext, mRoutePoints) -// mAutopilotPlanningCallback.routeResult(routePoints, haveArrivedIndex) -// } - } - } - - private fun startRemainRouteInfo() { - //开启实时计算剩余距离,剩余时间,预计时间 - startOrStopCalculateRouteInfo(true) - } - - fun dynamicCalculateRouteInfo(){ - //计算当前位置和下一站的剩余点集合 - //计算剩余点总里程和时间 - d(SceneConstant.M_BUS_P + TAG, "och-rotting==mTwoStationsRouts.size() = " + mTwoStationsRouts.size) - //计算当前位置和下一站的剩余点集合 - //计算剩余点总里程和时间 - if (mTwoStationsRouts.size == 0) { - calculateTwoStationsRoute() - } - - if (mTwoStationsRouts.size > 0 && mLocation != null) { - val lastPointsMap = CoordinateCalculateRouteUtil - .getRemainPointListByCompareNew(mPreRouteIndex, mTwoStationsRouts, mLocation!!) - for (index in lastPointsMap.keys) { - mPreRouteIndex = index - break - } - for (lastPoints in lastPointsMap.values) { - d(SceneConstant.M_BUS_P + TAG, "och-rotting==lastPoints.size() = " + lastPoints.size) - var lastSumLength = 0f - lastSumLength = if (lastPoints.size == 1) { //只是最后一个点,计算当前位置和最后一个点的距离 - if (mNextStationIndex <= mStations.size - 1 && mNextStationIndex >= 0) { - val stationNext: BusStationBean = mStations[mNextStationIndex] - CoordinateUtils.calculateLineDistance( - stationNext.gcjLon, stationNext.gcjLat, - mLocation!!.longitude, mLocation!!.latitude - ) - } else { - CoordinateUtils.calculateLineDistance( - lastPoints[0].longitude, lastPoints[0].latitude, - mLocation!!.longitude, mLocation!!.latitude - ) + if (result.sites != null) { + mDrivingInfoCallback?.showNoTaskView(false) + val stations: List = result.sites + mStations.clear() + mStations.addAll(stations) + mDrivingInfoCallback?.updateLineStations(mStations) + for (i in stations.indices) { + val station: BusStationBean = stations[i] + if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED + && station.isLeaving && i + 1 < stations.size + ) { + mDrivingInfoCallback?.updateStationsInfo( + stations as MutableList, + i + 1, + false + ) + d(M_BUS_P + TAG, "och-rotting--mNextStationIndex = $mNextStationIndex , i = $i") + d(M_BUS_P + TAG, "och-rotting--start ") + isGoingToNextStation = true + mNextStationIndex = i + 1 + val startStation = mStations[i] + val endStation = mStations[i + 1] + setTrajectoryStation(startStation, endStation, result.lineId) + return + } else if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !station.isLeaving) { + d(M_BUS_P + TAG, "och-rotting--mNextStationIndex = $mNextStationIndex , i = $i") + d(M_BUS_P + TAG, "och-rotting--arrived ") + if (i == stations.size - 1) { + cleanStation("updatePassengerRouteInfo最后一个站点") } + isGoingToNextStation = false + mDrivingInfoCallback?.updateStationsInfo( + stations as MutableList, + i, + true + ) + return } else { - CoordinateCalculateRouteUtil.calculateRouteSumLength(lastPoints) - } - val lastTime = lastSumLength / BusPassengerConst.SHUTTLE_AVERAGE_SPEED * 3.6 //秒 - d(SceneConstant.M_BUS_P + TAG, "och-rotting==lastSumLength = $lastSumLength") - mDrivingInfoCallback?.updateRemainMT( - lastSumLength.toLong(), - lastTime.toLong() - ) - } - } - } - - private fun calculateTwoStationsRoute() { - //找出前往站对应的轨迹点,拿出两站点的集合 - d(SceneConstant.M_BUS_P + TAG, "mRoutePoints.size() = " + mRoutePoints.size) - if (mRoutePoints.size > 0) { - if (mStations.size > 1) { //两个站点及以上要计算两个站点间的轨迹路线 - if (mNextStationIndex <= mStations.size - 1 && mNextStationIndex - 1 >= 0) { - mTwoStationsRouts.clear() - val stationNext: BusStationBean = mStations[mNextStationIndex] - val stationCur: BusStationBean = mStations[mNextStationIndex - 1] - //当前站在轨迹中对应的点 - val currentRouteIndex = CoordinateCalculateRouteUtil.getArrivedPointIndexNew( - 0, mRoutePoints, stationCur.gcjLon, stationCur.gcjLat - ) - //要前往的站在轨迹中对应的点 - val nextRouteIndex = CoordinateCalculateRouteUtil.getArrivedPointIndexNew( - currentRouteIndex, - mRoutePoints, - stationNext.gcjLon, - stationNext.gcjLat - ) - - d(SceneConstant.M_BUS_P + TAG, "och-rotting==currentRouteIndex = " + currentRouteIndex - + ", nextRouteIndex = " + nextRouteIndex) - - if (currentRouteIndex < nextRouteIndex) { //如果找到的next在起点的轨迹前面,直接舍弃这个轨迹,不显示 - mTwoStationsRouts.addAll( - mRoutePoints.subList( - currentRouteIndex, - nextRouteIndex + 1 - ) - ) - } } } } + } - /** - * 开始轮询计算剩余里程和时间 - * @param isStart - */ - fun startOrStopCalculateRouteInfo(isStart: Boolean) { - d(SceneConstant.M_BUS_P+ TAG, "startOrStopCalculateRouteInfo() $isStart") - if (isStart) { - PM2ModelLoopManager.startCalculateRouteInfoLoop() - } else { - mTwoStationsRouts.clear() - PM2ModelLoopManager.stopCalculateRouteInfLoop() - } + private fun setTrajectoryStation( + startStationInfo: BusStationBean, + endStationInfo: BusStationBean, + lineId: Int + ) { + val startStation = MogoLocation() + startStation.longitude = startStationInfo.gcjLon + startStation.latitude = startStationInfo.gcjLat + val endStation = MogoLocation() + endStation.longitude = endStationInfo.gcjLon + endStation.latitude = endStationInfo.gcjLat + TrajectoryAndDistanceManager.setStationPoint(startStation, endStation, lineId.toLong()) } - /** - * 实时轨迹擦除 - * @param isStart - */ - private fun startOrStopRouteAndWipe(isStart: Boolean) { - if (isStart) { - PM2ModelLoopManager.startOrStopRouteAndWipe() - } else { - mWipePreIndex = 0 - PM2ModelLoopManager.stopOrStopRouteAndWipe() - } - } - - private fun startOrStopOrderLoop(start: Boolean) { - d(SceneConstant.M_BUS_P + TAG, "startOrStopOrderLoop() $start") - if (start) { - PM2ModelLoopManager.startQueryDriverLineLoop() - } else { - PM2ModelLoopManager.stopQueryDriverLineLoop() - } + private fun cleanStation(type: String) { + d(M_BUS_P + TAG, "清理站点:$type") + TrajectoryAndDistanceManager.setStationPoint(null, null, -1L) } } \ No newline at end of file diff --git a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/model/PM2ServiceManager.kt b/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/model/PM2ServiceManager.kt deleted file mode 100644 index 1288b4a06e..0000000000 --- a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/model/PM2ServiceManager.kt +++ /dev/null @@ -1,108 +0,0 @@ -package com.mogo.och.bus.passenger.passenger.model - -import android.content.Context -import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.getServerToken -import com.mogo.cloud.passport.MoGoAiCloudClientConfig -import com.mogo.commons.debug.DebugConfig -import com.mogo.eagle.core.network.MoGoRetrofitFactory -import com.mogo.commons.storage.SharedPrefsMgr -import com.mogo.och.bus.passenger.bean.BusPassengerQueryLineRequest -import com.mogo.och.bus.passenger.passenger.bean.PM2OperationStatusResponse -import com.mogo.och.bus.passenger.passenger.bean.PM2RoutesResponse -import com.mogo.och.bus.passenger.passenger.network.PassengerSAASServiceApi -import com.mogo.och.bus.passenger.passenger.network.PassengerServiceApi -import com.mogo.och.common.module.biz.constant.OchCommonConst -import com.mogo.och.common.module.biz.network.OchCommonServiceCallback -import com.mogo.och.common.module.biz.network.OchCommonSubscribeImpl -import com.mogo.och.common.module.biz.network.interceptor.transformTry - -/** - * Created on 2022/3/31 - */ -object PM2ServiceManager { - - private var mBusPassengerSaasServiceApi = - MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(PassengerSAASServiceApi::class.java) - - private var mBusPassengerServiceApi = - MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(PassengerServiceApi::class.java) - - - private var driverSnCache = "" - /** - * 获取Bus司机端的sn - * @return - */ - public val driverAppSn: String - get(){ - val serverToken = getServerToken() - if (serverToken != driverSnCache && serverToken.isNotEmpty()) { - driverSnCache = serverToken - } - return driverSnCache - } - - /** - * 查询绑定行驶的小巴车路线 - * @param context - * @param callback - */ - @JvmStatic - fun queryDriverSiteByCoordinate( - context: Context, callback: OchCommonServiceCallback? - ) { - if (DebugConfig.getProjectFlavor().contains("saas")){ - mBusPassengerSaasServiceApi.queryDriverSiteByCoordinate( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - driverAppSn - ).transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverSiteByCoordinate")) - }else{ - mBusPassengerServiceApi.queryDriverSiteByCoordinate( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - BusPassengerQueryLineRequest( - driverAppSn - ) - ).transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverSiteByCoordinate")) - } - }//2023-12-07 10:13:32 - - /** - * 查询司机端出车收车状态,以及车牌号 - * @param context - * @param callback - */ - @JvmStatic - fun queryDriverOperationStatus( - context: Context, - callback: OchCommonServiceCallback? - ) { - mBusPassengerServiceApi.queryDriverOperationStatus( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - driverAppSn - ) - .transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverOperationStatus=sn =$driverAppSn")) - if (DebugConfig.getProjectFlavor().contains("saas")){ - mBusPassengerSaasServiceApi.queryDriverOperationStatus( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - driverAppSn - ) - .transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverOperationStatus")) - }else{ - mBusPassengerServiceApi.queryDriverOperationStatus( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - driverAppSn - ) - .transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverOperationStatus")) - } - } -} \ No newline at end of file diff --git a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/network/PM2ModelLoopManager.kt b/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/network/PM2ModelLoopManager.kt deleted file mode 100644 index adede242a0..0000000000 --- a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/network/PM2ModelLoopManager.kt +++ /dev/null @@ -1,127 +0,0 @@ -package com.mogo.och.bus.passenger.passenger.network - -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant -import com.mogo.och.bus.passenger.constant.BusPassengerConst -import com.mogo.och.bus.passenger.passenger.model.PM2DrivingModel -import io.reactivex.Observable -import io.reactivex.ObservableOnSubscribe -import io.reactivex.android.schedulers.AndroidSchedulers -import io.reactivex.disposables.CompositeDisposable -import io.reactivex.disposables.Disposable -import io.reactivex.schedulers.Schedulers -import java.util.concurrent.TimeUnit - -/** - * @author: wangmingjun - * @date: 2023/2/1 - */ -object PM2ModelLoopManager { - - private val TAG: String = PM2ModelLoopManager::class.java.getSimpleName() - - private var mQueryLineDisposable: Disposable? = null //心跳轮询 - private var mRouteWipeDisposable: CompositeDisposable? = null //估计擦除 - private var mCalculateRouteDisposable: CompositeDisposable? = null //每隔2s计算一次剩余里程和时间 - - - fun startOrStopRouteAndWipe() { - i(SceneConstant.M_BUS_P + TAG, "startOrStopRouteWipe()") - if (mRouteWipeDisposable != null) return - if (mRouteWipeDisposable == null) { - mRouteWipeDisposable = CompositeDisposable() - } - val disposable = startLoopRouteAndWipe() - .doOnSubscribe { } - .doOnError { } - .delay( - BusPassengerConst.LOOP_LINE_1S, - TimeUnit.MILLISECONDS, - true - ) // 设置delayError为true,表示出现错误的时候也需要延迟5s进行通知,达到无论是请求正常还是请求失败,都是5s后重新订阅,即重新请求。 - .subscribeOn(Schedulers.io()) - .repeat() // repeat保证请求成功后能够重新订阅。 - .retry() // retry保证请求失败后能重新订阅 - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { } - mRouteWipeDisposable!!.add(disposable) - } - - fun stopOrStopRouteAndWipe() { - if (mRouteWipeDisposable != null) { - mRouteWipeDisposable!!.dispose() - mRouteWipeDisposable = null - } - } - - fun startQueryDriverLineLoop() { - if (mQueryLineDisposable != null && !mQueryLineDisposable!!.isDisposed) { - return - } - i(SceneConstant.M_BUS_P + TAG, "startQueryDriverLineLoop()") - mQueryLineDisposable = Observable.interval( - BusPassengerConst.LOOP_DELAY, - BusPassengerConst.LOOP_LINE_2S, TimeUnit.MILLISECONDS - ) - .map { aLong: Long -> aLong + 1 } - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { aLong: Long? -> - PM2DrivingModel.INSTANCE.queryDriverSiteByCoordinate() - } - } - - fun stopQueryDriverLineLoop() { - if (mQueryLineDisposable != null) { - i(SceneConstant.M_BUS_P + TAG, "stopQueryDriverLineLoop()") - mQueryLineDisposable!!.dispose() - mQueryLineDisposable = null - } - } - - fun startCalculateRouteInfoLoop() { - i(SceneConstant.M_BUS_P + TAG, "startCalculateRouteInfoLoop()") - if (mCalculateRouteDisposable != null) return - if (mCalculateRouteDisposable == null) { - mCalculateRouteDisposable = CompositeDisposable() - } - val disposable = startLoopCalculateRouteInfo() - .doOnSubscribe { } - .doOnError { } - .delay( - BusPassengerConst.LOOP_LINE_2S, - TimeUnit.MILLISECONDS, - true - ) // 设置delayError为true,表示出现错误的时候也需要延迟5s进行通知,达到无论是请求正常还是请求失败,都是5s后重新订阅,即重新请求。 - .subscribeOn(Schedulers.io()) - .repeat() // repeat保证请求成功后能够重新订阅。 - .retry() // retry保证请求失败后能重新订阅 - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { } - mCalculateRouteDisposable!!.add(disposable) - } - - fun stopCalculateRouteInfLoop() { - if (mCalculateRouteDisposable != null) { - i(SceneConstant.M_BUS_P + TAG, "stopCalculateRouteInfLoop()") - mCalculateRouteDisposable!!.dispose() - mCalculateRouteDisposable = null - } - } - - private fun startLoopRouteAndWipe(): Observable { - return Observable.create(ObservableOnSubscribe { emitter -> - if (emitter.isDisposed) return@ObservableOnSubscribe - PM2DrivingModel.INSTANCE.loopRouteAndWipe() - emitter.onComplete() - }) - } - - private fun startLoopCalculateRouteInfo(): Observable { - return Observable.create(ObservableOnSubscribe { emitter -> - if (emitter.isDisposed) return@ObservableOnSubscribe - PM2DrivingModel.INSTANCE.dynamicCalculateRouteInfo() - emitter.onComplete() - }) - } -} \ No newline at end of file diff --git a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/network/PM2ServiceApi.java b/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/network/PM2ServiceApi.java deleted file mode 100644 index 1b2b778829..0000000000 --- a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/network/PM2ServiceApi.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.mogo.och.bus.passenger.passenger.network; - -import com.mogo.och.bus.passenger.passenger.bean.PM2OperationStatusResponse; -import com.mogo.och.bus.passenger.passenger.bean.PM2QueryLineRequest; -import com.mogo.och.bus.passenger.passenger.bean.PM2RoutesResponse; - -import io.reactivex.Observable; -import retrofit2.http.Body; -import retrofit2.http.GET; -import retrofit2.http.Header; -import retrofit2.http.Headers; -import retrofit2.http.POST; -import retrofit2.http.Query; - -/** - * Created on 2022/3/31 - * - * Bus乘客端接口定义 - */ -public interface PM2ServiceApi { - /** - * 查询bus司机端绑定路线 - * @return 接口返回数据 - */ - @Headers( {"Content-Type:application/json;charset=UTF-8"} ) - @POST( "/och-shuttle-cabin/api/business/v1/passenger/lineDataWithDriver/query" ) - Observable queryDriverSiteByCoordinate(@Header("appId") String appId, @Header("ticket") String ticket, @Body PM2QueryLineRequest request); - - /** - * 查询司机端的登陆状态 - * @param sn - * @return - */ - @Headers({"Content-type:application/json;charset=UTF-8"}) -// @GET("/autopilot-car-hailing/car/v2/driver/bus/passenger/takeOrderStatus/query") - @GET("/och-shuttle-cabin/api/business/v1/passenger/loginStatus") - Observable queryDriverOperationStatus(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn); - - -} diff --git a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/network/PassengerSAASServiceApi.java b/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/network/PassengerSAASServiceApi.java deleted file mode 100644 index b19cb287f2..0000000000 --- a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/network/PassengerSAASServiceApi.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.mogo.och.bus.passenger.passenger.network; - -import com.mogo.och.bus.passenger.passenger.bean.PM2OperationStatusResponse; -import com.mogo.och.bus.passenger.passenger.bean.PM2RoutesResponse; - -import io.reactivex.Observable; -import retrofit2.http.GET; -import retrofit2.http.Header; -import retrofit2.http.Headers; -import retrofit2.http.Query; - -/** - * Created on 2022/3/31 - * - * Bus乘客端接口定义 - */ -public interface PassengerSAASServiceApi { - /** - * 查询bus司机端绑定路线 - * @return 接口返回数据 - */ - @Headers( {"Content-Type:application/json;charset=UTF-8"} ) -// @POST( "/autopilot-car-hailing/line/v2/driver/bus/passenger/lineDataWithDriver/query" ) - @GET( "/och-bus-cabin/api/business/v1/driver/bus/lineDataWithDriver/query" ) - Observable queryDriverSiteByCoordinate(@Header("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn); - - /** - * 查询司机端的登陆状态 - * @param sn - * @return - */ - @Headers({"Content-type:application/json;charset=UTF-8"}) -// @GET("/autopilot-car-hailing/operation/v1/driver/bus/passenger/loginStatus") - @GET("/och-bus-cabin/api/business/v1/loginStatus") - Observable queryDriverOperationStatus(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn); - - -} diff --git a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/network/PassengerServiceApi.java b/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/network/PassengerServiceApi.java deleted file mode 100644 index 836f4fd22f..0000000000 --- a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/network/PassengerServiceApi.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.mogo.och.bus.passenger.passenger.network; - -import com.mogo.och.bus.passenger.bean.BusPassengerQueryLineRequest; -import com.mogo.och.bus.passenger.passenger.bean.PM2OperationStatusResponse; -import com.mogo.och.bus.passenger.passenger.bean.PM2RoutesResponse; - -import io.reactivex.Observable; -import retrofit2.http.Body; -import retrofit2.http.GET; -import retrofit2.http.Header; -import retrofit2.http.Headers; -import retrofit2.http.POST; -import retrofit2.http.Query; - -/** - * Created on 2022/3/31 - * - * Bus乘客端接口定义 - */ -public interface PassengerServiceApi { - /** - * 查询bus司机端绑定路线 - * @return 接口返回数据 - */ - @Headers( {"Content-Type:application/json;charset=UTF-8"} ) - @POST( "/autopilot-car-hailing/line/v2/driver/bus/passenger/lineDataWithDriver/query" ) - Observable queryDriverSiteByCoordinate(@Header("appId") String appId, @Header("ticket") String ticket, @Body BusPassengerQueryLineRequest request); - - /** - * 查询司机端的登陆状态 - * @param sn - * @return - */ - @Headers({"Content-type:application/json;charset=UTF-8"}) -// @GET("/autopilot-car-hailing/car/v2/driver/bus/passenger/takeOrderStatus/query") - @GET("/autopilot-car-hailing/operation/v1/driver/bus/passenger/loginStatus") - Observable queryDriverOperationStatus(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn); - - -} diff --git a/OCH/bus/passenger/src/main/res/jinlv/layout/bus_p_route_fragment.xml b/OCH/bus/passenger/src/main/res/jinlv/layout/bus_p_route_fragment.xml index a92d7350f4..74027efd21 100644 --- a/OCH/bus/passenger/src/main/res/jinlv/layout/bus_p_route_fragment.xml +++ b/OCH/bus/passenger/src/main/res/jinlv/layout/bus_p_route_fragment.xml @@ -277,7 +277,7 @@ - = ArrayList() + private lateinit var mCarMarker: Marker + // 除了开始站点和结束站点的中间站点 用来设置图标和地图范围圈定 private val mLineStationLatLng: MutableList = ArrayList() //站点坐标数据 var textureList: MutableList = ArrayList() var texIndexList: MutableList = ArrayList() private var mArrivedRes: BitmapDescriptor? = null private var mUnArrivedRes: BitmapDescriptor? = null + private var mStartStationPoint: BitmapDescriptor? = null + private var mEndStationPoint: BitmapDescriptor? = null + + private var mArrivedStationPoint: BitmapDescriptor? = null + private var mUArrivedStationPoint: BitmapDescriptor? = null + + private val routeArrived: MutableList = ArrayList() private val routeArriving: MutableList = ArrayList() private var location: MogoLocation? = null init { try { + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.MapDirectionView) + mapStylePath = typedArray.getString(R.styleable.MapDirectionView_mapStylePath) + mapStyleExtraPath = typedArray.getString(R.styleable.MapDirectionView_mapStyleExtraPath) + carDrawable = typedArray.getResourceId(R.styleable.MapDirectionView_carDrawable, -1) + compassDrawable = typedArray.getResourceId(R.styleable.MapDirectionView_compassDrawable, -1) + startPointDrawable = + typedArray.getResourceId(R.styleable.MapDirectionView_startPointDrawable, -1) + endPointDrawable = + typedArray.getResourceId(R.styleable.MapDirectionView_endPointDrawable, -1) + arrivedDrawable = typedArray.getResourceId(R.styleable.MapDirectionView_arrivedDrawable, -1) + unArrivedDrawable = + typedArray.getResourceId(R.styleable.MapDirectionView_unArrivedDrawable, -1) + resetDrawableMarginRight = typedArray.getResourceId( + R.styleable.MapDirectionView_resetDrawableMarginRight, + AutoSizeUtils.dp2px(context, 40f) + ) + resetDrawableMarginBottom = typedArray.getResourceId( + R.styleable.MapDirectionView_resetDrawableMarginBottom, + AutoSizeUtils.dp2px(context, 40f) + ) + leftPadding = typedArray.getInt(R.styleable.MapDirectionView_leftPadding, 100) + topPadding = typedArray.getInt(R.styleable.MapDirectionView_topPadding, 100) + rightPadding = typedArray.getInt(R.styleable.MapDirectionView_rightPadding, 100) + bottomPadding = typedArray.getInt(R.styleable.MapDirectionView_bottomPadding, 100) + typedArray.recycle() initView(context) } catch (e: Exception) { e.printStackTrace() @@ -96,25 +147,27 @@ class BusPassengerMapDirectionView @JvmOverloads constructor( // 设置 锚点 图标 mCarMarker = mAMap.addMarker( - MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.shuttle_p_jl_map_car)) + MarkerOptions().icon( + BitmapDescriptorFactory.fromResource(if (carDrawable != -1) carDrawable else R.drawable.common_map_car)) .anchor(0.5f, 0.5f) ) - mArrivedRes = BitmapDescriptorFactory.fromResource(R.drawable.shuttle_p_jl_map_arrow_arrived) - mUnArrivedRes = BitmapDescriptorFactory.fromResource(R.drawable.shuttle_p_jl_map_arrow_un_arrive) + mArrivedRes = BitmapDescriptorFactory.fromResource(if (arrivedDrawable != -1) arrivedDrawable else R.drawable.taxi_map_arrow_arrived) + mUnArrivedRes = BitmapDescriptorFactory.fromResource(if (unArrivedDrawable != -1) unArrivedDrawable else R.drawable.taxi_map_arrow_un_arrive) + mStartStationPoint = BitmapDescriptorFactory.fromResource(if (startPointDrawable != -1) startPointDrawable else R.drawable.common_map_start_point) + mEndStationPoint = BitmapDescriptorFactory.fromResource(if (endPointDrawable != -1) endPointDrawable else R.drawable.common_map_end_point) + + mArrivedStationPoint = BitmapDescriptorFactory.fromResource(if (endPointDrawable != -1) endPointDrawable else R.drawable.common_map_arrived_point) + mUArrivedStationPoint = BitmapDescriptorFactory.fromResource(if (endPointDrawable != -1) endPointDrawable else R.drawable.common_map_unarrived_point) // 加载自定义样式 - val customMapStyleOptions = CustomMapStyleOptions() - .setEnable(true) - .setStyleData( - BusPassengerMapAssetStyleUtil.getAssetsStyle( - context, "map_style.data" - ) - ) - .setStyleExtraData( - BusPassengerMapAssetStyleUtil.getAssetsExtraStyle( - context, "map_style_extra.data" - ) - ) + val customMapStyleOptions = CustomMapStyleOptions().setEnable(true) + + if (!mapStylePath.isNullOrEmpty() && !mapStyleExtraPath.isNullOrEmpty()) { + customMapStyleOptions.styleData = + MapAssetStyleUtils.getAssetsStyle(context, mapStylePath) + customMapStyleOptions.styleExtraData = + MapAssetStyleUtils.getAssetsExtraStyle(context, mapStyleExtraPath) + } // 设置自定义样式 mAMap.setCustomMapStyle(customMapStyleOptions) @@ -129,18 +182,13 @@ class BusPassengerMapDirectionView @JvmOverloads constructor( mAMap.setOnMapLoadedListener { d(SceneConstant.M_BUS_P + TAG, "smp---onMapLoaded") // 加载自定义样式 - val options = CustomMapStyleOptions() - .setEnable(true) - .setStyleData( - BusPassengerMapAssetStyleUtil.getAssetsStyle( - context, "map_style.data" - ) - ) - .setStyleExtraData( - BusPassengerMapAssetStyleUtil.getAssetsExtraStyle( - context, "map_style_extra.data" - ) - ) + val options = CustomMapStyleOptions().setEnable(true) + if (!mapStylePath.isNullOrEmpty() && !mapStyleExtraPath.isNullOrEmpty()) { + options.styleData = + MapAssetStyleUtils.getAssetsStyle(context, mapStylePath) + options.styleExtraData = + MapAssetStyleUtils.getAssetsExtraStyle(context, mapStyleExtraPath) + } // 设置自定义样式 mAMap.setCustomMapStyle(options) mAMapNaviView.map.setPointToCenter( @@ -307,6 +355,7 @@ class BusPassengerMapDirectionView @JvmOverloads constructor( mLineMarkers.clear() } + // 设置站点 fun setLinePointMarkerAndDraw(mLineStationsList: List, currentIndex: Int) { clearLineMarkers() mLineStationLatLng.clear() @@ -316,27 +365,18 @@ class BusPassengerMapDirectionView @JvmOverloads constructor( val size = mLineStationsList.size val mStartMarker = mAMap.addMarker( MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.shuttle_p_jl_map_start_point)) - ) - val mEndMarker = mAMap.addMarker( - MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.shuttle_p_jl_map_end_point)) + .icon(mStartStationPoint) ) + val mEndMarker = mAMap.addMarker(MarkerOptions().icon(mEndStationPoint)) mStartMarker.position = mLineStationsList[0] mLineMarkers.add(0, mStartMarker) for (i in mLineStationsList.indices) { if (currentIndex <= i && i < size - 1 && i > 0) { //未到达 - val unArrivedMarker = mAMap.addMarker( - MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.shuttle_p_jl_map_unarrived_point)) - ) + val unArrivedMarker = mAMap.addMarker(MarkerOptions().icon(mUArrivedStationPoint)) unArrivedMarker.position = mLineStationsList[i] mLineMarkers.add(i, unArrivedMarker) } else if (i in 1 until currentIndex) { - val arrivedMarker = mAMap.addMarker( - MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.shuttle_p_jl_map_arrived_point)) - ) + val arrivedMarker = mAMap.addMarker(MarkerOptions().icon(mArrivedStationPoint)) arrivedMarker.position = mLineStationsList[i] mLineMarkers.add(i, arrivedMarker) } diff --git a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/mapdirectionview/MapDirectionViewModel.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/mapdirectionview/MapDirectionViewModel.kt similarity index 100% rename from OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/mapdirectionview/MapDirectionViewModel.kt rename to OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/mapdirectionview/MapDirectionViewModel.kt diff --git a/OCH/common/common/src/main/res/drawable-nodpi/common_map_arrived_point.png b/OCH/common/common/src/main/res/drawable-nodpi/common_map_arrived_point.png new file mode 100644 index 0000000000000000000000000000000000000000..ac317649b418b2d7ce90666aa077ef4b50004480 GIT binary patch literal 1239 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 literal 0 HcmV?d00001 diff --git a/OCH/common/common/src/main/res/drawable-nodpi/common_map_end_point.png b/OCH/common/common/src/main/res/drawable-nodpi/common_map_end_point.png new file mode 100644 index 0000000000000000000000000000000000000000..39262e5ecb7b9826499ca8c93b6ab6f400757b71 GIT binary patch literal 4405 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 literal 0 HcmV?d00001 diff --git a/OCH/common/common/src/main/res/drawable-nodpi/common_map_start_point.png b/OCH/common/common/src/main/res/drawable-nodpi/common_map_start_point.png new file mode 100644 index 0000000000000000000000000000000000000000..b2e4c69adaa9fc9215757fca519a03695b1e54c3 GIT binary patch literal 4322 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 QlK=n!07*qoM6N<$g5p_SX#fBK literal 0 HcmV?d00001 diff --git a/OCH/common/common/src/main/res/drawable-nodpi/common_map_unarrived_point.png b/OCH/common/common/src/main/res/drawable-nodpi/common_map_unarrived_point.png new file mode 100644 index 0000000000000000000000000000000000000000..ec6081f5a3482d9dc7bedd8596dfd8640f3ff46c GIT binary patch literal 1308 zcmV+%1>^dOP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR918lVFJ1ONa40RR918vp6T>v4!b&AX zRDNc`j|fvubsSo3Y5RWq{J#6%?X+Z2cP5_X>pAz_bI-Zw=e~;k-ze}e64Ey0TGq#0 z2!y6aS?d%JHLaQ#+A+BS1OctnmNf{Cp#Icg`jF<@868J}md(x0myV8(u346KvsSAW zfMeUXcZ&av?;oIKpGTLtw*Fl(RY<_ zz_Y9XeVt0&q+xt{dHDs?G;_GQi%k9zuq$tGZx7>ai|?Z;SYuSm+zd}mO{Ip0hQ100 zgXghU^v$o1e7SGSL9r$dy3&y_;EapuBY{CKnQ(5}EA}4h}w($z%$! zv;dxP>6}C>BDA=;_*^U&OVbH)?fYX{{-q+eV~JzibxyhFII{DHDIY8s#dJJ-RN>L_ z@$nJ(3Ip2zUBOp|Q>oNzI>^^qQ@*`bQ4ZlDzi6B>SCBkX>V^I^aJTB ztOsH?RE86Y#Pc*JGTTLQR3@Hdltl#~S2BWYeq*K}GAj|I)3m4S0dMlkbE_VaI zY+f8tbTW`NJUskarBd1BfiQMQFSp5Ad|H)bX2JmA1hWmfj=cGFtF*-pRW?jvd17MX z6L{xi#Vhyf&XFduKZJpgsL|cso$c)Gyo$_>2Ua%$}D9R;Q!0n>FMcL@bKO@4C4&e znBqW_W9odeHa0dU(&_X^SRVllQU%y2H4M6RSgSzfdN68pb8|nft*w39)6)~c7bA(s ze1^T#gns0a#r3hVvA0pK&!Oj}v1H7I{i#!9MpSZ5sLv5NA011{CPYU@Mjq+v>gtF_ zqoJLho!sQ)EJ`R5qEnreii;2hfvN z4}!gVxhOZ1z5tzSFiS%3=@Qd1!NB_6GzEdaeu(nDNINBO1a0Z85n4z7-_c)7ionP5 S_Qh-f0000 + + + \ No newline at end of file diff --git a/OCH/common/common/src/main/res/values/attrs.xml b/OCH/common/common/src/main/res/values/attrs.xml index a500f7ca79..88181d340e 100644 --- a/OCH/common/common/src/main/res/values/attrs.xml +++ b/OCH/common/common/src/main/res/values/attrs.xml @@ -61,4 +61,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/BusPassengerRouteFragment.java b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/BusPassengerRouteFragment.java index c43544112c..f6dd5f98bf 100644 --- a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/BusPassengerRouteFragment.java +++ b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/BusPassengerRouteFragment.java @@ -23,7 +23,7 @@ import com.mogo.och.shuttle.passenger.ui.adapter.BusPassengerLineStationsAdapter import com.mogo.och.shuttle.passenger.constant.BusPassengerConst; import com.mogo.och.shuttle.passenger.presenter.BaseBusPassengerPresenter; import com.mogo.och.shuttle.passenger.ui.layoutmanager.CenterLayoutManager; -import com.mogo.och.shuttle.passenger.ui.mapdirectionview.BusPassengerMapDirectionView; +import com.mogo.och.common.module.wigets.mapdirectionview.MapDirectionView; import com.mogo.och.common.module.utils.NumberFormatUtil; import com.mogo.och.common.module.wigets.MarqueeTextView; import com.mogo.och.common.module.wigets.OCHGradientTextView; @@ -48,7 +48,7 @@ public class BusPassengerRouteFragment extends private MarqueeTextView mLineName; private Group mRouteInfoView; private RecyclerView mStationsListRv; - private BusPassengerMapDirectionView mMapDirectionView; + private MapDirectionView mMapDirectionView; private BusPassengerLineStationsAdapter mAdapter; private TextView emptyTv; private AppCompatImageView mAutopilotIv; @@ -157,7 +157,6 @@ public class BusPassengerRouteFragment extends @Override public void run() { mMapDirectionView.clearLineMarkers(); - } }); } diff --git a/OCH/shuttle/passenger/src/main/res/jinlv/layout/shuttle_p_jl_route_fragment.xml b/OCH/shuttle/passenger/src/main/res/jinlv/layout/shuttle_p_jl_route_fragment.xml index 6b44d9a4cb..561c1c73b3 100644 --- a/OCH/shuttle/passenger/src/main/res/jinlv/layout/shuttle_p_jl_route_fragment.xml +++ b/OCH/shuttle/passenger/src/main/res/jinlv/layout/shuttle_p_jl_route_fragment.xml @@ -265,7 +265,7 @@ - Date: Tue, 20 Feb 2024 18:40:43 +0800 Subject: [PATCH 6/8] =?UTF-8?q?[taxi][passenger]=20[=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=95=B4=E7=90=86]=20[=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8code?= =?UTF-8?q?]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../taxi/passenger/MogoOCHTaxiPassenger.java | 15 +---- .../bean/TaxiPassengerAllStarWorld.java | 26 -------- .../TaxiPassengerCarHeartbeatReqBean.java | 26 -------- .../TaxiPassengerOrderQueryRemainingResp.java | 20 ------ .../TaxiPassengerQueryOrderRouteResp.java | 13 ---- .../TaxiPassengerScoreUpdateOrderReqBean.java | 27 -------- .../IOCHTaxiPassengerNaviChangedCallback.java | 10 --- .../ITaxiPassengerCommonCallback.java | 5 -- .../ITaxiPassengerCommonValueCallback.java | 5 -- .../ITaxiPassengerMapViewCallback.java | 9 --- .../ITaxiPassengerVeloctityCallback.java | 10 --- .../passenger/constant/TaxiPassengerConst.kt | 11 ---- .../taxi/passenger/event/FinishActivity.java | 4 -- .../passenger/model/TaxiPassengerModel.kt | 2 - .../network/TaxiPassengerServiceApi.kt | 54 ---------------- .../network/TaxiPassengerServiceManager.kt | 46 +------------- .../taxi/passenger/utils/FixMemoryLeak.java | 42 ------------- .../och/taxi/passenger/utils/OrderUtil.java | 22 ------- .../taxi/passenger/utils/PermissionUtil.java | 62 ------------------- .../utils/TaxiPassengerMapAssetStyleUtil.java | 61 ------------------ .../passenger/utils/blur/DiskLruCache.java | 0 .../utils/blur/DiskLruCacheManager.java | 0 .../OnComputeInternalInsetsListener.java | 55 ---------------- .../utils/windowdispatch/ReflectionUtils.java | 51 --------------- .../passenger/widget/ResizeAnimation.java | 39 ------------ .../taxi/passenger/MogoOCHTaxiPassenger.java | 9 --- .../ITaxiPassengerCommonCallback.java | 5 -- .../ITaxiPassengerCommonValueCallback.java | 5 -- 28 files changed, 2 insertions(+), 632 deletions(-) delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerAllStarWorld.java delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerCarHeartbeatReqBean.java delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRemainingResp.java delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerQueryOrderRouteResp.java delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerScoreUpdateOrderReqBean.java delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerNaviChangedCallback.java delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonCallback.java delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonValueCallback.java delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerMapViewCallback.java delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerVeloctityCallback.java delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/event/FinishActivity.java delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/FixMemoryLeak.java delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/OrderUtil.java delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/PermissionUtil.java delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerMapAssetStyleUtil.java delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/blur/DiskLruCache.java delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/blur/DiskLruCacheManager.java delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/windowdispatch/OnComputeInternalInsetsListener.java delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/windowdispatch/ReflectionUtils.java delete mode 100644 OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/widget/ResizeAnimation.java delete mode 100644 OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonCallback.java delete mode 100644 OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonValueCallback.java diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java index f77aa48af5..ae1351af5f 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java @@ -9,11 +9,7 @@ import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import com.alibaba.android.arouter.facade.annotation.Route; -import com.mogo.commons.module.status.IMogoStatusChangedListener; -import com.mogo.commons.module.status.MogoStatusManager; -import com.mogo.commons.module.status.StatusDescriptor; import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider; -import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; import com.mogo.och.taxi.passenger.ui.TaxiPassengerBaseFragment; @@ -21,7 +17,6 @@ import com.mogo.och.taxi.passenger.ui.TaxiPassengerBaseFragment; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public /** * @author congtaowang * @since 2021/1/15 @@ -29,7 +24,7 @@ public * 网约车-出租车-乘客端 */ @Route(path = TaxiPassengerConst.PATH) -class MogoOCHTaxiPassenger implements IMoGoFunctionProvider { +public class MogoOCHTaxiPassenger implements IMoGoFunctionProvider { private static final String TAG = "MogoOCHTaxiPassenger"; private TaxiPassengerBaseFragment ochTaxiPassengerFragment; @@ -41,14 +36,6 @@ class MogoOCHTaxiPassenger implements IMoGoFunctionProvider { CallerLogger.d(M_TAXI_P + TAG, "init"); } - /** - * 进入鹰眼模式,设置手势缩放地图失效 - */ - private void stepIntoVrMode() { - CallerLogger.d(M_TAXI_P + TAG, "进入vr模式"); - CallerMoGoUiSettingManager.INSTANCE.stepInNightMode();//夜间模式 状态栏字体颜色变黑 - } - private void showFragment() { FragmentManager supportFragmentManager = mActivity.getSupportFragmentManager(); if (ochTaxiPassengerFragment == null) { diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerAllStarWorld.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerAllStarWorld.java deleted file mode 100644 index 4810e8d06f..0000000000 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerAllStarWorld.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.mogo.och.taxi.passenger.bean; - -import com.mogo.eagle.core.data.BaseData; - -import java.util.List; - -/** - * Created by pangfan on 2021/8/19 - * - * 查询订单返回数据结构 - */ -public class TaxiPassengerAllStarWorld extends BaseData { - public List data; - - public static class TaxiPassengerStarWorld { - public TaxiPassengerStarWorld(String labelInfo) { - this.labelInfo = labelInfo; - } - - public String labelNo; - public String labelInfo; - public String star; - public String sort; - public Boolean isSelect = false; - } -} diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerCarHeartbeatReqBean.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerCarHeartbeatReqBean.java deleted file mode 100644 index 02d24c51b3..0000000000 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerCarHeartbeatReqBean.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.mogo.och.taxi.passenger.bean; - -import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; - -import java.util.UUID; - -/** - * Created on 2021/9/16 - * - * 上传车机心跳信息请求数据 - */ -public class TaxiPassengerCarHeartbeatReqBean { - public String sn; - public double lon; //经度 - public double lat; //纬度 - public String msgId; //心跳信息唯一标识 - public int interval; //上报间隔,单位秒,非必传,默认60秒 - - public TaxiPassengerCarHeartbeatReqBean(String sn, double lon, double lat) { - this.sn = sn; - this.lon = lon; - this.lat = lat; - this.msgId = UUID.randomUUID().toString(); - this.interval = (int) (TaxiPassengerConst.LOOP_PERIOD_60S / 1000); - } -} diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRemainingResp.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRemainingResp.java deleted file mode 100644 index 3ff370d2c2..0000000000 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRemainingResp.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.mogo.och.taxi.passenger.bean; - -import com.mogo.eagle.core.data.BaseData; - -import java.util.List; -import java.util.Objects; - -/** - * Created by pangfan on 2021/8/19 - * - * 查询订单返回数据结构 - */ -public class TaxiPassengerOrderQueryRemainingResp extends BaseData { - public Result data; - - public static class Result { - public long distance; - public long duration; - } -} diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerQueryOrderRouteResp.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerQueryOrderRouteResp.java deleted file mode 100644 index 48ee6c654b..0000000000 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerQueryOrderRouteResp.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.mogo.och.taxi.passenger.bean; - -import com.amap.api.maps.model.LatLng; -import com.mogo.eagle.core.data.BaseData; - -import java.util.List; - -/** - * Created by pangfan on 2021/8/19 - */ -public class TaxiPassengerQueryOrderRouteResp extends BaseData { - public List data; -} diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerScoreUpdateOrderReqBean.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerScoreUpdateOrderReqBean.java deleted file mode 100644 index e5cc00ca24..0000000000 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerScoreUpdateOrderReqBean.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.mogo.och.taxi.passenger.bean; - -import java.util.List; - -/** - * Created by pangfan on 2021/8/19 - * - * 验证手机号后四位同时流转订单状态 - */ -public class TaxiPassengerScoreUpdateOrderReqBean { - - public String orderNo; - public int star; - public List evalLabeBasicList; - - public TaxiPassengerScoreUpdateOrderReqBean(String orderNo, int star,List data) { - this.orderNo = orderNo; - this.star = star; - for (TaxiPassengerAllStarWorld.TaxiPassengerStarWorld datum : data) { - datum.isSelect=null; - datum.sort = null; - datum.star = null; - } - this.evalLabeBasicList = data; - } - -} diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerNaviChangedCallback.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerNaviChangedCallback.java deleted file mode 100644 index e30e544db8..0000000000 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerNaviChangedCallback.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.mogo.och.taxi.passenger.callback; - -/** - * @author: wangmingjun - * @date: 2021/12/3 - */ -public interface IOCHTaxiPassengerNaviChangedCallback { - // 当前位置距离上车点的距离(米)、预估时间(秒) 、当前路的名称 - void onCurrentRoadName(String currentRoadName); -} diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonCallback.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonCallback.java deleted file mode 100644 index 937b4913b9..0000000000 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonCallback.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.mogo.och.taxi.passenger.callback; - -public interface ITaxiPassengerCommonCallback { - void onCommonCallback(); -} diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonValueCallback.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonValueCallback.java deleted file mode 100644 index 157925b458..0000000000 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonValueCallback.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.mogo.och.taxi.passenger.callback; - -public interface ITaxiPassengerCommonValueCallback { - void onCommonCallback(T t); -} diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerMapViewCallback.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerMapViewCallback.java deleted file mode 100644 index f26039ec07..0000000000 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerMapViewCallback.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mogo.och.taxi.passenger.callback; - -/** - * @author: wangmingjun - * @date: 2022/3/10 - */ -public interface ITaxiPassengerMapViewCallback { - void onCameraChange(float bearing); -} diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerVeloctityCallback.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerVeloctityCallback.java deleted file mode 100644 index 50cf8d8a65..0000000000 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerVeloctityCallback.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.mogo.och.taxi.passenger.callback; - -/** - * @author: wangmingjun - * @date: 2022/3/13 - */ -public interface ITaxiPassengerVeloctityCallback { - //限速 - void onLimitingVelocityChange(int limitingVelocity); -} diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt index 46bf2e378b..68db71be80 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt @@ -11,17 +11,6 @@ class TaxiPassengerConst { // OCH arouter 路由path const val PATH = "/passenger/api" - // 上报心跳轮询ms - const val LOOP_PERIOD_60S = 60 * 1000L - - // 轮询查询进行中/待服务订单的间隔时间 2秒 - const val LOOP_PERIOD_2S = 2 * 1000L - // 轮询查询新到预约单 1秒 - const val LOOP_PERIOD_1S = 1 * 1000L - const val LOOP_DELAY = 100L - - //实时查询订单剩余时间 和 剩余里程 轮询间隔2s - const val LOOP_CALCULATEROUTE_2S = 2 * 1000L // 开始服务启动自动驾驶等待时间(埋点上传) const val LOOP_PERIOD_15S = 15 * 1000L diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/event/FinishActivity.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/event/FinishActivity.java deleted file mode 100644 index 0e9120e02a..0000000000 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/event/FinishActivity.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.mogo.och.taxi.passenger.event; - -public class FinishActivity { -} diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt index 5f8f766194..79b923ece1 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt @@ -32,7 +32,6 @@ import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback -import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonCallback import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum.Companion.valueOf @@ -54,7 +53,6 @@ object TaxiPassengerModel { private const val STARTREADYTOAUTOPILOT = "startReadyToAutopilot" private const val MINANDWAITSERVICE = "mInAndWaitService" - private const val MQUERYORDERREMAINING = "mQueryOrderRemaining" // 获取当前订单 @Volatile diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.kt index a07636ec8d..e5953babe4 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.kt @@ -2,14 +2,11 @@ package com.mogo.och.taxi.passenger.network import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.commons.storage.SharedPrefsMgr -import com.mogo.och.taxi.passenger.bean.TaxiPassengerAllStarWorld import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean import com.mogo.och.taxi.passenger.bean.TaxiPassengerCheckPhoneUpdateOrderReqBean -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryReqBean import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean -import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean import com.mogo.och.taxi.passenger.bean.TaxiPassengerStartReqBean import io.reactivex.Observable import retrofit2.http.Body @@ -51,21 +48,6 @@ internal interface TaxiPassengerServiceApi { @Body data: TaxiPassengerOrderQueryReqBean ): Observable - /** - * 查询订单剩余里程和时间 - * @param appId - * @param ticket - * @param orderNo - * @return - */ - @Headers("Content-type:application/json;charset=UTF-8") - @GET("/autopilot-car-hailing/order/v2/driver/taxi/queryOrderRemaining") - fun queryOrderRemaining( - @Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId, - @Header("ticket") ticket: String=SharedPrefsMgr.getInstance().token, - @Query("orderNo") orderNo: String - ): Observable - /** * 提交用户输入的手机后4位、并进行状态扭转 * @param data @@ -79,42 +61,6 @@ internal interface TaxiPassengerServiceApi { @Body data: TaxiPassengerCheckPhoneUpdateOrderReqBean? ): Observable - /** - * 对订单进行打分 1-5分 加上文案评论 - * @param data - * @return - */ - @Headers("Content-type:application/json;charset=UTF-8") - @POST("/autopilot-car-hailing/evaluation/info/driver/taxi/submit") - fun arrivedAndScore( - @Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId, - @Header("ticket") ticket: String= SharedPrefsMgr.getInstance().token, - @Body data: TaxiPassengerScoreUpdateOrderReqBean - ): Observable - - /** - * 获取星星对应的文案(所有文案) - * @return - */ - @Headers("Content-type:application/json;charset=UTF-8") - @GET("/autopilot-car-hailing/evaluation/label/driver/taxi/list") - fun getWorldAllStar( - @Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId, - @Header("ticket") ticket: String=SharedPrefsMgr.getInstance().token, - ): Observable - - /** - * 获取星星对应的文案(和星星一一对应) - * @return - */ - @Headers("Content-type:application/json;charset=UTF-8") - @GET("/autopilot-car-hailing/evaluation/label/driver/taxi/listByStar") - fun getWorldByStar( - @Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId, - @Header("ticket") ticket: String=SharedPrefsMgr.getInstance().token, - @Query("star") star: String - ): Observable - /** * 查询司机是否已确认可开启自动驾驶 * @param appId diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.kt index 0adbc768ee..422df54429 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.kt @@ -4,11 +4,8 @@ import android.content.Context import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean import com.mogo.commons.AbsMogoApplication import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean import com.mogo.och.taxi.passenger.bean.TaxiPassengerCheckPhoneUpdateOrderReqBean -import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean -import com.mogo.och.taxi.passenger.bean.TaxiPassengerAllStarWorld import com.mogo.och.taxi.passenger.bean.TaxiPassengerStartReqBean import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger @@ -73,22 +70,6 @@ object TaxiPassengerServiceManager { .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrdersInAndWaitService")) } - /** - * 查询订单剩余里程和时间 - * @param context - * @param orderNo - * @param callback - */ - @JvmStatic - fun queryOrderRemaining( - orderNo: String, - callback: OchCommonServiceCallback? - ) { - mOCHTaxiServiceApi.queryOrderRemaining(orderNo= orderNo) - .transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderRemaining")) - } - @JvmStatic fun checkPhoneAndUpdateOrderStatus( orderNo: String?, @@ -99,23 +80,7 @@ object TaxiPassengerServiceManager { .transformTry() .subscribe(OchCommonSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")) } - @JvmStatic - fun arrivedAndScore( - taxiPassengerScoreUpdateOrderReqBean: TaxiPassengerScoreUpdateOrderReqBean, - callback: OchCommonServiceCallback? - ) { - mOCHTaxiServiceApi.arrivedAndScore(data = taxiPassengerScoreUpdateOrderReqBean) - .transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")) - } - @JvmStatic - fun getAllScoreWorld( - callback: OchCommonServiceCallback? - ) { - mOCHTaxiServiceApi.getWorldAllStar() - .transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "arrivedAndScore")) - } + @JvmStatic fun queryPilotStatus( orderNo: String, @@ -137,15 +102,6 @@ object TaxiPassengerServiceManager { .transformTry() .subscribe(OchCommonSubscribeImpl(context, callback, "startServicePilotDone")) } - @JvmStatic - fun getWorldByStar( - start: String, - callback: OchCommonServiceCallback? - ) { - mOCHTaxiServiceApi.getWorldByStar(star=start) - .transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")) - } /** * 通过orderId查询订单信息(用于本地已经有orderId时) diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/FixMemoryLeak.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/FixMemoryLeak.java deleted file mode 100644 index f6e57ae403..0000000000 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/FixMemoryLeak.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.mogo.och.taxi.passenger.utils; - -import android.content.Context; -import android.view.inputmethod.InputMethodManager; - -import java.lang.reflect.Field; - -/** - * memory leak fix: - *

- * InputMethodManager#mLastSrvView reference Last Page Activity. - */ -public class FixMemoryLeak { - - private static Field field; - private static boolean hasField = true; - - public static void fixLeak(Context context) { - if (!hasField) { - return; - } - InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); - if (imm == null) { - return; - } - - try { - if (field == null) { - field = imm.getClass().getDeclaredField("mCurRootView"); - } - if (field == null) { - hasField = false; - } - if (field != null) { - field.setAccessible(true); - field.set(imm, null); - } - } catch (Throwable t) { - hasField = false; - } - } -} \ No newline at end of file diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/OrderUtil.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/OrderUtil.java deleted file mode 100644 index 782b963176..0000000000 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/OrderUtil.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.mogo.och.taxi.passenger.utils; - -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean; - -import java.util.Arrays; -import java.util.List; - -/** - * Created on 2021/9/11 - */ -public class OrderUtil { - - // 判断两个list中的订单是否相同:依据orderId - public static boolean haveSameOrders(List list1, - List list2) { - TaxiPassengerOrderQueryRespBean.Result[] arr1 = list1.toArray(new TaxiPassengerOrderQueryRespBean.Result[]{}); - TaxiPassengerOrderQueryRespBean.Result[] arr2 = list2.toArray(new TaxiPassengerOrderQueryRespBean.Result[]{}); - Arrays.sort(arr1); - Arrays.sort(arr1); - return Arrays.equals(arr1,arr2); - } -} diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/PermissionUtil.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/PermissionUtil.java deleted file mode 100644 index 7c6c8c22ae..0000000000 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/PermissionUtil.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.mogo.och.taxi.passenger.utils; - -import android.app.ActivityManager; -import android.app.AppOpsManager; -import android.content.Context; -import android.content.pm.PackageManager; -import android.location.LocationManager; -import android.os.Build; - -import androidx.core.content.ContextCompat; - -import com.mogo.eagle.core.network.utils.Util; -import com.mogo.eagle.core.utilcode.util.Utils; - -/** - * @author: wangmingjun - * @date: 2021/12/7 - */ -public class PermissionUtil { - - public static boolean checkPermission(Context context,String... permissons) { - - for (String permisson : permissons) { - if ((ContextCompat.checkSelfPermission(context, - permisson) != PackageManager.PERMISSION_GRANTED)) { - return false; - } - } - return true; - } - - public static boolean isLocServiceEnable(Context context) { - LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); - boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); - boolean network = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); - if (gps || network) { - return true; - } - return false; - } - - private static String processName = ""; - public static String getCurProcessName() { - if(!processName.isEmpty()){ - return processName; - } - // 获取此进程的标识符 - int pid = android.os.Process.myPid(); - // 获取活动管理器 - ActivityManager activityManager = (ActivityManager) - Utils.getApp().getSystemService(Context.ACTIVITY_SERVICE); - // 从应用程序进程列表找到当前进程,是:返回当前进程名 - for (ActivityManager.RunningAppProcessInfo appProcess : - activityManager.getRunningAppProcesses()) { - if (appProcess.pid == pid) { - - return appProcess.processName; - } - } - return null; - } -} diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerMapAssetStyleUtil.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerMapAssetStyleUtil.java deleted file mode 100644 index 9c3eea52f9..0000000000 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerMapAssetStyleUtil.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.mogo.och.taxi.passenger.utils; - - -import android.content.Context; - -import java.io.IOException; -import java.io.InputStream; - -/** - * @author donghongyu - * @date 12/18/20 5:37 PM - */ -public class TaxiPassengerMapAssetStyleUtil { - - public static byte[] getAssetsStyle(Context context,String fileName) { - byte[] buffer1 = null; - InputStream is1 = null; - try { - is1 = context.getResources().getAssets().open(fileName); //eg. over_view_style.data - int lenght1 = is1.available(); - buffer1 = new byte[lenght1]; - is1.read(buffer1); - } catch (IOException e) { - e.printStackTrace(); - } finally { - try { - if (is1 != null) { - is1.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - return buffer1; - } - - - public static byte[] getAssetsExtraStyle(Context context, String fileName) { - byte[] buffer1 = null; - InputStream is1 = null; - try { - is1 = context.getResources().getAssets().open(fileName); //eg. over_view_style_extra.data - int lenght1 = is1.available(); - buffer1 = new byte[lenght1]; - is1.read(buffer1); - } catch (IOException e) { - e.printStackTrace(); - } finally { - try { - if (is1 != null) { - is1.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - return buffer1; - } - - -} diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/blur/DiskLruCache.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/blur/DiskLruCache.java deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/blur/DiskLruCacheManager.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/blur/DiskLruCacheManager.java deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/windowdispatch/OnComputeInternalInsetsListener.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/windowdispatch/OnComputeInternalInsetsListener.java deleted file mode 100644 index 6fd67ae232..0000000000 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/windowdispatch/OnComputeInternalInsetsListener.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.mogo.och.taxi.passenger.utils.windowdispatch; - -import android.graphics.Region; -import android.inputmethodservice.InputMethodService; - -import java.lang.reflect.Field; -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; -import java.lang.reflect.Proxy; - -public class OnComputeInternalInsetsListener implements InvocationHandler { - - private Region touchRegion = null; - public Object getListener() { - Object target = null; - try { - Class class1 = Class.forName("android.view.ViewTreeObserver$OnComputeInternalInsetsListener"); - target = Proxy.newProxyInstance(OnComputeInternalInsetsListener.class.getClassLoader(), - new Class[]{class1}, this); - } catch (Exception e) { - e.printStackTrace(); - } - return target; - } - - public Region getTouchRegion() { - return touchRegion; - } - - public void setTouchRegion(Region touchRegion) { - this.touchRegion = touchRegion; - } - - @Override - public Object invoke(Object proxy, Method method, Object[] args) { - try { - Field regionField = args[0].getClass() - .getDeclaredField("touchableRegion"); - regionField.setAccessible(true); - Field insetField = args[0].getClass() - .getDeclaredField("mTouchableInsets"); - insetField.setAccessible(true); - if (touchRegion != null) { - Region region = (Region) regionField.get(args[0]); - region.set(touchRegion); - insetField.set(args[0], InputMethodService.Insets.TOUCHABLE_INSETS_REGION); - } else { - insetField.set(args[0], InputMethodService.Insets.TOUCHABLE_INSETS_FRAME); - } - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } -} diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/windowdispatch/ReflectionUtils.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/windowdispatch/ReflectionUtils.java deleted file mode 100644 index 1ade41a62d..0000000000 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/windowdispatch/ReflectionUtils.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.mogo.och.taxi.passenger.utils.windowdispatch; - -import android.view.ViewTreeObserver; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.ArrayList; - -public class ReflectionUtils { - - private ReflectionUtils() { - - } - - public static void removeOnComputeInternalInsetsListener(ViewTreeObserver viewTree) { - if (viewTree == null) { - return; - } - try { - Class clazz = Class.forName("android.view.ViewTreeObserver"); - Field field = viewTree.getClass().getDeclaredField("mOnComputeInternalInsetsListeners"); - field.setAccessible(true); - Object listenerList = field.get(viewTree); - Method method = listenerList.getClass().getDeclaredMethod("getArray"); - method.setAccessible(true); - ArrayList list = (ArrayList) method.invoke(listenerList); - Class classes[] = {Class.forName("android.view.ViewTreeObserver$OnComputeInternalInsetsListener")}; - if (list != null && list.size() > 0) { - clazz.getDeclaredMethod("removeOnComputeInternalInsetsListener", classes).invoke(viewTree, - list.get(0)); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - public static void addOnComputeInternalInsetsListener(ViewTreeObserver viewTree, Object object) { - if (viewTree == null) { - return; - } - try { - Class classes[] = {Class.forName("android.view.ViewTreeObserver$OnComputeInternalInsetsListener")}; - Class clazz = Class.forName("android.view.ViewTreeObserver"); - clazz.getDeclaredMethod("addOnComputeInternalInsetsListener", classes).invoke(viewTree, - object); - } catch (Exception e) { - e.printStackTrace(); - } - } - -} diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/widget/ResizeAnimation.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/widget/ResizeAnimation.java deleted file mode 100644 index be2442a014..0000000000 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/widget/ResizeAnimation.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.mogo.och.taxi.passenger.widget; - -import android.view.View; -import android.view.animation.Animation; -import android.view.animation.Transformation; - -public class ResizeAnimation extends Animation { - - final int targetHeight; - View view; - int startHeight; - public ResizeAnimation(View view, int targetHeight, int startHeight) { - this.view = view; - this.targetHeight = targetHeight; - this.startHeight = startHeight; - } - - @Override - protected void applyTransformation(float interpolatedTime, Transformation t) { - - int newHeight = (int) (startHeight + (targetHeight-startHeight) * interpolatedTime); - view.getLayoutParams().height = newHeight; - - view.requestLayout(); - - } - - @Override - - public void initialize(int width, int height, int parentWidth, int parentHeight) { - super.initialize(width, height, parentWidth, parentHeight); - } - - @Override - public boolean willChangeBounds() { - return true; - } - -} diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java index e0fafca338..ae1351af5f 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java @@ -10,7 +10,6 @@ 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.setting.CallerMoGoUiSettingManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; import com.mogo.och.taxi.passenger.ui.TaxiPassengerBaseFragment; @@ -37,14 +36,6 @@ public class MogoOCHTaxiPassenger implements IMoGoFunctionProvider { CallerLogger.d(M_TAXI_P + TAG, "init"); } - /** - * 进入鹰眼模式,设置手势缩放地图失效 - */ - private void stepIntoVrMode() { - CallerLogger.d(M_TAXI_P + TAG, "进入vr模式"); - CallerMoGoUiSettingManager.INSTANCE.stepInNightMode();//夜间模式 状态栏字体颜色变黑 - } - private void showFragment() { FragmentManager supportFragmentManager = mActivity.getSupportFragmentManager(); if (ochTaxiPassengerFragment == null) { diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonCallback.java b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonCallback.java deleted file mode 100644 index 937b4913b9..0000000000 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonCallback.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.mogo.och.taxi.passenger.callback; - -public interface ITaxiPassengerCommonCallback { - void onCommonCallback(); -} diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonValueCallback.java b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonValueCallback.java deleted file mode 100644 index 157925b458..0000000000 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonValueCallback.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.mogo.och.taxi.passenger.callback; - -public interface ITaxiPassengerCommonValueCallback { - void onCommonCallback(T t); -} From 300522a8abe8f7e01cc2bd3e768185c8c7f22106 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Wed, 28 Feb 2024 11:21:23 +0800 Subject: [PATCH 7/8] =?UTF-8?q?[6.3.0]=E5=B7=A5=E6=8E=A7=E6=9C=BA=E4=B8=8A?= =?UTF-8?q?=E6=8A=A5=E9=87=8D=E8=A6=81info=E4=BA=8B=E4=BB=B6=E5=91=88?= =?UTF-8?q?=E7=8E=B0=E6=9B=B4=E6=8D=A2Icon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msgbox/adapter/DriverMsgBoxListAdapter.kt | 4 ++-- .../drawable-xhdpi/icon_report_info_normal.png | Bin 0 -> 13934 bytes .../drawable-xhdpi/icon_report_info_open.png | Bin 0 -> 2889 bytes 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_report_info_normal.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_report_info_open.png diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt index e64c061cee..c269c4dd0f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt @@ -394,8 +394,8 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : holder.tvReportLevelOpen.text = "Warning" }else { //INFO - holder.ivReportImageNormal.setImageDrawable(getDrawable(R.drawable.icon_report_warning_normal)) - holder.ivReportImageOpen.setImageDrawable(getDrawable(R.drawable.icon_report_warning_open)) + holder.ivReportImageNormal.setImageDrawable(getDrawable(R.drawable.icon_report_info_normal)) + holder.ivReportImageOpen.setImageDrawable(getDrawable(R.drawable.icon_report_info_open)) holder.tvReportLevelNormal.text = "Info" holder.tvReportLevelOpen.text = "Info" } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_report_info_normal.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_report_info_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..ac41b573824ad12fba124e6fbeb2f5a372be8c43 GIT binary patch literal 13934 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 literal 0 HcmV?d00001 From df807d5da964f65a0127080d68da698a38b20362 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Wed, 28 Feb 2024 11:39:55 +0800 Subject: [PATCH 8/8] =?UTF-8?q?[6.3.0]=E5=B7=A5=E6=8E=A7=E6=9C=BA=E9=87=8D?= =?UTF-8?q?=E5=90=AF=E5=8A=9F=E8=83=BD=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autopilot/MoGoAutopilotControlProvider.kt | 8 ---- .../function/hmi/ui/widget/CheckSystemView.kt | 3 +- .../main/res/layout/dialog_docker_reboot.xml | 48 +++++++++++-------- .../src/main/res/values/strings.xml | 5 +- .../IMoGoAutopilotControlProvider.kt | 10 ---- .../CallerAutoPilotControlManager.kt | 8 ---- 6 files changed, 33 insertions(+), 49 deletions(-) diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt index 77b154540b..ecc49ef67a 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt @@ -480,14 +480,6 @@ class MoGoAutopilotControlProvider : return AdasManager.getInstance().sendAutopilotSpeedReq(speed / 3.6) } - override fun setIPCShutDown() { -// AdasManager.getInstance().shutdownIPC() - } - - override fun setIPCReboot() { -// AdasManager.getInstance().rebootAPDocker() - } - override fun recordCause(key: String?, name: String?, id: String?, reason: String?) { key?.let { AdasManager.getInstance() diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CheckSystemView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CheckSystemView.kt index 7df9053a03..f7ffa13497 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CheckSystemView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CheckSystemView.kt @@ -65,7 +65,8 @@ class CheckSystemView @JvmOverloads constructor( else { //确认重启 CallerLogger.d("$M_HMI$TAG", "reboot confirm") - CallerAutoPilotControlManager.setIPCReboot() + CallerAutoPilotControlManager.sendIpcReboot() + ToastUtils.showLong("重启命令已发送") } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_docker_reboot.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_docker_reboot.xml index b75cee777e..83a031c665 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_docker_reboot.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_docker_reboot.xml @@ -2,10 +2,10 @@ + + 账户信息 系统运行 关机 - 重启 + 重启系统 重启提示 - 是否重启自动驾驶系统? + 是否重启自动驾驶系统? + 请确保已退出自动驾驶状态且周边环境安全 diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt index 1c8bdd257f..cf19ca8c0a 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt @@ -147,16 +147,6 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider { */ fun recordCause(key: String?, name: String?, id: String?, reason: String?) - /** - * 关机 - */ - fun setIPCShutDown() - - /** - * 重启 - */ - fun setIPCReboot() - /** * 演示模式(美化模式)该设置作用域只限定于鹰眼 * 司机屏同步给乘客屏 diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt index 506a25e0f7..0fc660f064 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt @@ -228,14 +228,6 @@ object CallerAutoPilotControlManager { } } - fun setIPCShutDown() { - providerApi?.setIPCShutDown() - } - - fun setIPCReboot() { - providerApi?.setIPCReboot() - } - /** * 演示模式(美化模式)该设置作用域只限定于鹰眼 * isEnable = true 开启