From a4a7333b8d0f49ba13de8d45c09c6642e664413d Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 31 Jan 2024 11:27:56 +0800 Subject: [PATCH 1/6] =?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/6] =?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/6] [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/6] =?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/6] =?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/6] =?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); -}