Merge branch 'dev_robotaxi-d-app-module_265_220329_2.6.5' of gitlab.zhidaoauto.com:zhjt/AndroidApp/MoGoEagleEye into dev_robotaxi-d-app-module_265_220329_2.6.5

This commit is contained in:
wangmingjun
2022-04-01 10:12:23 +08:00
267 changed files with 21332 additions and 6594 deletions

View File

@@ -11,6 +11,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.map.MogoMapUIController;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.och.bus.passenger.constant.BusPassengerConst;
import com.mogo.och.bus.passenger.ui.BusPassengerBaseFragment;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
@@ -30,6 +31,7 @@ public class MogoOCHBusPassenger implements IMogoOCH, IMogoStatusChangedListener
private FragmentActivity mActivity;
private int mContainerId;
private BusPassengerBaseFragment mBusPassengerFragment;
@Override
public void createCoverage(FragmentActivity activity, int containerId) {
@@ -63,17 +65,15 @@ public class MogoOCHBusPassenger implements IMogoOCH, IMogoStatusChangedListener
public void init(Context context) {
MogoApisHandler.getInstance().getApis().getStatusManagerApi().registerStatusChangedListener("OchBus"
, StatusDescriptor.VR_MODE, this);
MogoApisHandler.getInstance().getApis().getStatusManagerApi().registerStatusChangedListener("OchBus"
, StatusDescriptor.TOP_VIEW, this);
}
@Override
public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
if (descriptor == StatusDescriptor.VR_MODE){
if (descriptor == StatusDescriptor.VR_MODE) {
if (isTrue){
showFragment();
}else {
hideFragment();
}
}
}
@@ -86,4 +86,21 @@ public class MogoOCHBusPassenger implements IMogoOCH, IMogoStatusChangedListener
MogoMapUIController.getInstance()
.openVrMode( false );
}
private void showFragment() {
if (mBusPassengerFragment == null) {
CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "准备add fragment======");
mBusPassengerFragment = new BusPassengerBaseFragment();
mActivity.getSupportFragmentManager().beginTransaction().add(mContainerId, mBusPassengerFragment).commitAllowingStateLoss();
return;
}
CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "准备show fragment");
mActivity.getSupportFragmentManager().beginTransaction().show(mBusPassengerFragment).commitAllowingStateLoss();
}
private void hideFragment(){
if (mBusPassengerFragment != null){
mActivity.getSupportFragmentManager().beginTransaction().hide(mBusPassengerFragment).commitAllowingStateLoss();
}
}
}

View File

@@ -0,0 +1,20 @@
package com.mogo.och.bus.passenger.callback;
/**
* Created on 2022/3/31
*
* Model->Presenter回调ADAS相关自动驾驶状态回调到达终点等等
*/
public interface IBusPassengerADASStatusCallback {
// 自动驾驶触发的已到达目的地:暂未用到
void onAutopilotArriveEnd();
// 自动驾驶可用状态
void onAutopilotEnable();
// 自动驾驶不可用状态
void onAutopilotDisable();
// 自动驾驶运行中
void onAutopilotRunning();
}

View File

@@ -0,0 +1,15 @@
package com.mogo.och.bus.passenger.callback;
import com.amap.api.maps.model.LatLng;
import java.util.List;
import mogo.telematics.pad.MessagePad;
/**
* Created on 2022/3/31
*/
public interface IBusPassengerAutopilotPlanningCallback {
void routeResult(List<MessagePad.Location> models);
void routeResultByServer(List<LatLng> models);
}

View File

@@ -0,0 +1,15 @@
package com.mogo.och.bus.passenger.callback;
import android.location.Location;
/**
* Created on 2022/3/31
*
* Model->Presenter回调状态控制器监听accOn、adas ui show、voice ui show、push ui show、v2x ui show等等
*/
public interface IBusPassengerControllerStatusCallback {
// 是否vr map模式
void onVRModeChanged(boolean isVRMode);
// 自车定位
void onCarLocationChanged(Location location);
}

View File

@@ -0,0 +1,260 @@
package com.mogo.och.bus.passenger.model;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.net.ConnectivityManager;
import androidx.annotation.Nullable;
import com.mogo.aicloud.services.socket.IMogoLifecycleListener;
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.eagle.core.data.autopilot.ADASTrajectoryInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPlanningListener;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager;
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.och.bus.passenger.callback.IBusPassengerADASStatusCallback;
import com.mogo.och.bus.passenger.callback.IBusPassengerAutopilotPlanningCallback;
import com.mogo.och.bus.passenger.callback.IBusPassengerControllerStatusCallback;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import mogo.telematics.pad.MessagePad;
import mogo_msg.MogoReportMsg;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS_P;
/**
* Created on 2022/3/31
*/
public class BusPassengerModel {
private static final String TAG = BusPassengerModel.class.getSimpleName();
private static final class SingletonHolder {
private static final BusPassengerModel INSTANCE = new BusPassengerModel();
}
public static BusPassengerModel getInstance() {
return SingletonHolder.INSTANCE;
}
private Context mContext;
private IBusPassengerADASStatusCallback mADASStatusCallback; //Model->Presenter自动驾驶状态相关
private IBusPassengerAutopilotPlanningCallback mAutopilotPlanningCallback; //Model->Presenter自动驾驶线路规划
private Map<String, IBusPassengerControllerStatusCallback> mControllerStatusCallbackMap = new ConcurrentHashMap<>();
private double mLongitude, mLatitude;
private BusPassengerModel() {
}
public void init( Context context ) {
mContext = context.getApplicationContext();
initListeners();
// TODO: 2022/3/31
}
public void release() {
releaseListeners();
}
public void setMoGoAutopilotPlanningListener(IBusPassengerAutopilotPlanningCallback
moGoAutopilotPlanningCallback) {
this.mAutopilotPlanningCallback = moGoAutopilotPlanningCallback;
}
public void setADASStatusCallback(IBusPassengerADASStatusCallback callback) {
this.mADASStatusCallback = callback;
}
public void setControllerStatusCallback(String tag, IBusPassengerControllerStatusCallback callback) {
if (tag == null || "".equals(tag)) return;
if (callback == null) {
mControllerStatusCallbackMap.remove(tag);
return;
}
mControllerStatusCallbackMap.put(tag,callback);
}
private void initListeners() {
MogoAiCloudSocketManager.getInstance(mContext)
.registerLifecycleListener(10010, mSocketLifeCycleLisnter);
// 2021.11.1重构自动驾驶 实现接口 IMoGoAutopilotStatusListener 注册监听 替换IMogoAdasOCHCallback接口
CallerAutoPilotStatusListenerManager.INSTANCE.addListener(TAG, mGoAutopilotStatusListener);
MogoApisHandler.getInstance()
.getApis()
.getIntentManagerApi()
.registerIntentListener( ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener );
MogoApisHandler.getInstance()
.getApis()
.getStatusManagerApi()
.registerStatusChangedListener( TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener );
// 达到起始站围栏监听
MogoApisHandler.getInstance()
.getApis()
.getRegisterCenterApi()
.registerCarLocationChangedListener( TAG, mCarLocationChangedListener2);
//2021.11.1 自动驾驶路线规划接口
CallerAutopilotPlanningListenerManager.INSTANCE.addListener(TAG,moGoAutopilotPlanningListener);
}
private void releaseListeners() {
MogoApisHandler.getInstance()
.getApis()
.getStatusManagerApi()
.unregisterStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener);
// 注销到达起始站围栏监听
MogoApisHandler.getInstance()
.getApis()
.getRegisterCenterApi()
.unregisterCarLocationChangedListener(TAG, mCarLocationChangedListener2);
MogoAiCloudSocketManager.getInstance(mContext)
.unregisterLifecycleListener(10010);
CallerAutoPilotStatusListenerManager.INSTANCE.removeListener(mGoAutopilotStatusListener);
CallerAutopilotPlanningListenerManager.INSTANCE.removeListener(moGoAutopilotPlanningListener);
}
//监听网络变化,避免启动机器时无网导致无法更新订单信息
private final IMogoIntentListener mNetWorkIntentListener = new IMogoIntentListener() {
@Override
public void onIntentReceived( String intentStr, Intent intent ) {
CallerLogger.INSTANCE.d( M_BUS_P + TAG, "onIntentReceived = %s", intentStr );
if ( ConnectivityManager.CONNECTIVITY_ACTION.equals( intentStr ) ) {
if ( NetworkUtils.isConnected( mContext ) ) {
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
// TODO: 2022/3/31
}
}
}
}
};
private final IMogoStatusChangedListener mMogoStatusChangedListener = new IMogoStatusChangedListener() {
// VR mode变更回调
@Override
public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
if (StatusDescriptor.VR_MODE == descriptor) {
if (mControllerStatusCallbackMap.size() > 0) {
for (IBusPassengerControllerStatusCallback callback :mControllerStatusCallbackMap.values()){
callback.onVRModeChanged(isTrue);
}
}
}
}
};
private final IMogoLifecycleListener mSocketLifeCycleLisnter = new IMogoLifecycleListener() {
@Override
public void onConnectFailure() { CallerLogger.INSTANCE.e(M_BUS_P + TAG,"socket onConnectFailure"); }
@Override
public void onConnectSuccess() { CallerLogger.INSTANCE.e(M_BUS_P + TAG,"socket onConnectSuccess"); }
@Override
public void onConnectLost() { CallerLogger.INSTANCE.e(M_BUS_P + TAG,"socket onConnectLost"); }
};
// 自车定位
private final IMogoCarLocationChangedListener2 mCarLocationChangedListener2 = new IMogoCarLocationChangedListener2() {
@Override
public void onCarLocationChanged2( Location location ) {
//位置变化时通过围栏判断是否到达x点
// TODO: 2022/3/31
mLongitude = location.getLongitude();
mLatitude = location.getLatitude();
for (IBusPassengerControllerStatusCallback callback :mControllerStatusCallbackMap.values()){
callback.onCarLocationChanged(location);
}
}
};
private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener(){
@Override
public void onAutopilotGuardian(@Nullable MogoReportMsg.MogoReportMessage guardianInfo) {
}
private boolean arriveAtEnd = false; //乘客app专用字段
@Override
public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autopilotStatusInfo) {
if (autopilotStatusInfo == null) return;
int state = autopilotStatusInfo.getState();
CallerLogger.INSTANCE.d( M_BUS_P + TAG, "state = %s", state );
if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) {
if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotRunning();
// TODO: 2022/3/31
} else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) {
// TODO: 2022/3/31
if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotEnable();
} else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) {
// TODO: 2022/3/31
if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotDisable();
}
}
@Override
public void onAutopilotSNRequest() {
}
@Override
public void onAutopilotArriveAtStation(@Nullable MessagePad.ArrivalNotification arrivalNotification) {
if (FunctionBuildConfig.isDemoMode
&& AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
arriveAtEnd = true;
}
// TODO: 2022/3/31
if (DebugConfig.isDebug()) {
// TipToast.shortTip("到达目的地");
}
}
};
private final IMoGoAutopilotPlanningListener moGoAutopilotPlanningListener = new IMoGoAutopilotPlanningListener(){
@Override
public void onAutopilotRotting(@Nullable MessagePad.GlobalPathResp routeList) {
if (null != routeList && routeList.getWayPointsList().size() > 0){
// TODO: 2022/3/31
mAutopilotPlanningCallback.routeResult(routeList.getWayPointsList());
}
}
@Override
public void onAutopilotTrajectory(ArrayList<ADASTrajectoryInfo> trajectoryInfos) {
}
};
}

View File

@@ -0,0 +1,9 @@
package com.mogo.och.bus.passenger.network;
/**
* Created on 2022/3/31
*
* Bus乘客端接口定义
*/
interface BusPassengerServiceApi {
}

View File

@@ -0,0 +1,15 @@
package com.mogo.och.bus.passenger.network;
/**
* Created on 2022/3/31
*/
public interface BusPassengerServiceCallback<T> {
void onSuccess(T data);
void onFail(int code, String msg);
default void onError() {
}
}

View File

@@ -0,0 +1,81 @@
package com.mogo.och.bus.passenger.network;
import android.content.Context;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager;
import com.mogo.eagle.core.network.MoGoRetrofitFactory;
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.och.bus.passenger.constant.BusPassengerConst;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS_P;
/**
* Created on 2022/3/31
*/
public class BusPassengerServiceManager {
private static final String TAG = BusPassengerServiceManager.class.getSimpleName();
private static final class SingletonHolder {
private static final BusPassengerServiceManager INSTANCE = new BusPassengerServiceManager();
}
public static BusPassengerServiceManager getInstance() {
return SingletonHolder.INSTANCE;
}
private BusPassengerServiceApi mBusPassengerServiceApi;
private BusPassengerServiceManager() {
if (mBusPassengerServiceApi == null){
mBusPassengerServiceApi = MoGoRetrofitFactory.getInstance(
BusPassengerConst.getBaseUrl()).create(BusPassengerServiceApi.class);
}
}
/**
* 获取Bus司机端的sn
* @return
*/
private String getDriverAppSn(){
return CallerTelematicManager.INSTANCE.getServerToken();
// return "X2020210525EFA93B5946FA38D4";
}
private <T extends BaseData> SubscribeImpl getSubscribeImpl(
Context context, BusPassengerServiceCallback<T> callback, String apiName) {
return new SubscribeImpl<T>(RequestOptions.create(context)) {
@Override
public void onSuccess(T o) {
super.onSuccess(o);
CallerLogger.INSTANCE.e(M_BUS_P + TAG,apiName +
": onSuccess() " + o.msg);
if (callback != null) {
callback.onSuccess(o);
}
}
@Override
public void onError(Throwable e) {
super.onError(e);
CallerLogger.INSTANCE.e(M_BUS_P + TAG,apiName +
": onError() " + e.getMessage());
if (callback != null) {
callback.onError();
}
}
@Override
public void onError(String message, int code) {
super.onError(message, code);
CallerLogger.INSTANCE.e(M_BUS_P + TAG,String.format(apiName +
": onError() code = %d; message = %s;", code, message));
if (callback != null) {
callback.onFail(code, message);
}
}
};
}
}

View File

