Merge remote-tracking branch 'origin/dev_minibus-d_230425_3.2.0' into dev_minibus-d_230425_3.2.0
This commit is contained in:
@@ -1,20 +0,0 @@
|
|||||||
package com.mogo.och.bus.passenger.callback;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created on 2022/3/31
|
|
||||||
*
|
|
||||||
* Model->Presenter回调:ADAS相关(自动驾驶状态回调,到达终点等等)
|
|
||||||
*/
|
|
||||||
public interface IBusPassengerADASStatusCallback {
|
|
||||||
// 自动驾驶触发的已到达目的地:暂未用到
|
|
||||||
void onAutopilotArriveEnd();
|
|
||||||
|
|
||||||
// 自动驾驶可用状态
|
|
||||||
void onAutopilotEnable();
|
|
||||||
|
|
||||||
// 自动驾驶不可用状态
|
|
||||||
void onAutopilotDisable();
|
|
||||||
|
|
||||||
// 自动驾驶运行中
|
|
||||||
void onAutopilotRunning();
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package com.mogo.och.bus.passenger.callback
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created on 2022/3/31
|
||||||
|
*
|
||||||
|
* Model->Presenter回调:ADAS相关(自动驾驶状态回调,到达终点等等)
|
||||||
|
*/
|
||||||
|
interface ICharterPassengerAutoStatusChangeCallback {
|
||||||
|
// 自动驾驶状态发生改变
|
||||||
|
fun onAutoStatusChange(newState: Int)
|
||||||
|
}
|
||||||
@@ -23,6 +23,7 @@ class CharterPassengerConst {
|
|||||||
|
|
||||||
// 到达起始点围栏
|
// 到达起始点围栏
|
||||||
const val ARRIVE_AT_START_STATION_DISTANCE = 15 //围栏由20m改为50m 再次改为15m
|
const val ARRIVE_AT_START_STATION_DISTANCE = 15 //围栏由20m改为50m 再次改为15m
|
||||||
|
const val ARRIVE_SOON_AT_START_STATION_DISTANCE = 100 //100米提示
|
||||||
const val MIN_DISTANCE_STATION = 30 //站点选择小于30m 不能选
|
const val MIN_DISTANCE_STATION = 30 //站点选择小于30m 不能选
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import android.net.ConnectivityManager
|
|||||||
import com.mogo.commons.AbsMogoApplication
|
import com.mogo.commons.AbsMogoApplication
|
||||||
import com.mogo.commons.module.intent.IMogoIntentListener
|
import com.mogo.commons.module.intent.IMogoIntentListener
|
||||||
import com.mogo.commons.module.intent.IntentManager
|
import com.mogo.commons.module.intent.IntentManager
|
||||||
|
import com.mogo.commons.voice.AIAssist
|
||||||
import com.mogo.eagle.core.data.BaseData
|
import com.mogo.eagle.core.data.BaseData
|
||||||
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
|
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
|
||||||
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLine
|
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLine
|
||||||
@@ -46,12 +47,13 @@ import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil
|
|||||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||||
import com.mogo.och.common.module.utils.PinYinUtil
|
import com.mogo.och.common.module.utils.PinYinUtil
|
||||||
import com.mogo.och.common.module.voice.VoiceManager
|
import com.mogo.och.common.module.voice.VoiceManager
|
||||||
|
import com.mogo.och.common.module.voice.VoiceNotice
|
||||||
|
import com.mogo.tts.base.LangTtsEntity
|
||||||
|
import com.mogo.tts.base.LanguageType
|
||||||
import io.reactivex.Observable
|
import io.reactivex.Observable
|
||||||
import io.reactivex.disposables.Disposable
|
import io.reactivex.disposables.Disposable
|
||||||
import io.reactivex.schedulers.Schedulers
|
import io.reactivex.schedulers.Schedulers
|
||||||
import mogo.telematics.pad.MessagePad
|
import mogo.telematics.pad.MessagePad
|
||||||
import mogo_msg.MogoReportMsg
|
|
||||||
import system_master.SystemStatusInfo
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.concurrent.ConcurrentHashMap
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
@@ -74,7 +76,7 @@ object CharterPassengerModel {
|
|||||||
private var mContext: Context = AbsMogoApplication.getApp()
|
private var mContext: Context = AbsMogoApplication.getApp()
|
||||||
|
|
||||||
//Model->Presenter:自动驾驶状态相关
|
//Model->Presenter:自动驾驶状态相关
|
||||||
var mADASStatusCallback: IBusPassengerADASStatusCallback? = null
|
var mAutoStatusChnageListener = ConcurrentHashMap<String, ICharterPassengerAutoStatusChangeCallback>()
|
||||||
|
|
||||||
// 定位监听
|
// 定位监听
|
||||||
private val mControllerStatusCallbackMap =
|
private val mControllerStatusCallbackMap =
|
||||||
@@ -109,6 +111,7 @@ object CharterPassengerModel {
|
|||||||
private var broadcastList : MutableMap<String,Boolean> = HashMap()
|
private var broadcastList : MutableMap<String,Boolean> = HashMap()
|
||||||
// 到站仅一次
|
// 到站仅一次
|
||||||
private val endKey = "arrivedLine"
|
private val endKey = "arrivedLine"
|
||||||
|
private val ending100Key = "arrivingLine"
|
||||||
private val min5Speak = "min5Speak"
|
private val min5Speak = "min5Speak"
|
||||||
|
|
||||||
private var carTypeChageListener: IOrderChangeCallback?=null
|
private var carTypeChageListener: IOrderChangeCallback?=null
|
||||||
@@ -156,6 +159,14 @@ object CharterPassengerModel {
|
|||||||
}
|
}
|
||||||
mControllerStatusCallbackMap[tag] = callback
|
mControllerStatusCallbackMap[tag] = callback
|
||||||
}
|
}
|
||||||
|
fun setAutoStatusCallback(tag: String, callback: ICharterPassengerAutoStatusChangeCallback?) {
|
||||||
|
if (tag.isBlank()) return
|
||||||
|
if (callback == null) {
|
||||||
|
mAutoStatusChnageListener.remove(tag)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
mAutoStatusChnageListener[tag] = callback
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 启动轮询查询司机登录状态
|
* 启动轮询查询司机登录状态
|
||||||
@@ -210,8 +221,6 @@ object CharterPassengerModel {
|
|||||||
// 自动驾驶状态监听
|
// 自动驾驶状态监听
|
||||||
private val mGoAutopilotStatusListener: IMoGoAutopilotStatusListener =
|
private val mGoAutopilotStatusListener: IMoGoAutopilotStatusListener =
|
||||||
object : IMoGoAutopilotStatusListener {
|
object : IMoGoAutopilotStatusListener {
|
||||||
override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) {}
|
|
||||||
override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) {}
|
|
||||||
override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) {
|
override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) {
|
||||||
val state = autoPilotStatusInfo.state
|
val state = autoPilotStatusInfo.state
|
||||||
when (state) {
|
when (state) {
|
||||||
@@ -221,17 +230,17 @@ object CharterPassengerModel {
|
|||||||
IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> {}
|
IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> {}
|
||||||
else -> {}
|
else -> {}
|
||||||
}
|
}
|
||||||
mPreAutoStatus = state
|
if(mPreAutoStatus!=state){
|
||||||
|
mPreAutoStatus = state
|
||||||
|
mAutoStatusChnageListener.forEach {
|
||||||
|
it.value.onAutoStatusChange(state)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onAutopilotSNRequest() {}
|
|
||||||
override fun onAutopilotArriveAtStation(arrivalNotification: MessagePad.ArrivalNotification?) {
|
override fun onAutopilotArriveAtStation(arrivalNotification: MessagePad.ArrivalNotification?) {
|
||||||
mADASStatusCallback?.onAutopilotArriveEnd()
|
|
||||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG,"底盘给到站信息")
|
CallerLogger.d(SceneConstant.M_BUS_P + TAG,"底盘给到站信息")
|
||||||
arriveDest()
|
arriveDest()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onAutopilotStatusRespByQuery(status: SystemStatusInfo.StatusInfo) {}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -428,6 +437,10 @@ object CharterPassengerModel {
|
|||||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG,"小于15米到站1")
|
CallerLogger.d(SceneConstant.M_BUS_P + TAG,"小于15米到站1")
|
||||||
arriveDest()
|
arriveDest()
|
||||||
}
|
}
|
||||||
|
if (calculateLineDistance < CharterPassengerConst.ARRIVE_SOON_AT_START_STATION_DISTANCE) {
|
||||||
|
CallerLogger.d(SceneConstant.M_BUS_P + TAG,"小于100米到站")
|
||||||
|
arriveDestSoon()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 启动时间校准
|
// 启动时间校准
|
||||||
@@ -677,6 +690,10 @@ object CharterPassengerModel {
|
|||||||
"---lastSumLength: " + lastSumLength + "----lastTime : " + lastTime
|
"---lastSumLength: " + lastSumLength + "----lastTime : " + lastTime
|
||||||
+ " thread = " + Thread.currentThread().name
|
+ " thread = " + Thread.currentThread().name
|
||||||
)
|
)
|
||||||
|
if (lastSumLength < CharterPassengerConst.ARRIVE_SOON_AT_START_STATION_DISTANCE) {
|
||||||
|
CallerLogger.d(M_BUS_P + TAG,"小于100米到站2")
|
||||||
|
arriveDestSoon()
|
||||||
|
}
|
||||||
if (lastSumLength < CharterPassengerConst.ARRIVE_AT_START_STATION_DISTANCE) {
|
if (lastSumLength < CharterPassengerConst.ARRIVE_AT_START_STATION_DISTANCE) {
|
||||||
CallerLogger.d(M_BUS_P + TAG,"小于15米到站2")
|
CallerLogger.d(M_BUS_P + TAG,"小于15米到站2")
|
||||||
arriveDest()
|
arriveDest()
|
||||||
@@ -895,6 +912,20 @@ object CharterPassengerModel {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Synchronized
|
||||||
|
fun arriveDestSoon() {
|
||||||
|
orderInfo?.let { order ->
|
||||||
|
order.siteId?.let { siteId ->
|
||||||
|
if (order.arriveStatus == OrderInfoResponse.ARRIVING) {
|
||||||
|
if (broadcastList["${siteId}$ending100Key"] == null || broadcastList["${siteId}$ending100Key"] == false) {
|
||||||
|
val string = mContext.getString(com.mogo.och.common.module.R.string.arrived_station_zh)
|
||||||
|
VoiceNotice.showNotice(string,)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun cleanbroadcastListInfo(){
|
fun cleanbroadcastListInfo(){
|
||||||
broadcastList.clear()
|
broadcastList.clear()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStat
|
|||||||
import com.mogo.och.common.module.manager.devicemanage.data.AirconditionStatus
|
import com.mogo.och.common.module.manager.devicemanage.data.AirconditionStatus
|
||||||
import com.mogo.och.common.module.manager.devicemanage.data.HeaterStatue
|
import com.mogo.och.common.module.manager.devicemanage.data.HeaterStatue
|
||||||
import com.mogo.och.common.module.manager.devicemanage.data.LightStatus
|
import com.mogo.och.common.module.manager.devicemanage.data.LightStatus
|
||||||
|
import com.mogo.och.common.module.voice.VoiceNotice
|
||||||
import io.reactivex.disposables.Disposable
|
import io.reactivex.disposables.Disposable
|
||||||
|
|
||||||
class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
|
class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
|
||||||
@@ -145,7 +146,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
|
|||||||
LightAirconditionDoorStatusManager.airconditionStatus.windSpeed!=windSpeedCmd&&
|
LightAirconditionDoorStatusManager.airconditionStatus.windSpeed!=windSpeedCmd&&
|
||||||
LightAirconditionDoorStatusManager.airconditionStatus.temperature!=temperatureCmd&&
|
LightAirconditionDoorStatusManager.airconditionStatus.temperature!=temperatureCmd&&
|
||||||
LightAirconditionDoorStatusManager.airconditionStatus.pattert!=modeCmd) {
|
LightAirconditionDoorStatusManager.airconditionStatus.pattert!=modeCmd) {
|
||||||
ToastUtils.showShort("空调操作未生效,请稍后重试吧~")
|
ToastUtils.showShort("控制系统繁忙,请稍后再试")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -155,7 +156,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
|
|||||||
disposeSubscribe(airconditionDisposable)
|
disposeSubscribe(airconditionDisposable)
|
||||||
airconditionDisposable = createSubscribe(10000){
|
airconditionDisposable = createSubscribe(10000){
|
||||||
if (LightAirconditionDoorStatusManager.airconditionStatus.isOpen) {
|
if (LightAirconditionDoorStatusManager.airconditionStatus.isOpen) {
|
||||||
ToastUtils.showShort("空调操作未生效,请稍后重试吧~")
|
ToastUtils.showShort("控制系统繁忙,请稍后再试")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -192,14 +193,14 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
|
|||||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(1)
|
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(1)
|
||||||
subscribeLightTop1 = createSubscribe{
|
subscribeLightTop1 = createSubscribe{
|
||||||
if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) {
|
if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) {
|
||||||
ToastUtils.showShort("操作未生效,请稍后重试吧~")
|
ToastUtils.showShort("控制系统繁忙,请稍后再试")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(2)
|
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(2)
|
||||||
subscribeLightTop1 = createSubscribe{
|
subscribeLightTop1 = createSubscribe{
|
||||||
if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) {
|
if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) {
|
||||||
ToastUtils.showShort("操作未生效,请稍后重试吧~")
|
ToastUtils.showShort("控制系统繁忙,请稍后再试")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -211,14 +212,14 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
|
|||||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(1)
|
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(1)
|
||||||
subscribeLightTop2 = createSubscribe{
|
subscribeLightTop2 = createSubscribe{
|
||||||
if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) {
|
if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) {
|
||||||
ToastUtils.showShort("操作未生效,请稍后重试吧~")
|
ToastUtils.showShort("控制系统繁忙,请稍后再试")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(2)
|
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(2)
|
||||||
subscribeLightTop2 = createSubscribe{
|
subscribeLightTop2 = createSubscribe{
|
||||||
if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) {
|
if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) {
|
||||||
ToastUtils.showShort("操作未生效,请稍后重试吧~")
|
ToastUtils.showShort("控制系统繁忙,请稍后再试")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -230,14 +231,14 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
|
|||||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(1)
|
CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(1)
|
||||||
subscribeLightAtmosphere = createSubscribe{
|
subscribeLightAtmosphere = createSubscribe{
|
||||||
if (!LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) {
|
if (!LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) {
|
||||||
ToastUtils.showShort("操作未生效,请稍后重试吧~")
|
ToastUtils.showShort("控制系统繁忙,请稍后再试")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(2)
|
CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(2)
|
||||||
subscribeLightAtmosphere = createSubscribe{
|
subscribeLightAtmosphere = createSubscribe{
|
||||||
if (LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) {
|
if (LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) {
|
||||||
ToastUtils.showShort("操作未生效,请稍后重试吧~")
|
ToastUtils.showShort("控制系统繁忙,请稍后再试")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import com.mogo.commons.voice.AIAssist
|
|||||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
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.autopilot.CallerAutoPilotStatusListenerManager
|
||||||
|
import com.mogo.eagle.core.function.call.order.CallerOrderListenerManager
|
||||||
import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager
|
import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager
|
||||||
import com.mogo.eagle.core.function.view.SiteMarkerBean
|
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.CallerLogger
|
||||||
@@ -51,7 +52,7 @@ class BusPassengerPresenter(view: MainFragment?) :
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val TAG = "BusPassengerPresenter"
|
private const val TAG = "BusPassengerPresenter"
|
||||||
private const val KEY4SHOWNOVICEGUIDANCE = "showNoviceGuidanceOrderNor"
|
const val KEY4SHOWNOVICEGUIDANCE = "showNoviceGuidanceOrderNor"
|
||||||
|
|
||||||
}
|
}
|
||||||
override fun onCreate(owner: LifecycleOwner) {
|
override fun onCreate(owner: LifecycleOwner) {
|
||||||
@@ -145,6 +146,7 @@ class BusPassengerPresenter(view: MainFragment?) :
|
|||||||
clearShowNoviceGuidanceSharedPrefs()
|
clearShowNoviceGuidanceSharedPrefs()
|
||||||
}
|
}
|
||||||
OrderStatusEnum.OrderNoLine -> {
|
OrderStatusEnum.OrderNoLine -> {
|
||||||
|
CallerOrderListenerManager.invokeOrderRemoval();
|
||||||
showNoviceGuidance()
|
showNoviceGuidance()
|
||||||
}
|
}
|
||||||
OrderStatusEnum.OrdersWithLine -> {}
|
OrderStatusEnum.OrdersWithLine -> {}
|
||||||
@@ -183,17 +185,14 @@ class BusPassengerPresenter(view: MainFragment?) :
|
|||||||
val currentOrderInfo = CharterPassengerModel.getCurrentOrderInfo()
|
val currentOrderInfo = CharterPassengerModel.getCurrentOrderInfo()
|
||||||
currentOrderInfo?.orderNo?.let {order->
|
currentOrderInfo?.orderNo?.let {order->
|
||||||
val stringSet = SharedPrefs.getInstance(context).getStringSet(KEY4SHOWNOVICEGUIDANCE)
|
val stringSet = SharedPrefs.getInstance(context).getStringSet(KEY4SHOWNOVICEGUIDANCE)
|
||||||
fun setData2SP(){
|
|
||||||
val orderNoSet = mutableSetOf(order)
|
|
||||||
SharedPrefs.getInstance(context).putStringSet(KEY4SHOWNOVICEGUIDANCE, orderNoSet)
|
|
||||||
}
|
|
||||||
if(stringSet==null){
|
if(stringSet==null){
|
||||||
setData2SP()
|
|
||||||
}else{
|
}else{
|
||||||
if (stringSet.contains(order)) {
|
if (stringSet.contains(order)) {
|
||||||
return
|
return
|
||||||
}else{
|
}else{
|
||||||
setData2SP()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UiThreadHandler.post({
|
UiThreadHandler.post({
|
||||||
|
|||||||
@@ -5,12 +5,16 @@ import com.mogo.och.bus.passenger.model.CharterPassengerModel
|
|||||||
import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment
|
import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment
|
||||||
import com.mogo.och.bus.passenger.ui.dialogfragment.NoviceGuidanceFragment
|
import com.mogo.och.bus.passenger.ui.dialogfragment.NoviceGuidanceFragment
|
||||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||||
|
import com.mogo.och.common.module.utils.RxUtils
|
||||||
|
import io.reactivex.disposables.Disposable
|
||||||
|
|
||||||
class CharterPassengerNoviceGuidancePresenter(view: NoviceGuidanceFragment?) :
|
class CharterPassengerNoviceGuidancePresenter(view: NoviceGuidanceFragment?) :
|
||||||
BusBasePassengerFunctionDevicePresenter<NoviceGuidanceFragment?>(view) {
|
BusBasePassengerFunctionDevicePresenter<NoviceGuidanceFragment?>(view) {
|
||||||
companion object{
|
companion object{
|
||||||
private const val TAG = "BusPassengerFunctionPresenter"
|
private const val TAG = "BusPassengerFunctionPresenter"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var createSubscribe: Disposable?=null
|
||||||
override fun onCreate(owner: LifecycleOwner) {
|
override fun onCreate(owner: LifecycleOwner) {
|
||||||
super.onCreate(owner)
|
super.onCreate(owner)
|
||||||
}
|
}
|
||||||
@@ -33,5 +37,16 @@ class CharterPassengerNoviceGuidancePresenter(view: NoviceGuidanceFragment?) :
|
|||||||
|
|
||||||
override fun onDestroy(owner: LifecycleOwner) {
|
override fun onDestroy(owner: LifecycleOwner) {
|
||||||
super.onDestroy(owner)
|
super.onDestroy(owner)
|
||||||
|
createSubscribe?.let {
|
||||||
|
if (!it.isDisposed) {
|
||||||
|
it.dispose()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun exitDialogFragment() {
|
||||||
|
createSubscribe = RxUtils.createSubscribe(15_000) {
|
||||||
|
mView?.dismissAllowingStateLoss()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -16,6 +16,8 @@ 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.mogo.logger.scene.SceneConstant.Companion.M_BUS_P
|
||||||
import com.mogo.eagle.core.utilcode.util.*
|
import com.mogo.eagle.core.utilcode.util.*
|
||||||
import com.mogo.och.bus.passenger.R
|
import com.mogo.och.bus.passenger.R
|
||||||
|
import com.mogo.och.bus.passenger.model.CharterPassengerModel
|
||||||
|
import com.mogo.och.bus.passenger.presenter.BusPassengerPresenter
|
||||||
import com.mogo.och.bus.passenger.presenter.CharterPassengerNoviceGuidancePresenter
|
import com.mogo.och.bus.passenger.presenter.CharterPassengerNoviceGuidancePresenter
|
||||||
import com.mogo.och.bus.passenger.ui.MainFragment
|
import com.mogo.och.bus.passenger.ui.MainFragment
|
||||||
import com.mogo.och.common.module.voice.VoiceNotice
|
import com.mogo.och.common.module.voice.VoiceNotice
|
||||||
@@ -122,6 +124,11 @@ class NoviceGuidanceFragment :
|
|||||||
}
|
}
|
||||||
v_next_page_notice.setOnClickListener {
|
v_next_page_notice.setOnClickListener {
|
||||||
setTargetVisable(complierGuidance = true)
|
setTargetVisable(complierGuidance = true)
|
||||||
|
val currentOrderInfo = CharterPassengerModel.getCurrentOrderInfo()
|
||||||
|
currentOrderInfo?.orderNo?.let { order ->
|
||||||
|
val orderNoSet = mutableSetOf(order)
|
||||||
|
SharedPrefs.getInstance(requireContext()).putStringSet(BusPassengerPresenter.KEY4SHOWNOVICEGUIDANCE, orderNoSet)
|
||||||
|
}
|
||||||
if (m1_novice_guidance_complier_tts) {
|
if (m1_novice_guidance_complier_tts) {
|
||||||
val m1NoviceGuidanceStopSiteTts =
|
val m1NoviceGuidanceStopSiteTts =
|
||||||
AbsMogoApplication.getApp().getString(R.string.m1_novice_guidance_complier_tts)
|
AbsMogoApplication.getApp().getString(R.string.m1_novice_guidance_complier_tts)
|
||||||
@@ -193,6 +200,7 @@ class NoviceGuidanceFragment :
|
|||||||
group_complete_guidance.visibility = View.VISIBLE
|
group_complete_guidance.visibility = View.VISIBLE
|
||||||
actv_click_go_explore.text = "点我进入主页"
|
actv_click_go_explore.text = "点我进入主页"
|
||||||
pageStatus = PageStatus.EndPage
|
pageStatus = PageStatus.EndPage
|
||||||
|
mPresenter?.exitDialogFragment()
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ class M1OrderLineFragment :
|
|||||||
aciv_driver_refuse_group.visibility = View.GONE
|
aciv_driver_refuse_group.visibility = View.GONE
|
||||||
g_loading_group.visibility = View.GONE
|
g_loading_group.visibility = View.GONE
|
||||||
g_lines_sites_data.visibility = View.GONE
|
g_lines_sites_data.visibility = View.GONE
|
||||||
RxUtils.createSubscribe {
|
RxUtils.createSubscribe(3_000) {
|
||||||
dismiss?.closeDialog()
|
dismiss?.closeDialog()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -154,7 +154,7 @@ class M1OrderLineFragment :
|
|||||||
aciv_driver_refuse_group.visibility = View.VISIBLE
|
aciv_driver_refuse_group.visibility = View.VISIBLE
|
||||||
g_loading_group.visibility = View.GONE
|
g_loading_group.visibility = View.GONE
|
||||||
g_lines_sites_data.visibility = View.GONE
|
g_lines_sites_data.visibility = View.GONE
|
||||||
RxUtils.createSubscribe {
|
RxUtils.createSubscribe(3_000) {
|
||||||
showSelectData()
|
showSelectData()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,10 +15,13 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_
|
|||||||
import com.mogo.eagle.core.utilcode.util.ActivityUtils
|
import com.mogo.eagle.core.utilcode.util.ActivityUtils
|
||||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||||
import com.mogo.och.bus.passenger.R
|
import com.mogo.och.bus.passenger.R
|
||||||
|
import com.mogo.och.bus.passenger.callback.ICharterPassengerAutoStatusChangeCallback
|
||||||
import com.mogo.och.bus.passenger.model.CharterPassengerModel
|
import com.mogo.och.bus.passenger.model.CharterPassengerModel
|
||||||
import com.mogo.och.bus.passenger.ui.view.bottom.BottomClickView
|
import com.mogo.och.bus.passenger.ui.view.bottom.BottomClickView
|
||||||
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStatusManager
|
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStatusManager
|
||||||
|
import com.mogo.och.common.module.utils.RxUtils
|
||||||
import com.mogo.och.common.module.utils.SoundPoolHelper
|
import com.mogo.och.common.module.utils.SoundPoolHelper
|
||||||
|
import io.reactivex.disposables.Disposable
|
||||||
import kotlinx.android.synthetic.main.m1_bottom_bar.view.*
|
import kotlinx.android.synthetic.main.m1_bottom_bar.view.*
|
||||||
|
|
||||||
class GoView @JvmOverloads constructor(
|
class GoView @JvmOverloads constructor(
|
||||||
@@ -29,6 +32,8 @@ class GoView @JvmOverloads constructor(
|
|||||||
|
|
||||||
var applyClickListener: BottomClickView.ApplyClickLintener?=null
|
var applyClickListener: BottomClickView.ApplyClickLintener?=null
|
||||||
|
|
||||||
|
var startAutoTimeOut: Disposable?=null
|
||||||
|
|
||||||
companion object{
|
companion object{
|
||||||
private const val TAG = "GoView"
|
private const val TAG = "GoView"
|
||||||
}
|
}
|
||||||
@@ -77,7 +82,7 @@ class GoView @JvmOverloads constructor(
|
|||||||
ToastUtils.showShort("启动自动驾驶中")
|
ToastUtils.showShort("启动自动驾驶中")
|
||||||
CallerAutoPilotControlManager.sendPlanningCmd(2)
|
CallerAutoPilotControlManager.sendPlanningCmd(2)
|
||||||
CharterPassengerModel.startAutopilot()
|
CharterPassengerModel.startAutopilot()
|
||||||
CharterPassengerModel.leaveStation()
|
onceRegisterAutoStatus()
|
||||||
CharterPassengerModel.sendTripInfo()
|
CharterPassengerModel.sendTripInfo()
|
||||||
}
|
}
|
||||||
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> {
|
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> {
|
||||||
@@ -92,4 +97,35 @@ class GoView @JvmOverloads constructor(
|
|||||||
}
|
}
|
||||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getActivityByContext(context), R.raw.bus_di)
|
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getActivityByContext(context), R.raw.bus_di)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onDetachedFromWindow() {
|
||||||
|
super.onDetachedFromWindow()
|
||||||
|
startAutoTimeOut?.let {
|
||||||
|
if (!it.isDisposed) {
|
||||||
|
it.dispose()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun onceRegisterAutoStatus() {
|
||||||
|
CharterPassengerModel.setAutoStatusCallback(TAG,null)
|
||||||
|
CharterPassengerModel.setAutoStatusCallback(TAG,object :ICharterPassengerAutoStatusChangeCallback{
|
||||||
|
override fun onAutoStatusChange(newState: Int) {
|
||||||
|
if(newState==IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){
|
||||||
|
CharterPassengerModel.leaveStation()
|
||||||
|
}
|
||||||
|
CharterPassengerModel.setAutoStatusCallback(TAG,null)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
startAutoTimeOut?.let {
|
||||||
|
if (!it.isDisposed) {
|
||||||
|
it.dispose()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
startAutoTimeOut = RxUtils.createSubscribe(20_000) {
|
||||||
|
val string = AbsMogoApplication.getApp().getString(R.string.m1_start_auto_fail)
|
||||||
|
ToastUtils.showLong(string)
|
||||||
|
CharterPassengerModel.setAutoStatusCallback(TAG,null)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -9,10 +9,13 @@ import android.view.ViewGroup
|
|||||||
import androidx.constraintlayout.widget.ConstraintLayout
|
import androidx.constraintlayout.widget.ConstraintLayout
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import chassis.ChassisStatesOuterClass
|
import chassis.ChassisStatesOuterClass
|
||||||
|
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo
|
||||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||||
|
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoBatteryManagementSystemListener
|
import com.mogo.eagle.core.function.api.autopilot.IMoGoBatteryManagementSystemListener
|
||||||
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener
|
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener
|
||||||
import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener
|
import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener
|
||||||
|
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||||
import com.mogo.eagle.core.function.call.autopilot.CallerBatteryManagementSystemListenerManager
|
import com.mogo.eagle.core.function.call.autopilot.CallerBatteryManagementSystemListenerManager
|
||||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
||||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
|
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
|
||||||
@@ -22,6 +25,7 @@ import com.mogo.eagle.core.utilcode.util.ClickUtils
|
|||||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||||
import com.mogo.och.bus.passenger.R
|
import com.mogo.och.bus.passenger.R
|
||||||
import com.mogo.och.bus.passenger.bean.event.DebugView
|
import com.mogo.och.bus.passenger.bean.event.DebugView
|
||||||
|
import com.mogo.och.bus.passenger.model.CharterPassengerModel
|
||||||
import kotlinx.android.synthetic.main.m1_statusview_datetime.view.*
|
import kotlinx.android.synthetic.main.m1_statusview_datetime.view.*
|
||||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||||
import org.greenrobot.eventbus.EventBus
|
import org.greenrobot.eventbus.EventBus
|
||||||
@@ -31,7 +35,7 @@ class StatusBarView @JvmOverloads constructor(
|
|||||||
context: Context,
|
context: Context,
|
||||||
attrs: AttributeSet? = null,
|
attrs: AttributeSet? = null,
|
||||||
defStyleAttr: Int = 0
|
defStyleAttr: Int = 0
|
||||||
) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoSkinModeChangeListener, IViewControlListener, IMoGoBatteryManagementSystemListener {
|
) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoSkinModeChangeListener, IViewControlListener, IMoGoBatteryManagementSystemListener, IMoGoAutopilotStatusListener {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val TAG = "StatusBarView"
|
const val TAG = "StatusBarView"
|
||||||
@@ -76,6 +80,8 @@ class StatusBarView @JvmOverloads constructor(
|
|||||||
|
|
||||||
CallerBatteryManagementSystemListenerManager.addListener(TAG,this)
|
CallerBatteryManagementSystemListenerManager.addListener(TAG,this)
|
||||||
|
|
||||||
|
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
|
||||||
|
|
||||||
updateStatusBarRightView(FunctionBuildConfig.isDemoMode, "demoMode", DemoModeView(this.context))
|
updateStatusBarRightView(FunctionBuildConfig.isDemoMode, "demoMode", DemoModeView(this.context))
|
||||||
|
|
||||||
bizz_view.setOnClickListener { continuousClick(bizz) }
|
bizz_view.setOnClickListener { continuousClick(bizz) }
|
||||||
@@ -84,6 +90,27 @@ class StatusBarView @JvmOverloads constructor(
|
|||||||
|
|
||||||
progress.progress = 50
|
progress.progress = 50
|
||||||
tv_power_cos.text = "50%"
|
tv_power_cos.text = "50%"
|
||||||
|
|
||||||
|
val state = CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state
|
||||||
|
setAutoPilotSatusInfo(state)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setAutoPilotSatusInfo(state: Int) {
|
||||||
|
when (state) {
|
||||||
|
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {
|
||||||
|
actv_auto_status.text = "安全接管中"
|
||||||
|
}
|
||||||
|
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {
|
||||||
|
actv_auto_status.text = "安全接管中"
|
||||||
|
}
|
||||||
|
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> {
|
||||||
|
actv_auto_status.text = "自动驾驶中"
|
||||||
|
}
|
||||||
|
IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> {
|
||||||
|
actv_auto_status.text = "远程代驾中"
|
||||||
|
}
|
||||||
|
else -> {}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onSkinModeChange(skinMode: Int) {
|
override fun onSkinModeChange(skinMode: Int) {
|
||||||
@@ -93,6 +120,10 @@ class StatusBarView @JvmOverloads constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) {
|
||||||
|
setAutoPilotSatusInfo(autoPilotStatusInfo.state)
|
||||||
|
}
|
||||||
|
|
||||||
override fun updateStatusBarLeftView(insert: Boolean, tag: String, viewGroup: ViewGroup) {
|
override fun updateStatusBarLeftView(insert: Boolean, tag: String, viewGroup: ViewGroup) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,14 +39,6 @@
|
|||||||
android:layout_width="@dimen/dp_148"
|
android:layout_width="@dimen/dp_148"
|
||||||
android:layout_height="@dimen/dp_150"/>
|
android:layout_height="@dimen/dp_150"/>
|
||||||
|
|
||||||
<com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugViewTrigger
|
|
||||||
android:layout_height="@dimen/dp_400"
|
|
||||||
android:layout_width="@dimen/dp_100"
|
|
||||||
android:longClickable="true"
|
|
||||||
app:layout_constraintStart_toStartOf="@+id/mapBizView"
|
|
||||||
app:layout_constraintTop_toTopOf="@+id/mapBizView"
|
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/mapBizView" />
|
|
||||||
|
|
||||||
<!--浓雾预警动画-->
|
<!--浓雾预警动画-->
|
||||||
<com.mogo.eagle.core.function.hmi.ui.widget.V2XFogEventView
|
<com.mogo.eagle.core.function.hmi.ui.widget.V2XFogEventView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -276,6 +268,7 @@
|
|||||||
<androidx.constraintlayout.widget.Group
|
<androidx.constraintlayout.widget.Group
|
||||||
android:id="@+id/group_debug"
|
android:id="@+id/group_debug"
|
||||||
app:constraint_referenced_ids="debug_arrive_dest,debug_show_noviceGuidance"
|
app:constraint_referenced_ids="debug_arrive_dest,debug_show_noviceGuidance"
|
||||||
|
android:visibility="gone"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"/>
|
android:layout_height="wrap_content"/>
|
||||||
|
|
||||||
|
|||||||
@@ -7,10 +7,18 @@
|
|||||||
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
|
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
|
||||||
tools:ignore="MissingDefaultResource">
|
tools:ignore="MissingDefaultResource">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/actv_auto_status"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toStartOf="@+id/viewTextClock"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="@dimen/dp_47"/>
|
||||||
|
|
||||||
<TextClock
|
<TextClock
|
||||||
android:id="@+id/viewTextClock"
|
android:id="@+id/viewTextClock"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="@dimen/dp_64"
|
android:layout_height="@dimen/dp_47"
|
||||||
android:format12Hour="HH:mm MM月dd日 EEEE"
|
android:format12Hour="HH:mm MM月dd日 EEEE"
|
||||||
android:format24Hour="HH:mm MM月dd日 EEEE"
|
android:format24Hour="HH:mm MM月dd日 EEEE"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
|
|||||||
@@ -47,8 +47,7 @@
|
|||||||
<string name="m1_novice_guidance_complier_tts">太棒了!您已完成乘车指南,更多功能欢迎探索~蘑菇小助手预祝您旅途愉快</string>
|
<string name="m1_novice_guidance_complier_tts">太棒了!您已完成乘车指南,更多功能欢迎探索~蘑菇小助手预祝您旅途愉快</string>
|
||||||
|
|
||||||
<string name="m1_close_door_and_startauto">先关闭车门再启动吧~</string>
|
<string name="m1_close_door_and_startauto">先关闭车门再启动吧~</string>
|
||||||
<!-- <string name="m1_novice_guidance_tts">车辆起步,扶稳坐好哟,前方到站XXX</string>-->
|
<string name="m1_start_auto_fail">自驾系统繁忙,稍后再试试吧~</string>
|
||||||
<!-- <string name="m1_novice_guidance_tts">自驾系统繁忙,稍后再试试吧~</string>-->
|
|
||||||
|
|
||||||
<!-- <string name="m1_novice_guidance_tts">正在为您靠边停车,扶稳坐好哟</string>-->
|
<!-- <string name="m1_novice_guidance_tts">正在为您靠边停车,扶稳坐好哟</string>-->
|
||||||
<!-- <string name="m1_novice_guidance_tts">靠边停车成功</string>-->
|
<!-- <string name="m1_novice_guidance_tts">靠边停车成功</string>-->
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
<string name="leave_station_en">The next station is %1$s</string>
|
<string name="leave_station_en">The next station is %1$s</string>
|
||||||
<string name="leave_station_ko">전방에서 역에 도착하는 %1$s</string>
|
<string name="leave_station_ko">전방에서 역에 도착하는 %1$s</string>
|
||||||
|
|
||||||
<string name="surplus5_order_zh">距离包车结束剩余5分钟,请您合理安排游玩时间</string>
|
<string name="surplus5_order_zh">5分钟后包车就要结束了,稍后小助手会自动为您寻找停车点</string>
|
||||||
<string name="surplus5_order_en">There are 5 minutes left from the end of chartering. Please arrange your time reasonably</string>
|
<string name="surplus5_order_en">There are 5 minutes left from the end of chartering. Please arrange your time reasonably</string>
|
||||||
<string name="surplus5_order_ko">전세버스 종료 후 5분 남았습니다. 여행 시간을 합리적으로 안배해 주십시오</string>
|
<string name="surplus5_order_ko">전세버스 종료 후 5분 남았습니다. 여행 시간을 합리적으로 안배해 주십시오</string>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user