[6.6.0] cherry pick bailing func

This commit is contained in:
EmArrow
2024-08-28 10:15:36 +08:00
parent 857a60f4d0
commit 65c093299c
6 changed files with 66 additions and 190 deletions

View File

@@ -1,7 +1,7 @@
{
"mogo": {
"C1":["driver"],
"B1":["driver","passenger"],
"B1":["driver","passenger","bailing"],
"B2":["driver","passenger"],
"T1T2":["driver","passenger"],
"ALL":["driver","passenger"]
@@ -19,7 +19,7 @@
},
"saas": {
"T1T2":["driver","passenger"],
"B1":["driver","passenger"],
"B1":["driver","passenger","bailing"],
"B2":["driver","passenger"],
"M1":["driver","passenger"],
"ALL":["driver","passenger"]

View File

@@ -18,5 +18,8 @@ project.android.productFlavors {
// ③能启动自驾的档位
buildConfigField 'java.util.Set<chassis.Chassis.GearPosition>', 'LAUNCH_AUTOPILOT_GEAR', 'new java.util.HashSet<chassis.Chassis.GearPosition>(){{add(chassis.Chassis.GearPosition.GEAR_D);}}'
// ④是否支持多屏显示
buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'true'
}
}

View File

@@ -101,6 +101,7 @@ object ConfigStartUp {
DebugConfig.setSocketAppId(BuildConfig.SOCKET_APP_ID)
DebugConfig.setMapVersion(BuildConfig.MAP_SDK_VERSION)
DebugConfig.setMapOptVersion(BuildConfig.MAP_SDK_OPT_VERSION)
DebugConfig.setMultiDisplay(BuildConfig.IS_MULTI_DISPLAY)
DebugConfig.setCarModelChange(BuildConfig.IS_CAR_MODEL_CHANGE)
}

View File

@@ -6,33 +6,27 @@ import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_TYPE_STATU
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_MAIN;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.Handler;
import android.os.Process;
import android.text.TextUtils;
import android.view.KeyEvent;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.module.intent.IMogoIntentListener;
import com.mogo.commons.module.intent.IntentManager;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider;
import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener;
import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager;
import com.mogo.eagle.core.function.hmi.R;
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.MultiDisplayUtils;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.rousetime.android_startup.model.CostTimesModel;
import com.zhjt.service.chain.ChainLog;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import java.util.List;
/**
@@ -40,12 +34,8 @@ import java.util.List;
*
* @author tongchenfei
*/
public class MainLauncherActivity extends MainActivity implements IMogoIntentListener, IMoGoSkinModeChangeListener {
public class MainLauncherActivity extends MainActivity {
private static final String TAG = "MainLauncherActivity";
protected boolean mIsHomeKeyDown = false;
private final static Handler handlerV2XEvent = new Handler();
private static Runnable runnableV2XEvent;
private static long lastKeyDownTimeMillis;
@Override
@@ -53,49 +43,34 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
super.onCreate(savedInstanceState);
EventBus.getDefault().register(this);
CallerLogger.i(M_HMI + TAG, "onCreate");
if(DebugConfig.isMultiDisplay()){
try {
// 在第二个屏幕启动乘客端app
// 多进程方案
MultiDisplayUtils.INSTANCE.startActWithSecond(this, PassengerLauncherActivity.class);
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
protected void onResume() {
super.onResume();
//ActivityUtils.setDefaultL(this);
CallerLogger.i(M_HMI + TAG, "onResume");
}
@Override
protected void initViews() {
super.initViews();
}
@Override
protected void onStart() {
super.onStart();
IntentManager.getInstance().registerIntentListener(Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this);
// 添加换肤监听
CallerSkinModeListenerManager.INSTANCE.addListener(TAG, this);
//ActivityLifecycleManager.getInstance().setAppActive(true);
}
@Override
protected void onPause() {
super.onPause();
CallerLogger.i(M_HMI + TAG, "onPause");
mIsHomeKeyDown = false;
}
@Override
protected void onStop() {
super.onStop();
CallerLogger.i(M_HMI + TAG, "onStop");
IntentManager.getInstance().unregisterIntentListener(Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this);
//ActivityLifecycleManager.getInstance().setAppActive(false);
}
@Override
public void onIntentReceived(String intentStr, Intent intent) {
if (TextUtils.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS, intentStr)) {
mIsHomeKeyDown = intent.getBooleanExtra("isHomeKeyDown", true);
}
}
@Override
@@ -111,18 +86,31 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
private void loadOCHModule() {
IMoGoFunctionProvider ochProvider;
// 兼容处理之前联想PAD及小巴车多个设备部署不同APP方案
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
ochProvider = (IMoGoFunctionProvider) ARouter.getInstance()
.build("/driver/api")
.navigation(getContext());
} else if(AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)){
ochProvider = (IMoGoFunctionProvider) ARouter.getInstance()
.build("/passenger/api")
.navigation(getContext());
if (!DebugConfig.isMultiDisplay()) {
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
ochProvider = (IMoGoFunctionProvider) ARouter.getInstance()
.build("/driver/api")
.navigation(getContext());
} else if(AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)){
ochProvider = (IMoGoFunctionProvider) ARouter.getInstance()
.build("/passenger/api")
.navigation(getContext());
} else {
ochProvider = (IMoGoFunctionProvider) ARouter.getInstance()
.build("/driver/api")
.navigation(getContext());
}
} else {
ochProvider = (IMoGoFunctionProvider) ARouter.getInstance()
.build("/driver/api")
.navigation(getContext());
// 目前只有金旅星辰乘客屏是连接的双屏
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
ochProvider = (IMoGoFunctionProvider) ARouter.getInstance()
.build("/passenger/api")
.navigation(getContext());
} else {
ochProvider = (IMoGoFunctionProvider) ARouter.getInstance()
.build("/driver/api")
.navigation(getContext());
}
}
if (ochProvider != null) {
@@ -152,25 +140,15 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
protected void onDestroy() {
super.onDestroy();
CallerLogger.i(M_HMI + TAG, "onDestroy");
stopCountDown();
try {
// acc off 之后会出现进程还在,但是页面被杀的情况,这个直接杀掉进程,然后让整个进程重启
Process.killProcess(Process.myPid());
} catch (Exception e) {
e.printStackTrace();
}
// 移除换肤监听
CallerSkinModeListenerManager.INSTANCE.removeListener(TAG);
EventBus.getDefault().unregister(this);
}
private void stopCountDown() {
if (runnableV2XEvent != null) {
handlerV2XEvent.removeCallbacks(runnableV2XEvent);
runnableV2XEvent = null;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
CallerLogger.i(M_HMI + TAG, "onKeyDown");
@@ -188,18 +166,4 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
return super.onKeyDown(keyCode, event);
}
@Override
public void onBackPressed() {
super.onBackPressed();
}
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
@Override
public void onSkinModeChange(int skinMode) {
}
}

View File

@@ -19,11 +19,13 @@ import androidx.annotation.Nullable;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.module.intent.IMogoIntentListener;
import com.mogo.commons.module.intent.IntentManager;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider;
import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener;
import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager;
import com.mogo.eagle.core.function.hmi.R;
import com.mogo.eagle.core.function.main.moujie.BluetoothMonitorReceiver;
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.commons.storage.SharedPrefsMgr;
import com.rousetime.android_startup.model.CostTimesModel;
@@ -37,19 +39,12 @@ import java.util.List;
import java.util.Set;
/**
* 针对作为Launcher的情况做个性化操作 TODO 测试用的,可删除
* 多进程乘客屏启动launcher
*
* @author tongchenfei
*/
public class PassengerLauncherActivity extends MainActivity implements IMogoIntentListener, IMoGoSkinModeChangeListener {
public class PassengerLauncherActivity extends MainActivity {
private static final String TAG = "PassengerLauncherActivity";
protected boolean mIsHomeKeyDown = false;
private final static Handler handlerV2XEvent = new Handler();
private static Runnable runnableV2XEvent;
private BluetoothMonitorReceiver mBluetoothReceiver = null;
private BluetoothAdapter mBluetoothAdapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -58,54 +53,6 @@ public class PassengerLauncherActivity extends MainActivity implements IMogoInte
CallerLogger.i(M_HMI + TAG, "onCreate");
}
@Override
protected void onResume() {
super.onResume();
initBluetooth();
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (!mBluetoothAdapter.isEnabled()) {
mBluetoothAdapter.enable();
}
mBluetoothAdapter.startDiscovery();
showBondedDevice(mBluetoothAdapter);
}
@Override
protected void initViews() {
super.initViews();
}
@Override
protected void onStart() {
super.onStart();
IntentManager.getInstance().registerIntentListener(Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this);
// 添加换肤监听
CallerSkinModeListenerManager.INSTANCE.addListener(TAG, this);
//ActivityLifecycleManager.getInstance().setAppActive(true);
}
@Override
protected void onPause() {
super.onPause();
mIsHomeKeyDown = false;
unregisterReceiver(this.mBluetoothReceiver);
}
@Override
protected void onStop() {
super.onStop();
IntentManager.getInstance().unregisterIntentListener(Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this);
//ActivityLifecycleManager.getInstance().setAppActive(false);
}
@Override
public void onIntentReceived(String intentStr, Intent intent) {
if (TextUtils.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS, intentStr)) {
mIsHomeKeyDown = intent.getBooleanExtra("isHomeKeyDown", true);
}
}
@Override
protected void loadOthersModules() {
super.loadOthersModules();
@@ -117,11 +64,13 @@ public class PassengerLauncherActivity extends MainActivity implements IMogoInte
* 加载网约车模块
*/
private void loadOCHModule() {
IMoGoFunctionProvider ochProvider = (IMoGoFunctionProvider) ARouter.getInstance()
.build("/driver/api")
.navigation(getContext());
if (ochProvider != null) {
ochProvider.createCoverage(this, R.id.module_main_id_och_fragment);
if(AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)){
IMoGoFunctionProvider ochProvider = (IMoGoFunctionProvider) ARouter.getInstance()
.build("/passenger/api")
.navigation(getContext());
if (ochProvider != null) {
ochProvider.createCoverage(this, R.id.module_main_id_och_fragment);
}
}
}
@@ -146,65 +95,13 @@ public class PassengerLauncherActivity extends MainActivity implements IMogoInte
@Override
protected void onDestroy() {
super.onDestroy();
stopCountDown();
try {
// acc off 之后会出现进程还在,但是页面被杀的情况,这个直接杀掉进程,然后让整个进程重启
Process.killProcess(Process.myPid());
} catch (Exception e) {
e.printStackTrace();
}
// 移除换肤监听
CallerSkinModeListenerManager.INSTANCE.removeListener(TAG);
EventBus.getDefault().unregister(this);
}
private void stopCountDown() {
if (runnableV2XEvent != null) {
handlerV2XEvent.removeCallbacks(runnableV2XEvent);
runnableV2XEvent = null;
}
}
@Override
public void onSkinModeChange(int skinMode) {
}
/**
* 初始化蓝牙广播
*/
private void initBluetooth() {
this.mBluetoothReceiver = new BluetoothMonitorReceiver();
IntentFilter intentFilter = new IntentFilter();
// 监视蓝牙关闭和打开的状态
intentFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
// 监视蓝牙设备与APP连接的状态
intentFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);
intentFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);
// 注册广播
registerReceiver(this.mBluetoothReceiver, intentFilter);
}
/**
* 查找蓝牙连接过的蓝牙设备
*/
private void showBondedDevice(BluetoothAdapter bluetoothAdapter) {
Set<BluetoothDevice> deviceList = bluetoothAdapter.getBondedDevices();
for (BluetoothDevice device : deviceList) {
try {
//使用反射调用获取设备连接状态方法
Method isConnectedMethod = BluetoothDevice.class.getDeclaredMethod("isConnected", (Class[]) null);
isConnectedMethod.setAccessible(true);
// boolean isConnected = (boolean) isConnectedMethod.invoke(device, (Object[]) null);
if (device.getName().equals("MINI_KEYBOARD")) {
SharedPrefsMgr.getInstance().putString("BLUETOOTH", device.getName());
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
}
}

View File

@@ -181,6 +181,17 @@ public class DebugConfig {
return mapOptVersion;
}
// 兼容是否支持多屏幕方案
private static boolean isMultiDisplay = false;
public static void setMultiDisplay(boolean status) {
isMultiDisplay = status;
}
public static boolean isMultiDisplay() {
return isMultiDisplay;
}
// 兼容是否支持多屏幕方案
private static boolean isCarModelChange = true;