Merge branch 'dev_robotaxi-d_230912_6.1.0' into dev_minibus-d_230919_6.1.0
@@ -379,6 +379,11 @@ public class OrderModel {
|
||||
};
|
||||
|
||||
private final OchAdasStartFailureCallback mAdasStartFailureListener = new OchAdasStartFailureCallback() {
|
||||
@Override
|
||||
public void brakeStatusChanged(boolean isBrakeAvailable) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) {
|
||||
BusAnalyticsManager.INSTANCE.triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage);
|
||||
|
||||
@@ -87,7 +87,17 @@ object CharterTrajectoryManager {
|
||||
// 5. 轨迹管理_轨迹下载超时
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() 轨迹下载超时")
|
||||
// ToastUtils.showShort("轨迹下载超时");
|
||||
} else if ("ISSM_FUNC_AUTO_PILOT_READY" == guardianInfo.getCode()) {
|
||||
} else if ("EMAP_ATTITUDE_INIT_FAILED" == guardianInfo.getCode()) {
|
||||
CallerMsgBoxManager.saveMsgBox(
|
||||
MsgBoxBean(
|
||||
MsgBoxType.OPERATION,
|
||||
OperationMsg(
|
||||
System.currentTimeMillis(), "请尽快操作车辆至适当位置掉头!", -1
|
||||
)
|
||||
)
|
||||
)
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getTopActivity(), R.raw.startautopilot)
|
||||
} else if ("EMAP_ATTITUDE_INIT_FAILED" == guardianInfo.getCode()) {
|
||||
// 收到ssm的自动驾驶变为ready,再次下发轨迹下载.解决:域控重启,或者102域控启动太早,107节点初始化未完成导致的轨迹未进行下载。
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() ssm ready,再次发起下载")
|
||||
syncTrajectoryInfo(get().getBusOrderResult()?.lineId!!,
|
||||
|
||||
@@ -333,6 +333,9 @@ class DriverM1Model {
|
||||
mControllerStatusCallback?.onStartAdasFailure()
|
||||
}
|
||||
}
|
||||
|
||||
override fun brakeStatusChanged(isBrakeAvailable: Boolean) {
|
||||
}
|
||||
}
|
||||
|
||||
//监听网络变化,避免启动机器时无网导致无法更新订单信息
|
||||
|
||||
@@ -53,6 +53,7 @@ import io.reactivex.Observable
|
||||
import io.reactivex.disposables.Disposable
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import mogo_msg.MogoReportMsg
|
||||
import java.util.*
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import java.util.concurrent.TimeUnit
|
||||
@@ -197,6 +198,14 @@ object CharterPassengerModel {
|
||||
d(M_BUS_P + TAG, "底盘给到站信息")
|
||||
arriveDest()
|
||||
}
|
||||
override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) {
|
||||
super.onAutopilotGuardian(guardianInfo)
|
||||
guardianInfo?.let {
|
||||
if (it.code=="IMAP_TRA_LOADED") {
|
||||
ToastCharterUtils.showToastShort("请等待车辆完成掉头后再出发吧~")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -13,6 +13,9 @@ import kotlinx.android.synthetic.main.m1_itinerary_info.view.tv_distance_surplus
|
||||
import kotlinx.android.synthetic.main.m1_itinerary_info.view.tv_distance_unit
|
||||
import kotlinx.android.synthetic.main.m1_itinerary_info.view.tv_speed
|
||||
|
||||
/**
|
||||
* 速度、剩余时间、剩余距离和到达时间
|
||||
*/
|
||||
class ItineraryView : ConstraintLayout, ItineraryViewModel.ItineraryViewCallback {
|
||||
|
||||
private val TAG = "ItineraryView"
|
||||
|
||||
@@ -19,6 +19,9 @@ import kotlinx.android.synthetic.main.m1_devices_fragment.view.actv_order_times
|
||||
import kotlinx.android.synthetic.main.m1_devices_fragment.view.cl_order_info
|
||||
import kotlinx.android.synthetic.main.m1_devices_fragment.view.cl_order_info_endorder_comfit
|
||||
|
||||
/**
|
||||
* 剩余时间和结束订单入口
|
||||
*/
|
||||
class OrderInfoView : ConstraintLayout, OrderInfoViewModel.ItineraryViewCallback {
|
||||
|
||||
private val TAG = "OrderInfoView"
|
||||
|
||||
@@ -41,6 +41,9 @@ import kotlinx.android.synthetic.main.m1_order_loading.view.iv_loading_wait_ent
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
/**
|
||||
* 选择线路
|
||||
*/
|
||||
class SelectLineView : ConstraintLayout, SelectLineViewModel.SelectLineViewCallback {
|
||||
|
||||
private val TAG = "OrderInfoView"
|
||||
|
||||
@@ -72,6 +72,9 @@ import kotlinx.android.synthetic.main.m1_soft_fragment.view.tv_temperature_title
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
/**
|
||||
* 空调、暖风机、声音控制
|
||||
*/
|
||||
class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallback {
|
||||
|
||||
private val TAG = "OrderInfoView"
|
||||
|
||||
@@ -90,12 +90,14 @@
|
||||
app:layout_constraintEnd_toEndOf="@+id/viewBusPM1MsgBoxButton"
|
||||
app:layout_constraintTop_toBottomOf="@+id/viewBusPM1MsgBoxButton" />
|
||||
|
||||
<!--速度、剩余时间、剩余距离和到达时间-->
|
||||
<com.mogo.och.charter.passenger.ui.itinerary.ItineraryView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--剩余时间和结束订单入口-->
|
||||
<com.mogo.och.charter.passenger.ui.orderinfo.OrderInfoView
|
||||
android:id="@+id/biz_orderinfo"
|
||||
android:layout_width="match_parent"
|
||||
@@ -105,12 +107,14 @@
|
||||
app:layout_constraintBottom_toTopOf="@+id/bb_boorombar"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--空调、暖风机、声音控制-->
|
||||
<com.mogo.och.charter.passenger.ui.softcontrol.SoftControlView
|
||||
android:id="@+id/biz_softcontrol"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="gone" />
|
||||
|
||||
<!--选择线路-->
|
||||
<com.mogo.och.charter.passenger.ui.selectline.SelectLineView
|
||||
android:id="@+id/biz_selectline"
|
||||
android:layout_width="0dp"
|
||||
@@ -122,13 +126,14 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--视频播放-->
|
||||
<com.mogo.och.charter.passenger.ui.video.VideoView
|
||||
android:id="@+id/biz_video"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="gone" />
|
||||
|
||||
|
||||
<!--底部导航栏-->
|
||||
<com.mogo.och.charter.passenger.ui.bottom.BottomBar
|
||||
android:id="@+id/bb_boorombar"
|
||||
android:layout_width="match_parent"
|
||||
@@ -137,6 +142,7 @@
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<!--调试面板-->
|
||||
<com.mogo.och.charter.passenger.ui.debugview.DebugView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -145,6 +151,7 @@
|
||||
app:layout_constraintEnd_toEndOf="@+id/mapBizView"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--锁定状态和解锁入口-->
|
||||
<com.mogo.och.charter.passenger.ui.lockview.UnlockView
|
||||
android:id="@+id/uv_only_unlock"
|
||||
android:visibility="gone"
|
||||
@@ -156,6 +163,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<!--锁定和解锁入口-->
|
||||
<com.mogo.och.charter.passenger.ui.lockview.LockAndUnlockView
|
||||
android:layout_width="@dimen/dp_138"
|
||||
android:layout_height="@dimen/dp_138"
|
||||
|
||||
@@ -6,4 +6,7 @@ package com.mogo.och.common.module.callback
|
||||
*/
|
||||
interface OchAdasStartFailureCallback {
|
||||
fun onStartAutopilotFailure(startFailedCode : String, startFailedMessage : String)
|
||||
|
||||
fun brakeStatusChanged(isBrakeAvailable: Boolean)
|
||||
|
||||
}
|
||||
@@ -6,9 +6,13 @@ import androidx.annotation.Nullable;
|
||||
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotActionsListener;
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatisticsListener;
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoParallelDrivingActionsListener;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotActionsListenerManager;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotStatisticsListenerManager;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerParallelDrivingActionsListenerManager;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
|
||||
import com.mogo.eagle.core.utilcode.util.ParseVersionUtils;
|
||||
import com.mogo.och.common.module.callback.OchAdasStartFailureCallback;
|
||||
import com.zhjt.mogo.adas.data.bean.AutopilotStatistics;
|
||||
import com.zhjt.mogo.adas.data.bean.UnableLaunchReason;
|
||||
@@ -20,7 +24,7 @@ import java.util.ArrayList;
|
||||
* 工控机状态信息回调(判断是否能否启动自动驾驶的回调)
|
||||
* 目前定的是3秒回调一次
|
||||
*/
|
||||
public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMoGoAutopilotStatisticsListener {
|
||||
public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMoGoAutopilotStatisticsListener, IMoGoParallelDrivingActionsListener {
|
||||
|
||||
private static final String TAG = OCHAdasAbilityManager.class.getSimpleName();
|
||||
|
||||
@@ -85,11 +89,14 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMo
|
||||
//2022.10.9 工控机状态信息回调(判断是否能否启动自动驾驶的回调), 目前定的是3秒回调一次
|
||||
CallerAutopilotActionsListenerManager.INSTANCE.addListener(TAG, this);
|
||||
CallerAutopilotStatisticsListenerManager.INSTANCE.addListener(TAG,this);
|
||||
//map3.6.0且是东风或者红旗的时候返回
|
||||
CallerParallelDrivingActionsListenerManager.INSTANCE.addListener(TAG,this);
|
||||
}
|
||||
|
||||
private void releaseListeners() {
|
||||
CallerAutopilotActionsListenerManager.INSTANCE.removeListener(this);
|
||||
CallerAutopilotStatisticsListenerManager.INSTANCE.removeListener(this);
|
||||
CallerParallelDrivingActionsListenerManager.INSTANCE.removeListener(TAG);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -97,6 +104,16 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMo
|
||||
this.isAutopilotAbility = isAutopilotAbility;
|
||||
this.unableAutopilotReasons = unableAutopilotReasons;
|
||||
Logger.d(TAG, "是否可以启动自动驾驶=" + isAutopilotAbility + " 原因=" + (unableAutopilotReasons == null ? null : unableAutopilotReasons.toString()));
|
||||
if (unableAutopilotReasons != null && getMapVersion() < 30600) {
|
||||
//刹车变化回调
|
||||
Logger.d(TAG,"onAutopilotAbility = " + isAutopilotAbility +
|
||||
" onAutopilotAbility =" + unableAutopilotReasons.toString());
|
||||
if (unableAutopilotReasons.toString().contains(UnableLaunchReason.SourceType.CHASSIS.name())
|
||||
&& unableAutopilotReasons.toString().contains(UnableLaunchReason.UnableType.BRAKE.name())) {
|
||||
failureCallback.brakeStatusChanged(isAutopilotAbility);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -112,6 +129,23 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMo
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onParallelDrivingAbility(boolean isParallelDrivingAbility, @Nullable ArrayList<UnableLaunchReason> unableParallelDrivingReasons) {
|
||||
if (unableParallelDrivingReasons != null && getMapVersion() >= 30600) {
|
||||
//刹车变化回调
|
||||
Logger.d(TAG,"onParallelDrivingAbility = " + isParallelDrivingAbility +
|
||||
" unableParallelDrivingReasons =" + unableParallelDrivingReasons.toString());
|
||||
if (unableParallelDrivingReasons.toString().contains(UnableLaunchReason.SourceType.CHASSIS.name())
|
||||
&& unableParallelDrivingReasons.toString().contains(UnableLaunchReason.UnableType.BRAKE.name())) {
|
||||
failureCallback.brakeStatusChanged(isParallelDrivingAbility);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private int getMapVersion(){
|
||||
return ParseVersionUtils.parseVersion(true, CallerAutoPilotStatusListenerManager.INSTANCE.getDockerVersion());
|
||||
}
|
||||
public void release() {
|
||||
releaseListeners();
|
||||
}
|
||||
|
||||
@@ -7,9 +7,10 @@ import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.widget.ImageView
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import java.lang.RuntimeException
|
||||
import java.lang.ref.SoftReference
|
||||
|
||||
class FrameAnimatorContainer (resId: Int, fps: Int, imageView: ImageView,initFirstFrame:Boolean = true){
|
||||
class FrameAnimatorContainer (resId: Int, fps: Int, imageView: ImageView,initFirstFrame:Boolean = true,width:Int = -1,height:Int = -1){
|
||||
private lateinit var mFrames: IntArray // 帧数组
|
||||
private var mIndex = 0 // 当前帧
|
||||
private var mShouldRun = false // 开始/停止播放用
|
||||
@@ -22,10 +23,17 @@ class FrameAnimatorContainer (resId: Int, fps: Int, imageView: ImageView,initFir
|
||||
private var mBitmapOptions: BitmapFactory.Options? = null //Bitmap管理类,可有效减少Bitmap的OOM问题
|
||||
|
||||
init {
|
||||
createAnimation(imageView, getData(resId), fps,initFirstFrame)
|
||||
createAnimation(imageView, getData(resId), fps,initFirstFrame,width,height)
|
||||
}
|
||||
|
||||
private fun createAnimation(imageView: ImageView, frames: IntArray, fps: Int, initFirstFrame:Boolean) {
|
||||
private fun createAnimation(
|
||||
imageView: ImageView,
|
||||
frames: IntArray,
|
||||
fps: Int,
|
||||
initFirstFrame: Boolean,
|
||||
width: Int,
|
||||
height: Int
|
||||
) {
|
||||
mHandler = Handler(Looper.myLooper()!!)
|
||||
mFrames = frames
|
||||
mIndex = -1
|
||||
@@ -36,13 +44,25 @@ class FrameAnimatorContainer (resId: Int, fps: Int, imageView: ImageView,initFir
|
||||
if(initFirstFrame) {
|
||||
imageView.setImageResource(mFrames[0])
|
||||
}
|
||||
|
||||
var widthImage = -1
|
||||
var heightImage = -1
|
||||
var config = Bitmap.Config.ARGB_8888
|
||||
if(width>0&&height>0){
|
||||
widthImage = width
|
||||
heightImage = height
|
||||
}else{
|
||||
try {
|
||||
val bmp = (imageView.drawable as BitmapDrawable).bitmap
|
||||
widthImage = bmp.width
|
||||
heightImage = bmp.height
|
||||
config = bmp.config
|
||||
}catch (e:Exception){
|
||||
throw RuntimeException("请设置图片或传递大小")
|
||||
}
|
||||
}
|
||||
// 当图片大小类型相同时进行复用,避免频繁GC
|
||||
val bmp = (imageView.drawable as BitmapDrawable).bitmap
|
||||
val width = bmp.width
|
||||
val height = bmp.height
|
||||
val config = bmp.config
|
||||
mBitmap = Bitmap.createBitmap(width, height, config)
|
||||
|
||||
mBitmap = Bitmap.createBitmap(widthImage, heightImage, config)
|
||||
mBitmapOptions = BitmapFactory.Options()
|
||||
//设置Bitmap内存复用
|
||||
mBitmapOptions!!.inBitmap = mBitmap //Bitmap复用内存块,类似对象池,避免不必要的内存分配和回收
|
||||
|
||||
@@ -382,6 +382,11 @@ public class OrderModel {
|
||||
};
|
||||
|
||||
private final OchAdasStartFailureCallback mAdasStartFailureListener = new OchAdasStartFailureCallback() {
|
||||
@Override
|
||||
public void brakeStatusChanged(boolean isBrakeAvailable) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) {
|
||||
BusAnalyticsManager.getInstance().triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage);
|
||||
|
||||
@@ -48,7 +48,7 @@ import com.mogo.och.sweepercloud.util.AutopilotModeConfigManager;
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils;
|
||||
import com.mogo.och.sweepercloud.view.SweeperTrafficDataView;
|
||||
import com.mogo.och.sweepercloud.view.WeltSmallMapView;
|
||||
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask;
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
@@ -183,7 +183,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
);
|
||||
// 模拟 云端发送任务
|
||||
findViewById(R.id.btnSendTask).setOnClickListener(view -> {
|
||||
SweeperCloudTaskUtils.mockSendCloudTaskInfo(SweeperCloudTask.MessageType.CloudPushTask);
|
||||
SweeperCloudTaskUtils.mockSendCloudTaskInfo(AiCloudTask.MessageType.CloudPushTask);
|
||||
UiThreadHandler.postDelayed(() -> {
|
||||
debugEndSubTask();
|
||||
}, 5000);
|
||||
|
||||
@@ -34,7 +34,7 @@ import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createSweeperTaskRes
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createSweeperTaskSuspendDialog
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.printMessage
|
||||
import com.mogo.och.sweepercloud.view.SweeperCurrentTaskInfoView
|
||||
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon.TaskStatus
|
||||
@@ -204,7 +204,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
* 设置云端任务信息
|
||||
*/
|
||||
fun onSweeperCloudTask(
|
||||
messageType: SweeperCloudTask.MessageType,
|
||||
messageType: AiCloudTask.MessageType,
|
||||
taskInfo: SweeperTask.TaskInfo?
|
||||
) {
|
||||
this.mTaskInfo = taskInfo
|
||||
@@ -215,7 +215,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
return
|
||||
}
|
||||
//主动拉取云端正在执行的任务,有则直接在任务列表展示
|
||||
if (messageType == SweeperCloudTask.MessageType.PadSendGetTaskReq) {
|
||||
if (messageType == AiCloudTask.MessageType.PadSendGetTaskReq) {
|
||||
getCurrentTaskView().setData(taskInfo, getCurrentRunningSubTaskPosition())
|
||||
setShowCurrentTaskPanelView(true)
|
||||
addTaskData()
|
||||
|
||||
@@ -17,7 +17,7 @@ import com.mogo.och.sweepercloud.callback.ISweeperTaskRouteCallback;
|
||||
import com.mogo.och.sweepercloud.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweepercloud.fragment.SweeperFragment;
|
||||
import com.mogo.och.sweepercloud.model.SweeperTaskModel;
|
||||
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask;
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask;
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable;
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon;
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask;
|
||||
@@ -190,7 +190,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperCloudTask(@NonNull SweeperCloudTask.MessageType messageType, SweeperTask.TaskInfo taskInfo) {
|
||||
public void onSweeperCloudTask(@NonNull AiCloudTask.MessageType messageType, SweeperTask.TaskInfo taskInfo) {
|
||||
ThreadUtils.runOnUiThread(() -> mView.onSweeperCloudTask(messageType, taskInfo));
|
||||
}
|
||||
|
||||
@@ -210,7 +210,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperCloudTaskSuspendResume(@NonNull SweeperCloudTask.MessageType messageType, @NonNull String taskId,
|
||||
public void onSweeperCloudTaskSuspendResume(@NonNull AiCloudTask.MessageType messageType, @NonNull String taskId,
|
||||
@NonNull String subTaskId, SweeperCommon.Code code) {
|
||||
|
||||
}
|
||||
|
||||
@@ -287,6 +287,11 @@ public class SweeperTaskModel {
|
||||
};
|
||||
|
||||
private final OchAdasStartFailureCallback mAdasStartFailureListener = new OchAdasStartFailureCallback() {
|
||||
@Override
|
||||
public void brakeStatusChanged(boolean isBrakeAvailable) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) {
|
||||
SweeperAnalyticsManager.getInstance().triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage);
|
||||
|
||||
@@ -1064,6 +1064,11 @@ public class TaxiModel {
|
||||
};
|
||||
|
||||
private final OchAdasStartFailureCallback mAdasStartFailureListener = new OchAdasStartFailureCallback() {
|
||||
@Override
|
||||
public void brakeStatusChanged(boolean isBrakeAvailable) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) {
|
||||
TaxiAnalyticsManager.INSTANCE.triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage);
|
||||
|
||||
@@ -22,6 +22,7 @@ import androidx.annotation.Nullable;
|
||||
import androidx.constraintlayout.widget.Group;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
|
||||
import com.mogo.commons.AbsMogoApplication;
|
||||
import com.mogo.commons.mvp.IView;
|
||||
import com.mogo.commons.mvp.MvpFragment;
|
||||
import com.mogo.commons.mvp.Presenter;
|
||||
@@ -38,6 +39,7 @@ import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView;
|
||||
import com.mogo.eagle.core.function.view.MapBizView;
|
||||
import com.mogo.eagle.core.function.smp.view.SmallMapView;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant;
|
||||
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener;
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
@@ -45,12 +47,14 @@ import com.mogo.map.listener.IMogoMapListener;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
import com.mogo.map.uicontroller.VisualAngleMode;
|
||||
import com.mogo.och.common.module.utils.AnimatorDrawableUtil;
|
||||
import com.mogo.och.common.module.utils.FrameAnimatorContainer;
|
||||
import com.mogo.och.taxi.R;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
|
||||
import bag_manager.BagManagerOuterClass;
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils;
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
import record_cache.RecordPanelOuterClass;
|
||||
|
||||
@@ -94,61 +98,8 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
|
||||
|
||||
private Handler mHandler = new Handler(Looper.getMainLooper());
|
||||
|
||||
private Integer[] startAutopilotDrawableIds = new Integer[]{
|
||||
R.drawable.anim_flow_00000, R.drawable.anim_flow_00001, R.drawable.anim_flow_00002,
|
||||
R.drawable.anim_flow_00003, R.drawable.anim_flow_00004, R.drawable.anim_flow_00005,
|
||||
R.drawable.anim_flow_00006, R.drawable.anim_flow_00007, R.drawable.anim_flow_00008,
|
||||
R.drawable.anim_flow_00009, R.drawable.anim_flow_00010, R.drawable.anim_flow_00011,
|
||||
R.drawable.anim_flow_00012, R.drawable.anim_flow_00013, R.drawable.anim_flow_00014,
|
||||
R.drawable.anim_flow_00015, R.drawable.anim_flow_00016, R.drawable.anim_flow_00017,
|
||||
R.drawable.anim_flow_00018, R.drawable.anim_flow_00019, R.drawable.anim_flow_00020,
|
||||
R.drawable.anim_flow_00021, R.drawable.anim_flow_00022, R.drawable.anim_flow_00023,
|
||||
R.drawable.anim_flow_00024, R.drawable.anim_flow_00025, R.drawable.anim_flow_00026,
|
||||
R.drawable.anim_flow_00027, R.drawable.anim_flow_00028, R.drawable.anim_flow_00029,
|
||||
R.drawable.anim_flow_00030, R.drawable.anim_flow_00031, R.drawable.anim_flow_00032,
|
||||
R.drawable.anim_flow_00033, R.drawable.anim_flow_00034, R.drawable.anim_flow_00035,
|
||||
R.drawable.anim_flow_00036, R.drawable.anim_flow_00037, R.drawable.anim_flow_00038,
|
||||
R.drawable.anim_flow_00039, R.drawable.anim_flow_00040, R.drawable.anim_flow_00041,
|
||||
R.drawable.anim_flow_00042, R.drawable.anim_flow_00043, R.drawable.anim_flow_00044,
|
||||
R.drawable.anim_flow_00045, R.drawable.anim_flow_00046, R.drawable.anim_flow_00047,
|
||||
R.drawable.anim_flow_00048, R.drawable.anim_flow_00049, R.drawable.anim_flow_00050,
|
||||
R.drawable.anim_flow_00051, R.drawable.anim_flow_00052, R.drawable.anim_flow_00053,
|
||||
R.drawable.anim_flow_00054, R.drawable.anim_flow_00055, R.drawable.anim_flow_00056,
|
||||
R.drawable.anim_flow_00057, R.drawable.anim_flow_00058, R.drawable.anim_flow_00059
|
||||
};
|
||||
|
||||
private Integer[] startManCODrawableIds = new Integer[]{
|
||||
R.drawable.anim_flow_man_co_00000, R.drawable.anim_flow_man_co_00001,
|
||||
R.drawable.anim_flow_man_co_00002, R.drawable.anim_flow_man_co_00003,
|
||||
R.drawable.anim_flow_man_co_00004, R.drawable.anim_flow_man_co_00005,
|
||||
R.drawable.anim_flow_man_co_00006, R.drawable.anim_flow_man_co_00007,
|
||||
R.drawable.anim_flow_man_co_00008, R.drawable.anim_flow_man_co_00009,
|
||||
R.drawable.anim_flow_man_co_00010, R.drawable.anim_flow_man_co_00011,
|
||||
R.drawable.anim_flow_man_co_00012, R.drawable.anim_flow_man_co_00013,
|
||||
R.drawable.anim_flow_man_co_00014, R.drawable.anim_flow_man_co_00015,
|
||||
R.drawable.anim_flow_man_co_00016, R.drawable.anim_flow_man_co_00017,
|
||||
R.drawable.anim_flow_man_co_00018, R.drawable.anim_flow_man_co_00019,
|
||||
R.drawable.anim_flow_man_co_00020, R.drawable.anim_flow_man_co_00021,
|
||||
R.drawable.anim_flow_man_co_00022, R.drawable.anim_flow_man_co_00023,
|
||||
R.drawable.anim_flow_man_co_00024, R.drawable.anim_flow_man_co_00025,
|
||||
R.drawable.anim_flow_man_co_00026, R.drawable.anim_flow_man_co_00027,
|
||||
R.drawable.anim_flow_man_co_00028, R.drawable.anim_flow_man_co_00029,
|
||||
R.drawable.anim_flow_man_co_00030, R.drawable.anim_flow_man_co_00031,
|
||||
R.drawable.anim_flow_man_co_00032, R.drawable.anim_flow_man_co_00033,
|
||||
R.drawable.anim_flow_man_co_00034, R.drawable.anim_flow_man_co_00035,
|
||||
R.drawable.anim_flow_man_co_00036, R.drawable.anim_flow_man_co_00037,
|
||||
R.drawable.anim_flow_man_co_00038, R.drawable.anim_flow_man_co_00039,
|
||||
R.drawable.anim_flow_man_co_00040, R.drawable.anim_flow_man_co_00041,
|
||||
R.drawable.anim_flow_man_co_00042, R.drawable.anim_flow_man_co_00043,
|
||||
R.drawable.anim_flow_man_co_00044, R.drawable.anim_flow_man_co_00045,
|
||||
R.drawable.anim_flow_man_co_00046, R.drawable.anim_flow_man_co_00047,
|
||||
R.drawable.anim_flow_man_co_00048, R.drawable.anim_flow_man_co_00049,
|
||||
R.drawable.anim_flow_man_co_00050, R.drawable.anim_flow_man_co_00051,
|
||||
R.drawable.anim_flow_man_co_00052, R.drawable.anim_flow_man_co_00053,
|
||||
R.drawable.anim_flow_man_co_00054, R.drawable.anim_flow_man_co_00055,
|
||||
R.drawable.anim_flow_man_co_00056, R.drawable.anim_flow_man_co_00057,
|
||||
R.drawable.anim_flow_man_co_00058, R.drawable.anim_flow_man_co_00059
|
||||
};
|
||||
private FrameAnimatorContainer startAutopilotAnimator;
|
||||
private FrameAnimatorContainer startManCOAnimator;
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
@@ -295,6 +246,14 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
|
||||
});
|
||||
|
||||
smallMapView = findViewById(R.id.smallMapView);
|
||||
|
||||
|
||||
int width = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(), 420f);
|
||||
int height = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(), 220f);
|
||||
startAutopilotAnimator = new FrameAnimatorContainer(R.array.anim_flow, 20,mAnimFlowIv,false,width,height);
|
||||
startAutopilotAnimator.setOnAnimStopListener(() -> CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "自动驾驶动画暂停"));
|
||||
startManCOAnimator = new FrameAnimatorContainer(R.array.nim_flow_man_co, 20,mAnimFlowIv,false,width,height);
|
||||
startManCOAnimator.setOnAnimStopListener(() -> CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "平行驾驶动画暂停"));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -423,52 +382,51 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
|
||||
|
||||
protected abstract void updateOrderBottomBtnUI();
|
||||
|
||||
private AnimatorDrawableUtil animatorDrawableUtil = null;
|
||||
|
||||
public void autopilotStatusAnimchanged(int status) {
|
||||
if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == status) {
|
||||
mAutopilotTv.setText("自动驾驶");
|
||||
mAutopilotTv.setTextColor(getResources().getColor(R.color.taxi_autopilot_text_color_normal));
|
||||
mAutopilotImage.setImageResource(R.drawable.taxi_ic_autopilot);
|
||||
|
||||
if (animatorDrawableUtil == null) {
|
||||
animatorDrawableUtil = new AnimatorDrawableUtil();
|
||||
if(startManCOAnimator!=null) {
|
||||
startManCOAnimator.stop();
|
||||
}
|
||||
if(startAutopilotAnimator!=null) {
|
||||
startAutopilotAnimator.reStart();
|
||||
}
|
||||
animatorDrawableUtil.setAnimation(mAnimFlowIv, Arrays.asList(startAutopilotDrawableIds));
|
||||
animatorDrawableUtil.start(true, 100, null);
|
||||
|
||||
} else if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE == status) {
|
||||
mAutopilotTv.setText("自动驾驶");
|
||||
mAutopilotTv.setTextColor(getResources().getColor(R.color.taxi_autopilot_text_color_normal));
|
||||
mAutopilotImage.setImageResource(R.drawable.taxi_ic_autopilot);
|
||||
if (animatorDrawableUtil != null) {
|
||||
animatorDrawableUtil.stop();
|
||||
mAnimFlowIv.setImageResource(0);
|
||||
}
|
||||
|
||||
// ctvAutopilotStatusRL.setBackground(getResources().getDrawable(R.drawable.taxi_autopilot_bg_selector));
|
||||
animatorDrawableUtil = null;
|
||||
if(startAutopilotAnimator!=null) {
|
||||
startAutopilotAnimator.stop();
|
||||
}
|
||||
if(startManCOAnimator!=null) {
|
||||
startManCOAnimator.stop();
|
||||
}
|
||||
mAnimFlowIv.setImageResource(0);
|
||||
|
||||
} else if (IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING == status) {
|
||||
mAutopilotTv.setText("远程代驾");
|
||||
mAutopilotTv.setTextColor(getResources().getColor(R.color.taxi_autopilot_text_color_normal));
|
||||
mAutopilotImage.setImageResource(R.drawable.taxi_ic_autopilot);
|
||||
if (animatorDrawableUtil == null) {
|
||||
animatorDrawableUtil = new AnimatorDrawableUtil();
|
||||
if(startAutopilotAnimator!=null) {
|
||||
startAutopilotAnimator.stop();
|
||||
}
|
||||
if(startManCOAnimator!=null) {
|
||||
startManCOAnimator.reStart();
|
||||
}
|
||||
animatorDrawableUtil.setAnimation(mAnimFlowIv, Arrays.asList(startManCODrawableIds));
|
||||
animatorDrawableUtil.start(true, 100, null);
|
||||
|
||||
} else {
|
||||
mAutopilotTv.setText("自动驾驶");
|
||||
mAutopilotTv.setTextColor(getResources().getColor(R.color.taxi_autopilot_text_color_disable));
|
||||
mAutopilotImage.setImageResource(R.drawable.taxi_ic_autopilot_disable);
|
||||
if (animatorDrawableUtil != null) {
|
||||
animatorDrawableUtil.stop();
|
||||
mAnimFlowIv.setImageResource(0);
|
||||
if(startAutopilotAnimator!=null) {
|
||||
startAutopilotAnimator.stop();
|
||||
}
|
||||
|
||||
// ctvAutopilotStatusRL.setBackground(getResources().getDrawable(R.drawable.taxi_ic_autopilot_bg));
|
||||
animatorDrawableUtil = null;
|
||||
if(startManCOAnimator!=null) {
|
||||
startManCOAnimator.stop();
|
||||
}
|
||||
mAnimFlowIv.setImageResource(0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00000.png
Normal file → Executable file
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 14 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00001.png
Normal file → Executable file
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 14 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00002.png
Normal file → Executable file
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 14 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00003.png
Normal file → Executable file
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00004.png
Normal file → Executable file
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00005.png
Normal file → Executable file
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00006.png
Normal file → Executable file
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00007.png
Normal file → Executable file
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00008.png
Normal file → Executable file
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00009.png
Normal file → Executable file
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 16 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00010.png
Normal file → Executable file
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 14 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00011.png
Normal file → Executable file
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 14 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00012.png
Normal file → Executable file
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00013.png
Normal file → Executable file
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00014.png
Normal file → Executable file
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00015.png
Normal file → Executable file
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 14 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00016.png
Normal file → Executable file
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00017.png
Normal file → Executable file
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00018.png
Normal file → Executable file
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00019.png
Normal file → Executable file
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00020.png
Normal file → Executable file
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00021.png
Normal file → Executable file
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00022.png
Normal file → Executable file
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 16 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00023.png
Normal file → Executable file
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 16 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00024.png
Normal file → Executable file
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00025.png
Normal file → Executable file
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00026.png
Normal file → Executable file
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 16 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00027.png
Normal file → Executable file
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 16 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00028.png
Normal file → Executable file
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00029.png
Normal file → Executable file
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 16 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00030.png
Normal file → Executable file
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 16 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00031.png
Normal file → Executable file
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 16 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00032.png
Normal file → Executable file
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00033.png
Normal file → Executable file
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00034.png
Normal file → Executable file
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00035.png
Normal file → Executable file
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00036.png
Normal file → Executable file
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00037.png
Normal file → Executable file
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 16 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00038.png
Normal file → Executable file
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00039.png
Normal file → Executable file
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00040.png
Normal file → Executable file
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00041.png
Normal file → Executable file
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00042.png
Normal file → Executable file
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 16 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00043.png
Normal file → Executable file
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00044.png
Normal file → Executable file
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00045.png
Normal file → Executable file
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00046.png
Normal file → Executable file
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00047.png
Normal file → Executable file
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 14 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00048.png
Normal file → Executable file
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 14 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00049.png
Normal file → Executable file
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00050.png
Normal file → Executable file
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00051.png
Normal file → Executable file
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00052.png
Normal file → Executable file
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 14 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00053.png
Normal file → Executable file
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 14 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00054.png
Normal file → Executable file
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00055.png
Normal file → Executable file
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 14 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00056.png
Normal file → Executable file
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 15 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00057.png
Normal file → Executable file
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 14 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00058.png
Normal file → Executable file
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 14 KiB |
BIN
OCH/taxi/driver/src/main/res/drawable/anim_flow_00059.png
Normal file → Executable file
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 17 KiB |