[charter]
[3.2.0] [轨迹]
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
package com.mogo.och.bus.passenger.bean.response
|
||||
|
||||
import com.amap.api.maps.model.LatLng
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.och.common.module.bean.dpmsg.LineSite
|
||||
import java.util.*
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
data class TrajectoriesResponse(val data: List<LatLng>?) : BaseData(){
|
||||
data class LatLng(
|
||||
val latitude: Double?,//维度
|
||||
val longitude: Double?,//精度
|
||||
){
|
||||
fun exchangeData(): com.amap.api.maps.model.LatLng{
|
||||
return com.amap.api.maps.model.LatLng(latitude!!,longitude!!)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -818,6 +818,9 @@ object CharterPassengerModel {
|
||||
BusPassengerServiceManager.endOrder(mContext, it, callback)
|
||||
}
|
||||
}
|
||||
fun getLineTrajectory(lineId: Long,callback: OchCommonServiceCallback<TrajectoriesResponse>?) {
|
||||
BusPassengerServiceManager.queryLineLocation(mContext, lineId = lineId.toString(), callback)
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun arriveDest() {
|
||||
|
||||
@@ -140,4 +140,13 @@ object BusPassengerServiceManager {
|
||||
mBusPassengerServiceApi.queryBusinessTime().transformTry()
|
||||
.subscribe(OchCommonSubscribeImpl(context, callback, "queryBusinessTime"))
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun queryLineLocation(context: Context,lineId:String ,callback: OchCommonServiceCallback<TrajectoriesResponse>?) {
|
||||
if(beforeNet()){
|
||||
return
|
||||
}
|
||||
mBusPassengerServiceApi.queryLineLocation(lineId = lineId).transformTry()
|
||||
.subscribe(OchCommonSubscribeImpl(context, callback, "serviceEnd"))
|
||||
}
|
||||
}
|
||||
@@ -107,4 +107,16 @@ internal interface PassengerServiceApi {
|
||||
@Header("ticket") ticket: String=MoGoAiCloudClientConfig.getInstance().token,
|
||||
@Query("sn") sn: String = BusPassengerServiceManager.draiverSn
|
||||
): Observable<BusinessTimeResponse>
|
||||
|
||||
/**
|
||||
* 08查询包车业务时间 11
|
||||
* 倒计时5分钟 消息盒子、倒计时结束弹窗
|
||||
*/
|
||||
@GET("/och-rental-cabin/api/business/v1/queryLineLocation")
|
||||
fun queryLineLocation(
|
||||
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
@Header("ticket") ticket: String=MoGoAiCloudClientConfig.getInstance().token,
|
||||
@Query("sn") sn: String = BusPassengerServiceManager.draiverSn,
|
||||
@Query("lineId") lineId: String
|
||||
): Observable<TrajectoriesResponse>
|
||||
}
|
||||
@@ -263,6 +263,7 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) :
|
||||
}
|
||||
|
||||
fun canSwitchLine():Boolean {
|
||||
return true
|
||||
val gnssSpeed =
|
||||
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().gnssSpeed
|
||||
if (gnssSpeed < 0.5) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.mogo.och.bus.passenger.presenter
|
||||
|
||||
import android.graphics.BitmapFactory
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import com.amap.api.maps.model.LatLng
|
||||
import com.mogo.commons.voice.AIAssist
|
||||
@@ -8,18 +9,25 @@ import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager
|
||||
import com.mogo.eagle.core.function.view.SiteMarkerBean
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.och.bus.passenger.bean.response.LineInfoResponse
|
||||
import com.mogo.och.bus.passenger.bean.response.OrderInfoResponse
|
||||
import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse
|
||||
import com.mogo.och.bus.passenger.bean.response.TrajectoriesResponse
|
||||
import com.mogo.och.bus.passenger.callback.IDistanceCallback
|
||||
import com.mogo.och.bus.passenger.callback.IOrderChangeCallback
|
||||
import com.mogo.och.bus.passenger.callback.ITimeCallback
|
||||
import com.mogo.och.bus.passenger.model.CharterPassengerModel
|
||||
import com.mogo.och.bus.passenger.model.IOrderStatusChangeListener
|
||||
import com.mogo.och.bus.passenger.model.OrderStatusEnum
|
||||
import com.mogo.och.bus.passenger.ui.MainFragment
|
||||
import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment
|
||||
import com.mogo.och.common.module.bean.dpmsg.DPMsgType
|
||||
import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager
|
||||
import com.mogo.och.common.module.biz.constant.OchCommonConst
|
||||
@@ -31,6 +39,7 @@ import com.mogo.och.common.module.utils.SoundPoolHelper
|
||||
import com.mogo.och.common.module.voice.VoiceNotice
|
||||
import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg
|
||||
import com.mogo.och.common.module.bean.dpmsg.DPCommonOperationMsg
|
||||
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorCallback
|
||||
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorManager
|
||||
import kotlin.math.ceil
|
||||
@@ -44,28 +53,30 @@ class BusPassengerPresenter(view: MainFragment?) :
|
||||
super.onCreate(owner)
|
||||
CharterPassengerModel.init()
|
||||
// 定位监听
|
||||
CharterPassengerModel.setStationDistanceListener(TAG,this)
|
||||
CharterPassengerModel.setStationDistanceListener(TAG, this)
|
||||
CharterPassengerModel.setCarTypeChangeListener(this)
|
||||
CharterPassengerModel.setStatusChangeListener(TAG,this)
|
||||
CharterPassengerModel.setStatusChangeListener(TAG, this)
|
||||
CallerTelematicListenerManager.addListener(TAG, msgReceived)
|
||||
OCHPlanningStopSideStatusManager.addListener(TAG,this)
|
||||
OCHPlanningStopSideStatusManager.addListener(TAG, this)
|
||||
setCarChangeListener(R.raw.m1)
|
||||
|
||||
}
|
||||
|
||||
override fun onDestroy(owner: LifecycleOwner) {
|
||||
super.onDestroy(owner)
|
||||
CharterPassengerModel.setStationDistanceListener(TAG,null)
|
||||
CharterPassengerModel.setStationDistanceListener(TAG, null)
|
||||
CharterPassengerModel.setCarTypeChangeListener(null)
|
||||
CallerTelematicListenerManager.removeListener(TAG)
|
||||
OCHPlanningStopSideStatusManager.removeListener(TAG)
|
||||
}
|
||||
private fun setSpeed(speed:Float){
|
||||
|
||||
private fun setSpeed(speed: Float) {
|
||||
UiThreadHandler.post {
|
||||
val speedKM =(Math.abs(speed) * 3.6f).toInt()
|
||||
val speedKM = (Math.abs(speed) * 3.6f).toInt()
|
||||
mView?.setSpeed(speedKM.toString())
|
||||
}
|
||||
}
|
||||
|
||||
private fun setDistanceAndTime(
|
||||
distance: String,
|
||||
distanceUnit: String,
|
||||
@@ -73,7 +84,7 @@ class BusPassengerPresenter(view: MainFragment?) :
|
||||
arriveTime: String
|
||||
) {
|
||||
UiThreadHandler.post {
|
||||
mView?.setDistanceAndTime(distance, distanceUnit,leftTime,arriveTime)
|
||||
mView?.setDistanceAndTime(distance, distanceUnit, leftTime, arriveTime)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,9 +99,9 @@ class BusPassengerPresenter(view: MainFragment?) :
|
||||
when (msg.type) {
|
||||
DPMsgType.TYPE_OPEN_CLOSE_DOOR.type -> {
|
||||
val doorStatus = LightAirconditionDoorStatusManager.doorStatus
|
||||
if(doorStatus.isOpen){
|
||||
if (doorStatus.isOpen) {
|
||||
LightAirconditionDoorManager.go2OpenDoor(false)
|
||||
}else{
|
||||
} else {
|
||||
LightAirconditionDoorManager.go2OpenDoor(true)
|
||||
}
|
||||
}
|
||||
@@ -99,7 +110,7 @@ class BusPassengerPresenter(view: MainFragment?) :
|
||||
String(byteArray),
|
||||
DPCommonOperationMsg::class.java
|
||||
) as DPCommonOperationMsg
|
||||
pushOperationalToMsgBox(DateTimeUtil.getCurrentTimeStamp(),msg.msg)
|
||||
pushOperationalToMsgBox(DateTimeUtil.getCurrentTimeStamp(), msg.msg)
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
@@ -108,12 +119,12 @@ class BusPassengerPresenter(view: MainFragment?) :
|
||||
}
|
||||
}
|
||||
|
||||
fun pushOperationalToMsgBox(time : Long,content : String,type: Int = -1){
|
||||
fun pushOperationalToMsgBox(time: Long, content: String, type: Int = -1) {
|
||||
playDI()
|
||||
OCHSocketMessageManager.pushAppOperationalMsgBox(time, content, type)
|
||||
}
|
||||
|
||||
private fun playDI(){
|
||||
private fun playDI() {
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.m1_voice_di)
|
||||
}
|
||||
|
||||
@@ -121,7 +132,7 @@ class BusPassengerPresenter(view: MainFragment?) :
|
||||
* 计算剩余距离和剩余时间
|
||||
*/
|
||||
override fun setDistancecAndTime(meters: Long, timeInSecond: Long) {
|
||||
if(meters<0&&timeInSecond<0){
|
||||
if (meters < 0 && timeInSecond < 0) {
|
||||
setDistanceAndTime("--", context.getString(R.string.m1_distance_unit_km), "--", "--")
|
||||
}
|
||||
var dis: String? = "0"
|
||||
@@ -137,10 +148,10 @@ class BusPassengerPresenter(view: MainFragment?) :
|
||||
}
|
||||
val time = ceil(timeInSecond / 60f).toInt()
|
||||
val arriveTime = DateTimeUtil.getAfterSecondTime(time)
|
||||
setDistanceAndTime(dis.toString(),disUnit,time.toString(),arriveTime)
|
||||
setDistanceAndTime(dis.toString(), disUnit, time.toString(), arriveTime)
|
||||
}
|
||||
|
||||
companion object{
|
||||
companion object {
|
||||
private const val TAG = "BusPassengerPresenter"
|
||||
}
|
||||
|
||||
@@ -161,7 +172,7 @@ class BusPassengerPresenter(view: MainFragment?) :
|
||||
}
|
||||
}
|
||||
|
||||
fun haveOrder():Boolean {
|
||||
fun haveOrder(): Boolean {
|
||||
return CharterPassengerModel.hasOrder()
|
||||
}
|
||||
|
||||
@@ -199,8 +210,13 @@ class BusPassengerPresenter(view: MainFragment?) :
|
||||
}
|
||||
}
|
||||
|
||||
override fun setEndStationCallBack(siteId: Long?, siteName: String?, gcj_lon: Double, gcj_lat: Double) {
|
||||
val latLng = LatLng(gcj_lat,gcj_lon)
|
||||
override fun setEndStationCallBack(
|
||||
siteId: Long?,
|
||||
siteName: String?,
|
||||
gcj_lon: Double,
|
||||
gcj_lat: Double
|
||||
) {
|
||||
val latLng = LatLng(gcj_lat, gcj_lon)
|
||||
mView?.cleanEndStation()
|
||||
mView?.drawEndStation(latLng)
|
||||
}
|
||||
@@ -216,7 +232,10 @@ class BusPassengerPresenter(view: MainFragment?) :
|
||||
ToastUtils.showShort(errorInfo)
|
||||
}
|
||||
OCHPlanningStopSideStatusManager.Status.START -> {
|
||||
VoiceNotice.showNotice(context.getString(R.string.m1_stop_site_zh), AIAssist.LEVEL1)
|
||||
VoiceNotice.showNotice(
|
||||
context.getString(R.string.m1_stop_site_zh),
|
||||
AIAssist.LEVEL1
|
||||
)
|
||||
}
|
||||
OCHPlanningStopSideStatusManager.Status.DOING -> {
|
||||
// 正在靠边停车
|
||||
@@ -240,4 +259,39 @@ class BusPassengerPresenter(view: MainFragment?) :
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun getLineTrajectory(
|
||||
lineInfo: LineInfoResponse.LineInfo,
|
||||
sites: List<SiteInfoResponse.SiteInfo>
|
||||
) {
|
||||
CharterPassengerModel.getLineTrajectory(lineInfo.lineId!!,object : OchCommonServiceCallback<TrajectoriesResponse> {
|
||||
override fun onSuccess(data: TrajectoriesResponse?) {
|
||||
if (null != data && 0 == data.code) {
|
||||
data.data?.let {
|
||||
CallerLogger.d(M_BUS_P + TAG, "getLineTrajectory轨迹点:${data.data.size}")
|
||||
val trajectoryList = mutableListOf<LatLng>()
|
||||
it.forEach {latLngMain ->
|
||||
trajectoryList.add(latLngMain.exchangeData())
|
||||
}
|
||||
drawStations(sites)
|
||||
mView?.drawOverMapViewTrajectory(trajectoryList)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String) {
|
||||
ToastUtils.showShort("$code:$msg")
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
fun drawStations(sites: List<SiteInfoResponse.SiteInfo>){
|
||||
val stationsList: MutableList<SiteMarkerBean> = mutableListOf()
|
||||
val stationIcon = BitmapFactory.decodeResource(context.resources, R.drawable.map_staton_icon)
|
||||
sites.forEach {
|
||||
stationsList.add(SiteMarkerBean(LatLng(it.GcjLat!!,it.GcjLon!!),stationIcon,0.5f,0.5f))
|
||||
}
|
||||
mView?.drawOverMapViewStation(stationsList)
|
||||
}
|
||||
}
|
||||
@@ -13,19 +13,22 @@ import com.mogo.commons.mvp.MvpFragment
|
||||
import com.mogo.eagle.core.data.config.HdMapBuildConfig
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.MMsgBoxButtonView
|
||||
import com.mogo.eagle.core.function.view.SiteMarkerBean
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P
|
||||
import com.mogo.eagle.core.utilcode.util.AppStateManager
|
||||
import com.mogo.eagle.core.utilcode.util.ClickUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.och.bus.passenger.bean.event.EventLineSites
|
||||
import com.mogo.och.bus.passenger.bean.response.LineInfoResponse
|
||||
import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse
|
||||
import com.mogo.och.bus.passenger.presenter.BusPassengerPresenter
|
||||
import com.mogo.och.bus.passenger.ui.dialogfragment.M1CarUserNoOrderFragment
|
||||
import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment
|
||||
import com.mogo.och.common.module.biz.constant.LoginStatusManager
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import com.mogo.och.common.module.voice.VoiceManager
|
||||
import kotlinx.android.synthetic.main.m1_main_fragment.*
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
@@ -259,7 +262,20 @@ class MainFragment :
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun changeOverview(eventLineSites: EventLineSites) {
|
||||
CallerLogger.d(M_BUS_P + TAG, "eventLineSites:${eventLineSites.lineInfo.name}-----${eventLineSites.sites.size}")
|
||||
CallerLogger.d(M_BUS_P + TAG, "eventLineSites:${eventLineSites.lineInfo.lineId}-----${eventLineSites.sites.size}")
|
||||
mPresenter?.getLineTrajectory(eventLineSites.lineInfo,eventLineSites.sites)
|
||||
}
|
||||
|
||||
fun drawOverMapViewStation(stationsList: MutableList<SiteMarkerBean>){
|
||||
omvOverMap?.drawSiteMarkers(stationsList)
|
||||
}
|
||||
|
||||
fun drawOverMapViewTrajectory(coordinates: List<LatLng>){
|
||||
UiThreadHandler.post({
|
||||
omvOverMap?.drawPolyline(coordinates, 0)
|
||||
},
|
||||
UiThreadHandler.MODE.QUEUE
|
||||
)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.mogo.och.bus.passenger.ui.dialogfragment
|
||||
|
||||
import android.content.DialogInterface
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
@@ -13,6 +14,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P
|
||||
import com.mogo.eagle.core.utilcode.util.BarUtils
|
||||
import com.mogo.eagle.core.utilcode.util.SharedPrefs
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionPresenter
|
||||
import com.mogo.och.bus.passenger.ui.dialogfragment.fragment.M1OrderLineFragment
|
||||
@@ -156,6 +158,11 @@ class M1ContainFragment :
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDismiss(dialog: DialogInterface) {
|
||||
super.onDismiss(dialog)
|
||||
ToastUtils.showShort("消失了")
|
||||
}
|
||||
|
||||
override fun onSaveInstanceState(outState: Bundle) {
|
||||
super.onSaveInstanceState(outState)
|
||||
CallerLogger.d(M_BUS_P+ TAG, "onSaveInstanceState")
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
@@ -135,6 +135,10 @@ public class DateTimeUtil {
|
||||
long m = (long) Math.ceil((second % 3600) / 60.0);// 向上取整
|
||||
long s = second % 60;
|
||||
StringBuilder stringBuffer = new StringBuilder();
|
||||
if(m==60){
|
||||
m=0;
|
||||
h = h+1;
|
||||
}
|
||||
if (h > 0) {
|
||||
stringBuffer.append(h < 10 ? ("0" + h) : h).append(":");
|
||||
}else {
|
||||
|
||||
Reference in New Issue
Block a user