@@ -0,0 +1,98 @@
package com.mogo.och.bus.passenger.presenter;
import android.location.Location;
import android.os.Looper;
import androidx.annotation.NonNull;
import androidx.lifecycle.LifecycleOwner;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.mvp.Presenter;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.och.bus.passenger.callback.IBusPassengerADASStatusCallback;
import com.mogo.och.bus.passenger.callback.IBusPassengerControllerStatusCallback;
import com.mogo.och.bus.passenger.model.BusPassengerModel;
import com.mogo.och.bus.passenger.ui.BusPassengerBaseFragment;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS_P;
/**
* Created on 2022/3/31
*/
public class BaseBusPassengerPresenter extends Presenter<BusPassengerBaseFragment> implements
IBusPassengerADASStatusCallback, IBusPassengerControllerStatusCallback {
private static final String TAG = BaseBusPassengerPresenter.class.getSimpleName();
public BaseBusPassengerPresenter(BusPassengerBaseFragment view) {
super(view);
BusPassengerModel.getInstance().init(AbsMogoApplication.getApp());
initListeners();
}
@Override
public void onCreate( @NonNull LifecycleOwner owner ) {
super.onCreate( owner );
CallerLogger.INSTANCE.d( M_BUS_P + TAG, "Bus乘客端Presenter onCreate()" );
}
@Override
public void onDestroy( @NonNull LifecycleOwner owner ) {
super.onDestroy( owner );
releaseListeners();
BusPassengerModel.getInstance().release();
}
private void initListeners() {
BusPassengerModel.getInstance().setADASStatusCallback(this);
BusPassengerModel.getInstance().setControllerStatusCallback(TAG, this);
}
private void releaseListeners() {
BusPassengerModel.getInstance().setADASStatusCallback(null);
BusPassengerModel.getInstance().setControllerStatusCallback(TAG, null);
}
private void runOnUIThread( Runnable executor ) {
if ( executor == null ) {
return;
}
if ( Looper.myLooper() != Looper.getMainLooper() ) {
UiThreadHandler.post( executor );
} else {
executor.run();
}
}
@Override
public void onAutopilotArriveEnd() {
}
@Override
public void onAutopilotEnable() {
}
@Override
public void onAutopilotDisable() {
}
@Override
public void onAutopilotRunning() {
}
@Override
public void onVRModeChanged(boolean isVRMode) {
}
@Override
public void onCarLocationChanged(Location location) {
}
}

View File

