add the fit views of fentiji

This commit is contained in:
zhongchao
2021-08-08 12:09:02 +08:00
parent 2545d1c868
commit 8c808edc75
38 changed files with 620 additions and 151518 deletions

View File

@@ -7,15 +7,14 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import com.mogo.module.common.dialog.BaseFloatDialog;
import com.mogo.module.service.R;
import com.mogo.module.service.dispatch.bean.DispatchAdasAutoPilotLocReceiverBean;
import com.mogo.utils.logger.Logger;
public class DispatchRemindDialog extends BaseFloatDialog {
public class DispatchAirportDialog extends DispatchBaseDialog {
private static final String TAG = "DispatchRemindDialog";
private static final String TAG = "DispatchAirportDialog";
private IDispatchRemindClickListener mListener;
private final TextView tvStartLoc;
@@ -24,9 +23,9 @@ public class DispatchRemindDialog extends BaseFloatDialog {
private final TextView tvFlightInfo;
private final TextView tvTaskContent;
public DispatchRemindDialog(@NonNull Context context) {
public DispatchAirportDialog(@NonNull Context context) {
super(context);
setContentView(R.layout.module_dialog_adas_dispatch_remind);
setContentView(R.layout.module_dialog_adas_dispatch_airport);
setCanceledOnTouchOutside(false);
tvStartLoc = findViewById(R.id.module_services_dispatch_dialog_start_content);
tvEndLoc = findViewById(R.id.module_services_dispatch_dialog_end_content);
@@ -43,21 +42,22 @@ public class DispatchRemindDialog extends BaseFloatDialog {
}
@Override
public void showDialog(DispatchAdasAutoPilotLocReceiverBean dispatchContent) {
show();
if(!TextUtils.isEmpty(dispatchContent.getStartLocAddress())){
if (!TextUtils.isEmpty(dispatchContent.getStartLocAddress())) {
tvStartLoc.setText(dispatchContent.getStartLocAddress());
}
if(!TextUtils.isEmpty(dispatchContent.getEndLocAddress())){
if (!TextUtils.isEmpty(dispatchContent.getEndLocAddress())) {
tvEndLoc.setText(dispatchContent.getEndLocAddress());
}
if(!TextUtils.isEmpty(dispatchContent.getTaskTime())){
if (!TextUtils.isEmpty(dispatchContent.getTaskTime())) {
tvTaskTime.setText(dispatchContent.getTaskTime());
}
if(!TextUtils.isEmpty(dispatchContent.getFlightInfo())){
if (!TextUtils.isEmpty(dispatchContent.getFlightInfo())) {
tvFlightInfo.setText(dispatchContent.getFlightInfo());
}
if(!TextUtils.isEmpty(dispatchContent.getTaskInfo())){
if (!TextUtils.isEmpty(dispatchContent.getTaskInfo())) {
tvTaskContent.setText(dispatchContent.getTaskInfo());
}
}
@@ -66,6 +66,7 @@ public class DispatchRemindDialog extends BaseFloatDialog {
dismiss();
}
@Override
public void addIDispatchRemindListener(IDispatchRemindClickListener listener) {
if (listener == null) {
Logger.d(TAG, "addIDispatchRemindListener listener is null");
@@ -74,8 +75,4 @@ public class DispatchRemindDialog extends BaseFloatDialog {
this.mListener = listener;
}
public interface IDispatchRemindClickListener {
void affirm();
}
}

View File

@@ -1,6 +1,8 @@
package com.mogo.module.service.dispatch;
import static com.mogo.module.service.dispatch.model.DispatchServiceModel.DISPATCH_RESULT_AFFIRM;
import static com.mogo.module.service.dispatch.model.DispatchServiceModel.DISPATCH_RESULT_MANUAL_CANCEL;
import static com.mogo.module.service.dispatch.model.DispatchServiceModel.DISPATCH_RESULT_TIMER_CANCEL;
import android.content.Context;
import android.location.Location;
@@ -23,7 +25,7 @@ import com.mogo.utils.logger.Logger;
//负责监听自动驾驶状态并进行状态上报,自动驾驶路线上报,接收调度指令展示指令弹窗
public class DispatchAutoPilotManager implements IMogoOnMessageListener<DispatchAdasAutoPilotLocReceiverBean>
, DispatchRemindDialog.IDispatchRemindClickListener
, IDispatchRemindClickListener
, IMogoCarLocationChangedListener2, IMogoAdasOCHCallback {
private static final String TAG = "DispatchAutoPilotManager";
@@ -33,7 +35,7 @@ public class DispatchAutoPilotManager implements IMogoOnMessageListener<Dispatch
private static final int MSG_SOCKET_TYPE = 501000;
private static final int MSG_TYPE_SHOW_DIALOG = 0;
private DispatchRemindDialog dispatchRemindDialog;
private DispatchDialogManager dispatchDialogManager;
private MogoLocation mogoLocation;
private DispatchAdasAutoPilotLocReceiverBean receiverBean;
@@ -57,12 +59,12 @@ public class DispatchAutoPilotManager implements IMogoOnMessageListener<Dispatch
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == MSG_TYPE_SHOW_DIALOG) {
if (dispatchRemindDialog.isShowing()) {
if (dispatchDialogManager.isShowing()) {
Logger.d(TAG, "此时已经有调度,又收到调度信息");
return;
}
DispatchAdasAutoPilotLocReceiverBean msgData = (DispatchAdasAutoPilotLocReceiverBean) msg.obj;
dispatchRemindDialog.showDialog(msgData);
dispatchDialogManager.showDialog(msgData);
}
}
};
@@ -75,8 +77,8 @@ public class DispatchAutoPilotManager implements IMogoOnMessageListener<Dispatch
.registerCarLocationChangedListener(TAG, this);
MogoApisHandler.getInstance().getApis().getAdasControllerApi()
.addAdasOCHCallback(this);
dispatchRemindDialog = new DispatchRemindDialog(context);
dispatchRemindDialog.addIDispatchRemindListener(this);
dispatchDialogManager = DispatchDialogManager.getInstance(context);
dispatchDialogManager.addIDispatchRemindListener(this);
}
@Override
@@ -99,6 +101,7 @@ public class DispatchAutoPilotManager implements IMogoOnMessageListener<Dispatch
@Override
public void affirm() {
dispatchDialogManager.releaseDialog();
DispatchServiceModel.getInstance().dispatchResultUpload(DISPATCH_RESULT_AFFIRM, new IDispatch() {
@Override
public void onSuccess() {
@@ -118,6 +121,23 @@ public class DispatchAutoPilotManager implements IMogoOnMessageListener<Dispatch
});
}
@Override
public void cancel(boolean manualTrigger) {
dispatchDialogManager.releaseDialog();
DispatchServiceModel.getInstance().dispatchResultUpload(manualTrigger ? DISPATCH_RESULT_MANUAL_CANCEL
: DISPATCH_RESULT_TIMER_CANCEL, new IDispatch() {
@Override
public void onSuccess() {
}
@Override
public void onError(String msg) {
}
});
}
@Override
public void onCarLocationChanged2(Location location) {
//坐标转换
@@ -138,14 +158,37 @@ public class DispatchAutoPilotManager implements IMogoOnMessageListener<Dispatch
}
public void test() {
Logger.d(TAG, "test to trigger mock autopilot");
public void testEZhouStart() {
Logger.d(TAG, "test to trigger mock testEZhouStart");
DispatchAdasAutoPilotLocReceiverBean adasAutoPilotLocReceiverBean = new DispatchAdasAutoPilotLocReceiverBean(
"1", 26.825571122, 112.5762410415, "起点---5号跑道",
DispatchAdasAutoPilotLocReceiverBean.DISPATCH_SOURCE_EZHOU, DispatchAdasAutoPilotLocReceiverBean.DISPATCH_TYPE_START, "1",
26.825571122, 112.5762410415, "起点---5号跑道",
26.825571122, 112.5762410415, "终点---鄂州机场",
"" + System.currentTimeMillis(), "AR453航班", "实现调度", System.currentTimeMillis());
"5分钟", "AR453航班", "实现调度", System.currentTimeMillis());
this.receiverBean = adasAutoPilotLocReceiverBean;
dispatchRemindDialog.showDialog(adasAutoPilotLocReceiverBean);
DispatchDialogManager.getInstance(mContext).showDialog(adasAutoPilotLocReceiverBean);
}
public void testEZhouStop() {
Logger.d(TAG, "test to trigger mock testEZhouStop");
DispatchAdasAutoPilotLocReceiverBean adasAutoPilotLocReceiverBean = new DispatchAdasAutoPilotLocReceiverBean(
DispatchAdasAutoPilotLocReceiverBean.DISPATCH_SOURCE_EZHOU, DispatchAdasAutoPilotLocReceiverBean.DISPATCH_TYPE_STOP, "1",
0.0, 0.0, "",
0.0, 0.0, "",
"", "", "", System.currentTimeMillis());
this.receiverBean = adasAutoPilotLocReceiverBean;
DispatchDialogManager.getInstance(mContext).showDialog(adasAutoPilotLocReceiverBean);
}
public void testHengYangStart() {
Logger.d(TAG, "test to trigger mock testHengYangStart");
DispatchAdasAutoPilotLocReceiverBean adasAutoPilotLocReceiverBean = new DispatchAdasAutoPilotLocReceiverBean(
DispatchAdasAutoPilotLocReceiverBean.DISPATCH_SOURCE_HENGYANG, DispatchAdasAutoPilotLocReceiverBean.DISPATCH_TYPE_START, "2",
26.825571122, 112.5762410415, "衡阳科学城",
26.825571122, 112.5762410415, "衡阳首钢集团",
"", "", "", System.currentTimeMillis());
this.receiverBean = adasAutoPilotLocReceiverBean;
DispatchDialogManager.getInstance(mContext).showDialog(adasAutoPilotLocReceiverBean);
}
public void testDispatchResultUpload() {

View File

@@ -0,0 +1,20 @@
package com.mogo.module.service.dispatch;
import android.content.Context;
import androidx.annotation.NonNull;
import com.mogo.module.common.dialog.BaseFloatDialog;
import com.mogo.module.service.dispatch.bean.DispatchAdasAutoPilotLocReceiverBean;
public abstract class DispatchBaseDialog extends BaseFloatDialog {
public DispatchBaseDialog(@NonNull Context context) {
super(context);
}
public abstract void addIDispatchRemindListener(IDispatchRemindClickListener listener);
public abstract void showDialog(DispatchAdasAutoPilotLocReceiverBean dispatchContent);
}

View File

@@ -0,0 +1,97 @@
package com.mogo.module.service.dispatch;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.mogo.module.service.R;
import com.mogo.module.service.dispatch.bean.DispatchAdasAutoPilotLocReceiverBean;
import com.mogo.utils.logger.Logger;
public class DispatchCarsDialog extends DispatchBaseDialog{
private static final String TAG = "DispatchCarsDialog";
private static final int MSG_TYPE_TIMER = 0;
private static int TIMER = 10;
private IDispatchRemindClickListener mListener;
private final TextView tvTimer;
private final TextView tvLoc;
private final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == MSG_TYPE_TIMER) {
if (TIMER > 0) {
TIMER--;
Logger.d(TAG,"timer : " + TIMER);
tvTimer.setText(String.valueOf(TIMER));
handler.sendEmptyMessageDelayed(MSG_TYPE_TIMER,1000L);
} else {
hideDialog();
}
}
}
};
public DispatchCarsDialog(@NonNull Context context) {
super(context);
setContentView(R.layout.module_dialog_adas_dispatch_cars);
setCanceledOnTouchOutside(false);
tvTimer = findViewById(R.id.module_adas_dispatch_remind_timer);
tvLoc = findViewById(R.id.module_adas_dispatch_remind_loc);
Button btnAffirm = (Button) findViewById(R.id.module_adas_dispatch_remind_affirm);
Button btnCancel = (Button) findViewById(R.id.module_adas_dispatch_remind_cancel);
tvTimer.setText(String.valueOf(TIMER));
btnAffirm.setOnClickListener(v -> {
if (mListener != null) {
mListener.affirm();
dismissDialog();
}
});
btnCancel.setOnClickListener(v -> {
if (mListener != null) {
mListener.cancel(true);
dismissDialog();
}
});
}
private void hideDialog() {
if (mListener != null) {
mListener.cancel(false);
}
dismissDialog();
}
private void dismissDialog(){
handler.removeMessages(MSG_TYPE_TIMER);
TIMER = 10;
dismiss();
}
@Override
public void addIDispatchRemindListener(IDispatchRemindClickListener listener) {
if (listener == null) {
Logger.d(TAG, "addIDispatchRemindListener listener is null");
return;
}
this.mListener = listener;
}
@Override
public void showDialog(DispatchAdasAutoPilotLocReceiverBean dispatchContent) {
if(TextUtils.isEmpty(dispatchContent.getEndLocAddress())){
return;
}
show();
handler.sendEmptyMessage(MSG_TYPE_TIMER);
tvLoc.setText(dispatchContent.getEndLocAddress());
}
}

View File

@@ -0,0 +1,108 @@
package com.mogo.module.service.dispatch;
import static com.mogo.module.service.dispatch.bean.DispatchAdasAutoPilotLocReceiverBean.DISPATCH_SOURCE_EZHOU;
import static com.mogo.module.service.dispatch.bean.DispatchAdasAutoPilotLocReceiverBean.DISPATCH_SOURCE_HENGYANG;
import static com.mogo.module.service.dispatch.bean.DispatchAdasAutoPilotLocReceiverBean.DISPATCH_TYPE_START;
import static com.mogo.module.service.dispatch.bean.DispatchAdasAutoPilotLocReceiverBean.DISPATCH_TYPE_STOP;
import android.content.Context;
import com.mogo.commons.voice.AIAssist;
import com.mogo.module.service.dispatch.bean.DispatchAdasAutoPilotLocReceiverBean;
import com.mogo.utils.logger.Logger;
public class DispatchDialogManager {
private static final String TAG = "DispatchDialogManager";
private static volatile DispatchDialogManager manager;
private static final byte[] obj = new byte[0];
private Context mContext;
private IDispatchRemindClickListener mListener;
private DispatchBaseDialog dialog;
private DispatchDialogManager(Context context) {
mContext = context;
}
public static DispatchDialogManager getInstance(Context context) {
if (manager == null) {
synchronized (obj) {
if (manager == null) {
manager = new DispatchDialogManager(context);
}
}
}
return manager;
}
public void addIDispatchRemindListener(IDispatchRemindClickListener listener) {
if (listener == null) {
Logger.d(TAG, "addIDispatchRemindListener listener is null");
return;
}
this.mListener = listener;
}
public boolean isShowing() {
return dialog != null && dialog.isShowing();
}
public void showDialog(DispatchAdasAutoPilotLocReceiverBean msgData) {
if (msgData == null) {
return;
}
switch (msgData.getSource()) {
case DISPATCH_SOURCE_HENGYANG:
dispatchHengYang(msgData);
break;
case DISPATCH_SOURCE_EZHOU:
dispatchEZhou(msgData);
break;
}
}
private void dispatchHengYang(DispatchAdasAutoPilotLocReceiverBean msgData) {
if (msgData.getType() == DISPATCH_TYPE_START) { //衡阳只有开始调度
if (dialog != null && dialog.isShowing()) { //避免下发两次
return;
}
if (dialog == null) {
dialog = new DispatchCarsDialog(mContext);
}
dialog.addIDispatchRemindListener(mListener);
dialog.showDialog(msgData);
}
}
private void dispatchEZhou(DispatchAdasAutoPilotLocReceiverBean msgData) {
switch (msgData.getType()) {
case DISPATCH_TYPE_START:
if (dialog != null && dialog.isShowing()) { //避免下发两次
return;
}
if (dialog == null) {
dialog = new DispatchAirportDialog(mContext);
}
dialog.addIDispatchRemindListener(mListener);
dialog.showDialog(msgData);
case DISPATCH_TYPE_STOP:
//语音播报
voice();
break;
}
}
private void voice() {
AIAssist.getInstance(mContext).speakTTSVoice("请立即停车!请立即停车!");
}
public void releaseDialog() {
if (dialog != null) {
if (dialog.isShowing()) {
dialog.dismiss();
}
dialog = null;
}
}
}

View File

@@ -15,12 +15,9 @@ public class DispatchTestPanelBroadCastReceiver extends BroadcastReceiver {
*/
public static final String BROADCAST_TEST_PANEL_CONTROL_TYPE_EXTRA_KEY = "sceneType";
private Context mContext;
@Override
public void onReceive(Context context, Intent intent) {
try {
this.mContext = context;
int sceneType = intent.getIntExtra(BROADCAST_TEST_PANEL_CONTROL_TYPE_EXTRA_KEY, 0);
Logger.d(TAG, "textPanelOpenType:" + sceneType);
// 分发场景
@@ -37,9 +34,13 @@ public class DispatchTestPanelBroadCastReceiver extends BroadcastReceiver {
*/
private void dispatchSceneTest(int sceneType) {
Logger.d(TAG, "sceneType=" + sceneType);
if (sceneType == 0) {//打开调度弹窗
DispatchAutoPilotManager.getInstance().test();
}else if(sceneType == 1){ //验证自动驾驶调度上报接口
if (sceneType == 0) {
DispatchAutoPilotManager.getInstance().testEZhouStart();
} else if (sceneType == 1) {
DispatchAutoPilotManager.getInstance().testEZhouStop();
} else if (sceneType == 2) {
DispatchAutoPilotManager.getInstance().testHengYangStart();
} else if (sceneType == 3) { //验证自动驾驶调度上报接口
DispatchAutoPilotManager.getInstance().testDispatchResultUpload();
}
}

View File

@@ -0,0 +1,8 @@
package com.mogo.module.service.dispatch;
public interface IDispatchRemindClickListener {
void affirm();
void cancel(boolean manualTrigger);
}

View File

@@ -2,6 +2,13 @@ package com.mogo.module.service.dispatch.bean;
public class DispatchAdasAutoPilotLocReceiverBean {
public static final int DISPATCH_SOURCE_HENGYANG = 1;
public static final int DISPATCH_SOURCE_EZHOU = 2;
public static final int DISPATCH_TYPE_START = 1;
public static final int DISPATCH_TYPE_STOP = 2;
private int source; // 1衡阳 2鄂州
private int type; // 1启动 2停止
private String poiId;
private double startLat;
@@ -17,7 +24,9 @@ public class DispatchAdasAutoPilotLocReceiverBean {
private String taskInfo;
private long systemTime;
public DispatchAdasAutoPilotLocReceiverBean(String poiId, double startLat, double startLon, String startLocAddress, double endLat, double endLon, String endLocAddress, String taskTime, String flightInfo, String taskInfo, long systemTime) {
public DispatchAdasAutoPilotLocReceiverBean(int source, int type, String poiId, double startLat, double startLon, String startLocAddress, double endLat, double endLon, String endLocAddress, String taskTime, String flightInfo, String taskInfo, long systemTime) {
this.source = source;
this.type = type;
this.poiId = poiId;
this.startLat = startLat;
this.startLon = startLon;
@@ -31,6 +40,22 @@ public class DispatchAdasAutoPilotLocReceiverBean {
this.systemTime = systemTime;
}
public int getSource() {
return source;
}
public void setSource(int source) {
this.source = source;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getPoiId() {
return poiId;
}
@@ -122,7 +147,9 @@ public class DispatchAdasAutoPilotLocReceiverBean {
@Override
public String toString() {
return "DispatchAdasAutoPilotLocReceiverBean{" +
"poiId='" + poiId + '\'' +
"source=" + source +
", type=" + type +
", poiId='" + poiId + '\'' +
", startLat=" + startLat +
", startLon=" + startLon +
", startLocAddress='" + startLocAddress + '\'' +

View File

@@ -24,7 +24,7 @@ import io.reactivex.schedulers.Schedulers;
public class DispatchServiceModel {
private static final String TAG = "AdasServiceModel";
private static final String TAG = "DispatchServiceModel";
private static volatile DispatchServiceModel instance;
private static final byte[] obj = new byte[0];