[8.2.6][] 调试窗添加重启乘客屏功能

This commit is contained in:
xinfengkun
2025-10-30 17:49:18 +08:00
parent 2dbf9205e7
commit f0511ac4eb
5 changed files with 70 additions and 3 deletions

View File

@@ -38,6 +38,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.AppStateManager
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.RebootUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.telematic.MogoProtocolMsg
@@ -394,6 +395,14 @@ class TeleMsgHandler : IMsgHandler {
}
CallerTelematicListenerManager.dispatchB2DemoMode(value)
}
TelematicConstant.PASSENGER_APP_REBOOT -> {
Log.i("xfk","乘客端收到司机端下发的重启命令")
CallerTelematicManager.sendMsgToServer(
TelematicConstant.PASSENGER_APP_REBOOT,
"".toByteArray()
)
RebootUtils.restartApp()
}
TelematicConstant.SHOW_TRAFFIC_LIGHT -> {
val trafficLightJson = String(it.body)
@@ -508,7 +517,9 @@ class TeleMsgHandler : IMsgHandler {
// 来自客户端的响应
CallerTelematicListenerManager.invokeReceivedMsg(TelematicConstant.DRIVE_SEAT_VIDEO_STREAM_RSP, it.body)
}
TelematicConstant.PASSENGER_APP_REBOOT -> {
ToastUtils.showLong("乘客屏已收到重启命令")
}
else -> {
}
}

View File

@@ -14,7 +14,6 @@ import android.os.Process
import android.text.Html
import android.text.TextUtils
import android.util.AttributeSet
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -123,6 +122,7 @@ import com.mogo.eagle.core.utilcode.util.DeviceUtils
import com.mogo.eagle.core.utilcode.util.FileUtils
import com.mogo.eagle.core.utilcode.util.KeyboardUtils
import com.mogo.eagle.core.utilcode.util.NetworkUtils
import com.mogo.eagle.core.utilcode.util.RebootUtils
import com.mogo.eagle.core.utilcode.util.SPUtils
import com.mogo.eagle.core.utilcode.util.ScreenUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
@@ -161,6 +161,7 @@ import kotlinx.android.synthetic.main.view_debug_setting.view.btnEnsureMap
import kotlinx.android.synthetic.main.view_debug_setting.view.btnFmd
import kotlinx.android.synthetic.main.view_debug_setting.view.btnHdVisualAdjust
import kotlinx.android.synthetic.main.view_debug_setting.view.btnIpcReboot
import kotlinx.android.synthetic.main.view_debug_setting.view.btnPassengerReboot
import kotlinx.android.synthetic.main.view_debug_setting.view.btnPointCloudColor
import kotlinx.android.synthetic.main.view_debug_setting.view.btnPointCloudSize
import kotlinx.android.synthetic.main.view_debug_setting.view.btnRecordBag
@@ -1133,6 +1134,16 @@ internal class DebugSettingView @JvmOverloads constructor(
btnAppReboot.onClick {
killApp()
}
btnPassengerReboot.onClick {
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
CallerTelematicManager.sendMsgToAllClients(
TelematicConstant.PASSENGER_APP_REBOOT,
"".toByteArray()
)
} else {
RebootUtils.restartApp()
}
}
//只在司机端设置工控机节点重启功能
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
btnIpcReboot.visibility = View.GONE

View File

@@ -333,7 +333,15 @@
android:text="杀死APP"
android:padding="@dimen/dp_20"
android:textSize="@dimen/dp_24" />
<Button
android:id="@+id/btnPassengerReboot"
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:text="重启乘客屏"
android:padding="@dimen/dp_20"
android:textSize="@dimen/dp_24" />
<ToggleButton
android:id="@+id/tbDeviceBind"
android:layout_width="match_parent"

View File

@@ -15,6 +15,7 @@ class TelematicConstant {
const val WEATHER_SWITCH_STATUS = 107 // 司机屏的天气效果开关发给乘客端
const val CONTROL_PASSENGER_AI_SWITCH = 108
const val CONTROL_B2_PRETTIFY_SWITCH = 109
const val PASSENGER_APP_REBOOT = 110//重启乘客屏APP
const val OBU_RUNREDLIGHT_WARNING = 200 //闯红灯预警开关
const val OBU_GREENWAVE_WARNING = 201 //绿波通行开关

View File

@@ -0,0 +1,36 @@
package com.mogo.eagle.core.utilcode.util;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
public class RebootUtils {
public static void restartApp() {
try {
Activity activity = AppStateManager.INSTANCE.currentActivity();
if (activity != null) {
Intent intent = new Intent();
intent.setClassName(activity.getPackageName(), "com.mogo.eagle.core.function.main.MainLauncherActivity");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pending = PendingIntent.getActivity(activity.getApplicationContext(), 12345, intent, Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ? PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE : PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager am = (AlarmManager) activity.getSystemService(Context.ALARM_SERVICE);
long triggerAt = System.currentTimeMillis() + 200; // 200ms 后启动
if (am != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
am.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, triggerAt, pending);
} else {
am.setExact(AlarmManager.RTC_WAKEUP, triggerAt, pending);
}
}
// 关闭 Activity 栈并杀进程
activity.finishAffinity();
System.exit(0);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}