@@ -0,0 +1,46 @@
package com.mogo.och.bus.passenger.ui;
import android.os.Handler;
import android.os.Looper;
import androidx.annotation.NonNull;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.och.bus.passenger.R;
import com.mogo.och.bus.passenger.presenter.BaseBusPassengerPresenter;
import org.jetbrains.annotations.NotNull;
/**
* Created on 2022/3/31
*
* Bus乘客端基础Fragment
*/
public class BusPassengerBaseFragment extends MvpFragment<BusPassengerBaseFragment, BaseBusPassengerPresenter> {
private static final String TAG = BusPassengerBaseFragment.class.getSimpleName();
private Handler mHandler = new Handler(Looper.getMainLooper());
@NonNull
@NotNull
@Override
protected BaseBusPassengerPresenter createPresenter() {
return new BaseBusPassengerPresenter(this);
}
@Override
protected int getLayoutId() {
return R.layout.bus_p_base_fragment;
}
@Override
public String getTagName() {
return TAG;
}
@Override
protected void initViews() {
}
}

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -47,8 +47,6 @@ public class OchBusProvider implements IMogoOCH {
public void init(Context context) {
MogoApisHandler.getInstance().getApis().getStatusManagerApi().registerStatusChangedListener("OchBus"
, StatusDescriptor.VR_MODE, statusChangedListener);
MogoApisHandler.getInstance().getApis().getStatusManagerApi().registerStatusChangedListener("OchBus"
, StatusDescriptor.TOP_VIEW, statusChangedListener);
}
private void showFragment() {
@@ -78,8 +76,7 @@ public class OchBusProvider implements IMogoOCH {
} else {
hideFragment();
}
} else if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()
&& descriptor == StatusDescriptor.TOP_VIEW) {
} else if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) {
// topView进行展示时推出网约车界面但是不隐藏整个fragment
if (busFragment != null && isTrue) {
busFragment.hideOchBus();

View File

@@ -38,7 +38,6 @@ class MogoOCHTaxiPassenger implements IMogoOCH, IMogoStatusChangedListener {
public void init( Context context ) {
CallerLogger.INSTANCE.d( M_TAXI_P + TAG, "init" );
MogoApisHandler.getInstance().getApis().getStatusManagerApi().registerStatusChangedListener("ochTaxi", StatusDescriptor.VR_MODE,this);
MogoApisHandler.getInstance().getApis().getStatusManagerApi().registerStatusChangedListener("ochTaxi", StatusDescriptor.TOP_VIEW,this);
}
/**

View File

@@ -11,6 +11,7 @@ import androidx.annotation.Nullable;
import com.amap.api.maps.model.LatLng;
import com.amap.api.navi.model.NaviLatLng;
import com.elegant.network.utils.GsonUtil;
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager;
import com.mogo.cloud.commons.utils.CoordinateUtils;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.eagle.core.data.autopilot.ADASTrajectoryInfo;
@@ -43,8 +44,9 @@ import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst;
import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum;
import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceCallback;
import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceManager;
import com.mogo.aicloud.services.socket.IMogoLifecycleListener;
import com.mogo.och.taxi.passenger.utils.TPCoordinateCalculateRouteUtil;
import com.mogo.service.cloud.socket.IMogoLifecycleListener;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
@@ -197,9 +199,7 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback
}
private void initListeners() {
MogoApisHandler.getInstance()
.getApis()
.getSocketManagerApi(mContext)
MogoAiCloudSocketManager.getInstance(mContext)
.registerLifecycleListener(10010,mSocketLifeCycleLisnter);
// 2021.11.1重构自动驾驶 实现接口 IMoGoAutopilotStatusListener 注册监听 替换IMogoAdasOCHCallback接口
@@ -237,9 +237,7 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback
.getRegisterCenterApi()
.unregisterCarLocationChangedListener(TAG, mCarLocationChangedListener2);
MogoApisHandler.getInstance()
.getApis()
.getSocketManagerApi(mContext)
MogoAiCloudSocketManager.getInstance(mContext)
.unregisterLifecycleListener(10010);
CallerAutoPilotStatusListenerManager.INSTANCE.removeListener(mGoAutopilotStatusListener);

View File

@@ -38,7 +38,6 @@ class MogoOCHTaxi implements IMogoOCH , IMogoStatusChangedListener {
public void init( Context context ) {
CallerLogger.INSTANCE.d( M_TAXI + TAG, "init" );
MogoApisHandler.getInstance().getApis().getStatusManagerApi().registerStatusChangedListener("ochTaxi", StatusDescriptor.VR_MODE,this);
MogoApisHandler.getInstance().getApis().getStatusManagerApi().registerStatusChangedListener("ochTaxi", StatusDescriptor.TOP_VIEW,this);
}
/**

View File

@@ -11,6 +11,7 @@ import androidx.annotation.Nullable;
import com.amap.api.maps.model.LatLng;
import com.elegant.network.utils.GsonUtil;
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager;
import com.mogo.cloud.commons.utils.CoordinateUtils;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.eagle.core.data.BaseData;
@@ -56,7 +57,7 @@ import com.mogo.och.taxi.utils.CoordinateCalculateRouteUtil;
import com.mogo.och.taxi.utils.OchTaxiAnalyticsUtil;
import com.mogo.och.taxi.utils.OrderUtil;
import com.mogo.och.taxi.utils.PinYinUtil;
import com.mogo.service.cloud.socket.IMogoLifecycleListener;
import com.mogo.aicloud.services.socket.IMogoLifecycleListener;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
@@ -195,9 +196,7 @@ public class MogoOCHTaxiModelNew {
}
private void initListeners() {
MogoApisHandler.getInstance()
.getApis()
.getSocketManagerApi(mContext)
MogoAiCloudSocketManager.getInstance(mContext)
.registerLifecycleListener(10010, mSocketLifeCycleLisnter);
// 2021.11.1重构自动驾驶 实现接口 IMoGoAutopilotStatusListener 注册监听 替换IMogoAdasOCHCallback接口
@@ -232,9 +231,7 @@ public class MogoOCHTaxiModelNew {
.getRegisterCenterApi()
.unregisterCarLocationChangedListener(TAG, mCarLocationChangedListener2);
MogoApisHandler.getInstance()
.getApis()
.getSocketManagerApi(mContext)
MogoAiCloudSocketManager.getInstance(mContext)
.unregisterLifecycleListener(10010);
CallerAutoPilotStatusListenerManager.INSTANCE.removeListener(mGoAutopilotStatusListener);

View File

@@ -112,8 +112,8 @@ ext {
// obu sdk
obusdk : "com.zhidao.enterprise.smartv2x:smartv2x:1.0.0.3",
mogoobu : 'com.zhidao.support.obu:mogoobu:1.0.0.19',
mogoami : 'com.zhidao.support.obu.ami:mogoami:1.0.0.10',
mogoobu : 'com.zhidao.support.obu:mogoobu:1.0.0.21',
mogoami : 'com.zhidao.support.obu.ami:mogoami:1.0.0.12',
adasHigh : 'com.zhidao.support.adas:high:1.2.1.2_bate25',
// google

View File

@@ -137,10 +137,8 @@ public class MoGoHandAdasMsgManager implements
@Override
public void onAutopilotCarConfig(@NotNull MessagePad.CarConfigResp carConfigResp) {
// Log.d("liyz", "onAutopilotCarConfig ----------1-----------");
if (carConfigResp != null && !TextUtils.isEmpty(carConfigResp.getMacAddress())) {
// Log.d("liyz", "onAutopilotCarConfig ----------2-----------" + carConfigResp.getMacAddress() + "--" + carConfigResp.getPlateNumber());
CallerLogger.INSTANCE.d(M_DEVA + TAG, " carConfigResp.getMacAddress() = " + carConfigResp.getMacAddress() + "--mac = " + carConfigResp.getMacAddress().replaceAll(".{2}(?=.)", "$0:"));
// Log.d("liyz", "onAutopilotCarConfig ---------------------" + carConfigResp.getMacAddress() + "--" + carConfigResp.getPlateNumber());
// CallerBindingcarManager.getBindingcarProvider().getBindingcarInfo(carConfigResp.getMacAddress());
}
}

View File

@@ -51,22 +51,35 @@ public class BindingcarProvider implements IMoGoBindingcarProvider {
@Override
public void getBindingcarInfo(String macAddress) {
mAddress = macAddress;
BindingcarNetWorkManager.getInstance().getBindingcarInfo(mContext, macAddress, getScreenType());
long currentHour = System.currentTimeMillis() / (1000 * 60 * 60);
long oldHour = SharedPrefsMgr.getInstance(mContext).getLong("type", 0);
Log.d("liyz", "getBindingcarInfo currentHour = " + currentHour + "---oldHour = " + oldHour);
//12小时内只调用一次防止用户不点击修改绑定导致的频繁提示用户第一次点击修改成功后就不会再提示了
if (currentHour - oldHour > 12) {
if (getScreenType() == 1) {
Log.d("liyz", "getBindingcarInfo getScreenType() -----> ");
SharedPrefsMgr.getInstance(mContext).putLong("type", System.currentTimeMillis() / (1000 * 60 * 60));
BindingcarNetWorkManager.getInstance().getBindingcarInfo(mContext, macAddress, getScreenType());
}
}
}
@Override
public void modifyCarInfo(BindingcarCallBack callBack) {
BindingcarNetWorkManager.getInstance().modifyBindingcar(mAddress, callBack, getScreenType());
if (getScreenType() == 1) {
BindingcarNetWorkManager.getInstance().modifyBindingcar(mAddress, callBack, getScreenType());
}
}
private int getScreenType () {
private int getScreenType() {
int screenType = -1;
if (FunctionBuildConfig.appIdentityMode == 0 || FunctionBuildConfig.appIdentityMode == 0xA0) {
screenType = 1; //司机屏
screenType = 1; //司机屏
} else if (FunctionBuildConfig.appIdentityMode == 1 || FunctionBuildConfig.appIdentityMode == 0xA1) {
screenType = 2; //乘客屏
}
Log.d("liyz", "mode = " + FunctionBuildConfig.appIdentityMode + "--screenType = " + screenType);
return screenType;
}

View File

@@ -57,11 +57,8 @@ public class BindingcarNetWorkManager {
* @param macAddress mac地址
*/
public void getBindingcarInfo(Context context, String macAddress, int screenType) {
if (screenType == 2) {
return;
}
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
BindingcarRequest request = new BindingcarRequest(macAddress, sn);
BindingcarRequest request = new BindingcarRequest(macAddress, sn, screenType);
RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request));
mBindingcarApiService.getBindingcarInfo(token, requestBody)
.subscribeOn(Schedulers.io())
@@ -75,6 +72,7 @@ public class BindingcarNetWorkManager {
public void onNext(@NonNull BindingcarInfo info) {
if (info != null && info.getData() != null) {
CallerLogger.INSTANCE.d(TAG, "getBindingcarInfo onNext info.getData() =" + info.getData().toString());
Log.d("liyz", "getBindingcarInfo onNext info.getData() =" + info.getData().toString() + "--compare = " + info.getData().getCompare());
if (info.getData().getCompare() == 0) {
CallerHmiManager.INSTANCE.showBindingcarDialog();
} else if (info.getData().getCompare() == 3) {
@@ -88,6 +86,7 @@ public class BindingcarNetWorkManager {
@Override
public void onError(@NonNull Throwable e) {
CallerLogger.INSTANCE.e(TAG, "getBindingcarInfo onError e = " + e.toString() + "---e.getMessage = " + e.getMessage());
Log.e("liyz", "getBindingcarInfo onError e = " + e.toString() + "---e.getMessage = " + e.getMessage());
}
@Override
@@ -102,14 +101,8 @@ public class BindingcarNetWorkManager {
* mac: 48:b0:2d:3a:9c:19
*/
public void modifyBindingcar(String macAddress, BindingcarCallBack callBack, int screenType) {
Log.d("liyz", "modifyBindingcar screenType = " + screenType);
if (screenType == 2) {
return;
}
Log.d("liyz", "modifyBindingcar --------1----------- ");
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
BindingcarRequest request = new BindingcarRequest(macAddress, sn);
BindingcarRequest request = new BindingcarRequest(macAddress, sn, screenType);
RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request));
mBindingcarApiService.modifyBindingcarInfo(token, requestBody)
.subscribeOn(Schedulers.io())
@@ -124,11 +117,13 @@ public class BindingcarNetWorkManager {
if (info != null) {
callBack.callBackResult(info);
CallerLogger.INSTANCE.d(TAG, "modifyBindingcar onNext code = " + info.code + "---msg = " + info.msg + "--info.toString() = " + info.toString());
Log.d("liyz", "modifyBindingcar onNext code = " + info.code + "---msg = " + info.msg + "--info.toString() = " + info.toString());
}
}
@Override
public void onError(@NonNull Throwable e) {
Log.e("liyz", "modifyBindingcar onError e = " + e.toString() + "---e.getMessage = " + e.getMessage());
CallerLogger.INSTANCE.e(TAG, "modifyBindingcar onError e = " + e.toString() + "---e.getMessage = " + e.getMessage());
}

View File

@@ -8,10 +8,12 @@ package com.mogo.eagle.core.function.bindingcar.network;
public class BindingcarRequest {
private String mac;
private String sn;
private int type;
public BindingcarRequest(String mac, String sn) {
public BindingcarRequest(String mac, String sn, int type) {
this.mac = mac;
this.sn = sn;
this.type = type;
}
public String getMac() {
@@ -30,11 +32,20 @@ public class BindingcarRequest {
this.sn = sn;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
@Override
public String toString() {
return "BindingcarRequest{" +
"mac='" + mac + '\'' +
", sn='" + sn + '\'' +
", type=" + type +
'}';
}
}

View File

@@ -13,7 +13,6 @@ import com.mogo.eagle.core.function.check.view.CheckActivity
import com.mogo.eagle.core.function.check.view.CheckDialog
import com.mogo.eagle.core.utilcode.util.*
import com.mogo.module.common.MogoApisHandler
import com.mogo.module.service.receiver.MogoReceiver
import com.mogo.service.statusmanager.IMogoStatusChangedListener
import com.mogo.service.statusmanager.StatusDescriptor
import java.util.concurrent.ConcurrentHashMap
@@ -62,7 +61,7 @@ class VehicleMonitoringManager : ICheckProvider, IMogoStatusChangedListener {
override fun checkMonitor(context: Context) {
checkNetWork( context, object : ICheckResultCallBack {
override fun callBackWithCheckData(data: CheckResultData) {
updateMonitoringStatus(MogoReceiver.ACTION_CHECK_VEHICLE_MONITORING, data.data.vehicle.state)
updateMonitoringStatus(TAG, data.data.vehicle.state)
if (data.data.vehicle.state == 1) {
hasTipShow = false
} else {

View File

@@ -85,8 +85,8 @@ class DevaToolsProvider : IDevaToolsProvider {
upgradeManager.getPackageUrls(versionName)
}
override fun downLoadPackage(downLoadKey: String) {
// upgradeManager.downLoadPackage(mContext!!, downLoadKey)
override fun downLoadPackage(downloadKey: String,downloadUrl: String) {
upgradeManager.downLoadPackage(mContext!!, downloadKey,downloadUrl)
}
}

View File

@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.content.Context
import android.os.Handler
import android.os.Message
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager
import com.mogo.cloud.passport.MoGoAiCloudClient
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.commons.AbsMogoApplication
@@ -19,8 +20,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.module.common.MogoApisHandler
import com.mogo.service.cloud.socket.IMogoOnMessageListener
import com.mogo.aicloud.services.socket.IMogoOnMessageListener
import com.zhidao.loglib.bean.RemoteLogPushContent
import com.zhidao.loglib.call.LogInfoManagerFactory
import com.zhidao.loglib.core.ILogListener
@@ -48,8 +48,7 @@ object MogoLogCatchManager : IMogoOnMessageListener<RemoteLogPushContent>, Handl
fun init(context: Context) {
mContext = context
MogoApisHandler.getInstance().apis
.getSocketManagerApi(AbsMogoApplication.getApp().applicationContext)
MogoAiCloudSocketManager.getInstance(AbsMogoApplication.getApp().applicationContext)
.registerOnMessageListener(LOG_PUSH_TYPE, this)
manualContent.pkgName = context.packageName
logCheck(context)
@@ -220,13 +219,11 @@ object MogoLogCatchManager : IMogoOnMessageListener<RemoteLogPushContent>, Handl
SharedPrefsMgr.getInstance(mContext!!).putLong(MoGoConfig.CATCH_LOG_TIME, 0)
CallerDevaToolsListenerManager.invokeDevaToolsLogCatchClose()
TipToast.shortTip("日志抓取默认计时结束")
}
}
fun onDestroy() {
MogoApisHandler.getInstance().apis
.getSocketManagerApi(AbsMogoApplication.getApp().applicationContext)
MogoAiCloudSocketManager.getInstance(AbsMogoApplication.getApp().applicationContext)
.unregisterLifecycleListener(LOG_PUSH_TYPE)
if (handler.hasMessages(MSG_TRY_CLOSE_LOG)) {

View File

@@ -36,14 +36,14 @@ class UpgradeManager : IDownload {
})
}
fun downLoadPackage(context: Context, downLoadKey: String) {
fun downLoadPackage(context: Context, downloadKey: String,downloadUrl: String) {
// val downLoadUrl = map?.get(downLoadKey)
// downLoadUrl?.let {
DownloadUtils.downLoad(
context,
"https://scm-1255510688.cos.ap-beijing.myqcloud.com/test/com.mogo.launcher.f/2.5.1.1009/IntelligentPilot_v2.5.1.1009_20220216_[fPadLenovoOchTaxi-launcher-online]_debug.apk",
downloadUrl,
Config.downLoadPath,
downLoadKey,
downloadKey,
5,
this
)

View File

@@ -5,6 +5,7 @@ import android.location.Location;
import android.os.Handler;
import android.os.Message;
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager;
import com.mogo.cloud.commons.utils.CoordinateUtils;
import com.mogo.eagle.core.data.autopilot.ADASTrajectoryInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters;
@@ -25,7 +26,7 @@ import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.module.common.MogoApisHandler;
import com.zhjt.dispatch.model.DispatchServiceModel;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.cloud.socket.IMogoOnMessageListener;
import com.mogo.aicloud.services.socket.IMogoOnMessageListener;
import com.zhjt.dispatch.model.IDispatch;
import org.jetbrains.annotations.NotNull;
@@ -102,7 +103,7 @@ public class DispatchAutoPilotManager implements IMogoOnMessageListener<Dispatch
mContext = context;
mApis = MogoApisHandler.getInstance().getApis();
mApis.getSocketManagerApi(context).registerOnMessageListener(MSG_SOCKET_TYPE, this);
MogoAiCloudSocketManager.getInstance(context).registerOnMessageListener(MSG_SOCKET_TYPE, this);
mApis.getRegisterCenterApi()
.registerCarLocationChangedListener(TAG, this);
// 添加自动驾驶按钮选中监听

View File

@@ -23,6 +23,8 @@ public class WaringConst {
public static String BROADCAST_V2X_TRAFFIC_LIGHT_IS_SHOW__EXTRA_KEY = "trafficLightIsShow";
// 选中的交通等类型red、yellow、green
public static String BROADCAST_V2X_TRAFFIC_LIGHT_CHECK_TYPE_EXTRA_KEY = "trafficLightCheckType";
// 倒计时
public static String BROADCAST_V2X_TRAFFIC_LIGHT_COUNT_DOWN_TYPE_EXTRA_KEY = "trafficLightCountDown";
// 限速标志
// 是否展示true-展示false-关闭

View File

@@ -32,10 +32,15 @@ class V2XTrafficLightBroadcastReceiver : BroadcastReceiver() {
WaringConst.BROADCAST_V2X_TRAFFIC_LIGHT_CHECK_TYPE_EXTRA_KEY,
0
)
val trafficLightCountDown =
intent.getIntExtra(
WaringConst.BROADCAST_V2X_TRAFFIC_LIGHT_COUNT_DOWN_TYPE_EXTRA_KEY,
0
)
if (trafficLightIsShow) {
// 分发场景
dispatchShowWaring(trafficLightCheckType)
dispatchShowWaring(trafficLightCheckType, trafficLightCountDown)
} else {
dispatchCloseWaring()
}
@@ -44,14 +49,22 @@ class V2XTrafficLightBroadcastReceiver : BroadcastReceiver() {
}
}
/**
* 展示交通灯
*
* @param trafficLightCheckType 选中的交通的灯 0-都是默认1-红2-黄3-绿
* @param trafficLightCountDown 对应交通灯倒计时如果倒计时为0则disable
*/
private fun dispatchShowWaring(trafficLightCheckType: Int) {
private fun dispatchShowWaring(trafficLightCheckType: Int, trafficLightCountDown: Int) {
CallerHmiManager.showWarningTrafficLight(trafficLightCheckType)
if(trafficLightCountDown == 0 ){
CallerHmiManager.disableWarningTrafficLightCountDown()
}
when(trafficLightCheckType){
1 -> CallerHmiManager.changeCountdownRed(trafficLightCountDown)
2 -> CallerHmiManager.changeCountdownYellow(trafficLightCountDown)
3 -> CallerHmiManager.changeCountdownGreen(trafficLightCountDown)
}
}
/**

View File

@@ -541,6 +541,13 @@ class MoGoHmiFragment : MvpFragment<MoGoWarningContract.View?, WaringPresenter?>
mViewTrafficLight?.disableWarningTrafficLight()
}
/**
* 关闭红绿灯倒计时
*/
override fun disableWarningTrafficLightCountDown() {
mViewTrafficLight?.disableCountdown()
}
override fun changeCountdownRed(redNum: Int) {
mViewTrafficLight?.changeCountdownRed(redNum)
}

View File

@@ -11,6 +11,7 @@ import android.view.View
import androidx.annotation.RequiresApi
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.LinearLayoutManager
import com.mogo.cloud.passport.MoGoAiCloudClient
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.debug.DebugConfig
@@ -23,6 +24,7 @@ import com.mogo.eagle.core.data.deva.scene.SceneModule
import com.mogo.eagle.core.data.enums.TrafficTypeEnum
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.data.obu.ObuStatusInfo
import com.mogo.eagle.core.data.upgrade.UpgradeVersionEntity
import com.mogo.eagle.core.function.api.autopilot.*
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener
import com.mogo.eagle.core.function.api.map.listener.IMoGoMapLocationListener
@@ -43,6 +45,7 @@ import com.mogo.eagle.core.function.hmi.ui.logcatch.ILogViewListener
import com.mogo.eagle.core.function.hmi.ui.logcatch.LogInfoView
import com.mogo.eagle.core.function.hmi.ui.tools.AdUpgradeDialog
import com.mogo.eagle.core.function.hmi.ui.tools.DockerRebootDialog
import com.mogo.eagle.core.function.hmi.ui.upgrade.UpgradeListAdapter
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.mogo.logger.LogLevel
@@ -58,6 +61,7 @@ import kotlinx.android.synthetic.main.view_debug_setting.view.*
import mogo.telematics.pad.MessagePad
import mogo_msg.MogoReportMsg
import java.util.*
import kotlin.collections.ArrayList
/**
* @author xiaoyuzhou
@@ -116,6 +120,16 @@ class DebugSettingView @JvmOverloads constructor(
//OBU连接状态
private var obuConnectStatus: Boolean = false
//渠道包标签
private var onlineSelected: Boolean = true
private var qaSelected: Boolean = true
private var upgradeListAdapter: UpgradeListAdapter?=null
private val upgradeVersionList by lazy{
ArrayList<UpgradeVersionEntity>()
}
private val mapUiController by lazy {
CallerMapUIServiceManager.getMapUIController()
}
@@ -257,6 +271,9 @@ class DebugSettingView @JvmOverloads constructor(
}
}
/**
* 鹰眼参数配置
*/
tbEagleEyeController.setOnCheckedChangeListener { buttonView, isChecked ->
if(isChecked){
buttonView.setCompoundDrawables(null, null, iconDown, null)
@@ -345,7 +362,20 @@ class DebugSettingView @JvmOverloads constructor(
}
}
/**
* 应用包管理中心
*/
btnApkCenter.setOnCheckedChangeListener { buttonView, isChecked ->
if(isChecked){
buttonView.setCompoundDrawables(null, null, iconDown, null)
//展示应用包管理中心
apkCenterLayout.visibility = View.VISIBLE
} else {
buttonView.setCompoundDrawables(null, null, iconRight, null)
//隐藏应用包管理中心
apkCenterLayout.visibility = View.GONE
}
}
lastVisualAngleMode = mapUiController?.currentMapVisualAngle
@@ -408,6 +438,8 @@ class DebugSettingView @JvmOverloads constructor(
setHmiCheckedChangeListener()
//日志中心事件点击监听
setLogCheckedChangeListener()
//APK包管理中心配置
setApkCenterListener()
//OBU配置信息
tvObuInfo.text = CallerObuListenerManager.getObuStatusInfoJsonString()
@@ -1043,7 +1075,17 @@ class DebugSettingView @JvmOverloads constructor(
}
override fun upgradeVersionUrls(urls: Map<String, String>?) {
//版本信息更新
urls?.let {
upgradeVersionList.clear()
it.iterator().forEach {map ->
val name = if(map.key.contains("{")) map.key.replace("{","") else map.key
val url = if(map.value.contains("}")) map.value.replace("}","") else map.value
upgradeVersionList.add(UpgradeVersionEntity(name,url))
}
upgradeListAdapter?.setDada(dataFilter(upgradeVersionList))
upgradeListAdapter?.notifyDataSetChanged()
}
}
})
@@ -1141,6 +1183,75 @@ class DebugSettingView @JvmOverloads constructor(
}
}
/**
* APK包管理
*/
private fun setApkCenterListener(){
val layoutManager: LinearLayoutManager = object : LinearLayoutManager(context,
VERTICAL, false) {
override fun canScrollVertically(): Boolean {
// 直接禁止垂直滑动
return false
}
}
rvUpgradeVersionList.layoutManager =layoutManager
upgradeListAdapter = UpgradeListAdapter(context,upgradeVersionList,
object:UpgradeListAdapter.ClickListener{
override fun downloadApk(name: String,url: String) {
//下载包
CallerDevaToolsManager.downLoadPackage(name,url)
ToastUtils.showLong("开始下载APK,稍后可前往downloads文件夹查看")
}
})
rvUpgradeVersionList.adapter = upgradeListAdapter
ivApkSearch.setOnClickListener {
val searchStr = etApkSearch.text.toString()
if(searchStr.isEmpty()){
ToastUtils.showShort("请输入正确的搜索关键字")
}else{
CallerDevaToolsManager.getUpgradeVersionUrls(searchStr)
}
}
//Online
cbApkOnline.setOnCheckedChangeListener { _, isChecked ->
onlineSelected = isChecked
upgradeListAdapter?.setDada(dataFilter(upgradeVersionList))
upgradeListAdapter?.notifyDataSetChanged()
}
//QA
cbApkQa.setOnCheckedChangeListener { _, isChecked ->
qaSelected = isChecked
upgradeListAdapter?.setDada(dataFilter(upgradeVersionList))
upgradeListAdapter?.notifyDataSetChanged()
}
}
/**
* 数据包数据过滤器
*/
private fun dataFilter(list: ArrayList<UpgradeVersionEntity>): ArrayList<UpgradeVersionEntity> {
val tempList = ArrayList<UpgradeVersionEntity>()
list?.let {
it.iterator().forEach { entity->
if(onlineSelected && entity.name.contains("online")){
tempList.add(entity)
}
if(qaSelected && entity.name.contains("qa")){
tempList.add(entity)
}
}
}
return tempList
}
private fun logViewDestroy() {
logInfoView?.let {
it.dismiss()
@@ -1205,8 +1316,6 @@ class DebugSettingView @JvmOverloads constructor(
*/
tvAppVersionName.text = "鹰眼版本名:${AppUtils.getAppVersionName()}"
tvAppVersionCode.text = "鹰眼版本号:${AppUtils.getAppVersionCode()}"
tvObuAppInfo.text = "OBU程序版本${CallerObuListenerManager.getObuStatusInfo().appInfo}"
tvObuHliInfo.text = "OBU协议版本${CallerObuListenerManager.getObuStatusInfo().hliInfo}"
tvObuSdkVersion.text = "OBU-SDK版本${AppConfigInfo.obuSdkVersion}"
tvAutopilotProtocolVersionInfo.text =
"Autopilot协议版本${CallerAutoPilotManager.getProtocolVersion()}"

View File

@@ -0,0 +1,66 @@
package com.mogo.eagle.core.function.hmi.ui.upgrade
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView.Adapter
import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.mogo.eagle.core.data.upgrade.UpgradeVersionEntity
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.function.hmi.ui.upgrade.UpgradeListAdapter.UpgradeListHolder
/**
* @author XuXinChao
* @description APK升级包列表适配器
* @since: 2022/3/25
*/
class UpgradeListAdapter: Adapter<UpgradeListHolder> {
private var context: Context? = null
private var data:List<UpgradeVersionEntity>? = null
private var clickListener: ClickListener? = null
constructor(
context: Context,
data: List<UpgradeVersionEntity>?,
clickListener: ClickListener? = null
) {
this.context = context
this.data = data
this.clickListener = clickListener
}
public fun setDada( data: List<UpgradeVersionEntity>?){
this.data = data
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UpgradeListHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_upgrade_version, parent, false)
return UpgradeListHolder(view)
}
override fun onBindViewHolder(holder: UpgradeListHolder, position: Int) {
data?.let {
val upgradeVersionEntity = it[position]
holder.tvUpgradeApkName.text=upgradeVersionEntity.name
holder.tvUpgradeApkName.setOnClickListener {
clickListener?.downloadApk(upgradeVersionEntity.name,upgradeVersionEntity.url)
}
}
}
override fun getItemCount() = data?.size ?: 0
class UpgradeListHolder(itemView: View) : ViewHolder(itemView) {
var tvUpgradeApkName: TextView = itemView.findViewById(R.id.tvUpgradeApkName)
}
interface ClickListener{
fun downloadApk(name:String,url:String)
}
}

View File

@@ -0,0 +1,100 @@
package com.mogo.eagle.core.function.hmi.ui.widget
import android.content.Context
import android.graphics.*
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatTextView
import java.lang.RuntimeException
class GradientTextView @JvmOverloads constructor(
context: Context?,
attrs: AttributeSet? = null
) : AppCompatTextView(context!!, attrs) {
private var mLinearGradient: LinearGradient? = null
private var mPaint: Paint? = null
private var mViewWidth = 0 //文字的宽度
private var mViewHeight = 0 //文字的高度
private val mTextBound = Rect()
private var mColorList : IntArray?//存放颜色的数组
private var isVertical = false//默认是横向
private var mRadius = 0f
private var mdx = 0f
private var mdy = 0f
private var mColor = 0
init {
//设置默认的颜色
mColorList = intArrayOf(-0x1, 0xFFFFFFF)
}
override fun onDraw(canvas: Canvas) {
if (isVertical) {
mViewHeight = measuredHeight
} else {
mViewWidth = measuredWidth
}
mPaint = paint
val mTipText = text.toString()
setStyle()
mPaint!!.getTextBounds(mTipText, 0, mTipText.length, mTextBound)
mPaint!!.setShadowLayer(mRadius, mdx, mdy, mColor)
//画出文字
canvas.drawText(
mTipText,
(measuredWidth / 2 - mTextBound.width() / 2).toFloat(),
(measuredHeight / 2 + mTextBound.height() / 2).toFloat(),
mPaint!!
)
}
/**
* true表示纵向渐变,false变身横向渐变
*
* @param vertical 纵向
*/
fun setVertical(vertical: Boolean) {
isVertical = vertical
}
/**
* 设置渐变的颜色
*
* @param mColorList
*/
fun setColorList(mColorList: IntArray?) {
if (mColorList != null && mColorList.size < 2) {
throw RuntimeException("ColorList's length must be > 2")
} else {
this.mColorList = mColorList
}
}
private fun setStyle() {
mPaint!!.isAntiAlias = true
mPaint!!.isDither = true
mPaint!!.isFilterBitmap = true
//前面4个参数分别表示渐变的开始x轴,开始y轴,结束的x轴,结束的y轴,mColorList表示渐变的颜色数组
mLinearGradient = LinearGradient(0f,0f,mViewWidth.toFloat(),mViewHeight.toFloat(),mColorList!!,null,Shader.TileMode.CLAMP)
mPaint!!.shader = mLinearGradient
mPaint!!.strokeJoin = Paint.Join.ROUND
mPaint!!.strokeCap = Paint.Cap.ROUND
mPaint!!.style = Paint.Style.FILL_AND_STROKE
}
/**
* 设置投影层
* @param radius
* @param dx
* @param dy
* @param color
*/
fun setShadowLayerCustom(radius: Float, dx: Float, dy: Float, color: Int) {
mRadius = radius
mdx = dx
mdy = dy
mColor = color
}
}

View File

@@ -0,0 +1,178 @@
package com.mogo.eagle.core.function.hmi.ui.widget
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import android.widget.ImageView
import androidx.core.view.marginLeft
import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
/**
* 新版红绿灯view
*/
class SingleTrafficLightView @JvmOverloads constructor(
context: Context?,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : IViewTrafficLight(context, attrs, defStyleAttr) {
private var mLightIconIV: ImageView? = null
private var mLightIconBG: ImageView? = null
private var mLightTimeTV: GradientTextView? = null
private var mCurrentLightId = 0
init {
init(context)
}
private fun init(context: Context?) {
LayoutInflater.from(context).inflate(R.layout.hmi_view_traffic_light, this, true)
mLightIconIV = findViewById(R.id.hmi_traffic_light_iv)
mLightIconBG = findViewById(R.id.hmi_traffic_light_bg)
mLightTimeTV = findViewById(R.id.hmi_traffic_light_time_tv)
}
/**
* 展示红绿灯预警
*
* @param checkLightId 0-都是默认1-红2-黄3-绿
*/
override fun showWarningTrafficLight(checkLightId: Int) {
super.showWarningTrafficLight(checkLightId)
mCurrentLightId = checkLightId
updateTrafficLightIcon(checkLightId)
}
/**
* 关闭红绿灯预警展示,并重制灯态
*/
override fun disableWarningTrafficLight() {
super.disableWarningTrafficLight()
UiThreadHandler.post {
mCurrentLightId = 0
this@SingleTrafficLightView.visibility = GONE
}
}
override fun disableCountdown() {
super.disableCountdown()
UiThreadHandler.post {
val lp = this.layoutParams as MarginLayoutParams
lp.width = context.resources.getDimension(R.dimen.hmi_traffic_light_icon_size).toInt()
this.layoutParams = lp
mLightTimeTV!!.visibility = GONE
mLightIconBG!!.layoutParams.width = context.resources.getDimension(R.dimen.dp_124).toInt()
}
}
/**
* @param redNum 红灯倒计时
* @param yellowNum 黄灯倒计时
* @param greenNum 绿灯倒计时
*/
override fun changeCountdownTrafficLightNum(redNum: Int, yellowNum: Int, greenNum: Int) {
super.changeCountdownTrafficLightNum(redNum, yellowNum, greenNum)
UiThreadHandler.post {
resetView()
when (mCurrentLightId) {
1 -> changeCountdownRed(redNum)
2 -> changeCountdownYellow(yellowNum)
3 -> changeCountdownGreen(greenNum)
else -> UiThreadHandler.post { mLightTimeTV!!.text = "" }
}
}
}
override fun changeCountdownRed(redNum: Int) {
super.changeCountdownRed(redNum)
UiThreadHandler.post {
if (redNum > 0) {
resetView()
mLightTimeTV!!.setVertical(true)
mLightTimeTV!!.setColorList(
intArrayOf(
resources.getColor(R.color.hmi_traffic_light_red_color_up),
resources.getColor(R.color.hmi_traffic_light_red_color_down)
)
)
mLightTimeTV!!.text = redNum.toString()
} else {
mLightTimeTV!!.text = ""
}
}
}
override fun changeCountdownGreen(greenNum: Int) {
super.changeCountdownGreen(greenNum)
UiThreadHandler.post {
if (greenNum > 0) {
resetView()
mLightTimeTV!!.setVertical(true)
mLightTimeTV!!.setColorList(
intArrayOf(
resources.getColor(R.color.hmi_traffic_light_green_color_up),
resources.getColor(R.color.hmi_traffic_light_green_color_down)
)
)
mLightTimeTV!!.text = greenNum.toString()
} else {
mLightTimeTV!!.text = ""
}
}
}
override fun changeCountdownYellow(yellowNum: Int) {
super.changeCountdownYellow(yellowNum)
UiThreadHandler.post {
if (yellowNum > 0) {
resetView()
mLightTimeTV!!.setVertical(true)
mLightTimeTV!!.setColorList(
intArrayOf(
resources.getColor(R.color.hmi_traffic_light_yellow_color_up),
resources.getColor(R.color.hmi_traffic_light_yellow_color_down)
)
)
mLightTimeTV!!.text = yellowNum.toString()
} else {
mLightTimeTV!!.text = ""
}
}
}
/**
* 更新红绿灯icon
*
* @param lightId 0-都是默认1-红2-黄3-绿
*/
private fun updateTrafficLightIcon(lightId: Int) {
UiThreadHandler.post {
when (lightId) {
1 -> {
mLightIconIV!!.setBackgroundResource(R.drawable.hmi_light_red_nor)
this@SingleTrafficLightView.visibility = VISIBLE
}
2 -> {
mLightIconIV!!.setBackgroundResource(R.drawable.hmi_lightyellow_nor)
this@SingleTrafficLightView.visibility = VISIBLE
}
3 -> {
mLightIconIV!!.setBackgroundResource(R.drawable.hmi_light_green_nor)
this@SingleTrafficLightView.visibility = VISIBLE
}
else -> this@SingleTrafficLightView.visibility = GONE
}
}
}
private fun resetView(){
val lp = this.layoutParams as MarginLayoutParams
lp.width = context.resources.getDimension(R.dimen.hmi_traffic_light_layout_width).toInt()
this.layoutParams = lp
mLightTimeTV!!.visibility = View.VISIBLE
mLightIconBG!!.layoutParams.width = context.resources.getDimension(R.dimen.hmi_traffic_light_bg_width).toInt()
}
}

View File

@@ -16,8 +16,6 @@ import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.model.MogoPoi;
import com.mogo.map.navi.IMogoCarLocationChangedListener;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.map.navi.MogoNaviInfo;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.VisualAngleMode;
@@ -31,7 +29,6 @@ import java.util.Iterator;
* 事件回调分发中心
*/
public class EventDispatchCenter implements
IMogoNaviListener,
IMogoMarkerClickListener,
IMogoCarLocationChangedListener2,
IMogoMapListener,
@@ -248,8 +245,6 @@ public class EventDispatchCenter implements
@Override
public void onMapChanged(MogoLatLng location, float zoom, float tilt, float bearing) {
final long start = System.currentTimeMillis();
Iterator<IMogoMapListener> iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
@@ -266,135 +261,6 @@ public class EventDispatchCenter implements
}
}
@Override
public void onInitNaviFailure() {
Iterator<IMogoNaviListener> iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoNaviListener listener = iterator.next();
if (listener != null) {
try {
listener.onInitNaviFailure();
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_MAIN + TAG, "onInitNaviFailure error : " + e);
}
}
}
}
@Override
public void onInitNaviSuccess() {
Iterator<IMogoNaviListener> iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoNaviListener listener = iterator.next();
if (listener != null) {
try {
listener.onInitNaviSuccess();
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_MAIN + TAG, "onInitNaviSuccess error : " + e);
}
}
}
}
@Override
public void onNaviInfoUpdate(MogoNaviInfo naviinfo) {
Iterator<IMogoNaviListener> iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoNaviListener listener = iterator.next();
if (listener != null) {
try {
listener.onNaviInfoUpdate(naviinfo);
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_MAIN + TAG, "onNaviInfoUpdate error : " + e);
}
}
}
}
@Override
public void onStartNavi() {
Iterator<IMogoNaviListener> iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoNaviListener listener = iterator.next();
if (listener != null) {
try {
listener.onStartNavi();
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_MAIN + TAG, "onStartNavi error : " + e);
}
}
}
}
@Override
public void onStopNavi() {
Iterator<IMogoNaviListener> iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoNaviListener listener = iterator.next();
if (listener != null) {
try {
listener.onStopNavi();
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_MAIN + TAG, "onStopNavi error : " + e);
}
}
}
}
@Override
public void onCalculateSuccess() {
Iterator<IMogoNaviListener> iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoNaviListener listener = iterator.next();
if (listener != null) {
try {
listener.onCalculateSuccess();
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_MAIN + TAG, "onCalculateSuccess error : " + e);
}
}
}
}
@Override
public void onoCalculateFailed() {
Iterator<IMogoNaviListener> iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoNaviListener listener = iterator.next();
if (listener != null) {
try {
listener.onoCalculateFailed();
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_MAIN + TAG, "onoCalculateFailed error : " + e);
}
}
}
}
@Override
public void onLocationChanged(MogoLocation location) {

View File

@@ -43,7 +43,6 @@ import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.adas.IMogoADASControlStatusChangedListener;
import com.mogo.service.fragmentmanager.FragmentStackTransactionListener;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
@@ -62,7 +61,6 @@ import java.util.Map;
public class MainActivity extends MvpActivity<MainView, MainPresenter> implements MainView,
IMogoLocationListener,
IMogoStatusChangedListener,
IMogoADASControlStatusChangedListener,
FragmentStackTransactionListener {
protected static final String TAG = "MainActivity";
@@ -195,8 +193,6 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
listenerRegister.registerMarkerClickListener(EventDispatchCenter.getInstance());
}
initAdasControlStatusListener();
if (DebugConfig.isMapBased()) {
EventDispatchCenter.getInstance().setMapLoadedCallback(() -> {
CallerLogger.INSTANCE.d(M_MAIN + TAG, "map loaded." + Thread.currentThread().getName());
@@ -208,7 +204,7 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
// TODO 这里临时兼容进入VR模式
MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode(TAG, true);
MogoMapListenerHandler.getInstance().onMapModeChanged(EnumMapUI.Type_VR);
}, 3000);
}, 1000);
CallerLogger.INSTANCE.i(M_MAIN + TAG, "App launch timer cost " + (System.currentTimeMillis() - start) + "ms");
});
loadFunctionMapView();
@@ -238,20 +234,18 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
*/
protected void loadOthersModules() {
// 加载地图,触发地图加载完毕回调,在初始化其他卡片模块,保证卡片模块可以正确获取地图相关服务。
loadContainerModules();
MogoModulesManager.getInstance().loadModules();
MogoModulesManager.getInstance().loadFunctionModules();
MogoModulesManager.getInstance().loadFunctionModulesServer();
mPresenter.delayOperations();
MogoModulesManager.getInstance().loadFunctionModulesServer();
// 启动一些基本的服务:定位等
startBaseService();
}
private void initAdasControlStatusListener() {
mServiceApis.getRegisterCenterApi().registerADASControlStatusChangedListener(TAG, this);
}
/**
* 启动后台服务
*/
private void startBaseService() {
Intent intentMainServicee = new Intent(this, MogoMainService.class);
startService(intentMainServicee);
@@ -261,10 +255,6 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
// startService(intentCarcorderService);
}
protected void loadContainerModules() {
//MogoModulesManager.getInstance().loadEventPanelModule(R.id.module_main_id_event_panel_fragment_container);
}
@Override
public void hideCoverUpLayout() {
getWindow().setBackgroundDrawable(null);
@@ -302,16 +292,6 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
EventDispatchCenter.getInstance().onLocationChanged(location);
}
@Override
public void onMapUiModeChanged(EnumMapUI mapUI) {
switch (mapUI) {
case Type_Night:
break;
case Type_Light:
break;
}
}
@Override
protected void onResume() {
super.onResume();
@@ -378,7 +358,6 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
listenerRegister.unregisterMarkerClickListener();
listenerRegister.unregisterHostMapListener();
}
mServiceApis.getRegisterCenterApi().unregisterADASControlStatusChangedListener(TAG);
mMogoStatusManager.setMainPageLaunchedStatus(TAG, false);
mMogoStatusManager.setMainPageIsBackgroundStatus(TAG, false);
if (mMogoFragmentManager != null) {
@@ -442,16 +421,6 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
CallerLogger.INSTANCE.d(M_MAIN + TAG, "requestCode: " + requestCode + " resultCode: " + resultCode);
if (requestCode == REQUEST_CODE_DIALOG) {
//申请悬浮窗权限
}
}
/**
* 由于应用是单页面的所以采用Fragment将各模块的UI进行分割解耦合
*

View File

@@ -15,9 +15,7 @@ import com.mogo.commons.debug.DebugConfig;
import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider;
import com.mogo.eagle.core.function.hmi.R;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.statusmanager.StatusDescriptor;
/**
* 针对作为Launcher的情况做个性化操作
@@ -34,7 +32,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DebugConfig.setNeedRequestUserInfo(true);
CallerLogger.INSTANCE.i(M_MAIN +TAG, "onCreate");
CallerLogger.INSTANCE.i(M_MAIN + TAG, "onCreate");
}
@Override
@@ -88,12 +86,9 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
}
}
@Override
protected void onDestroy() {
super.onDestroy();
mServiceApis.getStatusManagerApi().unregisterStatusChangedListener(TAG,
StatusDescriptor.VR_MODE, this);
stopCountDown();
try {
// acc off 之后会出现进程还在,但是页面被杀的情况,这个直接杀掉进程,然后让整个进程重启
@@ -103,21 +98,6 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
}
}
@Override
public void onMapUiModeChanged(EnumMapUI mapUI) {
super.onMapUiModeChanged(mapUI);
Intent intent = new Intent("com.mogo.style.SKIN_CHANGED");
intent.putExtra("type", -1);
if (mapUI == EnumMapUI.Type_Light) {
intent.putExtra("type", 1);
} else if (mapUI == EnumMapUI.Type_Night) {
intent.putExtra("type", 0);
}
sendBroadcast(intent);
CallerLogger.INSTANCE.d(M_MAIN + TAG, "send msg to AI Voice");
}
private void stopCountDown() {
if (runnableV2XEvent != null) {
handlerV2XEvent.removeCallbacks(runnableV2XEvent);

View File

@@ -6,6 +6,8 @@ import android.content.Context;
import android.os.Process;
import com.bytedance.boost_multidex.BoostMultiDex;
import com.mogo.aicloud.services.locationinfo.MogoLocationInfoServices;
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager;
import com.mogo.cloud.httpdns.MogoHttpDnsConfig;
import com.mogo.cloud.httpdns.bean.HttpDnsSimpleLocation;
import com.mogo.cloud.passport.IMoGoTokenCallback;
@@ -21,6 +23,7 @@ import com.mogo.eagle.core.data.constants.MoGoConfig;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.api.chat.biz.ChatConsts;
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.notice.PushUIConstants;
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
@@ -30,16 +33,15 @@ import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
import com.mogo.eagle.core.utilcode.util.ProcessUtils;
import com.mogo.map.MapApiPath;
import com.mogo.map.location.IMogoLocationClient;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.MogoModule;
import com.mogo.module.common.MogoModulePaths;
import com.mogo.module.common.constants.HostConst;
import com.mogo.module.service.ServiceConst;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.cloud.socket.IMogoLifecycleListener;
import com.mogo.aicloud.services.socket.IMogoLifecycleListener;
import com.mogo.test.crashreport.CrashReportConstants;
import com.mogo.test.crashreport.upgrade.UpgradeReportConstants;
import com.zhidao.support.obu.ami.AmiClientManager;
import com.zhjt.mogo_core_function_devatools.DevaToolsProvider;
import java.lang.reflect.Field;
@@ -109,6 +111,8 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
e.printStackTrace();
}
SocketBuildConfig.isPrintLog = false;
// 初始化DevaTools,开始链路记录
CallerDevaToolsManager.INSTANCE.init(this);
}
@@ -265,24 +269,21 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
*/
private void uploadLocPerFiveSecond() {
if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE) {
IMogoServiceApis apis = MogoApisHandler.getInstance().getApis();
apis.getLocationInfoApi().start();
MogoLocationInfoServices.getInstance().init(getApplicationContext());
MogoLocationInfoServices.getInstance().start();
IMogoLocationClient locationClient = CallerMapUIServiceManager.INSTANCE.getSingletonLocationClient(getApplicationContext());
if (locationClient != null) {
locationClient.addLocationListener(location -> {
apis.getLocationInfoApi().provideLocation(location);
});
locationClient.addLocationListener(location -> MogoLocationInfoServices.getInstance().provideLocation(location));
}
}
}
private void startSocketService() {
CallerLogger.INSTANCE.d(M_MAIN + TAG, "startSocketService");
IMogoServiceApis apis = MogoApisHandler.getInstance().getApis();
MogoLocation location = CallerMapUIServiceManager.INSTANCE.getSingletonLocationClient(getApp()).getLastKnowLocation();
// 关闭长链服务
apis.getSocketManagerApi(getApplicationContext()).destroy();
apis.getSocketManagerApi(this).registerLifecycleListener(10020, new IMogoLifecycleListener() {
MogoAiCloudSocketManager.getInstance(getApplicationContext()).destroy();
MogoAiCloudSocketManager.getInstance(getApplicationContext()).registerLifecycleListener(10020, new IMogoLifecycleListener() {
@Override
public void onConnectFailure() {
CallerLogger.INSTANCE.d(M_MAIN + TAG, "socket-onConnectFailure");
@@ -304,7 +305,7 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
// 开启Socket长链服务
double lat = location.getLatitude();
double lon = location.getLongitude();
apis.getSocketManagerApi(getApplicationContext()).init(getApplicationContext(), DebugConfig.getSocketAppId(),lat,lon);
MogoAiCloudSocketManager.getInstance(getApplicationContext()).init(getApplicationContext(), DebugConfig.getSocketAppId(),lat,lon);
}
@Override
@@ -315,8 +316,6 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
private void initModules() {
CallerLogger.INSTANCE.d(M_MAIN + TAG, "initModules");
//mogo deva tools
MogoModulePaths.addModule(new MogoModule(MogoServicePaths.PATH_DEVA_TOOLS, "IMoGoDevaToolsProvider"));
// 初始化 bugly 升级
MogoModulePaths.addBaseModule(new MogoModule(UpgradeReportConstants.PATH, UpgradeReportConstants.NAME));
// 初始化 apm 日志采集

View File

@@ -1,35 +0,0 @@
package com.mogo.eagle.core.function.main.delaycheck;
import com.mogo.eagle.core.data.BaseData;
import io.reactivex.Observable;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.POST;
/**
* 时延验证相关接口
*
* @author tongchenfei
*/
public interface DelayCheckApiServices {
/**
* 空接口
* @return 什么都不返回
*/
@GET("/yycp-test-service/net/delay/heartbeat")
Observable<BaseData> emptyInterface();
/**
* 时延上报接口 接口文档如下
* http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=48967034
* @param params 相关参数,详见文档
* @return 相关返回值,详见文档
*/
@POST("/yycp-test-service/net/delay/log")
@Headers({"Content-type:application/json;charset=UTF-8"})
Observable<DelayCheckResponse> uploadDelayCheckData(@Body RequestBody params);
}

View File

@@ -1,28 +0,0 @@
package com.mogo.eagle.core.function.main.delaycheck;
import com.mogo.commons.debug.DebugConfig;
/**
* dzt base url
*
* @author tongchenfei
*/
public class DelayCheckHttpConstant {
public static final String HOST_DEV = "http://dzt-test.zhidaozhixing.com";
public static final String HOST_TEST = "http://dzt-test.zhidaozhixing.com";
public static final String HOST_DEMO = "http://dzt-show.zhidaozhixing.com";
public static final String HOST_PRODUCT = "http://dzt.zhidaozhixing.com";
public static String getBaseUrl(){
switch ( DebugConfig.getNetMode() ) {
case DebugConfig.NET_MODE_DEV:
return HOST_DEV;
case DebugConfig.NET_MODE_QA:
return HOST_TEST;
case DebugConfig.NET_MODE_DEMO:
return HOST_DEMO;
default:
return HOST_PRODUCT;
}
}
}

View File

@@ -1,29 +0,0 @@
package com.mogo.eagle.core.function.main.delaycheck;
import com.mogo.eagle.core.data.BaseData;
/**
* 延迟检测response
*
* @author tongchenfei
*/
public class DelayCheckResponse extends BaseData {
private DelayCheckResult result;
public DelayCheckResult getResult() {
return result;
}
public void setResult(DelayCheckResult result) {
this.result = result;
}
@Override
public String toString() {
return "DelayCheckResponse{" +
"result=" + result +
", code=" + code +
", msg='" + msg + '\'' +
'}';
}
}

View File

@@ -1,41 +0,0 @@
package com.mogo.eagle.core.function.main.delaycheck;
/**
* 延迟检查返回结果
*
* @author tongchenfei
*/
public class DelayCheckResult {
/**
* 是否保持心跳
*/
private boolean necessary;
/**
* 心跳间隔,单位 s
*/
private int beatSeconds;
public boolean isNecessary() {
return necessary;
}
public void setNecessary(boolean necessary) {
this.necessary = necessary;
}
public int getBeatSeconds() {
return beatSeconds;
}
public void setBeatSeconds(int beatSeconds) {
this.beatSeconds = beatSeconds;
}
@Override
public String toString() {
return "DelayCheckResult{" +
"necessary=" + necessary +
", beatSeconds=" + beatSeconds +
'}';
}
}

View File

@@ -1,111 +0,0 @@
package com.mogo.eagle.core.function.main.delaycheck;
/**
* 时延检测上报请求参数
*
* @author tongchenfei
*/
public class DelayCheckUploadRequest {
private String sn;
private long startTime;
private long endTime;
/**
* 请求时长
*/
private long burning;
/**
* 信号强度
*/
private int netState;
private String place;
private String cityCode;
private double lat;
private double lon;
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public long getStartTime() {
return startTime;
}
public void setStartTime(long startTime) {
this.startTime = startTime;
}
public long getEndTime() {
return endTime;
}
public void setEndTime(long endTime) {
this.endTime = endTime;
}
public long getBurning() {
return burning;
}
public void setBurning(long burning) {
this.burning = burning;
}
public int getNetState() {
return netState;
}
public void setNetState(int netState) {
this.netState = netState;
}
public String getPlace() {
return place;
}
public void setPlace(String place) {
this.place = place;
}
public String getCityCode() {
return cityCode;
}
public void setCityCode(String cityCode) {
this.cityCode = cityCode;
}
public double getLat() {
return lat;
}
public void setLat(double lat) {
this.lat = lat;
}
public double getLon() {
return lon;
}
public void setLon(double lon) {
this.lon = lon;
}
@Override
public String toString() {
return "DelayCheckUploadRequest{" +
"sn='" + sn + '\'' +
", startTime=" + startTime +
", endTime=" + endTime +
", burning=" + burning +
", netState=" + netState +
", place='" + place + '\'' +
", cityCode='" + cityCode + '\'' +
", lat=" + lat +
", lon=" + lon +
'}';
}
}

View File

@@ -1,155 +0,0 @@
package com.mogo.eagle.core.function.main.delaycheck;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.network.MoGoRetrofitFactory;
import com.mogo.eagle.core.network.RequestOptions;
import com.mogo.eagle.core.network.SubscribeImpl;
import com.mogo.eagle.core.network.utils.GsonUtil;
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
import com.mogo.map.location.IMogoLocationClient;
import io.reactivex.schedulers.Schedulers;
import okhttp3.MediaType;
import okhttp3.RequestBody;
/**
* 延时验证工具类
*
* @author tongchenfei
*/
public class DelayCheckUtil implements Handler.Callback {
private final Handler handler = new Handler(this);
private static final int MSG_CHECK_NET_CONNECT_STATUS = 1001;
/**
* 首次延时检测时间间隔暂定10分钟等待机器稳定后再做打算
*/
private static final long FIRST_CHECK_NET_CONNECT_STATUS_DELAY = 10 * 60 * 1000;
private static final long CHECK_NET_CONNECT_STATUS_DELAY = 5000L;
private static final int MSG_START_DELAY_CHECK = 1002;
/**
* 默认检测时间间隔,若服务端正确返回,以服务端返回为主
*/
private static final long DELAY_CHECK_DELAY = 10 * 60 * 1000;
private final Context context;
public DelayCheckUtil(Context context) {
this.context = context;
}
/**
* 每5s检查一下网络状态网络状态为连接状态时开始空接口请求以及后续的参数上报
*/
public void waitingForCheck() {
handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, FIRST_CHECK_NET_CONNECT_STATUS_DELAY);
}
private long requestTime, netDelay, requestStartSystemTime, requestEndSystem;
@Override
public boolean handleMessage(Message msg) {
switch (msg.what) {
case MSG_CHECK_NET_CONNECT_STATUS:
if (NetworkUtils.isConnected(context)) {
handler.sendEmptyMessage(MSG_START_DELAY_CHECK);
} else {
handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY);
}
return true;
case MSG_START_DELAY_CHECK:
// 请求空接口
startEmptyRequest();
return true;
default:
return false;
}
}
private void startEmptyRequest() {
requestTime = SystemClock.elapsedRealtime();
requestStartSystemTime = System.currentTimeMillis();
MoGoRetrofitFactory.getInstance(DelayCheckHttpConstant.getBaseUrl()).create(DelayCheckApiServices.class)
.emptyInterface().subscribeOn(Schedulers.io()).observeOn(Schedulers.io())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(context)) {
@Override
public void onSuccess(BaseData o) {
super.onSuccess(o);
requestEndSystem = System.currentTimeMillis();
netDelay = SystemClock.elapsedRealtime() - requestTime;
startUpload();
}
@Override
public void onError(Throwable e) {
super.onError(e);
handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY);
}
@Override
public void onError(String message, int code) {
super.onError(message, code);
handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY);
}
});
}
private void startUpload() {
IMogoLocationClient locationClient = CallerMapUIServiceManager.INSTANCE.getSingletonLocationClient(AbsMogoApplication.getApp());
MogoLocation lastLocation = null;
if (locationClient != null) {
lastLocation = locationClient.getLastKnowLocation();
}
if (lastLocation == null) {
handler.sendEmptyMessageDelayed(MSG_START_DELAY_CHECK, DELAY_CHECK_DELAY);
return;
}
DelayCheckUploadRequest request = new DelayCheckUploadRequest();
request.setSn(MoGoAiCloudClientConfig.getInstance().getSn());
request.setStartTime(requestStartSystemTime);
request.setEndTime(requestEndSystem);
request.setNetState(NetworkUtils.netStrengthLevel);
request.setPlace(lastLocation.getAddress());
request.setCityCode(lastLocation.getCityCode());
request.setLat(lastLocation.getLatitude());
request.setLon(lastLocation.getLongitude());
request.setBurning(netDelay);
RequestBody params = RequestBody.create(MediaType.get("application/json"), GsonUtil.jsonFromObject(request));
MoGoRetrofitFactory.getInstance(DelayCheckHttpConstant.getBaseUrl()).create(DelayCheckApiServices.class)
.uploadDelayCheckData(params).observeOn(Schedulers.io()).subscribeOn(Schedulers.io())
.subscribe(new SubscribeImpl<DelayCheckResponse>(RequestOptions.create(context)) {
@Override
public void onSuccess(DelayCheckResponse o) {
super.onSuccess(o);
DelayCheckResult result = o.getResult();
if (result.isNecessary()) {
handler.sendEmptyMessageDelayed(MSG_START_DELAY_CHECK, result.getBeatSeconds() * 1000L);
}
}
@Override
public void onError(String message, int code) {
super.onError(message, code);
handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY);
}
@Override
public void onError(Throwable e) {
super.onError(e);
handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY);
}
});
}
}

