diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java index 3746c54a4b..c7f2778798 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java @@ -24,7 +24,6 @@ import com.mogo.commons.mvp.MvpFragment; import com.mogo.commons.mvp.Presenter; import com.mogo.commons.voice.AIAssist; import com.mogo.eagle.core.data.config.HmiBuildConfig; -import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; @@ -32,6 +31,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListener import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import com.mogo.eagle.core.utilcode.mogo.toast.TipToast; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.map.MogoMapUIController; import com.mogo.map.MogoMarkerManager; @@ -41,12 +41,10 @@ import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.constants.DataTypes; import com.mogo.module.common.view.OnPreventFastClickListener; import com.mogo.och.bus.R; -import com.mogo.och.bus.ui.BusTrafficLightView; import com.mogo.och.bus.util.BDRouteDataTestUtils; import com.mogo.och.bus.view.BusArcView; import com.mogo.och.bus.view.SlidePanelView; -import mogo.telematics.pad.MessagePad; import record_cache.RecordPanelOuterClass; /** @@ -159,49 +157,33 @@ public abstract class BaseBusTabFragment @Override public void onClickImpl(View v) { -// if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE){ + if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE){ restartAutopilot(); -// } + }else { + TipToast.shortTip(getResources().getString(R.string.bus_auto_disable_tip)); + } } }); - // debug下调用测试面板 2022.2.25修改到 长按当前站点名字 -// if (DebugConfig.isDebug()) { -// ctvAutopilotStatus.setOnLongClickListener(v -> { -// debugTestBar(); -// return true; -// }); -// } - onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState()); + setAutopilotBtnStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState()); // 模拟 不可自动驾驶,目前场景是刚开机,adas还未和工控机连接 findViewById(R.id.btnAutopilotDisable).setOnClickListener(view -> -// MogoApisHandler.getInstance().getApis() -// .getAdasControllerApi() -// .mockOchStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE, "不能使用") - debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) + debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) ); // 模拟 可自动驾驶,工控机连接正常,且处于人工干预状态 findViewById(R.id.btnAutopilotEnable).setOnClickListener(view -> -// MogoApisHandler.getInstance().getApis() -// .getAdasControllerApi() -// .mockOchStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE, "能使用") - debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) + debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) ); // 模拟 自动驾驶能力,自动驾驶中,可能是停车,可能是行进,但是是机器在处理车的前进后退,不是人 findViewById(R.id.btnAutopilotRunning).setOnClickListener(view -> -// MogoApisHandler.getInstance().getApis() -// .getAdasControllerApi() -// .mockOchStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING, "Running") - debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) + debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) ); // 模拟 自动驾驶网约车回调数据 findViewById(R.id.btnAutopilotArrive).setOnClickListener(view -> -// MogoApisHandler.getInstance().getApis() -// .getAdasControllerApi().mockOchStatus(-1, "Arrived") - debugArrivedStation() + debugArrivedStation() ); findViewById(R.id.btnAutopilotRoute).setOnClickListener(view -> debugArrivedRoute()); @@ -309,66 +291,64 @@ public abstract class BaseBusTabFragment }); } - public void updateAutopilotStatus(int autopilotStatus){ + public void setAutopilotBtnStatus(int autopilotStatus) { if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE == autopilotStatus) {//0不可用 - ctvAutopilotStatusIv.setImageResource(R.drawable.bus_wrong_autopilot_icon); - ctvAutopilotStatusTv.setTextColor(getResources().getColor(R.color.bus_autopilot_text_color_normal)); - ctvAutopilotStatusTv.setText(getResources().getString(R.string.bus_loading_autopilot_failure_tv)); - ctvAutopilotStatus.setFocusableInTouchMode(false); + ctvAutopilotStatusTv.setTextColor(getResources().getColor(R.color.bus_autopilot_text_color_disable)); + ctvAutopilotStatusTv.setText(getResources().getString(R.string.bus_loading_autopilot_runnig_tv)); + ctvAutopilotStatusIv.setImageResource(R.drawable.bus_disable_autopilot_icon); ctvAutopilotStatus.setSelected(false); + ctvAutopilotStatus.setFocusableInTouchMode(true); - UiThreadHandler.postDelayed(new Runnable() { - @Override - public void run() { - ctvAutopilotStatusTv.setTextColor(getResources().getColor(R.color.bus_autopilot_text_color_disable)); - ctvAutopilotStatusTv.setText(getResources().getString(R.string.bus_loading_autopilot_runnig_tv)); - ctvAutopilotStatusIv.setImageResource(R.drawable.bus_disable_autopilot_icon); - ctvAutopilotStatus.setSelected(false); - ctvAutopilotStatus.setFocusableInTouchMode(true); -// ctvAutopilotStatus.setPressed(false); - } - }, 1000); - - } else if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE + } else if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE == autopilotStatus + || IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == autopilotStatus) {//1可用 ctvAutopilotStatusTv.setTextColor(getResources().getColor(R.color.bus_autopilot_text_color_normal)); ctvAutopilotStatusTv.setText(getResources().getString(R.string.bus_loading_autopilot_runnig_tv)); ctvAutopilotStatusIv.setImageResource(R.drawable.bus_ic_autopilot); - ctvAutopilotStatus.setSelected(false); + ctvAutopilotStatus.setSelected(true); ctvAutopilotStatus.setFocusableInTouchMode(true); -// ctvAutopilotStatus.setPressed(true); - } else if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING + } + } + + public void updateAutopilotStatus(int autopilotStatus){ + if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == autopilotStatus) {//2 running ctvAutopilotStatusIv.setImageResource(R.drawable.bus_right_autopilot_icon); ctvAutopilotStatusTv.setTextColor(getResources().getColor(R.color.bus_autopilot_text_color_normal)); ctvAutopilotStatusTv.setText(getResources().getString(R.string.bus_loading_autopilot_success_tv)); ctvAutopilotStatus.setSelected(false); ctvAutopilotStatus.setFocusableInTouchMode(false); - UiThreadHandler.postDelayed(new Runnable() { - @Override - public void run() { - ctvAutopilotStatusIv.setImageResource(R.drawable.bus_ic_autopilot); - ctvAutopilotStatusTv.setText(getResources().getString(R.string.bus_loading_autopilot_runnig_tv)); - ctvAutopilotStatusTv.setTextColor(getResources().getColor(R.color.bus_autopilot_text_color_normal)); - ctvAutopilotStatus.setSelected(true); - ctvAutopilotStatus.setFocusableInTouchMode(true); -// ctvAutopilotStatus.setPressed(false); - } - }, 1000); + }else { + ctvAutopilotStatusIv.setImageResource(R.drawable.bus_wrong_autopilot_icon); + ctvAutopilotStatusTv.setTextColor(getResources().getColor(R.color.bus_autopilot_text_color_normal)); + ctvAutopilotStatusTv.setText(getResources().getString(R.string.bus_loading_autopilot_failure_tv)); + ctvAutopilotStatus.setFocusableInTouchMode(false); + ctvAutopilotStatus.setSelected(false); } + UiThreadHandler.postDelayed(new Runnable() { + @Override + public void run() { + setAutopilotBtnStatus(autopilotStatus); + } + },1000); } private void changeAutopilotBtnView(int autopilotStatus, boolean isAnimateRunning) { - + CallerLogger.INSTANCE.d(M_BUS + TAG, "onStateChangeChangeAutopilotBtnView: " + + autopilotStatus + "isAnimateRunning = " + isAnimateRunning); if (isAnimateRunning && IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING != autopilotStatus) { // 主动开启自动驾驶中,不为2(为0、1)则继续loading return; } - CallerLogger.INSTANCE.d(M_BUS + TAG, "onStateChangeChangeAutopilotBtnView: " + autopilotStatus + "isAnimateRunning = " + isAnimateRunning); - stopAutopilotAnimation(); - updateAutopilotStatus(autopilotStatus); + if (isAnimateRunning){ + stopAutopilotAnimation(); + updateAutopilotStatus(autopilotStatus); + }else { + setAutopilotBtnStatus(autopilotStatus); + } + } /** diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java index ba3649ae98..e7e11b5703 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java @@ -785,9 +785,7 @@ public class BusOrderModel { */ public void restartAutopilot() { CallerLogger.INSTANCE.d( M_BUS + TAG, "重启自动驾驶===" + isGoingToNextStation ); - if ( isGoingToNextStation ) { - autoDriveToNextStation( true ); - } + autoDriveToNextStation( true ); } /** diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index 646d08d794..e1b6181a21 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -1,7 +1,6 @@ package com.mogo.och.bus.presenter; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS; -import static com.mogo.och.bus.constant.BusConst.TIMER_START_AUTOPILOT_INTERVAL; import android.location.Location; import android.os.Looper; @@ -105,8 +104,10 @@ public class BusPresenter extends Presenter } public void restartAutopilot() { - currentAutopilotStatus = -1; - BusOrderModel.getInstance().restartAutopilot(); + if (BusOrderModel.getInstance().isGoingToNextStation()){ + currentAutopilotStatus = -1; + BusOrderModel.getInstance().restartAutopilot(); + } } public void onChangeOperationStatus() { @@ -125,7 +126,7 @@ public class BusPresenter extends Presenter mStationList.clear(); mStationList.addAll(stationList); mCurrentStation = currentStation; - functionDemoModeChange(); +// functionDemoModeChange(); CallerLogger.INSTANCE.d(M_BUS + "BusOrderModel =", " mCurrentStation =" + mCurrentStation); if (mView != null) { runOnUIThread(() -> mView.refreshBusStations( @@ -221,7 +222,6 @@ public class BusPresenter extends Presenter return; } runOnUIThread(() -> { - mView.onAutopilotEnableChange(false); mView.onAutopilotStatusChanged(currentAutopilotStatus); }); } @@ -246,14 +246,8 @@ public class BusPresenter extends Presenter @Override public void startOpenAutopilot() { + //非美化模式下启动动画 runOnUIThread(() -> mView.startAutopilotAnimation()); - // TODO: 2021/8/20 无工控机环境, 手动调起自动驾驶开启返回结果,有工控机环境要删除 -// UiThreadHandler.postDelayed(new Runnable() { -// @Override -// public void run() { -// debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING); -// } -// },2300); } private void runOnUIThread(Runnable executor) { diff --git a/OCH/mogo-och-bus/src/main/res/values/strings.xml b/OCH/mogo-och-bus/src/main/res/values/strings.xml index 8ebaa40023..0e7050b014 100644 --- a/OCH/mogo-och-bus/src/main/res/values/strings.xml +++ b/OCH/mogo-och-bus/src/main/res/values/strings.xml @@ -23,4 +23,5 @@ + 自动驾驶状态为0不可用 diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHBorderShadowLayout.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHBorderShadowLayout.java index 9a7555f315..22702e5ee9 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHBorderShadowLayout.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHBorderShadowLayout.java @@ -43,7 +43,8 @@ public class OCHBorderShadowLayout extends LinearLayout { //阴影颜色 private int shadowColor = Color.parseColor("#333333"); - + //阴影的位置 + private int shadowPosition = 0; //阴影半径 private float shadowRadius = 0f; @@ -93,6 +94,7 @@ public class OCHBorderShadowLayout extends LinearLayout { xOffset = typedArray.getDimension(R.styleable.ShadowLayout_xOffset,DimenUtil.INSTANCE.dp2px(10)); yOffset = typedArray.getDimension(R.styleable.ShadowLayout_yOffset,DimenUtil.INSTANCE.dp2px(10)); bgColor = typedArray.getColor(R.styleable.ShadowLayout_bgColor,Color.WHITE); + shadowPosition = typedArray.getInt(R.styleable.ShadowLayout_shadow_position,0); typedArray.recycle(); if (shadowRadius<0){ @@ -208,7 +210,23 @@ public class OCHBorderShadowLayout extends LinearLayout { } // mPaint.setShadowLayer(blurRadius,0,0,shadowColor); if (blurRadius>0){ - mPaint.setMaskFilter(new BlurMaskFilter(blurRadius,BlurMaskFilter.Blur.NORMAL)); + switch (shadowPosition){ + case 0: + mPaint.setMaskFilter(new BlurMaskFilter(blurRadius,BlurMaskFilter.Blur.NORMAL)); + break; + case 1: + mPaint.setMaskFilter(new BlurMaskFilter(blurRadius,BlurMaskFilter.Blur.SOLID)); + break; + case 2: + mPaint.setMaskFilter(new BlurMaskFilter(blurRadius,BlurMaskFilter.Blur.OUTER)); + mPaint.setStyle(Paint.Style.FILL_AND_STROKE); + mPaint.setStrokeWidth(0); + break; + case 3: + mPaint.setMaskFilter(new BlurMaskFilter(blurRadius,BlurMaskFilter.Blur.INNER)); + break; + default: + } } mPaint.setColor(shadowColor); mPaint.setAntiAlias(true); diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHShapeBlurView.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHShapeBlurView.java new file mode 100644 index 0000000000..b9170190c3 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHShapeBlurView.java @@ -0,0 +1,70 @@ +package com.mogo.och.common.module.wigets; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Bitmap; +import android.graphics.BitmapShader; +import android.graphics.Canvas; +import android.graphics.LinearGradient; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.RectF; +import android.graphics.Shader; +import android.util.AttributeSet; +import android.util.TypedValue; + +import com.mogo.och.common.module.R; + + +/** + * Created by mmin18 on 9/27/16. + */ +public class OCHShapeBlurView extends OCHStockBlurView { + Paint mPaint; + RectF mRectF; + private float mRadius; + private int mTopColor; // default #aaffffff + private int mBottomColor; // default #aaffffff + + public OCHShapeBlurView(Context context, AttributeSet attrs) { + super(context, attrs); + + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.OCHRShapeBlurView); + mRadius = a.getDimension(R.styleable.OCHRShapeBlurView_och_realtime_radius, + TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 0, context.getResources().getDisplayMetrics())); + mTopColor = a.getColor(R.styleable.OCHRShapeBlurView_och_realtime_start_color, 0xAAFFFFFF); + mBottomColor = a.getColor(R.styleable.OCHRShapeBlurView_och_realtime_end_color, 0xAAFFFFFF); + a.recycle(); + mPaint = new Paint(); + mRectF = new RectF(); + } + + /** + * Custom oval shape + */ + @Override + protected void drawBlurredBitmap(Canvas canvas, Bitmap blurredBitmap, int overlayColor) { + if (blurredBitmap != null) { + mRectF.right = getWidth(); + mRectF.bottom = getHeight(); + + mPaint.reset(); + mPaint.setAntiAlias(true); + BitmapShader shader = new BitmapShader(blurredBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); + Matrix matrix = new Matrix(); + matrix.postScale(mRectF.width() / blurredBitmap.getWidth(), mRectF.height() / blurredBitmap.getHeight()); + shader.setLocalMatrix(matrix); + mPaint.setShader(shader); + canvas.drawRoundRect(mRectF, mRadius,mRadius,mPaint); + + mPaint.reset(); + mPaint.setAntiAlias(true); + /* 设置渐变色 这个正方形的颜色是改变的 */ + Shader mShader = new LinearGradient(getWidth()/2, 0, getWidth()/2, getHeight(), + new int[] {mTopColor,mBottomColor}, null, Shader.TileMode.CLAMP); // 一个材质,打造出一个线性梯度沿著一条线。 + mPaint.setShader(mShader);//0xBFE0E8FF,0xBF6AA2D7 + canvas.drawRoundRect(mRectF, mRadius,mRadius,mPaint); + + } + } +} diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHStockBlurView.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHStockBlurView.java new file mode 100644 index 0000000000..f88571b949 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHStockBlurView.java @@ -0,0 +1,343 @@ +package com.mogo.och.common.module.wigets; + +import android.app.Activity; +import android.content.Context; +import android.content.ContextWrapper; +import android.content.res.TypedArray; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Rect; +import android.renderscript.Allocation; +import android.renderscript.Element; +import android.renderscript.RenderScript; +import android.renderscript.ScriptIntrinsicBlur; +import android.util.AttributeSet; +import android.util.TypedValue; +import android.view.View; +import android.view.ViewTreeObserver; + +import com.mogo.och.common.module.R; + +public class OCHStockBlurView extends View { + + private float mDownsampleFactor; // default 4 + private int mOverlayColor; // default #aaffffff + private float mBlurRadius; // default 10dp (0 < r <= 25) + private boolean onece; + + private boolean mDirty; + private Bitmap mBitmapToBlur, mBlurredBitmap; + private Canvas mBlurringCanvas; + private boolean mIsRendering; + private Paint mPaint; + private final Rect mRectSrc = new Rect(), mRectDst = new Rect(); + // mDecorView should be the root view of the activity (even if you are on a different window like a dialog) + private View mDecorView; + // If the view is on different root view (usually means we are on a PopupWindow), + // we need to manually call invalidate() in onPreDraw(), otherwise we will not be able to see the changes + private boolean mDifferentRoot; + private static int RENDERING_COUNT; + private static int BLUR_IMPL; + + private RenderScript mRenderScript; + private ScriptIntrinsicBlur mBlurScript; + private Allocation mBlurInput, mBlurOutput; + + public OCHStockBlurView(Context context, AttributeSet attrs) { + super(context, attrs); + + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.OCHRealtimeBlurView); + mBlurRadius = a.getDimension(R.styleable.OCHRealtimeBlurView_och_realtime_blur_radius, + TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, context.getResources().getDisplayMetrics())); + mDownsampleFactor = a.getFloat(R.styleable.OCHRealtimeBlurView_och_realtime_downsample_factor, 4); + mOverlayColor = a.getColor(R.styleable.OCHRealtimeBlurView_och_realtime_overlay_color, 0xAAFFFFFF); + onece = a.getBoolean(R.styleable.OCHRealtimeBlurView_och_realtime_onece,false); + a.recycle(); + + mPaint = new Paint(); + } + + public void setBlurRadius(float radius) { + if (mBlurRadius != radius) { + mBlurRadius = radius; + mDirty = true; + invalidate(); + } + } + + public void setDownsampleFactor(float factor) { + if (factor <= 0) { + throw new IllegalArgumentException("Downsample factor must be greater than 0."); + } + + if (mDownsampleFactor != factor) { + mDownsampleFactor = factor; + mDirty = true; // may also change blur radius + releaseBitmap(); + invalidate(); + } + } + + public void setOverlayColor(int color) { + if (mOverlayColor != color) { + mOverlayColor = color; + invalidate(); + } + } + + private void releaseBitmap() { + if (mBitmapToBlur != null) { + mBitmapToBlur.recycle(); + mBitmapToBlur = null; + } + if (mBlurredBitmap != null) { + mBlurredBitmap.recycle(); + mBlurredBitmap = null; + } + } + + protected void release() { + releaseBitmap(); + releaseBlur(); + } + + protected boolean prepare() { + if (mBlurRadius == 0) { + release(); + return false; + } + + float downsampleFactor = mDownsampleFactor; + float radius = mBlurRadius / downsampleFactor; + if (radius > 25) { + downsampleFactor = downsampleFactor * radius / 25; + radius = 25; + } + + final int width = getWidth(); + final int height = getHeight(); + + int scaledWidth = Math.max(1, (int) (width / downsampleFactor)); + int scaledHeight = Math.max(1, (int) (height / downsampleFactor)); + + boolean dirty = mDirty; + + if (mBlurringCanvas == null || mBlurredBitmap == null + || mBlurredBitmap.getWidth() != scaledWidth + || mBlurredBitmap.getHeight() != scaledHeight) { + dirty = true; + releaseBitmap(); + + boolean r = false; + try { + mBitmapToBlur = Bitmap.createBitmap(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); + if (mBitmapToBlur == null) { + return false; + } + mBlurringCanvas = new Canvas(mBitmapToBlur); + + mBlurredBitmap = Bitmap.createBitmap(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); + if (mBlurredBitmap == null) { + return false; + } + + r = true; + } catch (OutOfMemoryError e) { + // Bitmap.createBitmap() may cause OOM error + // Simply ignore and fallback + } finally { + if (!r) { + release(); + return false; + } + } + } + + if (dirty) { + if (prepareBlur(getContext(), mBitmapToBlur, radius)) { + mDirty = false; + } else { + return false; + } + } + + return true; + } + + protected void blur(Bitmap bitmapToBlur, Bitmap blurredBitmap) { + mBlurInput.copyFrom(bitmapToBlur); + mBlurScript.setInput(mBlurInput); + mBlurScript.forEach(mBlurOutput); + mBlurOutput.copyTo(blurredBitmap); + } + + private final ViewTreeObserver.OnPreDrawListener preDrawListener = new ViewTreeObserver.OnPreDrawListener() { + @Override + public boolean onPreDraw() { + final int[] locations = new int[2]; + Bitmap oldBmp = mBlurredBitmap; + View decor = mDecorView; + if (decor != null && isShown() && prepare()) { + boolean redrawBitmap = mBlurredBitmap != oldBmp; + oldBmp = null; + decor.getLocationOnScreen(locations); + int x = -locations[0]; + int y = -locations[1]; + + getLocationOnScreen(locations); + x += locations[0]; + y += locations[1]; + + // just erase transparent + mBitmapToBlur.eraseColor(mOverlayColor & 0xffffff); + + int rc = mBlurringCanvas.save(); + mIsRendering = true; + RENDERING_COUNT++; + try { + mBlurringCanvas.scale(1.f * mBitmapToBlur.getWidth() / getWidth(), 1.f * mBitmapToBlur.getHeight() / getHeight()); + mBlurringCanvas.translate(-x, -y); + if (decor.getBackground() != null) { + decor.getBackground().draw(mBlurringCanvas); + } + decor.draw(mBlurringCanvas); + } catch (StopException e) { + } finally { + mIsRendering = false; + RENDERING_COUNT--; + mBlurringCanvas.restoreToCount(rc); + } + + blur(mBitmapToBlur, mBlurredBitmap); + + if (redrawBitmap || mDifferentRoot) { + invalidate(); + } + } + if(onece) { + mDecorView.getViewTreeObserver().removeOnPreDrawListener(this); + } + return true; + } + }; + + protected View getActivityDecorView() { + Context ctx = getContext(); + for (int i = 0; i < 4 && ctx != null && !(ctx instanceof Activity) && ctx instanceof ContextWrapper; i++) { + ctx = ((ContextWrapper) ctx).getBaseContext(); + } + if (ctx instanceof Activity) { + return ((Activity) ctx).getWindow().getDecorView(); + } else { + return null; + } + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + mDecorView = getRootView(); + if (mDecorView != null) { + mDecorView.getViewTreeObserver().addOnPreDrawListener(preDrawListener); + mDifferentRoot = mDecorView.getRootView() != getRootView(); + if (mDifferentRoot) { + mDecorView.postInvalidate(); + } + } else { + mDifferentRoot = false; + } + } + + @Override + protected void onDetachedFromWindow() { + if (mDecorView != null) { + mDecorView.getViewTreeObserver().removeOnPreDrawListener(preDrawListener); + } + release(); + super.onDetachedFromWindow(); + } + + @Override + public void draw(Canvas canvas) { + if (mIsRendering) { + // Quit here, don't draw views above me + throw STOP_EXCEPTION; + } else if (RENDERING_COUNT > 0) { + // Doesn't support blurview overlap on another blurview + } else { + super.draw(canvas); + } + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + drawBlurredBitmap(canvas, mBlurredBitmap, mOverlayColor); + } + + /** + * Custom draw the blurred bitmap and color to define your own shape + * + * @param canvas + * @param blurredBitmap + * @param overlayColor + */ + protected void drawBlurredBitmap(Canvas canvas, Bitmap blurredBitmap, int overlayColor) { + if (blurredBitmap != null) { + mRectSrc.right = blurredBitmap.getWidth(); + mRectSrc.bottom = blurredBitmap.getHeight(); + mRectDst.right = getWidth(); + mRectDst.bottom = getHeight(); + canvas.drawBitmap(blurredBitmap, mRectSrc, mRectDst, null); + } + mPaint.setColor(overlayColor); + canvas.drawRect(mRectDst, mPaint); + } + + private static class StopException extends RuntimeException { + } + + private static StopException STOP_EXCEPTION = new StopException(); + + + public boolean prepareBlur(Context context, Bitmap buffer, float radius) { + if (mRenderScript == null) { + try { + mRenderScript = RenderScript.create(context); + mBlurScript = ScriptIntrinsicBlur.create(mRenderScript, Element.U8_4(mRenderScript)); + } catch (android.renderscript.RSRuntimeException e) { + // In release mode, just ignore + releaseBlur(); + return false; + } + } + mBlurScript.setRadius(radius); + + mBlurInput = Allocation.createFromBitmap(mRenderScript, buffer, + Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT); + mBlurOutput = Allocation.createTyped(mRenderScript, mBlurInput.getType()); + + return true; + } + + public void releaseBlur() { + if (mBlurInput != null) { + mBlurInput.destroy(); + mBlurInput = null; + } + if (mBlurOutput != null) { + mBlurOutput.destroy(); + mBlurOutput = null; + } + if (mBlurScript != null) { + mBlurScript.destroy(); + mBlurScript = null; + } + if (mRenderScript != null) { + mRenderScript.destroy(); + mRenderScript = null; + } + } + +} diff --git a/OCH/mogo-och-common-module/src/main/res/values/attrs.xml b/OCH/mogo-och-common-module/src/main/res/values/attrs.xml index 5c2f6845f0..27efdf3802 100644 --- a/OCH/mogo-och-common-module/src/main/res/values/attrs.xml +++ b/OCH/mogo-och-common-module/src/main/res/values/attrs.xml @@ -24,7 +24,13 @@ - + + + + + + + @@ -34,4 +40,16 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerBaseRespBean.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerBaseRespBean.java new file mode 100644 index 0000000000..4ad877a45b --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerBaseRespBean.java @@ -0,0 +1,15 @@ +package com.mogo.och.taxi.passenger.bean; + +import com.mogo.eagle.core.data.BaseData; + +import java.util.List; +import java.util.Objects; + +/** + * Created by pangfan on 2021/8/19 + * + * 查询订单返回数据结构 + */ +public class TaxiPassengerBaseRespBean extends BaseData { + public Object data; +} diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerCheckPhoneUpdateOrderReqBean.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerCheckPhoneUpdateOrderReqBean.java new file mode 100644 index 0000000000..ffef1d0a34 --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerCheckPhoneUpdateOrderReqBean.java @@ -0,0 +1,17 @@ +package com.mogo.och.taxi.passenger.bean; + +/** + * Created by pangfan on 2021/8/19 + * + * 验证手机号后四位同时流转订单状态 + */ +public class TaxiPassengerCheckPhoneUpdateOrderReqBean { + + public String orderNo; + public String phone; + + public TaxiPassengerCheckPhoneUpdateOrderReqBean(String orderNo,String phone) { + this.orderNo = orderNo; + this.phone = phone; + } +} diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRespBean.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRespBean.java index 5b1da564c7..c26eec8f05 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRespBean.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRespBean.java @@ -45,7 +45,10 @@ public class TaxiPassengerOrderQueryRespBean extends BaseData { public long startTime; //预计用车时间:预约单=下单时的预约用车时间;即时单=派单成功的时间+预估的达到上车点的时间 public long bookingTime; - + //乘客手机号 + public String passengerPhone; + //订单多少乘客 + public String passengerNum; // !!!接口中暂无此字段,仅用于本地实现逻辑使用:起始站目的站距离km diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerScoreUpdateOrderReqBean.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerScoreUpdateOrderReqBean.java new file mode 100644 index 0000000000..75234703cf --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerScoreUpdateOrderReqBean.java @@ -0,0 +1,17 @@ +package com.mogo.och.taxi.passenger.bean; + +/** + * Created by pangfan on 2021/8/19 + * + * 验证手机号后四位同时流转订单状态 + */ +public class TaxiPassengerScoreUpdateOrderReqBean { + + public String orderNo; + public int star; + + public TaxiPassengerScoreUpdateOrderReqBean(String orderNo, int star) { + this.orderNo = orderNo; + this.star = star; + } +} diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCheckPhoneCallback.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCheckPhoneCallback.java new file mode 100644 index 0000000000..40cecf0a30 --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCheckPhoneCallback.java @@ -0,0 +1,6 @@ +package com.mogo.och.taxi.passenger.callback; + +public interface ITaxiPassengerCheckPhoneCallback { + //验证手机号并流转状态 + void onCheckPhoneAndUpdateOrderStatus(String phoneTail); +} diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonCallback.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonCallback.java new file mode 100644 index 0000000000..937b4913b9 --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonCallback.java @@ -0,0 +1,5 @@ +package com.mogo.och.taxi.passenger.callback; + +public interface ITaxiPassengerCommonCallback { + void onCommonCallback(); +} diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonValueCallback.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonValueCallback.java new file mode 100644 index 0000000000..157925b458 --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCommonValueCallback.java @@ -0,0 +1,5 @@ +package com.mogo.och.taxi.passenger.callback; + +public interface ITaxiPassengerCommonValueCallback { + void onCommonCallback(T t); +} diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java index e3266028cc..d51972499c 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java @@ -26,10 +26,12 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; import com.mogo.eagle.core.utilcode.util.NetworkUtils; +import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; +import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean; import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp; import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean; import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean; @@ -39,6 +41,7 @@ import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerAutopilotPlanningCa import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerControllerStatusCallback; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerNaviChangedCallback; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback; +import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonCallback; import com.mogo.och.taxi.passenger.callback.ITaxiPassengerVeloctityCallback; import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum; @@ -673,6 +676,51 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback SharedPrefsMgr.getInstance(mContext).putInt(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS,(int) sumLength); } + public void checkPhoneAndUpdateStatus(String phoneTail,ITaxiPassengerCommonCallback commonCallback) { + if (mCurrentOCHOrder == null) return; + CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "--route--- checkPhoneAndUpdateStatus"); + TaxiPassengerServiceManager.getInstance().checkPhoneAndUpdateOrderStatus(mContext, mCurrentOCHOrder.orderNo, + phoneTail, new TaxiPassengerServiceCallback() { + @Override + public void onSuccess(TaxiPassengerBaseRespBean data) { + ToastUtils.showLong("验证成功"); + if(commonCallback!=null) { + commonCallback.onCommonCallback(); + } + } + + @Override + public void onError() { + ToastUtils.showLong("当前网络异常,请重新验证;若始终异常,请您在手机端取消行程,给您带来不便,十分抱歉!"); + } + + @Override + public void onFail(int code, String msg) { + ToastUtils.showLong("onFail"+code+msg); + } + }); + } + + public void arrivedAndScore(int score,ITaxiPassengerCommonCallback commonCallback) { + if (mCurrentOCHOrder == null) return; + CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "--route--- checkPhoneAndUpdateStatus"); + TaxiPassengerServiceManager.getInstance().arrivedAndScore(mContext,mCurrentOCHOrder.orderNo, + score, new TaxiPassengerServiceCallback() { + @Override + public void onSuccess(TaxiPassengerBaseRespBean data) { + ToastUtils.showLong("评分成功"); + if(commonCallback!=null) { + commonCallback.onCommonCallback(); + } + } + + @Override + public void onFail(int code, String msg) { + ToastUtils.showLong(msg); + } + }); + } + private void runOnUIThread(Runnable executor) { if (executor == null) { return; diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.java index 7e3d423755..1857f7b1de 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.java @@ -1,9 +1,12 @@ package com.mogo.och.taxi.passenger.network; +import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean; +import com.mogo.och.taxi.passenger.bean.TaxiPassengerCheckPhoneUpdateOrderReqBean; import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp; import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryReqBean; import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean; import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean; import com.mogo.och.taxi.passenger.bean.TaxiPassengerQueryOrderRouteResp; +import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean; import io.reactivex.Observable; import retrofit2.http.Body; @@ -63,4 +66,23 @@ interface TaxiPassengerServiceApi { // @GET( "/autopilot-car-hailing/api/v1/driver/serviceStatus/query" ) @GET( "/autopilot-car-hailing/order/v2/driver/taxi/passenger/orderRoute" ) Observable queryOrderRoute(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("orderNo") String orderNo); + + /** + * 通过orderNo查询订单信息(用于本地已经有orderNo时) + * @param data + * @return + */ + @Headers( {"Content-type:application/json;charset=UTF-8"} ) + @POST( "/autopilot-car-hailing/order/v2/vehicle/taxi/passenger/verification/phone" ) + Observable checkPhoneAndUpdateOrderStatus(@Header ("appId") String appId, @Header("ticket") String ticket, @Body TaxiPassengerCheckPhoneUpdateOrderReqBean data); + + /** + * 通过orderNo查询订单信息(用于本地已经有orderNo时) + * @param data + * @return + */ + @Headers( {"Content-type:application/json;charset=UTF-8"} ) + @POST( "/autopilot-car-hailing/evaluation/vehicle/taxi/passenger/add" ) + Observable arrivedAndScore(@Header ("appId") String appId, @Header("ticket") String ticket, @Body TaxiPassengerScoreUpdateOrderReqBean data); + } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java index d1e111635d..0e47bb6c92 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java @@ -12,11 +12,14 @@ import com.mogo.eagle.core.network.RequestOptions; import com.mogo.eagle.core.network.SubscribeImpl; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.module.common.MogoApisHandler; +import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean; +import com.mogo.och.taxi.passenger.bean.TaxiPassengerCheckPhoneUpdateOrderReqBean; import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp; import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryReqBean; import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean; import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean; import com.mogo.och.taxi.passenger.bean.TaxiPassengerQueryOrderRouteResp; +import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean; import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -141,4 +144,24 @@ public class TaxiPassengerServiceManager { } }; } + + public void checkPhoneAndUpdateOrderStatus(Context context, String orderNo,String phone ,TaxiPassengerServiceCallback callback){ + + mOCHTaxiServiceApi.checkPhoneAndUpdateOrderStatus( + MoGoAiCloudClientConfig.getInstance().getServiceAppId() + ,MoGoAiCloudClientConfig.getInstance().getToken() + ,new TaxiPassengerCheckPhoneUpdateOrderReqBean(orderNo,phone)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(getSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")); + } + public void arrivedAndScore(Context context, String orderNo,int star,TaxiPassengerServiceCallback callback){ + mOCHTaxiServiceApi.arrivedAndScore( + MoGoAiCloudClientConfig.getInstance().getServiceAppId() + ,MoGoAiCloudClientConfig.getInstance().getToken() + ,new TaxiPassengerScoreUpdateOrderReqBean(orderNo,star)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(getSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")); + } } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java index fd1d8ef13a..12871cd6b8 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java @@ -18,6 +18,7 @@ import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerADASStatusCallback; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerControllerStatusCallback; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback; +import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonCallback; import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum; import com.mogo.och.taxi.passenger.model.TaxiPassengerGeocodeSearchModel; import com.mogo.och.taxi.passenger.model.TaxiPassengerModel; @@ -149,7 +150,15 @@ public class BaseTaxiPassengerPresenter extends Presenter { + mView.showOrHideArrivedEndLayout(false, ""); + mView.showOrHidePressengerCheckPager(true, order.startSiteAddr, + order.endSiteAddr, order.passengerNum, order.carNumber, order.passengerPhone); + }); + return; + } + if (TaxiPassengerOrderStatusEnum.UserArriveAtStart.getCode() == order.orderStatus || TaxiPassengerOrderStatusEnum.OnTheWayToEnd.getCode() == order.orderStatus){ runOnUIThread(() -> mView.showOrHideServingOrderFragment(true)); return; @@ -166,7 +175,6 @@ public class BaseTaxiPassengerPresenter extends Presenter { mView.showOrHideServingOrderFragment(false); - mView.showOrHideArrivedEndLayout(false, ""); }); TaxiPassengerGeocodeSearchModel.getInstance(getContext()).destroyGeocodeSearch(); mCurrentPassengerOrder = null; @@ -174,4 +182,26 @@ public class BaseTaxiPassengerPresenter extends Presenter?=null + var trAnimation = AnimationUtils.loadAnimation( + context, R.anim.left_to_right + ) + + private fun initView(context: Context) { + d(SceneConstant.M_TAXI_P + TAG, "initView") + LayoutInflater.from(context).inflate(R.layout.taxi_p_arrived_end_panel, this, true) + mArrivedEndStation = findViewById(R.id.arrived_end_station) + ochShadowLayout = findViewById(R.id.och_shadow_layout) + findViewById(R.id.tv_please_score).setOnClickListener(this) + findViewById(R.id.arrived_end_station_title).setOnLongClickListener { + OverlayViewUtils.dismissOverlayView(this) + false + } + } + + override fun onClick(v: View?) { + when (v?.id) { + R.id.tv_taxi_passenger_number_one -> { + taxiPassengerCommonValueCallback?.onCommonCallback(2) + } + else -> {} + } + } + + + + fun setDataAndStartAnimation(endSiteAddr: String?) { + mArrivedEndStation.text = endSiteAddr + ochShadowLayout.startAnimation(trAnimation) + } +} \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java index e68dd1af6c..f0188aeb32 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java @@ -4,12 +4,13 @@ import android.os.Handler; import android.os.Looper; import android.view.LayoutInflater; import android.view.View; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.constraintlayout.widget.ConstraintLayout; import androidx.fragment.app.FragmentTransaction; import com.mogo.commons.AbsMogoApplication; @@ -26,8 +27,11 @@ import com.mogo.map.uicontroller.VisualAngleMode; import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.constants.DataTypes; import com.mogo.och.taxi.passenger.R; +import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonValueCallback; import com.mogo.och.taxi.passenger.presenter.BaseTaxiPassengerPresenter; +import java.lang.ref.WeakReference; + /** * 网约车基础Fragment,主要负责布局通用界面,处理站点面板和通话面板互斥情况 @@ -48,8 +52,8 @@ public class TaxiPassengerBaseFragment extends MvpFragment mArrivedEndView; + private WeakReference mArrivedCheckView; protected TaxiPassengerServingOrderFragment ochServingOrderFragment = null; @@ -79,11 +83,22 @@ public class TaxiPassengerBaseFragment extends MvpFragment(new TaxiPassengerArrivedView(getContext())); + mArrivedEndView.get().setTaxiPassengerCommonValueCallback(integer -> getPresenter().arrivedAndScore(integer)); + } + + private void initCheckView() { + mArrivedCheckView = new WeakReference<>(new TaxiPassengerCheckView(getContext())); + mArrivedCheckView.get().setOnCheckPhoneAndUpdateStatusListener(phoneTail -> getPresenter().checkAndUpdateStatus(phoneTail)); } /** @@ -245,12 +276,33 @@ public class TaxiPassengerBaseFragment extends MvpFragment(4) + private val numSelectTextView = arrayOfNulls(4) + + private fun initView(context: Context) { + d(SceneConstant.M_TAXI_P + TAG, "initView") + LayoutInflater.from(context).inflate(R.layout.taxi_p_passenger_check_panel, this, true) + tvPassengerCount = findViewById(R.id.tv_passenger_count) + tvPassengerStart = findViewById(R.id.tv_passenger_start) + tvPassengerEnd = findViewById(R.id.tv_passenger_end) + tvTaxiNumber = findViewById(R.id.tv_taxi_number) + tvTaxiPassengerNumberfirst = findViewById(R.id.tv_taxi_passenger_number_first) + tvTaxiPassengerNumberSecond = findViewById(R.id.tv_taxi_passenger_number_second) + tvTaxiPassengerNumberThird = findViewById(R.id.tv_taxi_passenger_number_third) + tvTaxiPassengerNumberFourth = findViewById(R.id.tv_taxi_passenger_number_fourth) + keyBoardLogic() + numSelectTextView[0] = tvTaxiPassengerNumberfirst + numSelectTextView[1] = tvTaxiPassengerNumberSecond + numSelectTextView[2] = tvTaxiPassengerNumberThird + numSelectTextView[3] = tvTaxiPassengerNumberFourth + } + + private fun keyBoardLogic() { + findViewById(R.id.tv_taxi_passenger_number_one).setOnClickListener(this) + findViewById(R.id.tv_taxi_passenger_number_two).setOnClickListener(this) + findViewById(R.id.tv_taxi_passenger_number_three).setOnClickListener(this) + findViewById(R.id.tv_taxi_passenger_number_four).setOnClickListener(this) + findViewById(R.id.tv_taxi_passenger_number_five).setOnClickListener(this) + findViewById(R.id.tv_taxi_passenger_number_six).setOnClickListener(this) + findViewById(R.id.tv_taxi_passenger_number_seven).setOnClickListener(this) + findViewById(R.id.tv_taxi_passenger_number_eight).setOnClickListener(this) + findViewById(R.id.tv_taxi_passenger_number_nine).setOnClickListener(this) + findViewById(R.id.tv_taxi_passenger_number_zero).setOnClickListener(this) + findViewById(R.id.tv_taxi_passenger_number_back).setOnClickListener(this) + findViewById(R.id.tv_taxi_passenger_number_submit).setOnClickListener(this) + + tvTaxiPassengerNumberfirst.setOnClickListener(this) + tvTaxiPassengerNumberSecond.setOnClickListener(this) + tvTaxiPassengerNumberThird.setOnClickListener(this) + tvTaxiPassengerNumberFourth.setOnClickListener(this) + + findViewById(R.id.tv_hello).setOnLongClickListener { + OverlayViewUtils.dismissOverlayView(this) + false + } + } + + override fun onClick(v: View?) { + when (v?.id) { + R.id.tv_taxi_passenger_number_one -> {showNumver(1)} + R.id.tv_taxi_passenger_number_two -> {showNumver(2)} + R.id.tv_taxi_passenger_number_three-> {showNumver(3)} + R.id.tv_taxi_passenger_number_four-> {showNumver(4)} + R.id.tv_taxi_passenger_number_five -> {showNumver(5)} + R.id.tv_taxi_passenger_number_six -> {showNumver(6)} + R.id.tv_taxi_passenger_number_seven -> {showNumver(7)} + R.id.tv_taxi_passenger_number_eight -> {showNumver(8)} + R.id.tv_taxi_passenger_number_nine -> {showNumver(9)} + R.id.tv_taxi_passenger_number_zero -> {showNumver(0)} + R.id.tv_taxi_passenger_number_back -> {deleteNumver()} + R.id.tv_taxi_passenger_number_first -> {selectIndex(0)} + R.id.tv_taxi_passenger_number_second -> {selectIndex(1)} + R.id.tv_taxi_passenger_number_third -> {selectIndex(2)} + R.id.tv_taxi_passenger_number_fourth -> {selectIndex(3)} + R.id.tv_taxi_passenger_number_submit -> {checkAndCommit()} + else -> {} + } + } + + private fun checkAndCommit() { + val numberStr = "${numSelect[0]}${numSelect[1]}${numSelect[2]}${numSelect[3]}" + if(!phone.endsWith(numberStr)){ + ToastUtils.showLong("请输入正确的手机尾号") + return + } + onCheckPhoneAndUpdateStatusListener?.onCheckPhoneAndUpdateOrderStatus(numberStr) + } + + private fun selectIndex(i: Int) { + index = i + changeStyle() + } + + private fun showNumver(number: Int) { + if (index in 0..3) { + numSelect[index] = number + numSelectTextView[index]!!.text = number.toString() + if(index!=3){ + index++ + } + changeStyle() + } + } + + private fun deleteNumver() { + if (index in 0..3) { + if(numSelect[index]==null){ + if(index!=0){ + index-- + } + changeStyle() + return + } + numSelect[index] = null + numSelectTextView[index]!!.text = "" + } + } + + private fun changeStyle() { + numSelectTextView.forEachIndexed { indexIn, textView -> + if(indexIn==index){ + numSelectTextView[index]!!.setBackgroundResource(R.drawable.bg_taxi_p_checked_input_background) + numSelectTextView[index]!!.setTextColor(resources.getColor(R.color.taxi_p_check_keyboard_input_field_checked)) + numSelectTextView[index]!!.setShadowLayer(0f,0f,0f, + resources.getColor(R.color.taxi_p_check_keyboard_input_field_checked_text_shadow)) + }else{ + numSelectTextView[indexIn]!!.setBackgroundResource(R.drawable.bg_taxi_p_check_input_background) + numSelectTextView[indexIn]!!.setTextColor(resources.getColor(R.color.taxi_p_check_keyboard_input_field)) + numSelectTextView[indexIn]!!.setShadowLayer(20f,0f,2f, + resources.getColor(R.color.taxi_p_check_keyboard_input_field_checked_text_shadow)) + } + } + + } + + fun setData( + startSiteAddr: String?, + endSiteAddr: String?, + passengerNum: String?, + carNumber: String?, + phone: String? + ) { + this.phone = phone?:"" + val sb = SpannableStringBuilder("乘客数:$passengerNum 位") // 包装字体内容 + sb.setSpan( + TextAppearanceSpan("default", + Typeface.NORMAL,100, + resources.getColorStateList(R.color.taxi_p_check_passenger_number) ,null ), + 4, 5, Spannable.SPAN_INCLUSIVE_INCLUSIVE) + tvPassengerCount.text = sb + tvPassengerStart.text = "起 点 : $startSiteAddr" + tvPassengerEnd.text = "终 点 : $endSiteAddr" + tvTaxiNumber.text = "蘑菇 " + carNumber + "为您服务" + for(i in numSelect.indices){ + numSelect[i] = null + } + numSelectTextView.forEach { + it?.text = "" + } + } + + companion object { + const val TAG = "TaxiPassengerCheckView" + } + + init { + try { + initView(context) + } catch (e: Exception) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerMapDirectionView.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerMapDirectionView.java index de4c0fcb2a..e893c97426 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerMapDirectionView.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerMapDirectionView.java @@ -226,10 +226,12 @@ public class TaxiPassengerMapDirectionView //设置线段纹理 PolylineOptions polylineOptions = new PolylineOptions(); polylineOptions.addAll(mCoordinatesLatLng); - polylineOptions.colorValues(colorList); // 1FC3FF -> 57ABFF - polylineOptions.useGradient(true); + //polylineOptions.colorValues(colorList); // 1FC3FF -> 57ABFF + //加上这个属性,表示使用渐变线 + //polylineOptions.useGradient(true); polylineOptions.width(10); polylineOptions.lineCapType(PolylineOptions.LineCapType.LineCapRound); + polylineOptions.setCustomTexture(BitmapDescriptorFactory.fromResource(R.drawable.taxi_p_map_arrow)); // 绘制线 mPolyline = mAMap.addPolyline(polylineOptions); diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/anim/alpha_hide_show.xml b/OCH/mogo-och-taxi-passenger/src/main/res/anim/alpha_hide_show.xml new file mode 100644 index 0000000000..b22df1d9f5 --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/res/anim/alpha_hide_show.xml @@ -0,0 +1,3 @@ + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/anim/left_to_right.xml b/OCH/mogo-och-taxi-passenger/src/main/res/anim/left_to_right.xml new file mode 100644 index 0000000000..9444da0304 --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/res/anim/left_to_right.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/bg_taxi_p_checked_input_background.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/bg_taxi_p_checked_input_background.png new file mode 100644 index 0000000000..ec58d028f2 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/bg_taxi_p_checked_input_background.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_arrived_end_light.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_arrived_end_light.png new file mode 100644 index 0000000000..046f001a37 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_arrived_end_light.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_map_arrow.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_map_arrow.png new file mode 100644 index 0000000000..bb4a45f34d Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_map_arrow.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_end_boll.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_end_boll.png new file mode 100644 index 0000000000..97644d1c3d Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_end_boll.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_logo.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_logo.png new file mode 100644 index 0000000000..328da8bc90 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_logo.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_panel_bg.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_panel_bg.png new file mode 100755 index 0000000000..49567f10c2 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_panel_bg.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_robot.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_robot.png new file mode 100644 index 0000000000..156a3d1526 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_robot.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_start_boll.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_start_boll.png new file mode 100644 index 0000000000..c6a019187a Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_start_boll.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_start_end_line.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_start_end_line.png new file mode 100644 index 0000000000..14c0e5fa19 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_start_end_line.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/bg_taxi_p_checked_input_background.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/bg_taxi_p_checked_input_background.png new file mode 100644 index 0000000000..ec58d028f2 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/bg_taxi_p_checked_input_background.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_arrived_end_light.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_arrived_end_light.png new file mode 100644 index 0000000000..046f001a37 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_arrived_end_light.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_map_arrow.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_map_arrow.png new file mode 100644 index 0000000000..bb4a45f34d Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_map_arrow.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_end_boll.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_end_boll.png new file mode 100644 index 0000000000..97644d1c3d Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_end_boll.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_logo.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_logo.png new file mode 100644 index 0000000000..328da8bc90 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_logo.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_panel_bg.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_panel_bg.png new file mode 100755 index 0000000000..49567f10c2 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_panel_bg.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_robot.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_robot.png new file mode 100644 index 0000000000..156a3d1526 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_robot.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_start_boll.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_start_boll.png new file mode 100644 index 0000000000..c6a019187a Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_start_boll.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_start_end_line.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_start_end_line.png new file mode 100644 index 0000000000..14c0e5fa19 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_start_end_line.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_arrived_info.xml b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_arrived_info.xml new file mode 100644 index 0000000000..897bad44ef --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_arrived_info.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_arrived_info_line.xml b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_arrived_info_line.xml new file mode 100644 index 0000000000..ab6a26f504 --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_arrived_info_line.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_arrived_info_yello_v.xml b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_arrived_info_yello_v.xml new file mode 100644 index 0000000000..69284ae518 --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_arrived_info_yello_v.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_check_input_background.xml b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_check_input_background.xml new file mode 100644 index 0000000000..a60d36d074 --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_check_input_background.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_keyboard_background.xml b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_keyboard_background.xml new file mode 100644 index 0000000000..8476da3706 --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_keyboard_background.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_keyboard_submit_background.xml b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_keyboard_submit_background.xml new file mode 100644 index 0000000000..b29276965c --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_keyboard_submit_background.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_arrived_end_panel.xml b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_arrived_end_panel.xml index 94a263bb77..e1dfbdf261 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_arrived_end_panel.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_arrived_end_panel.xml @@ -5,52 +5,105 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/taxi_p_arrive_end_panel_bg" + android:id="@+id/cl_content" tools:ignore="MissingDefaultResource"> - + app:layout_constraintStart_toStartOf="parent" + app:shadowColor="#80000000" + app:shadowRadius="60px" + app:shadow_position="outer" + app:xOffset="0px" + app:yOffset="0px"> + + + + + - + - + - + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml index 05706dd341..f38dd7ccfc 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml @@ -42,6 +42,7 @@ app:layout_constraintLeft_toLeftOf="parent" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/values/colors.xml b/OCH/mogo-och-taxi-passenger/src/main/res/values/colors.xml index 24d1125213..343e9577d5 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/values/colors.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/values/colors.xml @@ -38,4 +38,17 @@ #00000000 + + #FFFFC836 + #FF282F62 + #FFFFFF + #FFFFFF + + #7020466F + #8039388E + #B630347D + #151937 + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/values/strings.xml b/OCH/mogo-och-taxi-passenger/src/main/res/values/strings.xml index 9be34f07d0..9f66fe500a 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/values/strings.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/values/strings.xml @@ -24,4 +24,10 @@ 已达到目的地,请从右侧下车,感谢乘坐\'蘑菇车联\'无人驾驶车 已到达 感谢您使用蘑菇车联自动驾驶出行服务,期待下次与您相遇 + + + 欢迎体验MOGO自动驾驶出租车 + Hello,您好 + 请输出手机号后4位: + 小蘑菇 \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml b/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml index 59da5d765c..732e7c8a20 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml @@ -11,4 +11,33 @@ 32px + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceApiNew.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceApiNew.java index 734138f74c..b5a3f83639 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceApiNew.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceApiNew.java @@ -134,7 +134,8 @@ interface TaxiServiceApiNew { */ @Headers( {"Content-type:application/json;charset=UTF-8"} ) // @POST( "/autopilot-car-hailing/api/v1/driver/order/updateStatus" ) - @POST( "/autopilot-car-hailing/order/v2/driver/taxi/order/updateStatus" ) +// @POST( "/autopilot-car-hailing/order/v2/driver/taxi/order/updateStatus" ) + @POST( "/autopilot-car-hailing/order/v2/vehicle/taxi/driver/updateStatus" ) Observable updateOrderStatus(@Header ("appId") String appId,@Header("ticket") String ticket,@Body OrderStatusUpdateReqBean data); /** diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java index ef1f655a79..0df85304cf 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java @@ -4,7 +4,6 @@ import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAX import static com.mogo.och.taxi.constant.TaxiConst.TIMER_START_AUTOPILOT_INTERVAL; import android.animation.ObjectAnimator; -import android.content.Intent; import android.graphics.drawable.AnimationDrawable; import android.os.Handler; import android.os.Looper; @@ -27,23 +26,20 @@ import com.mogo.commons.mvp.IView; import com.mogo.commons.mvp.MvpFragment; import com.mogo.commons.mvp.Presenter; import com.mogo.commons.voice.AIAssist; -import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters; import com.mogo.eagle.core.data.config.HmiBuildConfig; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager; import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.function.call.map.CallerSmpManager; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import com.mogo.eagle.core.utilcode.mogo.toast.TipToast; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.map.MogoMapUIController; import com.mogo.map.MogoMarkerManager; import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.uicontroller.VisualAngleMode; -import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.constants.DataTypes; import com.mogo.module.common.view.OnPreventFastClickListener; import com.mogo.och.taxi.R; @@ -111,13 +107,13 @@ public abstract class BaseTaxiTabFragment { // onAutopilotStatusChanged(false); // }); - mSpeedView.setOnLongClickListener(v -> { - CallerLogger.INSTANCE.d(M_TAXI + TAG, "长按显示状态工具栏"); - Intent intent = new Intent(); - intent.putExtra("oper", 52); - MogoApisHandler.getInstance().getApis().getIntentManagerApi().invoke("com.mogo.mock", intent); - return true; - }); +// mSpeedView.setOnLongClickListener(v -> { +// CallerLogger.INSTANCE.d(M_TAXI + TAG, "长按显示状态工具栏"); +// Intent intent = new Intent(); +// intent.putExtra("oper", 52); +// MogoApisHandler.getInstance().getApis().getIntentManagerApi().invoke("com.mogo.mock", intent); +// return true; +// }); } tvOperationStatus = findViewById(R.id.module_mogo_och_operation_status); @@ -175,82 +171,44 @@ public abstract class BaseTaxiTabFragment { -// if (groupTestPanel.getVisibility() == View.VISIBLE) { - groupTestPanel.setVisibility(View.GONE); -// } else { -// groupTestPanel.setVisibility(View.VISIBLE); -// } -// return false; -// }); -// } + // debug下调用测试面板 长按速度值 + if (DebugConfig.isDebug()) { + mSpeedView.setOnLongClickListener(v -> { + if (groupTestPanel.getVisibility() == View.VISIBLE) { + groupTestPanel.setVisibility(View.GONE); + } else { + groupTestPanel.setVisibility(View.VISIBLE); + } + return false; + }); + } onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState()); // 模拟 不可自动驾驶,目前场景是刚开机,adas还未和工控机连接 -// findViewById(R.id.btnAutopilotDisable).setOnClickListener(view -> -// { -// MogoApisHandler.getInstance().getApis() -// .getAdasControllerApi() -// .mockOchStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE, "不能使用"); -//// CallerLogger.INSTANCE.d(M_TAXI + "lianglihui","模拟 不可自动驾驶"); -// } -// ); + findViewById(R.id.btnAutopilotDisable).setOnClickListener(view -> + onAutopilotStatusChanged(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) + + ); // 模拟 可自动驾驶,工控机连接正常,且处于人工干预状态 -// findViewById(R.id.btnAutopilotEnable).setOnClickListener(view -> -// { -// MogoApisHandler.getInstance().getApis() -// .getAdasControllerApi() -// .mockOchStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE, "能使用"); -// -//// CallerLogger.INSTANCE.d(M_TAXI + "lianglihui","模拟 可自动驾驶"); -// } -// ); + findViewById(R.id.btnAutopilotEnable).setOnClickListener(view -> + onAutopilotStatusChanged(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) + + ); // 模拟 自动驾驶能力,自动驾驶中,可能是停车,可能是行进,但是是机器在处理车的前进后退,不是人 -// findViewById(R.id.btnAutopilotRunning).setOnClickListener(view -> -// { -// MogoApisHandler.getInstance().getApis() -// .getAdasControllerApi() -// .mockOchStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING, "Running"); -//// CallerLogger.INSTANCE.d(M_TAXI + "lianglihui","模拟 自动驾驶能力"); -// } -// ); + findViewById(R.id.btnAutopilotRunning).setOnClickListener(view -> + onAutopilotStatusChanged(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) - // 模拟 自动驾驶站 -// findViewById(R.id.btnAutopilotArrive).setOnClickListener(view -> -// { -// MogoApisHandler.getInstance().getApis() -// .getAdasControllerApi().mockOchStatus(-1, "Arrived"); -// -//// CallerLogger.INSTANCE.d(M_TAXI + "lianglihui","模拟 自动驾驶站"); -// } -// ); - - // 模拟 站点下发工控 - findViewById(R.id.btnAutopilotControl).setOnClickListener(view -> - { -// CallerLogger.INSTANCE.d(M_TAXI + "lianglihui","模拟 站点下发工控"); - AutopilotControlParameters currentAutopilot = new AutopilotControlParameters(); - currentAutopilot.isSpeakVoice = true; - // 万集东门站 - currentAutopilot.startLatLon = new AutopilotControlParameters.AutoPilotLonLat(40.194795425, 116.724476409); - // 市政府前街18号 - currentAutopilot.endLatLon = new AutopilotControlParameters.AutoPilotLonLat(40.1939540844, 116.720067); - // 订单运营类型 (9出租车,10小巴) - currentAutopilot.vehicleType = 10; - CallerLogger.INSTANCE.d(M_TAXI + TAG, "模拟 订单站点下发:" + currentAutopilot); - CallerAutoPilotManager.INSTANCE.startAutoPilot(currentAutopilot); - } ); tvOperationStatus.setOnClickListener(view -> { @@ -330,7 +288,7 @@ public abstract class BaseTaxiTabFragment -