diff --git a/app/script/flavorfilter/flavors.json b/app/script/flavorfilter/flavors.json index bf2c0a56d5..79ed0e040c 100644 --- a/app/script/flavorfilter/flavors.json +++ b/app/script/flavorfilter/flavors.json @@ -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"] diff --git a/app/script/vehicleFlavors/B1.gradle b/app/script/vehicleFlavors/B1.gradle index f5403bf709..9566826afd 100644 --- a/app/script/vehicleFlavors/B1.gradle +++ b/app/script/vehicleFlavors/B1.gradle @@ -18,5 +18,8 @@ project.android.productFlavors { // ③能启动自驾的档位 buildConfigField 'java.util.Set', 'LAUNCH_AUTOPILOT_GEAR', 'new java.util.HashSet(){{add(chassis.Chassis.GearPosition.GEAR_D);}}' + + // ④是否支持多屏显示 + buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'true' } } \ No newline at end of file diff --git a/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt b/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt index 83dd4c9ca7..a2d9bfc604 100644 --- a/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt +++ b/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt @@ -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) } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java index 5858f1c323..6c51d93be7 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java @@ -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) { - } - } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/PassengerLauncherActivity.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/PassengerLauncherActivity.java index 62d4d09530..20b487c697 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/PassengerLauncherActivity.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/PassengerLauncherActivity.java @@ -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 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(); - } - } - } - } diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java index c6eac394ae..0231f02cf1 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java @@ -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;