View File

@@ -8,9 +8,6 @@ import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.navi.IMogoCarLocationChangedListener;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.service.adas.IMogoADASControlStatusChangedListener;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoRegisterCenter;
import java.util.Iterator;
@@ -24,16 +21,6 @@ import java.util.Iterator;
@Route(path = MogoServicePaths.PATH_REGISTER_CENTER)
public class MogoRegisterCenter implements IMogoRegisterCenter {
@Override
public void registerMogoModuleLifecycle(String moduleName, IMogoModuleLifecycle lifecycle) {
MogoRegisterCenterHandler.getInstance().registerMogoModuleLifecycle(moduleName, lifecycle);
}
@Override
public void unregisterMogoModuleLifecycle(String moduleName) {
MogoRegisterCenterHandler.getInstance().unregisterMogoModuleLifecycle(moduleName);
}
@Override
public void registerMogoMapListener(String moduleName, IMogoMapListener listener) {
MogoRegisterCenterHandler.getInstance().registerMogoMapListener(moduleName, listener);
@@ -44,16 +31,6 @@ public class MogoRegisterCenter implements IMogoRegisterCenter {
MogoRegisterCenterHandler.getInstance().unregisterMogoMapListener(moduleName);
}
@Override
public void registerMogoNaviListener(String moduleName, IMogoNaviListener listener) {
MogoRegisterCenterHandler.getInstance().registerMogoNaviListener(moduleName, listener);
}
@Override
public void unregisterMogoNaviListener(String moduleName) {
MogoRegisterCenterHandler.getInstance().unregisterMogoNaviListener(moduleName);
}
@Override
public void registerMogoLocationListener(String moduleName, IMogoLocationListener listener) {
MogoRegisterCenterHandler.getInstance().registerMogoLocationListener(moduleName, listener);
@@ -99,21 +76,6 @@ public class MogoRegisterCenter implements IMogoRegisterCenter {
MogoRegisterCenterHandler.getInstance().unregisterCarLocationChangedListener(tag, listener);
}
@Override
public void registerADASControlStatusChangedListener(String tag, IMogoADASControlStatusChangedListener listener) {
MogoRegisterCenterHandler.getInstance().registerADASControlStatusChangedListener(tag, listener);
}
@Override
public void unregisterADASControlStatusChangedListener(String tag) {
MogoRegisterCenterHandler.getInstance().unregisterADASControlStatusChangedListener(tag);
}
@Override
public Iterator<IMogoADASControlStatusChangedListener> getAdasControlStatusChangedListeners() {
return MogoRegisterCenterHandler.getInstance().getAdasControlStatusChangedListeners();
}
@Override
public void init(Context context) {
}

View File

@@ -6,9 +6,6 @@ import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.navi.IMogoCarLocationChangedListener;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.service.adas.IMogoADASControlStatusChangedListener;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoRegisterCenter;
import java.util.ArrayList;
@@ -27,14 +24,11 @@ public class MogoRegisterCenterHandler implements IMogoRegisterCenter {
private static volatile MogoRegisterCenterHandler sInstance;
private final Map<String, IMogoModuleLifecycle> mLifecycle = new HashMap<>();
private final Map<String, IMogoMapListener> mMap = new HashMap<>();
private final Map<String, IMogoNaviListener> mNavi = new ConcurrentHashMap<>();
private final Map<String, IMogoLocationListener> mLocation = new HashMap<>();
private final Map<String, IMogoMarkerClickListener> mMarker = new HashMap<>();
private final Map<String, ArrayList<IMogoMarkerClickListener>> mStaticMarker = new HashMap<>();
private final Map<String, IMogoCarLocationChangedListener> mCarLocations = new ConcurrentHashMap<>();
private final Map<String, IMogoADASControlStatusChangedListener> mADAS = new HashMap<>();
private MogoRegisterCenterHandler() {
}
@@ -54,17 +48,6 @@ public class MogoRegisterCenterHandler implements IMogoRegisterCenter {
sInstance = null;
}
@Override
public void registerMogoModuleLifecycle(String tag, IMogoModuleLifecycle lifecycle) {
mLifecycle.put(tag, lifecycle);
}
@Override
public void unregisterMogoModuleLifecycle(String tag) {
mLifecycle.remove(tag);
}
@Override
public void registerMogoMapListener(String tag, IMogoMapListener listener) {
mMap.put(tag, listener);
@@ -75,16 +58,6 @@ public class MogoRegisterCenterHandler implements IMogoRegisterCenter {
mMap.remove(tag);
}
@Override
public void registerMogoNaviListener(String tag, IMogoNaviListener listener) {
mNavi.put(tag, listener);
}
@Override
public void unregisterMogoNaviListener(String tag) {
mNavi.remove(tag);
}
@Override
public void registerMogoLocationListener(String tag, IMogoLocationListener listener) {
mLocation.put(tag, listener);
@@ -136,16 +109,6 @@ public class MogoRegisterCenterHandler implements IMogoRegisterCenter {
mCarLocations.remove(tag);
}
@Override
public void registerADASControlStatusChangedListener(String tag, IMogoADASControlStatusChangedListener listener) {
mADAS.put(tag, listener);
}
@Override
public void unregisterADASControlStatusChangedListener(String tag) {
mADAS.remove(tag);
}
@Override
public void init(Context context) {
}
@@ -162,10 +125,6 @@ public class MogoRegisterCenterHandler implements IMogoRegisterCenter {
return mMap.values().iterator();
}
public Iterator<IMogoNaviListener> getNaviListeners() {
return mNavi.values().iterator();
}
@Override
public Iterator<IMogoLocationListener> getLocationListeners() {
return mLocation.values().iterator();
@@ -175,8 +134,4 @@ public class MogoRegisterCenterHandler implements IMogoRegisterCenter {
return mCarLocations.values().iterator();
}
@Override
public Iterator<IMogoADASControlStatusChangedListener> getAdasControlStatusChangedListeners() {
return mADAS.values().iterator();
}
}

View File

@@ -15,7 +15,6 @@ import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.function.main.EventDispatchCenter;
import com.mogo.eagle.core.function.main.cards.MogoModulesManager;
import com.mogo.eagle.core.function.main.delaycheck.DelayCheckUtil;
import com.mogo.eagle.core.function.main.monitoring.VehicleMonitoring;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
@@ -55,9 +54,6 @@ class MogoMainService extends Service implements IMogoLocationListener {
HdMapBuildConfig.isMapLoaded = true;
}, 5_000L
);
// 开启延时检测
DelayCheckUtil delayCheckUtil = new DelayCheckUtil(this);
delayCheckUtil.waitingForCheck();
// 车辆检测
VehicleMonitoring monitoring = new VehicleMonitoring(this);
monitoring.vehicleCheck();

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#ff000000"/>
<corners android:radius="@dimen/hmi_traffic_light_layout_corner"/>
</shape>

View File

@@ -65,22 +65,19 @@
android:layout_marginTop="45px"
android:layout_marginEnd="40px"
android:background="@drawable/icon_camera_nor"
app:layout_constraintEnd_toStartOf="@id/viewTrafficLightVr"
app:layout_constraintRight_toLeftOf="@id/viewTrafficLightVr"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible" />
<!--红绿灯-->
<com.mogo.eagle.core.function.hmi.ui.widget.TrafficLightView
<com.mogo.eagle.core.function.hmi.ui.widget.SingleTrafficLightView
android:id="@+id/viewTrafficLightVr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40px"
android:layout_marginEnd="40px"
android:elevation="@dimen/dp_10"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible" />
android:layout_marginTop="@dimen/hmi_traffic_light_layout_margin_top"
android:layout_marginRight="@dimen/hmi_traffic_light_layout_margin_right"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<!--地图视角切换-->
<com.mogo.eagle.core.function.hmi.ui.widget.PerspectiveSwitchView

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="@dimen/hmi_traffic_light_layout_width"
android:layout_height="@dimen/hmi_traffic_light_layout_height"
android:visibility="visible">
<ImageView
android:id="@+id/hmi_traffic_light_bg"
android:layout_width="@dimen/hmi_traffic_light_bg_width"
android:layout_height="@dimen/hmi_traffic_light_bg_height"
android:layout_marginStart="@dimen/hmi_traffic_light_bg_margin_left"
android:layout_marginTop="@dimen/hmi_traffic_light_bg_margin_top"
android:background="@drawable/traffic_light_bg"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/hmi_traffic_light_iv"
android:layout_width="@dimen/hmi_traffic_light_icon_size"
android:layout_height="@dimen/hmi_traffic_light_icon_size"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.mogo.eagle.core.function.hmi.ui.widget.GradientTextView
android:id="@+id/hmi_traffic_light_time_tv"
android:layout_width="@dimen/hmi_traffic_light_time_view_width"
android:layout_height="match_parent"
android:gravity="center"
android:textSize="@dimen/hmi_traffic_light_time_size"
android:textStyle="bold"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp">
<TextView
android:id="@+id/tvUpgradeApkName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="@color/color_FF2966EC"
android:padding="10dp"
/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#F0F0F0"
android:layout_marginTop="3dp"
android:layout_marginBottom="3dp"/>
</LinearLayout>

View File

@@ -118,7 +118,7 @@
</ScrollView>
<ScrollView
<androidx.core.widget.NestedScrollView
android:id="@+id/svLayout"
android:layout_width="match_parent"
android:layout_height="0dp"
@@ -245,28 +245,6 @@
android:layout_height="1dp"
android:background="#F0F0F0" />
<TextView
android:id="@+id/tvObuAppInfo"
style="@style/DebugSettingText"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#F0F0F0" />
<TextView
android:id="@+id/tvObuHliInfo"
style="@style/DebugSettingText"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#F0F0F0" />
<TextView
android:id="@+id/tvObuSdkVersion"
style="@style/DebugSettingText"
@@ -1538,9 +1516,105 @@
</LinearLayout>
</LinearLayout>
<ToggleButton
android:id="@+id/btnApkCenter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dp_10"
android:background="@drawable/radio_button_normal_background_right"
android:drawableEnd="@drawable/icon_right"
android:padding="@dimen/dp_20"
android:textOff="应用包管理中心"
android:textOn="应用包管理中心"
/>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/apkCenterLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
>
<ImageView
android:id="@+id/ivApkSearch"
android:layout_width="40dp"
android:layout_height="40dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:src="@drawable/icon_search"
android:padding="10dp"
android:layout_marginEnd="10dp"
/>
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/etApkSearch"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/ivApkSearch"
app:layout_constraintTop_toTopOf="@id/ivApkSearch"
app:layout_constraintBottom_toBottomOf="@id/ivApkSearch"
android:layout_marginStart="@dimen/dp_30"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginEnd="@dimen/dp_20"
android:layout_marginBottom="@dimen/dp_10"
android:background="@drawable/debug_setting_edit_bg"
android:gravity="center"
android:textColor="#1A1A1A"
android:textSize="14sp"
android:hint="请输入搜索关键字如版本号等"
/>
<CheckBox
android:id="@+id/cbApkOnline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/dp_10"
android:text="Online"
android:textColor="#000"
android:textSize="@dimen/dp_24"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/cbApkQa"
app:layout_constraintTop_toBottomOf="@id/ivApkSearch"
android:checked="true"
/>
<CheckBox
android:id="@+id/cbApkQa"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/dp_10"
android:text="QA"
android:textColor="#000"
android:textSize="@dimen/dp_24"
app:layout_constraintLeft_toRightOf="@id/cbApkOnline"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/ivApkSearch"
android:checked="true"
/>
<View
android:id="@+id/apkSearchDivider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#F0F0F0"
app:layout_constraintTop_toBottomOf="@id/cbApkQa"
android:layout_marginTop="@dimen/dp_10"
/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvUpgradeVersionList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/apkSearchDivider"
android:nestedScrollingEnabled="false"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</ScrollView>
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -37,4 +37,17 @@
<dimen name="dp_580">580px</dimen>
<dimen name="dp_588">588px</dimen>
<dimen name="dp_1066">1066px</dimen>
<dimen name="hmi_traffic_light_layout_width">225px</dimen>
<dimen name="hmi_traffic_light_layout_height">154px</dimen>
<dimen name="hmi_traffic_light_layout_corner">60px</dimen>
<dimen name="hmi_traffic_light_layout_margin_right">40px</dimen>
<dimen name="hmi_traffic_light_layout_margin_top">23px</dimen>
<dimen name="hmi_traffic_light_bg_width">210px</dimen>
<dimen name="hmi_traffic_light_bg_height">120px</dimen>
<dimen name="hmi_traffic_light_bg_margin_left">15px</dimen>
<dimen name="hmi_traffic_light_bg_margin_top">17px</dimen>
<dimen name="hmi_traffic_light_icon_size">154px</dimen>
<dimen name="hmi_traffic_light_time_view_width">130px</dimen>
<dimen name="hmi_traffic_light_time_size">60px</dimen>
</resources>

View File

@@ -46,4 +46,11 @@
<color name="dialog_bg_color">#3B4577</color>
<color name="turnlight_bg_color">#000000</color>
<color name="hmi_traffic_light_red_color_up">#FFFFA28B</color>
<color name="hmi_traffic_light_red_color_down">#FFDA1100</color>
<color name="hmi_traffic_light_green_color_up">#FF60FFD3</color>
<color name="hmi_traffic_light_green_color_down">#FF006D43</color>
<color name="hmi_traffic_light_yellow_color_up">#FFFFE198</color>
<color name="hmi_traffic_light_yellow_color_down">#FFFF9B00</color>
</resources>

View File

@@ -42,4 +42,16 @@
<dimen name="brakelight_width">460px</dimen>
<dimen name="brakelight_height">120px</dimen>
<dimen name="hmi_traffic_light_layout_width">225px</dimen>
<dimen name="hmi_traffic_light_layout_height">154px</dimen>
<dimen name="hmi_traffic_light_layout_corner">60px</dimen>
<dimen name="hmi_traffic_light_layout_margin_right">40px</dimen>
<dimen name="hmi_traffic_light_layout_margin_top">23px</dimen>
<dimen name="hmi_traffic_light_bg_width">210px</dimen>
<dimen name="hmi_traffic_light_bg_height">120px</dimen>
<dimen name="hmi_traffic_light_bg_margin_left">15px</dimen>
<dimen name="hmi_traffic_light_bg_margin_top">17px</dimen>
<dimen name="hmi_traffic_light_icon_size">154px</dimen>
<dimen name="hmi_traffic_light_time_view_width">130px</dimen>
<dimen name="hmi_traffic_light_time_size">60px</dimen>
</resources>

View File

@@ -0,0 +1,18 @@
/**
* Automatically generated file. DO NOT MODIFY
*/
package com.mogo.eagle.core.function.main;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String LIBRARY_PACKAGE_NAME = "com.mogo.eagle.core.function.main";
/**
* @deprecated APPLICATION_ID is misleading in libraries. For the library package name use LIBRARY_PACKAGE_NAME
*/
@Deprecated
public static final String APPLICATION_ID = "com.mogo.eagle.core.function.main";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "0.0.58.10";
}

View File

@@ -0,0 +1,18 @@
package com.alibaba.android.arouter.routes;
import com.alibaba.android.arouter.facade.enums.RouteType;
import com.alibaba.android.arouter.facade.model.RouteMeta;
import com.alibaba.android.arouter.facade.template.IRouteGroup;
import com.mogo.eagle.core.function.main.utils.DisplayEffectsManager;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
/**
* DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
public class ARouter$$Group$$displayeffects implements IRouteGroup {
@Override
public void loadInto(Map<String, RouteMeta> atlas) {
atlas.put("/displayeffects/api", RouteMeta.build(RouteType.PROVIDER, DisplayEffectsManager.class, "/displayeffects/api", "displayeffects", null, -1, -2147483648));
}
}

View File

@@ -0,0 +1,18 @@
package com.alibaba.android.arouter.routes;
import com.alibaba.android.arouter.facade.enums.RouteType;
import com.alibaba.android.arouter.facade.model.RouteMeta;
import com.alibaba.android.arouter.facade.template.IRouteGroup;
import com.mogo.eagle.core.function.main.registercenter.MogoRegisterCenter;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
/**
* DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
public class ARouter$$Group$$registercenter implements IRouteGroup {
@Override
public void loadInto(Map<String, RouteMeta> atlas) {
atlas.put("/registercenter/api", RouteMeta.build(RouteType.PROVIDER, MogoRegisterCenter.class, "/registercenter/api", "registercenter", null, -1, -2147483648));
}
}

View File

@@ -0,0 +1,18 @@
package com.alibaba.android.arouter.routes;
import com.alibaba.android.arouter.facade.enums.RouteType;
import com.alibaba.android.arouter.facade.model.RouteMeta;
import com.alibaba.android.arouter.facade.template.IRouteGroup;
import com.mogo.eagle.core.function.main.service.MogoMainService;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
/**
* DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
public class ARouter$$Group$$service implements IRouteGroup {
@Override
public void loadInto(Map<String, RouteMeta> atlas) {
atlas.put("/service/base/info", RouteMeta.build(RouteType.SERVICE, MogoMainService.class, "/service/base/info", "service", null, -1, -2147483648));
}
}

View File

@@ -0,0 +1,18 @@
package com.alibaba.android.arouter.routes;
import com.alibaba.android.arouter.facade.enums.RouteType;
import com.alibaba.android.arouter.facade.model.RouteMeta;
import com.alibaba.android.arouter.facade.template.IRouteGroup;
import com.mogo.eagle.core.function.main.windowview.MogoWindowManager;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
/**
* DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
public class ARouter$$Group$$windowmanger implements IRouteGroup {
@Override
public void loadInto(Map<String, RouteMeta> atlas) {
atlas.put("/windowmanger/api", RouteMeta.build(RouteType.PROVIDER, MogoWindowManager.class, "/windowmanger/api", "windowmanger", null, -1, -2147483648));
}
}

View File

@@ -0,0 +1,22 @@
package com.alibaba.android.arouter.routes;
import com.alibaba.android.arouter.facade.enums.RouteType;
import com.alibaba.android.arouter.facade.model.RouteMeta;
import com.alibaba.android.arouter.facade.template.IProviderGroup;
import com.mogo.eagle.core.function.main.registercenter.MogoRegisterCenter;
import com.mogo.eagle.core.function.main.utils.DisplayEffectsManager;
import com.mogo.eagle.core.function.main.windowview.MogoWindowManager;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
/**
* DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
public class ARouter$$Providers$$mogocorefunctionmain implements IProviderGroup {
@Override
public void loadInto(Map<String, RouteMeta> providers) {
providers.put("com.mogo.service.module.IMogoRegisterCenter", RouteMeta.build(RouteType.PROVIDER, MogoRegisterCenter.class, "/registercenter/api", "registercenter", null, -1, -2147483648));
providers.put("com.mogo.service.v2x.DisplayEffectsInterface", RouteMeta.build(RouteType.PROVIDER, DisplayEffectsManager.class, "/displayeffects/api", "displayeffects", null, -1, -2147483648));
providers.put("com.mogo.service.windowview.IMogoWindowManager", RouteMeta.build(RouteType.PROVIDER, MogoWindowManager.class, "/windowmanger/api", "windowmanger", null, -1, -2147483648));
}
}

View File

@@ -0,0 +1,20 @@
package com.alibaba.android.arouter.routes;
import com.alibaba.android.arouter.facade.template.IRouteGroup;
import com.alibaba.android.arouter.facade.template.IRouteRoot;
import java.lang.Class;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
/**
* DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
public class ARouter$$Root$$mogocorefunctionmain implements IRouteRoot {
@Override
public void loadInto(Map<String, Class<? extends IRouteGroup>> routes) {
routes.put("displayeffects", ARouter$$Group$$displayeffects.class);
routes.put("registercenter", ARouter$$Group$$registercenter.class);
routes.put("service", ARouter$$Group$$service.class);
routes.put("windowmanger", ARouter$$Group$$windowmanger.class);
}
}

View File

@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mogo.eagle.core.function.main"
android:versionCode="1"
android:versionName="0.0.58.10" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<application>
<!--
&lt;!&ndash;保活用&ndash;&gt;
<service
android:name="com.zhidao.boot.persistent.lib.PersistentAliveService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.zhidao.boot.persistent.lib.action" />
</intent-filter>
</service>
<activity
android:name="com.zhidao.boot.persistent.lib.PersistentAliveActivity"
android:resizeableActivity="false"
android:screenOrientation="landscape"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
-->
<activity
android:name="com.mogo.eagle.core.function.main.MainLauncherActivity"
android:clearTaskOnLaunch="true"
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
android:enabled="true"
android:launchMode="singleTop"
android:resizeableActivity="false"
android:resumeWhilePausing="true"
android:screenOrientation="landscape"
android:stateNotNeeded="true"
android:theme="@style/Main"
android:windowSoftInputMode="adjustPan|stateHidden" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<!-- 调试用暂时开启LAUNCHER这个属性 -->
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.LAUNCHER_APP" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<data
android:host="launcher"
android:path="/main/switch2"
android:scheme="mogo" />
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
<service
android:name="com.mogo.eagle.core.function.main.service.MogoMainService"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action android:name="com.mogo.launcher.action.MAIN_SERVICE" />
</intent-filter>
</service>
</application>
</manifest>

View File

@@ -0,0 +1 @@
[{"outputType":{"type":"AAPT_FRIENDLY_MERGED_MANIFESTS"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"0.0.58.10","enabled":true,"outputFile":"mogo-core-function-main-debug.aar","fullName":"debug","baseName":"debug"},"path":"AndroidManifest.xml","properties":{"packageId":"com.mogo.eagle.core.function.main","split":""}}]

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/arrowem/Documents/androidProject/Launcher/core/mogo-core-data/src/main/jniLibs"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/arrowem/Documents/androidProject/Launcher/core/mogo-core-data/src/debug/jniLibs"/></dataSet></merger>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/arrowem/Documents/androidProject/Launcher/foudations/mogo-aicloud-services-sdk/src/main/shaders"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/arrowem/Documents/androidProject/Launcher/foudations/mogo-aicloud-services-sdk/src/debug/shaders"/></dataSet></merger>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/arrowem/Documents/androidProject/Launcher/core/mogo-core-function-call/src/main/assets"/><source path="/Users/arrowem/Documents/androidProject/Launcher/core/mogo-core-function-call/build/intermediates/shader_assets/debug/compileDebugShaders/out"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/arrowem/Documents/androidProject/Launcher/core/mogo-core-function-call/src/debug/assets"/></dataSet></merger>

View File

@@ -0,0 +1,22 @@
#Sun Mar 27 14:04:29 CST 2022
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/drawable-xhdpi/module_main_launcher_bg.png=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/module_main_launcher_bg.png
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/drawable-xhdpi/wu2.png=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/wu2.png
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/layout/module_main_activity_main.xml=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/layout/module_main_activity_main.xml
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/drawable-xhdpi/module_main_warning_bkg_bottom.xml=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/module_main_warning_bkg_bottom.xml
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/drawable-mdpi/module_main_launcher_bg.png=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/drawable-mdpi-v4/module_main_launcher_bg.png
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/drawable-xhdpi/mogo_slogan.png=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/mogo_slogan.png
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/drawable-xhdpi/module_main_warning_bkg_top.xml=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/module_main_warning_bkg_top.xml
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/drawable-xhdpi/wu1.png=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/wu1.png
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/drawable-mdpi/mogo_slogan.png=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/drawable-mdpi-v4/mogo_slogan.png
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/drawable-xhdpi-2560x1440/wu2.png=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/drawable-xhdpi-2560x1440-v4/wu2.png
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/drawable-xhdpi/module_main_warning_bkg_left.xml=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/module_main_warning_bkg_left.xml
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/drawable-xhdpi/module_main_warning_bkg_right.xml=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/module_main_warning_bkg_right.xml
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/drawable/main_bitmap_splash_icon.xml=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/drawable/main_bitmap_splash_icon.xml
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/drawable/main_splash_bg.xml=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/drawable/main_splash_bg.xml
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/drawable/module_main_dw_top_frame_bkg.xml=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/drawable/module_main_dw_top_frame_bkg.xml
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/drawable-ldpi/mogo_slogan.png=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/drawable-ldpi-v4/mogo_slogan.png
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/drawable/main_bitmap_splash_bg.xml=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/drawable/main_bitmap_splash_bg.xml
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/drawable-ldpi/module_main_launcher_bg.png=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/drawable-ldpi-v4/module_main_launcher_bg.png
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/drawable/module_main_dw_left_frame_bkg.xml=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/drawable/module_main_dw_left_frame_bkg.xml
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/layout/module_main_fragement_placeholder.xml=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/layout/module_main_fragement_placeholder.xml
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/src/main/res/drawable-xhdpi-2560x1440/wu1.png=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-main/build/intermediates/packaged_res/debug/drawable-xhdpi-2560x1440-v4/wu1.png

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="cards_container_dp_600">320px</dimen>
<dimen name="cards_container_shadow_dp_margin_top">319px</dimen>
<dimen name="module_event_fragment_container_padding">8px</dimen>
<dimen name="module_ext_top_view_max_width">1920px</dimen>
<dimen name="module_main_apps_fragment_container_padding">6px</dimen>
<dimen name="module_main_apps_fragment_container_paddingBottom">2px</dimen>
<dimen name="module_main_apps_fragment_container_paddingTop">2px</dimen>
<dimen name="module_main_apps_fragment_container_width">110px</dimen>
<dimen name="module_main_card_card_shadow_height_div">10px</dimen>
<dimen name="module_main_card_card_shadow_width_div">20px</dimen>
<dimen name="module_main_card_container_height">370px</dimen>
<dimen name="module_main_card_container_marginBottom">140.5px</dimen>
<dimen name="module_main_card_container_marginLeft">32px</dimen>
<dimen name="module_main_card_container_marginTop">8px</dimen>
<dimen name="module_main_card_container_paddingBottom">18px</dimen>
<dimen name="module_main_card_container_width">352px</dimen>
<dimen name="module_main_card_cover_up_margin">352px</dimen>
<dimen name="module_main_entrance_fragment_container_marginLeft_in_vr_mode">0px</dimen>
<dimen name="module_main_entrance_fragment_container_marginLeft_out_vr_mode">444px</dimen>
<dimen name="module_main_entrance_fragment_container_padding">10px</dimen>
<dimen name="module_main_entrance_fragment_container_padding_top">16px</dimen>
<dimen name="module_main_entrance_fragment_container_width">658px</dimen>
<dimen name="module_main_event_panel_fragment_paddingBottom">0px</dimen>
<dimen name="module_main_event_panel_fragment_paddingLeft">6px</dimen>
<dimen name="module_main_event_panel_fragment_paddingRight">6px</dimen>
<dimen name="module_main_event_panel_fragment_paddingTop">0px</dimen>
<dimen name="module_main_header_fragment_container_marginLeft">460px</dimen>
<dimen name="module_main_header_fragment_container_marginTop">15px</dimen>
<dimen name="module_main_id_entrance_fragment_container_marginLeft">444px</dimen>
<dimen name="module_main_id_left_panel_fragment_container_width">350px</dimen>
<dimen name="module_main_map_left_shadow_frame_width">350px</dimen>
<dimen name="module_main_panel_margin_right">0px</dimen>
<dimen name="module_main_top_shadow_height">144px</dimen>
</resources>

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="cards_container_dp_600">600px</dimen>
<dimen name="cards_container_shadow_dp_margin_top">599px</dimen>
<dimen name="module_event_fragment_container_padding">20px</dimen>
<dimen name="module_ext_top_view_max_width">1920px</dimen>
<dimen name="module_main_apps_fragment_container_padding">20px</dimen>
<dimen name="module_main_apps_fragment_container_paddingBottom">20px</dimen>
<dimen name="module_main_apps_fragment_container_paddingTop">20px</dimen>
<dimen name="module_main_apps_fragment_container_width">200px</dimen>
<dimen name="module_main_card_card_shadow_height_div">15px</dimen>
<dimen name="module_main_card_card_shadow_width_div">30px</dimen>
<dimen name="module_main_card_container_height">690px</dimen>
<dimen name="module_main_card_container_marginBottom">211px</dimen>
<dimen name="module_main_card_container_marginLeft">60px</dimen>
<dimen name="module_main_card_container_marginTop">10px</dimen>
<dimen name="module_main_card_container_paddingBottom">30px</dimen>
<dimen name="module_main_card_container_width">660px</dimen>
<dimen name="module_main_card_cover_up_margin">660px</dimen>
<dimen name="module_main_entrance_fragment_container_marginLeft_in_vr_mode">0px</dimen>
<dimen name="module_main_entrance_fragment_container_marginLeft_out_vr_mode">800px</dimen>
<dimen name="module_main_entrance_fragment_container_padding">30px</dimen>
<dimen name="module_main_entrance_fragment_container_padding_top">70px</dimen>
<dimen name="module_main_entrance_fragment_container_width">1263px</dimen>
<dimen name="module_main_header_fragment_container_marginLeft">830px</dimen>
<dimen name="module_main_header_fragment_container_marginTop">30px</dimen>
<dimen name="module_main_id_entrance_fragment_container_marginLeft">590px</dimen>
<dimen name="module_main_id_left_panel_fragment_container_width">635px</dimen>
<dimen name="module_main_map_left_shadow_frame_width">350px</dimen>
<dimen name="module_main_panel_margin_right">0px</dimen>
<dimen name="module_main_top_shadow_height">270px</dimen>
</resources>

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="cards_container_dp_600">600px</dimen>
<dimen name="cards_container_shadow_dp_margin_top">599px</dimen>
<dimen name="module_event_fragment_container_padding">20px</dimen>
<dimen name="module_main_apps_fragment_container_padding">20px</dimen>
<dimen name="module_main_apps_fragment_container_paddingTop">20px</dimen>
<dimen name="module_main_apps_fragment_container_width">200px</dimen>
<dimen name="module_main_card_card_shadow_height_div">15px</dimen>
<dimen name="module_main_card_card_shadow_width_div">30px</dimen>
<dimen name="module_main_card_container_height">690px</dimen>
<dimen name="module_main_card_container_marginBottom">211px</dimen>
<dimen name="module_main_card_container_marginLeft">60px</dimen>
<dimen name="module_main_card_container_marginTop">10px</dimen>
<dimen name="module_main_card_container_paddingBottom">30px</dimen>
<dimen name="module_main_card_container_width">660px</dimen>
<dimen name="module_main_card_cover_up_margin">660px</dimen>
<dimen name="module_main_entrance_fragment_container_marginLeft_in_vr_mode">0px</dimen>
<dimen name="module_main_entrance_fragment_container_marginLeft_out_vr_mode">800px</dimen>
<dimen name="module_main_entrance_fragment_container_padding">20px</dimen>
<dimen name="module_main_entrance_fragment_container_padding_top">30px</dimen>
<dimen name="module_main_entrance_fragment_container_width">1313px</dimen>
<dimen name="module_main_event_panel_fragment_paddingBottom">18px</dimen>
<dimen name="module_main_event_panel_fragment_paddingLeft">18px</dimen>
<dimen name="module_main_event_panel_fragment_paddingRight">18px</dimen>
<dimen name="module_main_event_panel_fragment_paddingTop">20px</dimen>
<dimen name="module_main_header_fragment_container_marginLeft">830px</dimen>
<dimen name="module_main_header_fragment_container_marginTop">30px</dimen>
<dimen name="module_main_id_entrance_fragment_container_marginLeft">800px</dimen>
<dimen name="module_main_id_left_panel_fragment_container_width">340px</dimen>
<dimen name="module_main_map_left_shadow_frame_width">350px</dimen>
<dimen name="module_main_top_shadow_height">270px</dimen>
</resources>

View File

@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:ns1="http://schemas.android.com/tools">
<color name="module_main_window_background_color">#212831</color>
<dimen name="cards_container_dp_600">320px</dimen>
<dimen name="cards_container_shadow_dp_margin_top">319px</dimen>
<dimen name="module_event_fragment_container_padding">8px</dimen>
<dimen name="module_ext_top_view_max_width">1920px</dimen>
<dimen name="module_main_apps_fragment_container_padding">6px</dimen>
<dimen name="module_main_apps_fragment_container_paddingBottom">2px</dimen>
<dimen name="module_main_apps_fragment_container_paddingTop">8px</dimen>
<dimen name="module_main_apps_fragment_container_width">110px</dimen>
<dimen name="module_main_card_card_shadow_height_div">10px</dimen>
<dimen name="module_main_card_card_shadow_width_div">20px</dimen>
<dimen name="module_main_card_container_height">370px</dimen>
<dimen name="module_main_card_container_marginBottom">140.5px</dimen>
<dimen name="module_main_card_container_marginLeft">32px</dimen>
<dimen name="module_main_card_container_marginTop">8px</dimen>
<dimen name="module_main_card_container_paddingBottom">18px</dimen>
<dimen name="module_main_card_container_width">352px</dimen>
<dimen name="module_main_card_cover_up_margin">352px</dimen>
<dimen name="module_main_entrance_fragment_container_marginLeft_in_vr_mode">0px</dimen>
<dimen name="module_main_entrance_fragment_container_marginLeft_out_vr_mode">800px</dimen>
<dimen name="module_main_entrance_fragment_container_padding">10px</dimen>
<dimen name="module_main_entrance_fragment_container_padding_top">16px</dimen>
<dimen name="module_main_entrance_fragment_container_width">658px</dimen>
<dimen name="module_main_event_panel_fragment_paddingBottom">2px</dimen>
<dimen name="module_main_event_panel_fragment_paddingLeft">2px</dimen>
<dimen name="module_main_event_panel_fragment_paddingRight">4px</dimen>
<dimen name="module_main_event_panel_fragment_paddingTop">2px</dimen>
<dimen name="module_main_header_fragment_container_marginLeft">460px</dimen>
<dimen name="module_main_header_fragment_container_marginTop">15px</dimen>
<dimen name="module_main_id_entrance_fragment_container_marginLeft">444px</dimen>
<dimen name="module_main_id_left_panel_fragment_container_width">350px</dimen>
<dimen name="module_main_map_left_shadow_frame_width">350px</dimen>
<dimen name="module_main_panel_margin_right">0px</dimen>
<dimen name="module_main_top_shadow_height">144px</dimen>
<string name="app_name">mogo-module-main</string>
<style name="Main" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowTranslucentStatus">false</item>
<item name="android:statusBarColor" ns1:ignore="NewApi">@null</item>
<item name="android:windowEnterAnimation">@null</item>
<item name="android:windowExitAnimation">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowBackground">@drawable/main_bitmap_splash_bg</item>
<item name="android:windowTranslucentNavigation">false</item>
<item name="android:windowAnimationStyle">@style/MainAnimation</item>
<item name="checkboxStyle">@style/noCheckboxStyle</item>
<item name="android:windowFullscreen">false</item>
<item name="radioButtonStyle">@style/noCheckboxStyle</item>
</style>
<style name="MainAnimation">
<item name="android:activityOpenEnterAnimation">@null</item>
<item name="android:activityOpenExitAnimation">@null</item>
<item name="android:activityCloseEnterAnimation">@null</item>
<item name="android:activityCloseExitAnimation">@null</item>
<item name="android:taskOpenEnterAnimation">@null</item>
<item name="android:taskOpenExitAnimation">@null</item>
<item name="android:taskCloseEnterAnimation">@null</item>
<item name="android:taskCloseExitAnimation">@null</item>
<item name="android:taskToFrontEnterAnimation">@null</item>
<item name="android:taskToFrontExitAnimation">@null</item>
<item name="android:taskToBackEnterAnimation">@null</item>
<item name="android:taskToBackExitAnimation">@null</item>
</style>
<style name="noCheckboxStyle" parent="Widget.AppCompat.CompoundButton.CheckBox">
<item name="buttonCompat">@null</item>
<item name="android:background">@null</item>
</style>
<style name="noRadioButtonStyle" parent="Widget.AppCompat.CompoundButton.RadioButton">
<item name="buttonCompat">@null</item>
<item name="android:background">@null</item>
</style>
</resources>

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More