迁移V2X中用到的工具类

Signed-off-by: 董宏宇 <martindhy@gmail.com>
This commit is contained in:
董宏宇
2021-10-11 18:52:50 +08:00
parent 7c164a6995
commit 98c3af3ac0
72 changed files with 221 additions and 5932 deletions

View File

@@ -1,17 +1,10 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<option name="AUTODETECT_INDENTS" value="false" />
<JavaCodeStyleSettings>
<option name="FIELD_NAME_PREFIX" value="m" />
</JavaCodeStyleSettings>
<JetCodeStyleSettings>
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</JetCodeStyleSettings>
<codeStyleSettings language="JAVA">
<option name="KEEP_LINE_BREAKS" value="false" />
<option name="KEEP_FIRST_COLUMN_COMMENT" value="false" />
</codeStyleSettings>
<codeStyleSettings language="XML">
<option name="FORCE_REARRANGE_MODE" value="1" />
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>

3
.idea/misc.xml generated
View File

@@ -13,7 +13,7 @@
<map>
<entry key="../../../../../../layout/custom_preview.xml" value="0.390625" />
<entry key="../../../../../layout/custom_preview.xml" value="0.19947916666666668" />
<entry key="core/function-impl/mogo-core-function-hmi/src/main/res/layout/fragment_hmi.xml" value="0.44375" />
<entry key="core/function-impl/mogo-core-function-hmi/src/main/res/layout/fragment_hmi.xml" value="0.33" />
<entry key="core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_autopilot_status.xml" value="0.25833333333333336" />
<entry key="core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_check_status.xml" value="1.0" />
<entry key="core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml" value="0.8466666666666667" />
@@ -25,6 +25,7 @@
<entry key="modules/mogo-module-hmi/src/main/res/layout/module_hmi_warning_v2x.xml" value="0.246875" />
<entry key="modules/mogo-module-hmi/src/main/res/layout/notification_v2x_msg_vr.xml" value="0.3453125" />
<entry key="modules/mogo-module-hmi/src/main/res/layout/view_traffic_light_vr.xml" value="0.25" />
<entry key="modules/mogo-module-left-panel/src/main/res/layout/module_left_panel_simple_speed.xml" value="0.3026041666666667" />
<entry key="modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml" value="0.3125" />
<entry key="modules/mogo-module-service/src/main/res/drawable/bg_adas_dispatch.xml" value="0.184" />
<entry key="modules/mogo-module-service/src/main/res/drawable/bg_adas_dispatch_affirm.xml" value="0.19166666666666668" />

View File

@@ -15,7 +15,7 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.3'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.20'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.31'
classpath "com.alibaba:arouter-register:1.0.2"
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.4'

View File

@@ -3,13 +3,16 @@ package com.mogo.eagle.core.function.hmi.ui.setting
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.inputmethod.InputMethodManager
import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.eagle.core.data.obu.ObuStatusInfo
import com.mogo.eagle.core.function.api.obu.IMoGoObuStatusListener
import com.mogo.eagle.core.function.call.obu.CallerObuListenerManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.KeyboardUtils
import kotlinx.android.synthetic.main.view_debug_setting.view.*
import java.util.*
/**
* @author xiaoyuzhou
@@ -43,6 +46,12 @@ class DebugSettingView @JvmOverloads constructor(
private fun initView() {
tvObuInfo.text = CallerObuListenerManager.getObuStatusInfo()
etObuIP.setOnClickListener {
//获取焦点
etObuIP.isFocusable = true;
etObuIP.isFocusableInTouchMode = true;
etObuIP.requestFocus();
}
}
override fun onObuStatusResponse(obuStatusInfo: ObuStatusInfo) {

View File

@@ -9,9 +9,10 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tvTitleObu"
@@ -24,6 +25,25 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/etObuIP"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#32009688"
android:gravity="center"
android:inputType="number"
android:padding="@dimen/dp_5"
android:text="192.168.1.199"
android:textSize="@dimen/dp_34" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="@dimen/dp_5"
android:text="设置IP"
android:textSize="@dimen/dp_34" />
<TextView
android:id="@+id/tvObuInfo"
android:layout_width="match_parent"
@@ -33,7 +53,7 @@
app:layout_constraintTop_toBottomOf="@+id/tvTitleObu" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</ScrollView>

View File

@@ -373,6 +373,8 @@ public class MogoServicePaths {
/**
* 车辆检测 模块
*/
@Keep
@Deprecated
public static final String PATH_CHECK = "/check/api";
/**

View File

@@ -59,7 +59,7 @@ public class MapVrMarkerView implements IMarkerView {
sRef.put(sceneId, new SoftReference<>(BitmapFactory.decodeResource(AbsMogoApplication.getApp().getResources(), R.drawable.icon_map_marker_car_type_taxi)));
switch (sceneId) {
case "200001"://后方VIP车辆提示
// bitmap = ImageUtil.createBitmap(V2XUtils.getApp(),
// bitmap = ImageUtil.createBitmap(Utils.getApp(),
// R.drawable.v2x_duixiang_laiche_che);
break;
case "200002"://前车急刹
@@ -67,7 +67,7 @@ public class MapVrMarkerView implements IMarkerView {
case "200003"://后方危险车辆预警
break;
case "200004"://逆向车辆路线预判
// bitmap = ImageUtil.createBitmap(V2XUtils.getApp(),
// bitmap = ImageUtil.createBitmap(Utils.getApp(),
// R.drawable.v2x_duixiang_laiche_che);
break;
case "200005"://VIP变灯通行

View File

@@ -86,6 +86,7 @@ dependencies {
implementation project(':modules:mogo-module-obu')
implementation project(':core:mogo-core-res')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-function-call')
}

View File

@@ -16,6 +16,8 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.utilcode.util.TimeUtils;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.marker.IMogoMarker;
@@ -40,9 +42,7 @@ import com.mogo.module.v2x.scenario.impl.V2XScenarioManager;
import com.mogo.module.v2x.scenario.scene.livecar.V2XVoiceCallLiveBiz;
import com.mogo.module.v2x.scenario.scene.park.V2XIllegalParkWindow;
import com.mogo.module.v2x.utils.FatigueDrivingUtils;
import com.mogo.module.v2x.utils.TimeUtils;
import com.mogo.module.v2x.utils.TrackUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.module.v2x.voice.V2XVoiceManager;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoModuleProvider;
@@ -137,7 +137,6 @@ public class V2XModuleProvider implements
TXCLog.setLevel(TXCLog.LOG_NONE);
TXCLog.setConsoleEnabled(false);
V2XUtils.init(context);
V2XServiceManager.init(context);
V2XVoiceManager.INSTANCE.init(context);
registerListener();
@@ -165,13 +164,13 @@ public class V2XModuleProvider implements
private void initData() {
try {
// 查询ACC状态
SharedPrefsMgr.getInstance(V2XUtils.getApp()).putBoolean("descriptor_ACC_STATUS", isAccOn());
SharedPrefsMgr.getInstance(Utils.getApp()).putBoolean("descriptor_ACC_STATUS", isAccOn());
if (isAccOn()) {
// 记录开机时间
FatigueDrivingUtils.refreshAccOnTime();
} else {
// 记录关机时间
SharedPrefsMgr.getInstance(V2XUtils.getApp())
SharedPrefsMgr.getInstance(Utils.getApp())
.putString(V2XConst.V2X_ACC_OFF_TIME_STR, TimeUtils.getNowString());
}
} catch (Exception e) {
@@ -199,7 +198,7 @@ public class V2XModuleProvider implements
V2XStrategyPushRes.ResultBean resultBean = result.getResult();
if (resultBean != null) {
// 更新本地的v2x提醒策略
SharedPrefsMgr.getInstance(V2XUtils.getApp())
SharedPrefsMgr.getInstance(Utils.getApp())
.putString(V2XConst.V2X_STRATEGY_PUSH, GsonUtil.jsonFromObject(resultBean));
}
}
@@ -326,7 +325,7 @@ public class V2XModuleProvider implements
public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
Logger.d(MODULE_NAME, "状态发生改变\ndescriptor:" + descriptor + "\nisTrue:" + isTrue);
// 记录状态更改
SharedPrefsMgr.getInstance(V2XUtils.getApp()).putBoolean("descriptor_" + descriptor, isTrue);
SharedPrefsMgr.getInstance(Utils.getApp()).putBoolean("descriptor_" + descriptor, isTrue);
if (descriptor == StatusDescriptor.ACC_STATUS) {
if (isTrue) {
// 刷新配置文件
@@ -340,7 +339,7 @@ public class V2XModuleProvider implements
}
} else {
// 记录关机时间
SharedPrefsMgr.getInstance(V2XUtils.getApp())
SharedPrefsMgr.getInstance(Utils.getApp())
.putString(V2XConst.V2X_ACC_OFF_TIME_STR, TimeUtils.getNowString());
}
} else if (descriptor == StatusDescriptor.SEEK_HELPING) {

View File

@@ -2,6 +2,7 @@ package com.mogo.module.v2x;
import android.content.Context;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.marker.IMogoMarkerManager;
import com.mogo.map.navi.IMogoNavi;
@@ -16,7 +17,6 @@ import com.mogo.module.v2x.manager.IMoGoV2XPolylineManager;
import com.mogo.module.v2x.manager.IMoGoV2XStatusManager;
import com.mogo.module.v2x.manager.IMoGoWarnPolylineManager;
import com.mogo.module.v2x.network.V2XRefreshModel;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.adas.IMogoADASController;
@@ -263,7 +263,7 @@ public class V2XServiceManager {
public static IMoGoV2XStatusManager getMoGoV2XStatusManager() {
if (moGoV2XStatusManager == null) {
moGoV2XStatusManager = (IMoGoV2XStatusManager) ARouter.getInstance().build(MoGoV2XServicePaths.PATH_V2X_STATUS_MANAGER).navigation(V2XUtils.getApp());
moGoV2XStatusManager = (IMoGoV2XStatusManager) ARouter.getInstance().build(MoGoV2XServicePaths.PATH_V2X_STATUS_MANAGER).navigation(Utils.getApp());
}
return moGoV2XStatusManager;
}

View File

@@ -9,6 +9,8 @@ import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.utilcode.util.TimeUtils;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.map.navi.MogoNaviInfo;
import com.mogo.map.navi.MogoTraffic;
@@ -20,10 +22,8 @@ import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.scenario.view.IV2XWindow;
import com.mogo.module.v2x.utils.ChartingUtil;
import com.mogo.module.v2x.utils.RoadConditionUtils;
import com.mogo.module.v2x.utils.TimeUtils;
import com.mogo.module.v2x.utils.TrackUtils;
import com.mogo.module.v2x.utils.V2XSQLiteUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.utils.TipToast;
import com.mogo.utils.logger.Logger;
import com.zhidao.carchattingprovider.CallChattingProviderConstant;
@@ -75,7 +75,7 @@ public abstract class V2XBaseViewHolder<T>
*/
public void triggerZan(MarkerExploreWay noveltyInfo) {
try {
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("已点赞", null);
AIAssist.getInstance(Utils.getApp()).speakTTSVoice("已点赞", null);
showTip("已点赞");
if (noveltyInfo != null) {
// 调用网络API接口

View File

@@ -10,6 +10,7 @@ import android.widget.TextView;
import com.mogo.commons.voice.AIAssist;
import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.V2XEventShowEntity;
import com.mogo.module.common.entity.V2XRoadEventEntity;
@@ -18,7 +19,6 @@ import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.scenario.view.IV2XWindow;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.module.v2x.voice.V2XVoiceCallbackListener;
import com.mogo.module.v2x.voice.V2XVoiceConstants;
import com.mogo.module.v2x.voice.V2XVoiceManager;
@@ -120,7 +120,7 @@ public class V2XEventUgcVH extends V2XBaseViewHolder<V2XEventShowEntity> {
if (ugcTitleStr != null) {
tvEventUgcTitle.setText(((String) ugcTitleStr[0]).replace("####", mNoveltyInfo.getAddr()));
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice((String) ugcTitleStr[1], new IMogoVoiceCmdCallBack() {
AIAssist.getInstance(Utils.getApp()).speakTTSVoice((String) ugcTitleStr[1], new IMogoVoiceCmdCallBack() {
@Override
public void onSpeakEnd(String speakText) {
// 注册语音交互
@@ -188,7 +188,7 @@ public class V2XEventUgcVH extends V2XBaseViewHolder<V2XEventShowEntity> {
dataStatistics(2);
}
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("谢谢,您的反馈将帮助更多车友。", null);
AIAssist.getInstance(Utils.getApp()).speakTTSVoice("谢谢,您的反馈将帮助更多车友。", null);
V2XServiceManager
.getV2XRefreshModel()
.manualMarkingTrafficJam(

View File

@@ -8,6 +8,7 @@ import android.widget.ImageView;
import android.widget.TextView;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.utilcode.util.SpanUtils;
import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.MarkerLocation;
import com.mogo.module.common.entity.V2XEventShowEntity;
@@ -16,7 +17,6 @@ import com.mogo.module.service.Utils;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.scenario.view.IV2XWindow;
import com.mogo.module.v2x.utils.LocationUtils;
import com.mogo.module.v2x.utils.SpanUtils;
import com.mogo.module.v2x.voice.V2XVoiceCallbackListener;
import com.mogo.module.v2x.voice.V2XVoiceConstants;
import com.mogo.module.v2x.voice.V2XVoiceManager;

View File

@@ -9,6 +9,8 @@ import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.utilcode.util.TimeUtils;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.map.navi.MogoNaviInfo;
import com.mogo.map.navi.MogoTraffic;
@@ -19,10 +21,8 @@ import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.utils.ChartingUtil;
import com.mogo.module.v2x.utils.RoadConditionUtils;
import com.mogo.module.v2x.utils.TimeUtils;
import com.mogo.module.v2x.utils.TrackUtils;
import com.mogo.module.v2x.utils.V2XSQLiteUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.utils.TipToast;
import com.mogo.utils.logger.Logger;
import com.zhidao.carchattingprovider.CallChattingProviderConstant;
@@ -67,7 +67,7 @@ public abstract class V2XHistoryBaseViewHolder<T>
*/
public void triggerZan(MarkerExploreWay noveltyInfo) {
try {
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("已点赞", null);
AIAssist.getInstance(Utils.getApp()).speakTTSVoice("已点赞", null);
showTip("已点赞");
if (noveltyInfo != null) {
// 调用网络API接口

View File

@@ -12,6 +12,7 @@ import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.eagle.core.utilcode.util.SpanUtils;
import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.MarkerLocation;
import com.mogo.module.common.entity.MarkerUserInfo;
@@ -21,7 +22,6 @@ import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.scenario.view.IV2XWindow;
import com.mogo.module.v2x.utils.ChartingUtil;
import com.mogo.module.v2x.utils.SpanUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.module.v2x.voice.V2XVoiceCallbackListener;
import com.mogo.module.v2x.voice.V2XVoiceConstants;

View File

@@ -8,12 +8,12 @@ import android.widget.ImageView
import android.widget.TextView
import com.mogo.commons.voice.AIAssist
import com.mogo.commons.voice.VoicePreemptType
import com.mogo.eagle.core.utilcode.util.Utils
import com.mogo.module.common.entity.MarkerExploreWay
import com.mogo.module.common.entity.MarkerLocation
import com.mogo.module.common.entity.V2XEventShowEntity
import com.mogo.module.v2x.R
import com.mogo.module.v2x.scenario.view.IV2XWindow
import com.mogo.module.v2x.utils.V2XUtils
import com.mogo.module.v2x.voice.V2XVoiceCallbackListener
import com.mogo.module.v2x.voice.V2XVoiceConstants
import com.mogo.module.v2x.voice.V2XVoiceManager.registerUnWakeVoice
@@ -52,7 +52,7 @@ class V2XRecommendRouteVH(viewGroup: ViewGroup, v2XWindow: IV2XWindow<*>) : V2XB
override fun onViewDetachedFromWindow(view: View) {
unRegisterUnwakeNavi()
AIAssist.getInstance(V2XUtils.getApp()).breakOffSpeak()
AIAssist.getInstance(Utils.getApp()).breakOffSpeak()
mainScope.cancel()
}
})
@@ -67,7 +67,7 @@ class V2XRecommendRouteVH(viewGroup: ViewGroup, v2XWindow: IV2XWindow<*>) : V2XB
mNoveltyInfo = MarkerExploreWay()
mNoveltyInfo?.setLocation(markerLocation)
mTvAddress!!.text = "前往 ${it.getV2XRecommendRouteEntity().formatAddress}"
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice(it.getV2XRecommendRouteEntity().tts, VoicePreemptType.PREEMPT_TYPE_IMMEADIATELY, null)
AIAssist.getInstance(Utils.getApp()).speakTTSVoice(it.getV2XRecommendRouteEntity().tts, VoicePreemptType.PREEMPT_TYPE_IMMEADIATELY, null)
}
}

View File

@@ -8,6 +8,7 @@ import android.widget.ImageView;
import android.widget.TextView;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.eagle.core.utilcode.util.SpanUtils;
import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.MarkerLocation;
import com.mogo.module.common.entity.MarkerUserInfo;
@@ -17,7 +18,6 @@ import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.fragment.V2XEventPanelFragment;
import com.mogo.module.v2x.utils.ChartingUtil;
import com.mogo.module.v2x.utils.SpanUtils;
import com.mogo.module.v2x.utils.V2XSQLiteUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.imageloader.MogoImageView;

View File

@@ -6,13 +6,13 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.mogo.eagle.core.utilcode.util.TimeUtils;
import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.V2XHistoryScenarioData;
import com.mogo.module.common.enums.EventTypeEnum;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.utils.RoadConditionUtils;
import com.mogo.module.v2x.utils.TimeUtils;
import com.mogo.module.v2x.utils.V2XSQLiteUtils;
import com.mogo.module.v2x.view.HeartLikeView;
import com.mogo.module.v2x.view.HeartUnLikeView;

View File

@@ -3,6 +3,8 @@ package com.mogo.module.v2x.alarm;
import android.text.TextUtils;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.utilcode.constant.TimeConstants;
import com.mogo.eagle.core.utilcode.util.TimeUtils;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.search.geo.IMogoGeoSearchListener;
import com.mogo.map.search.geo.MogoGeocodeResult;
@@ -24,9 +26,6 @@ import com.mogo.module.v2x.entity.net.V2XStrategyPushRes;
import com.mogo.module.v2x.utils.DrivingDirectionUtils;
import com.mogo.module.v2x.utils.FatigueDrivingUtils;
import com.mogo.module.v2x.utils.LocationUtils;
import com.mogo.module.v2x.utils.TimeConstants;
import com.mogo.module.v2x.utils.TimeUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.utils.ArrayUtils;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
@@ -183,7 +182,7 @@ public class V2XAlarmServer {
//Logger.i(V2XConst.MODULE_NAME, "车机已经开机: " + drivingTime + " 分钟");
V2XStrategyPushRes.ResultBean strategyPushEntity =
GsonUtil.objectFromJson(SharedPrefsMgr.getInstance(V2XUtils.getApp())
GsonUtil.objectFromJson(SharedPrefsMgr.getInstance(com.mogo.eagle.core.utilcode.util.Utils.getApp())
.getString(V2XConst.V2X_STRATEGY_PUSH), V2XStrategyPushRes.ResultBean.class);
V2XPushMessageEntity drivingShowEntity = new V2XPushMessageEntity();
@@ -264,7 +263,7 @@ public class V2XAlarmServer {
MogoPoiSearchQuery poiSearchQuery = new MogoPoiSearchQuery(keyword, keyword);
poiSearchQuery.setPageSize(5);
poiSearchQuery.setLocation(LocationUtils.getCurrentLatLon());
IMogoPoiSearch poiSearch = V2XServiceManager.getMapService().getPoiSearch(V2XUtils.getApp(), poiSearchQuery);
IMogoPoiSearch poiSearch = V2XServiceManager.getMapService().getPoiSearch(com.mogo.eagle.core.utilcode.util.Utils.getApp(), poiSearchQuery);
boolean finalIsHighWay = isHighWay;
poiSearch.setPoiSearchListener(new IMogoPoiSearchListener() {
@Override

View File

@@ -4,6 +4,7 @@ import android.content.Intent;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.map.location.MogoLocation;
import com.mogo.module.common.entity.MarkerLocation;
import com.mogo.module.common.entity.V2XMessageEntity;
@@ -11,7 +12,6 @@ import com.mogo.module.common.entity.V2XRoadEventEntity;
import com.mogo.module.common.enums.EventTypeEnum;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.utils.DrivingDirectionUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import java.util.ArrayList;
import java.util.Set;
@@ -84,7 +84,7 @@ public class V2XEarlyWarningServer {
// 弹出UGC
Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION);
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2xMessageEntity);
LocalBroadcastManager.getInstance(V2XUtils.getApp()).sendBroadcast(intent);
LocalBroadcastManager.getInstance(Utils.getApp()).sendBroadcast(intent);
}
// 移出已经预警的事件列表

View File

@@ -11,6 +11,8 @@ import androidx.recyclerview.widget.RecyclerView;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.utilcode.util.ThreadUtils;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.V2XHistoryScenarioData;
import com.mogo.module.v2x.R;
import com.mogo.module.common.view.SpacesItemDecoration;
@@ -19,7 +21,6 @@ import com.mogo.module.v2x.adapter.V2XScenarioHistoryAdapter;
import com.mogo.module.v2x.manager.IMoGoV2XStatusChangedListener;
import com.mogo.module.v2x.manager.V2XStatusDescriptor;
import com.mogo.module.v2x.presenter.ScenarioHistoryPresenter;
import com.mogo.module.v2x.utils.ThreadUtils;
import com.mogo.module.v2x.utils.V2XSQLiteUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.module.v2x.view.V2XListEmptyView;
@@ -143,12 +144,12 @@ public class V2XScenarioHistoryFragment
* */
private void ttsForHistoryFirstToday() {
boolean hasBroadTts = V2XUtils.isFirstTodayWithKey("TTS_FOR_HISTORY_SELECTED");
if (hasBroadTts == false) {
if (!hasBroadTts) {
if (mV2XHistoryScenarioData.size() > 0) {
AIAssist.getInstance(V2XUtils.getApp()).
AIAssist.getInstance(Utils.getApp()).
speakTTSVoice("小智为您记录了今天的出行事件", null);
} else {
AIAssist.getInstance(V2XUtils.getApp()).
AIAssist.getInstance(Utils.getApp()).
speakTTSVoice("小智在这里为您记录今天的出行事件", null);
}
@@ -160,10 +161,10 @@ public class V2XScenarioHistoryFragment
* */
public void ttsForVoiceCheckout() {
if (mV2XHistoryScenarioData.size() > 0) {
AIAssist.getInstance(V2XUtils.getApp()).
AIAssist.getInstance(Utils.getApp()).
speakTTSVoice("为您找到以下动态请查看", null);
} else {
AIAssist.getInstance(V2XUtils.getApp()).
AIAssist.getInstance(Utils.getApp()).
speakTTSVoice("今天暂无出行动态,试试对我说分享拥堵给其他车友吧", null);
}
}

View File

@@ -12,6 +12,8 @@ import androidx.recyclerview.widget.RecyclerView;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.utilcode.util.ThreadUtils;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.view.LinearLayoutCommonManager;
import com.mogo.module.v2x.R;
import com.mogo.module.common.view.SpacesItemDecoration;
@@ -24,7 +26,6 @@ import com.mogo.module.v2x.listener.AdapterCallback;
import com.mogo.module.v2x.network.V2XRefreshCallback;
import com.mogo.module.v2x.network.V2XShareNetworkModel;
import com.mogo.module.v2x.presenter.ShareEventsPresenter;
import com.mogo.module.v2x.utils.ThreadUtils;
import com.mogo.module.common.view.NetworkLoadingView;
import com.mogo.module.v2x.utils.V2XUtils;
@@ -158,7 +159,7 @@ public class V2XShareEventsFragment extends MvpFragment<V2XShareEventsFragment,
ttsString = "您目前已完成" + shareNum + "次分享,获得" + approveNum + "次车友认同,热心指数" + enthusiasm
+ "颗星,实至名归,老铁你就是大家一直赞扬的热心车友,请继续保持。";
}
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice(ttsString, null);
AIAssist.getInstance(Utils.getApp()).speakTTSVoice(ttsString, null);
fromVoice = false;
}
@@ -237,8 +238,8 @@ public class V2XShareEventsFragment extends MvpFragment<V2XShareEventsFragment,
private void ttsForSharedFirstToday() {
boolean hasBroadTts = V2XUtils.isFirstTodayWithKey("TTS_FOR_SHARED_SELECTED");
Log.d(TAG,"shouldBroadTts"+hasBroadTts);
if (hasBroadTts == false) {
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("您可以在这里查看历史的分享记录", null);
if (!hasBroadTts) {
AIAssist.getInstance(Utils.getApp()).speakTTSVoice("您可以在这里查看历史的分享记录", null);
}
}

View File

@@ -28,6 +28,7 @@ import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.anim.OnMarkerAnimationListener;
import com.mogo.module.common.entity.MarkerExploreWay;
@@ -213,7 +214,7 @@ public class V2XSurroundingFragment extends MvpFragment<SurroundingEventView, Su
boolean hasBroadTts = V2XUtils.isFirstTodayWithKey("TTS_FOR_SURROUNDING_SELECTED");
if (!hasBroadTts) {
if (eventCount > 0) {
AIAssist.getInstance(V2XUtils.getApp()).
AIAssist.getInstance(Utils.getApp()).
speakTTSVoice("发现周边" + eventCount + "条交通信息", null);
} else {
Logger.e(TAG,"周边没有发现交通信息");
@@ -226,10 +227,10 @@ public class V2XSurroundingFragment extends MvpFragment<SurroundingEventView, Su
* */
public void ttsForVoiceCheckout() {
if (poiInfosList.size() > 0) {
AIAssist.getInstance(V2XUtils.getApp()).
AIAssist.getInstance(Utils.getApp()).
speakTTSVoice("为您找到周边以下事件请查看", null);
} else {
AIAssist.getInstance(V2XUtils.getApp()).
AIAssist.getInstance(Utils.getApp()).
speakTTSVoice("周边5公里内无事件试试对我说分享路况给其他车友吧", null);
}
}
@@ -380,10 +381,10 @@ public class V2XSurroundingFragment extends MvpFragment<SurroundingEventView, Su
e.printStackTrace();
}
}
/*
/**
* 子类信息tts播报
* */
AIAssist.getInstance(V2XUtils.getApp()).
*/
AIAssist.getInstance(Utils.getApp()).
speakTTSVoice(construction.getTypeNameTTS(construction.getPoiType()), null);
}
}

View File

@@ -1,12 +1,12 @@
package com.mogo.module.v2x.listener;
import com.mogo.eagle.core.utilcode.util.ThreadUtils;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.common.entity.V2XPushMessageEntity;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.scenario.impl.V2XScenarioManager;
import com.mogo.module.v2x.utils.ADASUtils;
import com.mogo.module.v2x.utils.MarkerUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.cloud.socket.IMogoOnMessageListener;
import com.mogo.utils.TipToast;
import com.mogo.utils.logger.Logger;
@@ -33,7 +33,7 @@ public class V2XMessageListener_401003 implements IMogoOnMessageListener<V2XPush
@Override
public void onMsgReceived(V2XPushMessageEntity message) {
Logger.i(MODULE_NAME, "V2XMessageListener_401003" + GsonUtil.jsonFromObject(message));
V2XUtils.runOnUiThread(() -> {
ThreadUtils.runOnUiThread(() -> {
try {
handlerV2XAlarm(message);
} catch (Exception e) {

View File

@@ -1,5 +1,6 @@
package com.mogo.module.v2x.listener;
import com.mogo.eagle.core.utilcode.util.ThreadUtils;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.common.enums.EventTypeEnum;
import com.mogo.module.v2x.V2XConst;
@@ -8,7 +9,6 @@ import com.mogo.module.v2x.entity.net.V2XSpecialCarRes;
import com.mogo.module.v2x.entity.net.V2XSpecialCarRes.V2XMarkerEntity;
import com.mogo.module.v2x.scenario.impl.V2XScenarioManager;
import com.mogo.module.v2x.utils.MarkerUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.cloud.socket.IMogoOnMessageListener;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
@@ -35,7 +35,7 @@ public class V2XMessageListener_401005 implements IMogoOnMessageListener<V2XSpec
public void onMsgReceived(V2XSpecialCarRes message) {
Logger.i(MODULE_NAME, "V2XMessageListener_401005" + GsonUtil.jsonFromObject(message));
if (!V2XServiceManager.getMoGoV2XStatusManager().isRoadEventWindowShow()) {
V2XUtils.runOnBackgroundThread(() -> {
ThreadUtils.getSinglePool().execute(() -> {
try {
MarkerUtils.handlerV2XSpecialVehicleMarker(
message,
@@ -72,7 +72,7 @@ public class V2XMessageListener_401005 implements IMogoOnMessageListener<V2XSpec
}
}
if (!entityList.isEmpty()) {
V2XUtils.runOnUiThread(() -> {
ThreadUtils.runOnUiThread(() -> {
V2XMessageEntity<List<V2XMarkerEntity>> v2XMessageEntity = new V2XMessageEntity<>();
v2XMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_SEEK_WARNING);
v2XMessageEntity.setContent(entityList);

View File

@@ -1,9 +1,9 @@
package com.mogo.module.v2x.listener;
import com.mogo.eagle.core.utilcode.util.ThreadUtils;
import com.mogo.module.common.entity.MarkerCardResult;
import com.mogo.module.common.entity.MarkerResponse;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.cloud.socket.IMogoOnMessageListener;
/**
@@ -24,7 +24,7 @@ public class V2XMessageListener_401011 implements IMogoOnMessageListener<MarkerR
public void onMsgReceived(MarkerResponse response) {
//Logger.d(MODULE_NAME, "V2XMessageListener_401011==V2X地图气泡数据刷新\n" + GsonUtil.jsonFromObject(response));
if (!V2XServiceManager.getMoGoV2XStatusManager().isRoadEventWindowShow()) {
V2XUtils.runOnBackgroundThread(() -> {
ThreadUtils.getSinglePool().execute(() -> {
// 解析不同的Marker类型然后对应的进行绘制
if (response != null && response.getResult() != null) {
MarkerCardResult markerCardResult = response.getResult();

View File

@@ -1,10 +1,14 @@
package com.mogo.module.v2x.listener;
import static com.mogo.module.v2x.V2XConst.MODULE_NAME;
import android.content.Intent;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.utilcode.constant.TimeConstants;
import com.mogo.eagle.core.utilcode.util.TimeUtils;
import com.mogo.map.location.MogoLocation;
import com.mogo.module.common.entity.MarkerCardResult;
import com.mogo.module.common.entity.MarkerExploreWay;
@@ -15,16 +19,11 @@ import com.mogo.module.service.Utils;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.alarm.V2XAlarmServer;
import com.mogo.module.v2x.utils.TimeConstants;
import com.mogo.module.v2x.utils.TimeUtils;
import com.mogo.module.v2x.utils.TrackUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.cloud.socket.IMogoOnMessageListener;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
import static com.mogo.module.v2x.V2XConst.MODULE_NAME;
/**
* author : donghongyu
* e-mail : 1358506549@qq.com
@@ -83,7 +82,7 @@ public class V2XMessageListener_401012 implements IMogoOnMessageListener<MarkerC
Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION);
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2xMessageEntity);
LocalBroadcastManager.getInstance(V2XUtils.getApp()).sendBroadcast(intent);
LocalBroadcastManager.getInstance(com.mogo.eagle.core.utilcode.util.Utils.getApp()).sendBroadcast(intent);
}
} else {
Logger.e(MODULE_NAME, "V2XMessageListener_401012==V2X服务端下发消息已过期大于3分钟了不进行消费");

View File

@@ -5,10 +5,11 @@ import android.util.Log;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.mogo.eagle.core.utilcode.util.ThreadUtils;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.common.entity.V2XWarningEntity;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.cloud.socket.IMogoOnMessageListener;
/**
@@ -24,7 +25,7 @@ public class V2XMessageListener_401018 implements IMogoOnMessageListener<V2XWarn
@Override
public void onMsgReceived(V2XWarningEntity info) {
Log.d(V2XConst.MODULE_NAME, "V2XWarnMessageListener onMsgReceived ---11---> ");
V2XUtils.runOnBackgroundThread(() -> {
ThreadUtils.getSinglePool().execute(() -> {
// 解析不同的Marker类型然后对应的进行绘制
if (info != null) {
// 解析存储道路事件
@@ -36,7 +37,7 @@ public class V2XMessageListener_401018 implements IMogoOnMessageListener<V2XWarn
v2xMessageEntity.setContent(info);
Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION);
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2xMessageEntity);
LocalBroadcastManager.getInstance(V2XUtils.getApp()).sendBroadcast(intent);
LocalBroadcastManager.getInstance(Utils.getApp()).sendBroadcast(intent);
}
});
}

View File

@@ -4,10 +4,10 @@ import android.content.Intent;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.entity.net.V2XOptimalRouteDataRes;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.cloud.socket.IMogoOnMessageListener;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
@@ -43,7 +43,7 @@ public class V2XMessageListener_402000 implements IMogoOnMessageListener<V2XOpti
Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION);
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2xMessageEntity);
LocalBroadcastManager.getInstance(V2XUtils.getApp()).sendBroadcast(intent);
LocalBroadcastManager.getInstance(Utils.getApp()).sendBroadcast(intent);
}
}

View File

@@ -2,14 +2,14 @@ package com.mogo.module.v2x.listener
import com.mogo.eagle.core.data.enums.TrafficTypeEnum
import com.mogo.eagle.core.data.traffic.TrafficData
import com.mogo.service.cloud.socket.IMogoOnMessageListener
import com.mogo.eagle.core.data.v2x.AdvanceWarningBean
import com.mogo.module.v2x.V2XConst
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.module.common.drawer.TrafficMarkerDrawer
import com.mogo.module.common.enums.EventTypeEnum
import com.mogo.module.v2x.utils.V2XUtils
import com.mogo.module.v2x.V2XConst
import com.mogo.service.cloud.socket.IMogoOnMessageListener
import com.mogo.utils.logger.Logger
/**
@@ -33,7 +33,7 @@ class V2XMessageListener_404000 : IMogoOnMessageListener<AdvanceWarningBean> {
message
)
)
V2XUtils.runOnUiThread {
ThreadUtils.runOnUiThread {
var trafficData = buildTrafficData(message)
when (message.status) {
1 -> {

View File

@@ -3,13 +3,13 @@ package com.mogo.module.v2x.marker;
import android.content.Context;
import android.graphics.Bitmap;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.common.entity.V2XPushMessageEntity;
import com.mogo.module.common.entity.V2XRoadEventEntity;
import com.mogo.module.common.enums.EventTypeEnum;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.utils.ImageUtil;
import com.mogo.module.v2x.utils.V2XUtils;
import java.util.ArrayList;
@@ -186,11 +186,11 @@ public class V2XMarkerAdapter {
* 获取VR道路事件
*/
public static Bitmap getV2XVRRoadEventViewPng(V2XPushMessageEntity alarmMessage) {
Bitmap bitmap = ImageUtil.createBitmap(V2XUtils.getApp(),
Bitmap bitmap = ImageUtil.createBitmap(Utils.getApp(),
R.drawable.v_to_x_warning_car_orange);
switch (alarmMessage.getSceneId()) {
case "200001"://后方VIP车辆提示
// bitmap = ImageUtil.createBitmap(V2XUtils.getApp(),
// bitmap = ImageUtil.createBitmap(Utils.getApp(),
// R.drawable.v2x_duixiang_laiche_che);
break;
case "200002"://前车急刹
@@ -198,7 +198,7 @@ public class V2XMarkerAdapter {
case "200003"://后方危险车辆预警
break;
case "200004"://逆向车辆路线预判
// bitmap = ImageUtil.createBitmap(V2XUtils.getApp(),
// bitmap = ImageUtil.createBitmap(Utils.getApp(),
// R.drawable.v2x_duixiang_laiche_che);
break;
case "200005"://VIP变灯通行

View File

@@ -13,6 +13,7 @@ import com.mogo.commons.network.ParamsProvider;
import com.mogo.commons.network.SubscribeImpl;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.search.geo.IMogoGeoSearchListener;
import com.mogo.map.search.geo.MogoRegeocodeResult;
@@ -35,7 +36,6 @@ import com.mogo.module.v2x.entity.net.V2XSeekHelpRes;
import com.mogo.module.v2x.entity.net.V2XStrategyPushRes;
import com.mogo.module.v2x.entity.net.V2XUserInfoRes;
import com.mogo.module.v2x.utils.LocationUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.RequestOptions;
import com.mogo.utils.network.utils.GsonUtil;
@@ -713,7 +713,7 @@ public class V2XRefreshModel {
Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION);
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2xMessageEntity);
LocalBroadcastManager.getInstance(V2XUtils.getApp()).sendBroadcast(intent);
LocalBroadcastManager.getInstance(Utils.getApp()).sendBroadcast(intent);
}
if (!isSendRecommendRoute && v2XRoadDataRes.getResult().getIllegalParkingData() != null && v2XRoadDataRes.getResult().getIllegalParkingData().size() > 0) {
@@ -736,7 +736,7 @@ public class V2XRefreshModel {
Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION);
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity);
LocalBroadcastManager.getInstance(V2XUtils.getApp()).sendBroadcast(intent);
LocalBroadcastManager.getInstance(Utils.getApp()).sendBroadcast(intent);
} catch (Exception e) {
e.printStackTrace();
}

View File

@@ -4,7 +4,6 @@ package com.mogo.module.v2x.presenter;
import com.mogo.commons.mvp.Presenter;
import com.mogo.module.common.entity.V2XHistoryScenarioData;
import com.mogo.module.v2x.fragment.V2XScenarioHistoryFragment;
import com.mogo.module.v2x.utils.ThreadUtils;
import com.mogo.module.v2x.utils.V2XSQLiteUtils;
import com.mogo.utils.WorkThreadHandler;

View File

@@ -1,23 +1,18 @@
package com.mogo.module.v2x.scenario.impl;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.Nullable;
import com.mogo.commons.voice.AIAssist;
import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
import com.mogo.commons.voice.VoicePreemptType;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.service.receiver.MogoReceiver;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.scenario.IV2XScenario;
import com.mogo.module.v2x.scenario.view.IV2XButton;
import com.mogo.module.v2x.scenario.view.IV2XMarker;
import com.mogo.module.v2x.scenario.view.IV2XWindow;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.v2x.IV2XWindowManagerListener;
import com.mogo.utils.logger.Logger;
/**
@@ -60,7 +55,7 @@ public abstract class AbsV2XScenario<T> implements IV2XScenario {
public void speakTTSVoice(@Nullable String msg, IMogoVoiceCmdCallBack callBack) {
if (!TextUtils.isEmpty(msg)) {
Logger.d(TAG, "调用TTS播放语音" + msg);
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice(msg, VoicePreemptType.PREEMPT_TYPE_IMMEADIATELY, callBack);
AIAssist.getInstance(Utils.getApp()).speakTTSVoice(msg, VoicePreemptType.PREEMPT_TYPE_IMMEADIATELY, callBack);
}
}

View File

@@ -4,6 +4,8 @@ import android.content.Intent;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.mogo.eagle.core.utilcode.util.ThreadUtils;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.map.uicontroller.VisualAngleMode;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.entity.V2XMessageEntity;
@@ -23,10 +25,8 @@ import com.mogo.module.v2x.scenario.scene.route.V2XOptimalRouteVREventScenario;
import com.mogo.module.v2x.scenario.scene.seek.V2XSeekHelpScenario;
import com.mogo.module.v2x.scenario.scene.ugc.V2XEventUgcScenario;
import com.mogo.module.v2x.scenario.scene.warning.V2XFrontWarningScenario;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.utils.TipToast;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
import static com.mogo.module.common.entity.V2XMessageEntity.V2XTypeEnum.ALERT_RECOMMEND_PARKING;
import static com.mogo.module.v2x.V2XConst.MODULE_NAME;
@@ -63,14 +63,14 @@ public class V2XScenarioManager implements IV2XScenarioManager {
try {
synchronized (V2XScenarioManager.class) {
// 展示
V2XUtils.runOnUiThread(() -> {
ThreadUtils.runOnUiThread(() -> {
// 提取之前存储的场景
if (v2XMessageEntity != null) {
sceneChange();
// 广播给应用内部其它模块
Intent intent = new Intent(V2XConst.BROADCAST_SCENE_ACTION);
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity);
LocalBroadcastManager.getInstance(V2XUtils.getApp()).sendBroadcast(intent);
LocalBroadcastManager.getInstance(Utils.getApp()).sendBroadcast(intent);
// 如果没有拿到之前的,根据类型分发
switch (v2XMessageEntity.getType()) {
case V2XMessageEntity.V2XTypeEnum.ALERT_ROAD_WARNING:

View File

@@ -1,8 +0,0 @@
package com.mogo.module.v2x.scenario.scene.destination;
/**
* 基于目的地违章高发情况的停车推荐
* http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=48958095
*/
public class V2XRecommendParkingLotScenario {
}

View File

@@ -1,12 +1,12 @@
package com.mogo.module.v2x.scenario.scene.destination
import android.view.ViewGroup
import com.mogo.eagle.core.utilcode.util.Utils
import com.mogo.module.common.entity.V2XMessageEntity
import com.mogo.module.common.entity.V2XRecommendRouteEntity
import com.mogo.module.v2x.R
import com.mogo.module.v2x.V2XServiceManager
import com.mogo.module.v2x.scenario.impl.AbsV2XScenario
import com.mogo.module.v2x.utils.V2XUtils
/**
* created by wujifei on 2020/12/29 17:57
@@ -20,7 +20,7 @@ class V2XRecommendRouteScenario : AbsV2XScenario<V2XRecommendRouteEntity>() {
override fun init(v2XMessageEntity: V2XMessageEntity<V2XRecommendRouteEntity>?) {
v2XMessageEntity?.content?.let {
if (v2XMessageEntity!!.isShowState) {
if (v2XMessageEntity.isShowState) {
if (!isSameScenario(v2XMessageEntity)) {
setV2XMessageEntity(v2XMessageEntity)
show()
@@ -43,7 +43,7 @@ class V2XRecommendRouteScenario : AbsV2XScenario<V2XRecommendRouteEntity>() {
override fun showWindow() {
v2XWindow?.let {
val layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
V2XUtils.getApp().resources.getDimension(R.dimen.module_v2x_fatigue_driving_window_height_ground).toInt())
Utils.getApp().resources.getDimension(R.dimen.module_v2x_fatigue_driving_window_height_ground).toInt())
V2XServiceManager.getMogoTopViewManager().addView(it.view, layoutParams)
it.show(v2XMessageEntity.content)

View File

@@ -6,13 +6,13 @@ import android.view.ViewGroup;
import androidx.annotation.Nullable;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.common.entity.V2XPushMessageEntity;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.scenario.impl.AbsV2XScenario;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.module.v2x.voice.V2XVoiceCallbackListener;
import com.mogo.module.v2x.voice.V2XVoiceConstants;
import com.mogo.module.v2x.voice.V2XVoiceManager;
@@ -72,7 +72,7 @@ public class V2XFatigueDrivingScenario extends AbsV2XScenario<V2XPushMessageEnti
ViewGroup.LayoutParams layoutParams =
new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
(int) V2XUtils.getApp().getResources().getDimension(R.dimen.module_v2x_fatigue_driving_window_height_ground));
(int) Utils.getApp().getResources().getDimension(R.dimen.module_v2x_fatigue_driving_window_height_ground));
V2XServiceManager
.getMogoTopViewManager()
.addView(getV2XWindow().getView(), layoutParams, this);

View File

@@ -3,18 +3,16 @@ package com.mogo.module.v2x.scenario.scene.help;
import android.content.Intent;
import android.os.CountDownTimer;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.Nullable;
import com.mogo.eagle.core.utilcode.util.ThreadUtils;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.scenario.impl.AbsV2XScenario;
import com.mogo.module.v2x.scenario.scene.seek.V2XSeekHelpWindow;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.module.v2x.voice.V2XVoiceCallbackListener;
import com.mogo.module.v2x.voice.V2XVoiceConstants;
import com.mogo.module.v2x.voice.V2XVoiceManager;
@@ -100,7 +98,7 @@ public class V2XCarForHelpScenario extends AbsV2XScenario<Boolean> implements IM
public void showButton() {
Logger.d(TAG, "打开自车求助按钮!");
// 设置Button的显示
V2XUtils.runOnUiThread(() -> {
ThreadUtils.runOnUiThread(() -> {
if (getV2XButton() != null) {
getV2XButton().setOnActionListener(this::showDialog);
getV2XButton().show();
@@ -117,7 +115,7 @@ public class V2XCarForHelpScenario extends AbsV2XScenario<Boolean> implements IM
V2XServiceManager.getMoGoStatusManager().setSeekHelping(TAG, false);
if (getV2XButton() != null) {
getV2XButton().close();
SharedPrefsMgr.getInstance(V2XUtils.getApp()).putLong(V2XConst.SEEK_HELP_TIME, 0);
SharedPrefsMgr.getInstance(Utils.getApp()).putLong(V2XConst.SEEK_HELP_TIME, 0);
}
mySeekHelpCountDownTimerCancel();

View File

@@ -1,20 +1,18 @@
package com.mogo.module.v2x.scenario.scene.help;
import android.app.ActionBar;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.mogo.commons.data.BaseData;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.network.V2XRefreshCallback;
import com.mogo.module.v2x.scenario.view.IV2XButton;
import com.mogo.module.v2x.scenario.view.IV2XButtonListener;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.module.v2x.voice.V2XVoiceCallbackListener;
import com.mogo.module.v2x.voice.V2XVoiceConstants;
import com.mogo.module.v2x.voice.V2XVoiceManager;
@@ -84,7 +82,7 @@ public class V2XSeekHelpButton implements IV2XButton {
doAction();
});
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
(int) V2XUtils.getApp().getResources().getDimension(R.dimen.module_v2x_car_for_help_window_height));
(int) Utils.getApp().getResources().getDimension(R.dimen.module_v2x_car_for_help_window_height));
V2XServiceManager.getMogoTopViewManager().addView(topView, layoutParams);
}
@@ -95,7 +93,7 @@ public class V2XSeekHelpButton implements IV2XButton {
@Override
public void close() {
if (tv != null) {
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("已取消", null);
AIAssist.getInstance(Utils.getApp()).speakTTSVoice("已取消", null);
tv.setVisibility(View.GONE);
closeTopView();
V2XServiceManager.getV2XRefreshModel().cancelHelpSignal(new V2XRefreshCallback<BaseData>() {

View File

@@ -10,14 +10,12 @@ import android.widget.TextView;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.wm.WindowManagerView;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.module.v2x.voice.V2XVoiceCallbackListener;
import com.mogo.module.v2x.voice.V2XVoiceConstants;
import com.mogo.module.v2x.voice.V2XVoiceManager;
import com.mogo.service.entrance.ButtonIndex;
import com.mogo.utils.logger.Logger;
/**
@@ -89,12 +87,12 @@ public class V2XSeekHelpDialog extends ConstraintLayout implements View.OnClickL
// V2XServiceManager.getMogoEntranceButtonController().getButton(ButtonIndex.BUTTON2).getContext()
// ).contentView(this).build();
// }
// AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("确定要解除求助状态吗");
// AIAssist.getInstance(Utils.getApp()).speakTTSVoice("确定要解除求助状态吗");
// unRegisterVoiceCmd();
// registerVoiceCmd();
// windowManager.show();
handleLeft();
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("已取消");
AIAssist.getInstance(Utils.getApp()).speakTTSVoice("已取消");
} catch (Exception e) {
e.printStackTrace();

View File

@@ -6,13 +6,13 @@ import android.view.ViewGroup;
import androidx.annotation.Nullable;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.common.entity.V2XPushMessageEntity;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.scenario.impl.AbsV2XScenario;
import com.mogo.module.v2x.utils.ADASUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.windowview.IMogoTopViewStatusListener;
import com.mogo.utils.TipToast;
@@ -54,9 +54,9 @@ public class V2XPushLiveCarScenario extends AbsV2XScenario<V2XPushMessageEntity>
@Override
public void showWindow() {
if (getV2XWindow() != null) {
int width = (int) V2XUtils.getApp().getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ?
int width = (int) Utils.getApp().getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ?
R.dimen.module_v2x_event_window_width_vr : R.dimen.module_v2x_event_window_width);
int height = (int) V2XUtils.getApp().getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ?
int height = (int) Utils.getApp().getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ?
R.dimen.module_v2x_event_see_live_window_height_vr : R.dimen.module_v2x_event_see_live_window_height);
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(width, height);
if (V2XServiceManager.getMoGoStatusManager().isVrMode()) {

View File

@@ -4,14 +4,12 @@ import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.V2XEventShowEntity;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.scenario.impl.AbsV2XScenario;
import com.mogo.module.v2x.scenario.scene.road.V2XRoadEventScenario;
import com.mogo.module.v2x.scenario.scene.road.V2XRoadEventWindow;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.windowview.IMogoTopViewStatusListener;
import com.mogo.utils.logger.Logger;
@@ -73,9 +71,9 @@ public class V2XRoadLiveCarScenario extends AbsV2XScenario<List<V2XEventShowEnti
public void showWindow() {
Log.d(TAG, getV2XWindow().toString());
if (getV2XWindow() != null) {
int width = (int) V2XUtils.getApp().getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ?
int width = (int) Utils.getApp().getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ?
R.dimen.module_v2x_event_window_width_vr : R.dimen.module_v2x_event_window_width);
int height = (int) V2XUtils.getApp().getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ?
int height = (int) Utils.getApp().getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ?
R.dimen.module_v2x_event_see_live_window_height_vr : R.dimen.module_v2x_event_see_live_window_height);
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(width, height);
V2XServiceManager

View File

@@ -10,6 +10,7 @@ import com.mogo.cloud.trafficlive.api.ITrafficIntersectionLiveCallBack;
import com.mogo.cloud.trafficlive.api.MoGoAiCloudTrafficLive;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.IMogoMarkerClickListener;
@@ -20,7 +21,6 @@ import com.mogo.module.common.entity.V2XPushMessageEntity;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.scenario.impl.V2XScenarioManager;
import com.mogo.module.v2x.utils.ToastUtils;
import com.mogo.module.v2x.voice.V2XVoiceCallbackListener;
import com.mogo.module.v2x.voice.V2XVoiceManager;
import com.mogo.service.statusmanager.StatusDescriptor;

View File

@@ -5,13 +5,13 @@ import android.view.ViewGroup;
import androidx.annotation.Nullable;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.common.entity.V2XPushMessageEntity;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.scenario.impl.AbsV2XScenario;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.windowview.IMogoTopViewStatusListener;
import com.mogo.utils.TipToast;
import com.mogo.utils.logger.Logger;
@@ -60,9 +60,9 @@ public class V2XVoiceCallLiveScenario extends AbsV2XScenario<V2XPushMessageEntit
@Override
public void showWindow() {
if (getV2XWindow() != null) {
int width = (int) V2XUtils.getApp().getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ?
int width = (int) Utils.getApp().getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ?
R.dimen.module_v2x_event_window_width_vr : R.dimen.module_v2x_event_window_width);
int height = (int) V2XUtils.getApp().getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ?
int height = (int) Utils.getApp().getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ?
R.dimen.module_v2x_event_see_live_window_height_vr : R.dimen.module_v2x_event_see_live_window_height);
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(width, height);
if (V2XServiceManager.getMoGoStatusManager().isVrMode()) {

View File

@@ -17,7 +17,6 @@ import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.listener.V2XWindowStatusListener;
import com.mogo.module.v2x.scenario.view.IV2XWindow;
import com.mogo.module.v2x.utils.ToastUtils;
import com.mogo.service.windowview.IMogoTopViewStatusListener;
import com.mogo.utils.logger.Logger;
import com.zhidao.mogo.module.obu.ObuConstant;

View File

@@ -12,6 +12,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.PagerSnapHelper;
import androidx.recyclerview.widget.RecyclerView;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.V2XEventShowEntity;
import com.mogo.module.common.entity.V2XMessageEntity;
@@ -21,7 +22,6 @@ import com.mogo.module.v2x.adapter.V2XRoadEventAdapter;
import com.mogo.module.v2x.listener.V2XWindowStatusListener;
import com.mogo.module.v2x.scenario.scene.V2XBasWindow;
import com.mogo.module.v2x.scenario.view.IV2XWindow;
import com.mogo.module.v2x.utils.V2XUtils;
import java.util.ArrayList;
import java.util.List;
@@ -123,7 +123,7 @@ public class V2XIllegalParkWindow extends V2XBasWindow implements IV2XWindow<Mar
ViewGroup.LayoutParams layoutParams =
new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
(int) V2XUtils.getApp()
(int) Utils.getApp()
.getResources()
.getDimension(R.dimen.module_v2x_fatigue_driving_window_height_ground));

View File

@@ -5,13 +5,13 @@ import android.view.ViewGroup;
import androidx.annotation.Nullable;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.common.entity.V2XPushMessageEntity;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.scenario.impl.AbsV2XScenario;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.windowview.IMogoTopViewStatusListener;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
@@ -62,7 +62,7 @@ public class V2XPushEventScenario extends AbsV2XScenario<V2XPushMessageEntity> i
ViewGroup.LayoutParams layoutParams =
new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
(int) V2XUtils.getApp().getResources().getDimension(R.dimen.module_v2x_event_window_height_ground));
(int) Utils.getApp().getResources().getDimension(R.dimen.module_v2x_event_window_height_ground));
V2XServiceManager
.getMogoTopViewManager()
.addView(getV2XWindow().getView(), layoutParams, this);

View File

@@ -3,6 +3,7 @@ package com.mogo.module.v2x.scenario.scene.road;
import android.view.View;
import android.view.ViewGroup;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.common.entity.V2XRoadEventEntity;
import com.mogo.module.v2x.R;
@@ -12,7 +13,6 @@ import com.mogo.module.v2x.scenario.impl.AbsV2XScenario;
import com.mogo.module.v2x.scenario.scene.livecar.V2XRoadLiveCarScenario;
import com.mogo.module.v2x.scenario.view.IV2XWindow;
import com.mogo.module.v2x.utils.ADASUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.windowview.IMogoTopViewStatusListener;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
@@ -124,7 +124,7 @@ public class V2XRoadEventScenario extends AbsV2XScenario<V2XRoadEventEntity> imp
ViewGroup.LayoutParams layoutParams =
new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
(int) V2XUtils.getApp().getResources().getDimension(R.dimen.module_v2x_event_window_height));
(int) Utils.getApp().getResources().getDimension(R.dimen.module_v2x_event_window_height));
V2XServiceManager
.getMogoTopViewManager()
.addView(getV2XWindow().getView(), layoutParams, this);

View File

@@ -6,12 +6,12 @@ import android.view.ViewGroup;
import androidx.annotation.Nullable;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.V2XEventShowEntity;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.scenario.impl.AbsV2XScenario;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.windowview.IMogoTopViewStatusListener;
import javax.security.auth.DestroyFailedException;
@@ -58,7 +58,7 @@ public class V2XRoadVideoCarScenario extends AbsV2XScenario<V2XEventShowEntity>
ViewGroup.LayoutParams layoutParams =
new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
(int) V2XUtils.getApp().getResources()
(int) Utils.getApp().getResources()
.getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode()? R.dimen.dp_394:R.dimen.v2x_video_window_height));
V2XServiceManager
.getMogoTopViewManager()

View File

@@ -5,13 +5,13 @@ import android.view.ViewGroup;
import androidx.annotation.Nullable;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.entity.net.V2XOptimalRouteDataRes;
import com.mogo.module.v2x.scenario.impl.AbsV2XScenario;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.windowview.IMogoTopViewStatusListener;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
@@ -65,7 +65,7 @@ public class V2XOptimalRouteVREventScenario
ViewGroup.LayoutParams layoutParams =
new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
(int) V2XUtils.getApp().getResources().getDimension(R.dimen.module_v2x_event_window_height_ground));
(int) Utils.getApp().getResources().getDimension(R.dimen.module_v2x_event_window_height_ground));
V2XServiceManager
.getMogoTopViewManager()
.addView(getV2XWindow().getView(), layoutParams, this);

View File

@@ -5,6 +5,7 @@ import android.view.ViewGroup;
import androidx.annotation.Nullable;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.common.entity.V2XPushMessageEntity;
import com.mogo.module.common.entity.V2XRoadEventEntity;
@@ -15,7 +16,6 @@ import com.mogo.module.v2x.entity.net.V2XSpecialCarRes.V2XMarkerEntity;
import com.mogo.module.v2x.scenario.impl.AbsV2XScenario;
import com.mogo.module.v2x.utils.ADASUtils;
import com.mogo.module.v2x.utils.V2XSQLiteUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.windowview.IMogoTopViewStatusListener;
import java.util.List;
@@ -91,7 +91,7 @@ public class V2XSeekHelpScenario extends AbsV2XScenario<List<V2XMarkerEntity>> i
ViewGroup.LayoutParams layoutParams =
new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
(int) V2XUtils.getApp().getResources().getDimension(R.dimen.module_v2x_fatigue_driving_window_height_ground));
(int) Utils.getApp().getResources().getDimension(R.dimen.module_v2x_fatigue_driving_window_height_ground));
V2XServiceManager
.getMogoTopViewManager()
.addView(getV2XWindow().getView(), layoutParams, this);

View File

@@ -5,13 +5,13 @@ import android.view.ViewGroup;
import androidx.annotation.Nullable;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.common.entity.V2XRoadEventEntity;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.scenario.impl.AbsV2XScenario;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.windowview.IMogoTopViewStatusListener;
import com.mogo.utils.logger.Logger;
@@ -57,7 +57,7 @@ public class V2XEventUgcScenario extends AbsV2XScenario<V2XRoadEventEntity> impl
ViewGroup.LayoutParams layoutParams =
new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
(int) V2XUtils.getApp().getResources().getDimension(R.dimen.module_v2x_fatigue_driving_window_height_ground));
(int) Utils.getApp().getResources().getDimension(R.dimen.module_v2x_fatigue_driving_window_height_ground));
V2XServiceManager
.getMogoTopViewManager()
.addView(getV2XWindow().getView(), layoutParams, this);

View File

@@ -8,6 +8,7 @@ import android.view.ViewGroup;
import androidx.annotation.Nullable;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.entity.V2XMessageEntity;
@@ -15,7 +16,6 @@ import com.mogo.module.common.entity.V2XWarningEntity;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.scenario.impl.AbsV2XScenario;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.windowview.IMogoTopViewStatusListener;
/**
@@ -61,7 +61,7 @@ public class V2XFrontWarningScenario extends AbsV2XScenario implements IMogoTopV
ViewGroup.LayoutParams layoutParams =
new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
(int) V2XUtils.getApp().getResources().getDimension(R.dimen.module_v2x_fatigue_driving_window_height_ground));
(int) Utils.getApp().getResources().getDimension(R.dimen.module_v2x_fatigue_driving_window_height_ground));
V2XServiceManager
.getMogoTopViewManager()
.addView(getV2XWindow().getView(), layoutParams, this);

View File

@@ -9,14 +9,13 @@ import android.widget.ImageView;
import android.widget.TextView;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.V2XWarningEntity;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.listener.V2XWindowStatusListener;
import com.mogo.module.v2x.scenario.scene.V2XBasWindow;
import com.mogo.module.v2x.scenario.view.IV2XWindow;
import com.mogo.module.v2x.utils.V2XUtils;
/**
* @author liujing
@@ -77,7 +76,7 @@ public class V2XWarningWindow extends V2XBasWindow implements IV2XWindow {
}
distance.setText(String.valueOf(mV2XWarningEntity.getDistance()) + "");
warningTextView.setText(mV2XWarningEntity.getWarningContent());//验证云端数据是否
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice(mV2XWarningEntity.getTts());
AIAssist.getInstance(Utils.getApp()).speakTTSVoice(mV2XWarningEntity.getTts());
}
//3秒后移除提示弹框
if (runnableV2XEvent == null) {

View File

@@ -9,6 +9,7 @@ import androidx.annotation.Nullable;
import com.mogo.commons.voice.AIAssist;
import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
import com.mogo.commons.voice.VoicePreemptType;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.entity.net.V2XAlarmEventRes;
import com.mogo.module.common.entity.V2XPushMessageEntity;
@@ -133,7 +134,7 @@ public class ADASUtils {
public static void speakTTSVoice(@Nullable String msg, IMogoVoiceCmdCallBack callBack) {
if (!TextUtils.isEmpty(msg)) {
Logger.w(V2XConst.MODULE_NAME, "调用TTS播放语音" + msg);
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice(msg, VoicePreemptType.PREEMPT_TYPE_IMMEADIATELY, callBack);
AIAssist.getInstance(Utils.getApp()).speakTTSVoice(msg, VoicePreemptType.PREEMPT_TYPE_IMMEADIATELY, callBack);
}
}
}

View File

@@ -79,7 +79,7 @@ public class ChartingUtil {
if ( V2XServiceManager.getCarsChattingProvider() != null ) {
V2XServiceManager.getCarsChattingProvider().isOnLine(
"CAR_CALL_TO_" + V2XConst.MODULE_NAME,
V2XUtils.getApp(),
com.mogo.eagle.core.utilcode.util.Utils.getApp(),
sn,
new ICallChatResponse() {
@Override
@@ -112,7 +112,7 @@ public class ChartingUtil {
if ( V2XServiceManager.getCarsChattingProvider() != null ) {
V2XServiceManager.getCarsChattingProvider().canCall(
"CAR_CALL_TO_" + V2XConst.MODULE_NAME,
V2XUtils.getApp(),
com.mogo.eagle.core.utilcode.util.Utils.getApp(),
new ICallChatResponse() {
@Override
public void canCall(boolean onLine) {

View File

@@ -2,11 +2,14 @@ package com.mogo.module.v2x.utils;
import android.text.TextUtils;
import com.mogo.eagle.core.utilcode.constant.TimeConstants;
import com.mogo.eagle.core.utilcode.util.TimeUtils;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.entity.net.V2XStrategyPushRes;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.storage.SharedPrefsMgr;
import com.mogo.utils.network.utils.GsonUtil;
import com.mogo.utils.storage.SharedPrefsMgr;
/**
* author : donghongyu
@@ -24,12 +27,12 @@ public class FatigueDrivingUtils {
*/
public static long getDrivingTime() {
// 获取 ACC ON 时间
String accOnTime = SharedPrefsMgr.getInstance(V2XUtils.getApp())
String accOnTime = SharedPrefsMgr.getInstance(Utils.getApp())
.getString(V2XConst.V2X_ACC_ON_TIME_STR);
if (TextUtils.isEmpty(accOnTime)) {
accOnTime = TimeUtils.getNowString();
// 记录开机时间
SharedPrefsMgr.getInstance(V2XUtils.getApp())
SharedPrefsMgr.getInstance(Utils.getApp())
.putString(V2XConst.V2X_ACC_ON_TIME_STR, accOnTime);
}
return Math.abs(TimeUtils.getTimeSpanByNow(accOnTime, TimeConstants.MIN));
@@ -41,7 +44,7 @@ public class FatigueDrivingUtils {
*/
public static void refreshAccOnTime() {
// 获取 ACC ON 时间
String localAccONTime = SharedPrefsMgr.getInstance(V2XUtils.getApp())
String localAccONTime = SharedPrefsMgr.getInstance(Utils.getApp())
.getString(V2XConst.V2X_ACC_ON_TIME_STR);
Logger.d(V2XConst.MODULE_NAME, "ACC ON时间" + localAccONTime);
@@ -49,13 +52,13 @@ public class FatigueDrivingUtils {
if (!TextUtils.isEmpty(localAccONTime)) {
// 获取配置信息
V2XStrategyPushRes.ResultBean strategyPushEntity =
GsonUtil.objectFromJson(SharedPrefsMgr.getInstance(V2XUtils.getApp())
GsonUtil.objectFromJson(SharedPrefsMgr.getInstance(Utils.getApp())
.getString(V2XConst.V2X_STRATEGY_PUSH), V2XStrategyPushRes.ResultBean.class);
if (strategyPushEntity != null) {
// 获取 当前 ACC ON 时间
String accOnTime = TimeUtils.getNowString();
// 获取 ACC OFF 时间
String accOFFTime = SharedPrefsMgr.getInstance(V2XUtils.getApp())
String accOFFTime = SharedPrefsMgr.getInstance(Utils.getApp())
.getString(V2XConst.V2X_ACC_OFF_TIME_STR);
if (!TextUtils.isEmpty(accOFFTime)) {
// 比较开关机时间如果acc of 比 acc on 时间还要靠近说明acc on 时间记录有问题,需要更新同步
@@ -63,18 +66,18 @@ public class FatigueDrivingUtils {
Logger.d(V2XConst.MODULE_NAME, "开关机时间间隔:" + timeSpan);
if (timeSpan >= strategyPushEntity.getRestIgnoreMinutes()) {
// 记录开机时间
SharedPrefsMgr.getInstance(V2XUtils.getApp())
SharedPrefsMgr.getInstance(Utils.getApp())
.putString(V2XConst.V2X_ACC_ON_TIME_STR, accOnTime);
}
}
} else {
// 记录开机时间
SharedPrefsMgr.getInstance(V2XUtils.getApp())
SharedPrefsMgr.getInstance(Utils.getApp())
.putString(V2XConst.V2X_ACC_ON_TIME_STR, TimeUtils.getNowString());
}
} else {
// 记录开机时间
SharedPrefsMgr.getInstance(V2XUtils.getApp())
SharedPrefsMgr.getInstance(Utils.getApp())
.putString(V2XConst.V2X_ACC_ON_TIME_STR, TimeUtils.getNowString());
}
}

View File

@@ -4,6 +4,7 @@ import android.location.Location;
import android.util.Log;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.search.geo.IMogoGeoSearchListener;
import com.mogo.map.search.geo.MogoPoiItem;
@@ -44,7 +45,7 @@ public class LocationUtils {
MogoPoiSearchQuery poiSearchQuery = new MogoPoiSearchQuery(keyword, keyword);
poiSearchQuery.setPageSize(10);
poiSearchQuery.setLocation(getCurrentLatLon());
IMogoPoiSearch poiSearch = V2XServiceManager.getMapService().getPoiSearch(V2XUtils.getApp(), poiSearchQuery);
IMogoPoiSearch poiSearch = V2XServiceManager.getMapService().getPoiSearch(Utils.getApp(), poiSearchQuery);
poiSearch.setPoiSearchListener(new IMogoPoiSearchListener() {
@Override

View File

@@ -1,6 +1,7 @@
package com.mogo.module.v2x.utils;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.utils.TipToast;
@@ -34,7 +35,7 @@ public class RoadConditionUtils {
* 显示Toast
*/
private static void showTip() {
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("已反馈", null);
AIAssist.getInstance(Utils.getApp()).speakTTSVoice("已反馈", null);
TipToast.tip("已反馈");
}
}

View File

@@ -1,6 +1,7 @@
package com.mogo.module.v2x.utils;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.MarkerResponse;
import com.mogo.module.common.entity.V2XMessageEntity;
@@ -31,7 +32,7 @@ public class TestOnLineCarUtils {
*/
public static V2XMessageEntity<List<MarkerExploreWay>> getV2XIllegalParkData() {
try {
InputStream inputStream = V2XUtils.getApp().getResources().openRawResource(R.raw.illegal_park_data);
InputStream inputStream = Utils.getApp().getResources().openRawResource(R.raw.illegal_park_data);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int len = -1;
byte[] buffer = new byte[1024];
@@ -64,7 +65,7 @@ public class TestOnLineCarUtils {
*/
public static V2XMessageEntity<V2XRoadEventEntity> getV2XScenarioRoadEventData() {
try {
InputStream inputStream = V2XUtils.getApp()
InputStream inputStream = Utils.getApp()
.getResources()
.openRawResource(R.raw.scenario_road_event_data);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -98,7 +99,7 @@ public class TestOnLineCarUtils {
*/
public static V2XMessageEntity<V2XRoadEventEntity> getV2XScenarioRoadEventUGCData() {
try {
InputStream inputStream = V2XUtils.getApp()
InputStream inputStream = Utils.getApp()
.getResources()
.openRawResource(R.raw.scenario_road_event_data);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -131,7 +132,7 @@ public class TestOnLineCarUtils {
*/
public static V2XMessageEntity<V2XPushMessageEntity> getV2XScenarioPushEventData() {
try {
InputStream inputStream = V2XUtils.getApp()
InputStream inputStream = Utils.getApp()
.getResources()
.openRawResource(R.raw.scenario_push_event_data);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -175,7 +176,7 @@ public class TestOnLineCarUtils {
break;
default:
}
InputStream inputStream = V2XUtils.getApp()
InputStream inputStream = Utils.getApp()
.getResources()
.openRawResource(id);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -203,7 +204,7 @@ public class TestOnLineCarUtils {
*/
public static V2XMessageEntity<V2XPushMessageEntity> getV2XScenarioPushLiveEventData() {
try {
InputStream inputStream = V2XUtils.getApp()
InputStream inputStream = Utils.getApp()
.getResources()
.openRawResource(R.raw.scenario_push_live_event_data);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -236,7 +237,7 @@ public class TestOnLineCarUtils {
*/
public static V2XMessageEntity<V2XPushMessageEntity> getV2XScenarioAnimationEventData() {
try {
InputStream inputStream = V2XUtils.getApp()
InputStream inputStream = Utils.getApp()
.getResources()
.openRawResource(R.raw.scenario_push_animation_event_data);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -269,7 +270,7 @@ public class TestOnLineCarUtils {
*/
public static V2XMessageEntity<V2XPushMessageEntity> getV2XScenarioCrossCrash() {
try {
InputStream inputStream = V2XUtils.getApp()
InputStream inputStream = Utils.getApp()
.getResources()
.openRawResource(R.raw.scenario_push_cross_crash);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -302,7 +303,7 @@ public class TestOnLineCarUtils {
*/
public static V2XMessageEntity<V2XPushMessageEntity> getV2XScenarioFatigueDrivingData() {
try {
InputStream inputStream = V2XUtils.getApp()
InputStream inputStream = Utils.getApp()
.getResources()
.openRawResource(R.raw.scenario_fatigue_driving_data);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -336,7 +337,7 @@ public class TestOnLineCarUtils {
*/
public static V2XMessageEntity<List<V2XSpecialCarRes.V2XMarkerEntity>> getV2XScenarioSeekHelpData() {
try {
InputStream inputStream = V2XUtils.getApp()
InputStream inputStream = Utils.getApp()
.getResources()
.openRawResource(R.raw.scenario_seek_help);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -370,7 +371,7 @@ public class TestOnLineCarUtils {
*/
public static V2XMessageEntity<List<V2XSpecialCarRes.V2XMarkerEntity>> getV2XScenarionVRBehindVIPData() {
try {
InputStream inputStream = V2XUtils.getApp()
InputStream inputStream = Utils.getApp()
.getResources()
.openRawResource(R.raw.scenario_push_vr_hehind_vip_data);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -404,7 +405,7 @@ public class TestOnLineCarUtils {
*/
public static V2XMessageEntity<V2XPushMessageEntity> getV2XScenarionVRReverseCarData() {
try {
InputStream inputStream = V2XUtils.getApp()
InputStream inputStream = Utils.getApp()
.getResources()
.openRawResource(R.raw.scenario_push_vr_reverse_car_data);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -438,7 +439,7 @@ public class TestOnLineCarUtils {
*/
public static V2XMessageEntity<V2XOptimalRouteDataRes> getV2XOptimalRoute() {
try {
InputStream inputStream = V2XUtils.getApp()
InputStream inputStream = Utils.getApp()
.getResources()
.openRawResource(R.raw.test_data_v2x_zuiyouluxian);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -494,7 +495,7 @@ public class TestOnLineCarUtils {
*/
public static List<MogoLatLng> getTestCoordinates() {
try {
InputStream inputStream = V2XUtils.getApp()
InputStream inputStream = Utils.getApp()
.getResources()
.openRawResource(R.raw.test_coordinates);
ByteArrayOutputStream baos = new ByteArrayOutputStream();

View File

@@ -1,28 +0,0 @@
package com.mogo.module.v2x.utils;
import androidx.annotation.IntDef;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* <pre>
* author: Blankj
* blog : http://blankj.com
* time : 2017/03/13
* desc : constants of time
* </pre>
*/
public final class TimeConstants {
public static final int MSEC = 1;
public static final int SEC = 1000;
public static final int MIN = 60000;
public static final int HOUR = 3600000;
public static final int DAY = 86400000;
@IntDef({MSEC, SEC, MIN, HOUR, DAY})
@Retention(RetentionPolicy.SOURCE)
public @interface Unit {
}
}

View File

@@ -1,582 +0,0 @@
package com.mogo.module.v2x.utils;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.ColorInt;
import androidx.annotation.DrawableRes;
import androidx.annotation.Keep;
import androidx.annotation.LayoutRes;
import androidx.annotation.StringRes;
import androidx.core.app.NotificationManagerCompat;
import java.lang.reflect.Field;
/**
*
*/
public final class ToastUtils {
private static final int COLOR_DEFAULT = 0xFEFFFFFF;
private static final String NULL = "null";
private static IToast iToast;
private static int sGravity = -1;
private static int sXOffset = -1;
private static int sYOffset = -1;
private static int sBgColor = COLOR_DEFAULT;
private static int sBgResource = -1;
private static int sMsgColor = COLOR_DEFAULT;
private static int sMsgTextSize = -1;
private ToastUtils() {
throw new UnsupportedOperationException("u can't instantiate me...");
}
/**
* Set the gravity.
*
* @param gravity The gravity.
* @param xOffset X-axis offset, in pixel.
* @param yOffset Y-axis offset, in pixel.
*/
public static void setGravity(final int gravity, final int xOffset, final int yOffset) {
sGravity = gravity;
sXOffset = xOffset;
sYOffset = yOffset;
}
/**
* Set the color of background.
*
* @param backgroundColor The color of background.
*/
public static void setBgColor(@ColorInt final int backgroundColor) {
sBgColor = backgroundColor;
}
/**
* Set the resource of background.
*
* @param bgResource The resource of background.
*/
public static void setBgResource(@DrawableRes final int bgResource) {
sBgResource = bgResource;
}
/**
* Set the color of message.
*
* @param msgColor The color of message.
*/
public static void setMsgColor(@ColorInt final int msgColor) {
sMsgColor = msgColor;
}
/**
* Set the text size of message.
*
* @param textSize The text size of message.
*/
public static void setMsgTextSize(final int textSize) {
sMsgTextSize = textSize;
}
/**
* Show the toast for a short period of time.
*
* @param text The text.
*/
public static void showShort(final CharSequence text) {
show(text == null ? NULL : text, Toast.LENGTH_SHORT);
}
/**
* Show the toast for a short period of time.
*
* @param resId The resource id for text.
*/
public static void showShort(@StringRes final int resId) {
show(resId, Toast.LENGTH_SHORT);
}
/**
* Show the toast for a short period of time.
*
* @param resId The resource id for text.
* @param args The args.
*/
public static void showShort(@StringRes final int resId, final Object... args) {
show(resId, Toast.LENGTH_SHORT, args);
}
/**
* Show the toast for a short period of time.
*
* @param format The format.
* @param args The args.
*/
public static void showShort(final String format, final Object... args) {
show(format, Toast.LENGTH_SHORT, args);
}
/**
* Show the toast for a long period of time.
*
* @param text The text.
*/
public static void showLong(final CharSequence text) {
show(text == null ? NULL : text, Toast.LENGTH_LONG);
}
/**
* Show the toast for a long period of time.
*
* @param resId The resource id for text.
*/
public static void showLong(@StringRes final int resId) {
show(resId, Toast.LENGTH_LONG);
}
/**
* Show the toast for a long period of time.
*
* @param resId The resource id for text.
* @param args The args.
*/
public static void showLong(@StringRes final int resId, final Object... args) {
show(resId, Toast.LENGTH_LONG, args);
}
/**
* Show the toast for a long period of time.
*
* @param format The format.
* @param args The args.
*/
public static void showLong(final String format, final Object... args) {
show(format, Toast.LENGTH_LONG, args);
}
/**
* Show custom toast for a short period of time.
*
* @param layoutId ID for an XML layout resource to load.
*/
public static View showCustomShort(@LayoutRes final int layoutId) {
return showCustomShort(getView(layoutId));
}
/**
* Show custom toast for a short period of time.
*
* @param view The view of toast.
*/
public static View showCustomShort(final View view) {
show(view, Toast.LENGTH_SHORT);
return view;
}
/**
* Show custom toast for a long period of time.
*
* @param layoutId ID for an XML layout resource to load.
*/
public static View showCustomLong(@LayoutRes final int layoutId) {
return showCustomLong(getView(layoutId));
}
/**
* Show custom toast for a long period of time.
*
* @param view The view of toast.
*/
public static View showCustomLong(final View view) {
show(view, Toast.LENGTH_LONG);
return view;
}
/**
* Cancel the toast.
*/
public static void cancel() {
if (iToast != null) {
iToast.cancel();
}
}
private static void show(final int resId, final int duration) {
show(resId, duration, (Object) null);
}
private static void show(final int resId, final int duration, final Object... args) {
try {
CharSequence text = V2XUtils.getApp().getResources().getText(resId);
if (args != null) {
text = String.format(text.toString(), args);
}
show(text, duration);
} catch (Exception ignore) {
show(String.valueOf(resId), duration);
}
}
private static void show(final String format, final int duration, final Object... args) {
String text = format;
if (text == null) {
text = NULL;
} else {
if (args != null) {
text = String.format(format, args);
}
}
show(text, duration);
}
private static void show(final CharSequence text, final int duration) {
V2XUtils.runOnUiThread(new Runnable() {
@SuppressLint("ShowToast")
@Override
public void run() {
cancel();
iToast = ToastFactory.makeToast(V2XUtils.getApp(), text, duration);
final View toastView = iToast.getView();
if (toastView == null) return;
final TextView tvMessage = toastView.findViewById(android.R.id.message);
if (sMsgColor != COLOR_DEFAULT) {
tvMessage.setTextColor(sMsgColor);
}
if (sMsgTextSize != -1) {
tvMessage.setTextSize(sMsgTextSize);
}
if (sGravity != -1 || sXOffset != -1 || sYOffset != -1) {
iToast.setGravity(sGravity, sXOffset, sYOffset);
}
setBg(tvMessage);
iToast.show();
}
});
}
private static void show(final View view, final int duration) {
V2XUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
cancel();
iToast = ToastFactory.newToast(V2XUtils.getApp());
iToast.setView(view);
iToast.setDuration(duration);
if (sGravity != -1 || sXOffset != -1 || sYOffset != -1) {
iToast.setGravity(sGravity, sXOffset, sYOffset);
}
setBg();
iToast.show();
}
});
}
private static void setBg() {
if (sBgResource != -1) {
final View toastView = iToast.getView();
toastView.setBackgroundResource(sBgResource);
} else if (sBgColor != COLOR_DEFAULT) {
final View toastView = iToast.getView();
Drawable background = toastView.getBackground();
if (background != null) {
background.setColorFilter(
new PorterDuffColorFilter(sBgColor, PorterDuff.Mode.SRC_IN)
);
} else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
toastView.setBackground(new ColorDrawable(sBgColor));
} else {
toastView.setBackgroundDrawable(new ColorDrawable(sBgColor));
}
}
}
}
private static void setBg(final TextView tvMsg) {
if (sBgResource != -1) {
final View toastView = iToast.getView();
toastView.setBackgroundResource(sBgResource);
tvMsg.setBackgroundColor(Color.TRANSPARENT);
} else if (sBgColor != COLOR_DEFAULT) {
final View toastView = iToast.getView();
Drawable tvBg = toastView.getBackground();
Drawable msgBg = tvMsg.getBackground();
if (tvBg != null && msgBg != null) {
tvBg.setColorFilter(new PorterDuffColorFilter(sBgColor, PorterDuff.Mode.SRC_IN));
tvMsg.setBackgroundColor(Color.TRANSPARENT);
} else if (tvBg != null) {
tvBg.setColorFilter(new PorterDuffColorFilter(sBgColor, PorterDuff.Mode.SRC_IN));
} else if (msgBg != null) {
msgBg.setColorFilter(new PorterDuffColorFilter(sBgColor, PorterDuff.Mode.SRC_IN));
} else {
toastView.setBackgroundColor(sBgColor);
}
}
}
private static View getView(@LayoutRes final int layoutId) {
LayoutInflater inflate =
(LayoutInflater) V2XUtils.getApp().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
return inflate.inflate(layoutId, null);
}
static class ToastFactory {
static IToast makeToast(Context context, CharSequence text, int duration) {
if (NotificationManagerCompat.from(context).areNotificationsEnabled()) {
return new SystemToast(makeNormalToast(context, text, duration));
}
return new ToastWithoutNotification(makeNormalToast(context, text, duration));
}
static IToast newToast(Context context) {
if (NotificationManagerCompat.from(context).areNotificationsEnabled()) {
return new SystemToast(new Toast(context));
}
return new ToastWithoutNotification(new Toast(context));
}
private static Toast makeNormalToast(Context context, CharSequence text, int duration) {
@SuppressLint("ShowToast")
Toast toast = Toast.makeText(context, "", duration);
toast.setText(text);
return toast;
}
}
static class SystemToast extends AbsToast {
@Keep
SystemToast(Toast toast) {
super(toast);
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.N_MR1) {
try {
//noinspection JavaReflectionMemberAccess
Field mTNField = Toast.class.getDeclaredField("mTN");
mTNField.setAccessible(true);
Object mTN = mTNField.get(toast);
Field mTNmHandlerField = mTNField.getType().getDeclaredField("mHandler");
mTNmHandlerField.setAccessible(true);
Handler tnHandler = (Handler) mTNmHandlerField.get(mTN);
mTNmHandlerField.set(mTN, new SafeHandler(tnHandler));
} catch (Exception ignored) {/**/}
}
}
@Override
public void show() {
mToast.show();
}
@Override
public void cancel() {
mToast.cancel();
}
static class SafeHandler extends Handler {
private Handler impl;
SafeHandler(Handler impl) {
this.impl = impl;
}
@Override
public void handleMessage(Message msg) {
impl.handleMessage(msg);
}
@Override
public void dispatchMessage(Message msg) {
try {
impl.dispatchMessage(msg);
} catch (Exception e) {
Log.e("ToastUtils", e.toString());
}
}
}
}
static class ToastWithoutNotification extends AbsToast {
private View mView;
private WindowManager mWM;
private WindowManager.LayoutParams mParams = new WindowManager.LayoutParams();
private static final V2XUtils.OnActivityDestroyedListener LISTENER =
new V2XUtils.OnActivityDestroyedListener() {
@Override
public void onActivityDestroyed(Activity activity) {
if (iToast == null) return;
activity.getWindow().getDecorView().setVisibility(View.GONE);
iToast.cancel();
}
};
ToastWithoutNotification(Toast toast) {
super(toast);
}
@Override
public void show() {
V2XUtils.runOnUiThreadDelayed(new Runnable() {
@Override
public void run() {
realShow();
}
}, 300);
}
private void realShow() {
if (mToast == null) return;
mView = mToast.getView();
if (mView == null) return;
final Context context = mToast.getView().getContext();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) {
mWM = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
mParams.type = WindowManager.LayoutParams.TYPE_TOAST;
} else {
Context topActivityOrApp = V2XUtils.getTopActivityOrApp();
if (!(topActivityOrApp instanceof Activity)) {
Log.e("ToastUtils", "Couldn't get top Activity.");
return;
}
Activity topActivity = (Activity) topActivityOrApp;
if (topActivity.isFinishing() || topActivity.isDestroyed()) {
Log.e("ToastUtils", topActivity + " is useless");
return;
}
mWM = topActivity.getWindowManager();
mParams.type = WindowManager.LayoutParams.LAST_APPLICATION_WINDOW;
V2XUtils.getActivityLifecycle().addOnActivityDestroyedListener(topActivity, LISTENER);
}
mParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
mParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
mParams.format = PixelFormat.TRANSLUCENT;
mParams.windowAnimations = android.R.style.Animation_Toast;
mParams.setTitle("ToastWithoutNotification");
mParams.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
mParams.packageName = V2XUtils.getApp().getPackageName();
mParams.gravity = mToast.getGravity();
if ((mParams.gravity & Gravity.HORIZONTAL_GRAVITY_MASK) == Gravity.FILL_HORIZONTAL) {
mParams.horizontalWeight = 1.0f;
}
if ((mParams.gravity & Gravity.VERTICAL_GRAVITY_MASK) == Gravity.FILL_VERTICAL) {
mParams.verticalWeight = 1.0f;
}
mParams.x = mToast.getXOffset();
mParams.y = mToast.getYOffset();
mParams.horizontalMargin = mToast.getHorizontalMargin();
mParams.verticalMargin = mToast.getVerticalMargin();
try {
if (mWM != null) {
mWM.addView(mView, mParams);
}
} catch (Exception ignored) {/**/}
V2XUtils.runOnUiThreadDelayed(new Runnable() {
@Override
public void run() {
cancel();
}
}, mToast.getDuration() == Toast.LENGTH_SHORT ? 2000 : 3500);
}
@Override
public void cancel() {
try {
if (mWM != null) {
mWM.removeViewImmediate(mView);
}
} catch (Exception ignored) {/**/}
mView = null;
mWM = null;
mToast = null;
}
}
static abstract class AbsToast implements IToast {
Toast mToast;
AbsToast(Toast toast) {
mToast = toast;
}
@Override
public void setView(View view) {
mToast.setView(view);
}
@Override
public View getView() {
return mToast.getView();
}
@Override
public void setDuration(int duration) {
mToast.setDuration(duration);
}
@Override
public void setGravity(int gravity, int xOffset, int yOffset) {
mToast.setGravity(gravity, xOffset, yOffset);
}
@Override
public void setText(int resId) {
mToast.setText(resId);
}
@Override
public void setText(CharSequence s) {
mToast.setText(s);
}
}
interface IToast {
void show();
void cancel();
void setView(View view);
View getView();
void setDuration(int duration);
void setGravity(int gravity, int xOffset, int yOffset);
void setText(@StringRes int resId);
void setText(CharSequence s);
}
}

View File

@@ -1,5 +1,7 @@
package com.mogo.module.v2x.utils;
import com.mogo.eagle.core.utilcode.util.TimeUtils;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.module.common.entity.V2XEventZanData;
import com.mogo.module.common.entity.V2XHistoryScenarioData;
import com.mogo.module.v2x.V2XConst;
@@ -35,7 +37,7 @@ public class V2XSQLiteUtils {
synchronized (V2XSQLiteUtils.class) {
if (mScenarioHistoryDao == null) {
mScenarioHistoryDao = SQLDaoFactory.Companion.getInstance()
.getBaseDao(V2XUtils.getApp(), V2XHistoryScenarioData.class);
.getBaseDao(Utils.getApp(), V2XHistoryScenarioData.class);
}
}
}
@@ -50,7 +52,7 @@ public class V2XSQLiteUtils {
synchronized (V2XSQLiteUtils.class) {
if (mV2XEventZanDao == null) {
mV2XEventZanDao = SQLDaoFactory.Companion.getInstance()
.getBaseDao(V2XUtils.getApp(), V2XEventZanData.class);
.getBaseDao(Utils.getApp(), V2XEventZanData.class);
}
}
}

View File

@@ -1,49 +1,11 @@
package com.mogo.module.v2x.utils;
import android.animation.ValueAnimator;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.text.TextUtils;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import androidx.annotation.Nullable;
import androidx.core.content.FileProvider;
import androidx.fragment.app.FragmentActivity;
import com.mogo.utils.ThreadPoolService;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.utils.storage.SharedPrefsMgr;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
/**
* author : donghongyu
@@ -54,717 +16,21 @@ import java.util.concurrent.ExecutorService;
*/
public class V2XUtils {
private static final ActivityLifecycleImpl ACTIVITY_LIFECYCLE = new ActivityLifecycleImpl();
private static final ExecutorService UTIL_POOL = ThreadUtils.getCachedPool();
private static final Handler UTIL_HANDLER = new Handler(Looper.getMainLooper());
@SuppressLint("StaticFieldLeak")
private static Application sApplication;
private V2XUtils() {
throw new UnsupportedOperationException("u can't instantiate me...");
}
/**
* Init utils.
* <p>Init it in the class of Application.</p>
*
* @param context context
*/
public static void init(final Context context) {
if (context == null) {
init(getApplicationByReflect());
return;
}
init((Application) context.getApplicationContext());
}
/**
* Init utils.
* <p>Init it in the class of Application.</p>
*
* @param app application
*/
public static void init(final Application app) {
if (sApplication == null) {
if (app == null) {
sApplication = getApplicationByReflect();
} else {
sApplication = app;
}
sApplication.registerActivityLifecycleCallbacks(ACTIVITY_LIFECYCLE);
// UTIL_POOL.execute(new Runnable() {
// @Override
// public void run() {
// //AdaptScreenUtils.preLoad();
// }
// });
} else {
if (app != null && app.getClass() != sApplication.getClass()) {
sApplication.unregisterActivityLifecycleCallbacks(ACTIVITY_LIFECYCLE);
ACTIVITY_LIFECYCLE.mActivityList.clear();
sApplication = app;
sApplication.registerActivityLifecycleCallbacks(ACTIVITY_LIFECYCLE);
}
}
}
/**
* Return the context of Application object.
*
* @return the context of Application object
*/
public static Application getApp() {
if (sApplication != null) return sApplication;
Application app = getApplicationByReflect();
init(app);
return app;
}
static ActivityLifecycleImpl getActivityLifecycle() {
return ACTIVITY_LIFECYCLE;
}
static LinkedList<Activity> getActivityList() {
return ACTIVITY_LIFECYCLE.mActivityList;
}
static Context getTopActivityOrApp() {
if (isAppForeground()) {
Activity topActivity = ACTIVITY_LIFECYCLE.getTopActivity();
return topActivity == null ? V2XUtils.getApp() : topActivity;
} else {
return V2XUtils.getApp();
}
}
static boolean isAppForeground() {
ActivityManager am = (ActivityManager) V2XUtils.getApp().getSystemService(Context.ACTIVITY_SERVICE);
if (am == null) return false;
List<ActivityManager.RunningAppProcessInfo> info = am.getRunningAppProcesses();
if (info == null || info.size() == 0) return false;
for (ActivityManager.RunningAppProcessInfo aInfo : info) {
if (aInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
if (aInfo.processName.equals(V2XUtils.getApp().getPackageName())) {
return true;
}
}
}
return false;
}
static <T> Task<T> doAsync(final Task<T> task) {
UTIL_POOL.execute(task);
return task;
}
public static void runOnUiThread(final Runnable runnable) {
if (Looper.myLooper() == Looper.getMainLooper()) {
runnable.run();
} else {
V2XUtils.UTIL_HANDLER.post(runnable);
}
}
public static void runOnUiThreadDelayed(final Runnable runnable, long delayMillis) {
V2XUtils.UTIL_HANDLER.postDelayed(runnable, delayMillis);
}
/**
* 运行在子线程
*
* @param runnable 线程执行
*/
public static void runOnBackgroundThread(Runnable runnable) {
if (runnable == null) {
return;
}
ThreadPoolService.execute(runnable);
}
static String getCurrentProcessName() {
String name = getCurrentProcessNameByFile();
if (!TextUtils.isEmpty(name)) return name;
name = getCurrentProcessNameByAms();
if (!TextUtils.isEmpty(name)) return name;
name = getCurrentProcessNameByReflect();
return name;
}
static void fixSoftInputLeaks(final Window window) {
InputMethodManager imm =
(InputMethodManager) V2XUtils.getApp().getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm == null) return;
String[] leakViews = new String[]{"mLastSrvView", "mCurRootView", "mServedView", "mNextServedView"};
for (String leakView : leakViews) {
try {
Field leakViewField = InputMethodManager.class.getDeclaredField(leakView);
if (!leakViewField.isAccessible()) {
leakViewField.setAccessible(true);
}
Object obj = leakViewField.get(imm);
if (!(obj instanceof View)) continue;
View view = (View) obj;
if (view.getRootView() == window.getDecorView().getRootView()) {
leakViewField.set(imm, null);
}
} catch (Throwable ignore) {/**/}
}
}
static void toastShowShort(final CharSequence text) {
ToastUtils.showShort(text);
}
static void toastCancel() {
ToastUtils.cancel();
}
///////////////////////////////////////////////////////////////////////////
// private method
///////////////////////////////////////////////////////////////////////////
private static String getCurrentProcessNameByFile() {
try {
File file = new File("/proc/" + android.os.Process.myPid() + "/" + "cmdline");
BufferedReader mBufferedReader = new BufferedReader(new FileReader(file));
String processName = mBufferedReader.readLine().trim();
mBufferedReader.close();
return processName;
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
private static String getCurrentProcessNameByAms() {
ActivityManager am = (ActivityManager) V2XUtils.getApp().getSystemService(Context.ACTIVITY_SERVICE);
if (am == null) return "";
List<ActivityManager.RunningAppProcessInfo> info = am.getRunningAppProcesses();
if (info == null || info.size() == 0) return "";
int pid = android.os.Process.myPid();
for (ActivityManager.RunningAppProcessInfo aInfo : info) {
if (aInfo.pid == pid) {
if (aInfo.processName != null) {
return aInfo.processName;
}
}
}
return "";
}
private static String getCurrentProcessNameByReflect() {
String processName = "";
try {
Application app = V2XUtils.getApp();
Field loadedApkField = app.getClass().getField("mLoadedApk");
loadedApkField.setAccessible(true);
Object loadedApk = loadedApkField.get(app);
Field activityThreadField = loadedApk.getClass().getDeclaredField("mActivityThread");
activityThreadField.setAccessible(true);
Object activityThread = activityThreadField.get(loadedApk);
Method getProcessName = activityThread.getClass().getDeclaredMethod("getProcessName");
processName = (String) getProcessName.invoke(activityThread);
} catch (Exception e) {
e.printStackTrace();
}
return processName;
}
private static Application getApplicationByReflect() {
try {
@SuppressLint("PrivateApi")
Class<?> activityThread = Class.forName("android.app.ActivityThread");
Object thread = activityThread.getMethod("currentActivityThread").invoke(null);
Object app = activityThread.getMethod("getApplication").invoke(thread);
if (app == null) {
throw new NullPointerException("u should init first");
}
return (Application) app;
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
throw new NullPointerException("u should init first");
}
/**
* Set animators enabled.
*/
private static void setAnimatorsEnabled() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && ValueAnimator.areAnimatorsEnabled()) {
return;
}
try {
//noinspection JavaReflectionMemberAccess
Field sDurationScaleField = ValueAnimator.class.getDeclaredField("sDurationScale");
sDurationScaleField.setAccessible(true);
float sDurationScale = (Float) sDurationScaleField.get(null);
if (sDurationScale == 0f) {
sDurationScaleField.set(null, 1f);
Log.i("Utils", "setAnimatorsEnabled: Animators are enabled now!");
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
/*
* 当天第一次
* */
*/
public static boolean isFirstTodayWithKey(String key) {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd", Locale.US);
String formatString = format.format(new Date());
String value = SharedPrefsMgr.getInstance(V2XUtils.getApp()).getString(key);
String value = SharedPrefsMgr.getInstance(Utils.getApp()).getString(key);
if (value.equals(formatString)) {
return true;
} else {
SharedPrefsMgr.getInstance(V2XUtils.getApp()).putString(key, formatString);
SharedPrefsMgr.getInstance(Utils.getApp()).putString(key, formatString);
return false;
}
}
///////////////////////////////////////////////////////////////////////////
// TransActivity
///////////////////////////////////////////////////////////////////////////
public static final class TransActivity extends FragmentActivity {
private static final Map<TransActivity, TransActivityDelegate> CALLBACK_MAP = new HashMap<>();
private static TransActivityDelegate sDelegate;
public static void start(final Func1<Void, Intent> consumer,
final TransActivityDelegate delegate) {
if (delegate == null) return;
Intent starter = new Intent(V2XUtils.getApp(), TransActivity.class);
starter.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (consumer != null) {
consumer.call(starter);
}
V2XUtils.getApp().startActivity(starter);
sDelegate = delegate;
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
overridePendingTransition(0, 0);
if (sDelegate == null) {
super.onCreate(savedInstanceState);
finish();
return;
}
CALLBACK_MAP.put(this, sDelegate);
sDelegate.onCreateBefore(this, savedInstanceState);
super.onCreate(savedInstanceState);
sDelegate.onCreated(this, savedInstanceState);
sDelegate = null;
}
@Override
protected void onStart() {
super.onStart();
TransActivityDelegate callback = CALLBACK_MAP.get(this);
if (callback == null) return;
callback.onStarted(this);
}
@Override
protected void onResume() {
super.onResume();
TransActivityDelegate callback = CALLBACK_MAP.get(this);
if (callback == null) return;
callback.onResumed(this);
}
@Override
protected void onPause() {
overridePendingTransition(0, 0);
super.onPause();
TransActivityDelegate callback = CALLBACK_MAP.get(this);
if (callback == null) return;
callback.onPaused(this);
}
@Override
protected void onStop() {
super.onStop();
TransActivityDelegate callback = CALLBACK_MAP.get(this);
if (callback == null) return;
callback.onStopped(this);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
TransActivityDelegate callback = CALLBACK_MAP.get(this);
if (callback == null) return;
callback.onSaveInstanceState(this, outState);
}
@Override
protected void onDestroy() {
super.onDestroy();
TransActivityDelegate callback = CALLBACK_MAP.get(this);
if (callback == null) return;
callback.onDestroy(this);
CALLBACK_MAP.remove(this);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
TransActivityDelegate callback = CALLBACK_MAP.get(this);
if (callback == null) return;
callback.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
TransActivityDelegate callback = CALLBACK_MAP.get(this);
if (callback == null) return;
callback.onActivityResult(this, requestCode, resultCode, data);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
TransActivityDelegate callback = CALLBACK_MAP.get(this);
if (callback == null) return super.dispatchTouchEvent(ev);
if (callback.dispatchTouchEvent(this, ev)) {
return true;
}
return super.dispatchTouchEvent(ev);
}
public abstract static class TransActivityDelegate {
public void onCreateBefore(Activity activity, @Nullable Bundle savedInstanceState) {/**/}
public void onCreated(Activity activity, @Nullable Bundle savedInstanceState) {/**/}
public void onStarted(Activity activity) {/**/}
public void onDestroy(Activity activity) {/**/}
public void onResumed(Activity activity) {/**/}
public void onPaused(Activity activity) {/**/}
public void onStopped(Activity activity) {/**/}
public void onSaveInstanceState(Activity activity, Bundle outState) {/**/}
public void onRequestPermissionsResult(Activity activity, int requestCode, String[] permissions, int[] grantResults) {/**/}
public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {/**/}
public boolean dispatchTouchEvent(Activity activity, MotionEvent ev) {
return false;
}
}
}
///////////////////////////////////////////////////////////////////////////
// lifecycle
///////////////////////////////////////////////////////////////////////////
static class ActivityLifecycleImpl implements Application.ActivityLifecycleCallbacks {
final LinkedList<Activity> mActivityList = new LinkedList<>();
final List<OnAppStatusChangedListener> mStatusListeners = new ArrayList<>();
final Map<Activity, List<OnActivityDestroyedListener>> mDestroyedListenerMap = new HashMap<>();
private int mForegroundCount = 0;
private int mConfigCount = 0;
private boolean mIsBackground = false;
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
//LanguageUtils.applyLanguage(activity);
setAnimatorsEnabled();
setTopActivity(activity);
}
@Override
public void onActivityStarted(Activity activity) {
if (!mIsBackground) {
setTopActivity(activity);
}
if (mConfigCount < 0) {
++mConfigCount;
} else {
++mForegroundCount;
}
}
@Override
public void onActivityResumed(final Activity activity) {
setTopActivity(activity);
if (mIsBackground) {
mIsBackground = false;
postStatus(activity, true);
}
processHideSoftInputOnActivityDestroy(activity, false);
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
if (activity.isChangingConfigurations()) {
--mConfigCount;
} else {
--mForegroundCount;
if (mForegroundCount <= 0) {
mIsBackground = true;
postStatus(activity, false);
}
}
processHideSoftInputOnActivityDestroy(activity, true);
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {/**/}
@Override
public void onActivityDestroyed(Activity activity) {
mActivityList.remove(activity);
consumeOnActivityDestroyedListener(activity);
fixSoftInputLeaks(activity.getWindow());
}
Activity getTopActivity() {
if (!mActivityList.isEmpty()) {
for (int i = mActivityList.size() - 1; i >= 0; i--) {
Activity activity = mActivityList.get(i);
if (activity == null
|| activity.isFinishing()
|| (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && activity.isDestroyed())) {
continue;
}
return activity;
}
}
Activity topActivityByReflect = getTopActivityByReflect();
if (topActivityByReflect != null) {
setTopActivity(topActivityByReflect);
}
return topActivityByReflect;
}
void addOnAppStatusChangedListener(final OnAppStatusChangedListener listener) {
mStatusListeners.add(listener);
}
void removeOnAppStatusChangedListener(final OnAppStatusChangedListener listener) {
mStatusListeners.remove(listener);
}
void removeOnActivityDestroyedListener(final Activity activity) {
if (activity == null) return;
mDestroyedListenerMap.remove(activity);
}
void addOnActivityDestroyedListener(final Activity activity,
final OnActivityDestroyedListener listener) {
if (activity == null || listener == null) return;
List<OnActivityDestroyedListener> listeners = mDestroyedListenerMap.get(activity);
if (listeners == null) {
listeners = new CopyOnWriteArrayList<>();
mDestroyedListenerMap.put(activity, listeners);
} else {
if (listeners.contains(listener)) return;
}
listeners.add(listener);
}
/**
* To solve close keyboard when activity onDestroy.
* The preActivity set windowSoftInputMode will prevent
* the keyboard from closing when curActivity onDestroy.
*/
private void processHideSoftInputOnActivityDestroy(final Activity activity, boolean isSave) {
if (isSave) {
final WindowManager.LayoutParams attrs = activity.getWindow().getAttributes();
final int softInputMode = attrs.softInputMode;
activity.getWindow().getDecorView().setTag(-123, softInputMode);
activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
} else {
final Object tag = activity.getWindow().getDecorView().getTag(-123);
if (!(tag instanceof Integer)) return;
V2XUtils.runOnUiThreadDelayed(new Runnable() {
@Override
public void run() {
Window window = activity.getWindow();
if (window != null) {
window.setSoftInputMode(((Integer) tag));
}
}
}, 100);
}
}
private void postStatus(final Activity activity, final boolean isForeground) {
if (mStatusListeners.isEmpty()) return;
for (OnAppStatusChangedListener statusListener : mStatusListeners) {
if (isForeground) {
statusListener.onForeground(activity);
} else {
statusListener.onBackground(activity);
}
}
}
private void setTopActivity(final Activity activity) {
// if (TransActivity.class == activity.getClass()) return;
if (mActivityList.contains(activity)) {
if (!mActivityList.getLast().equals(activity)) {
mActivityList.remove(activity);
mActivityList.addLast(activity);
}
} else {
mActivityList.addLast(activity);
}
}
private void consumeOnActivityDestroyedListener(Activity activity) {
Iterator<Map.Entry<Activity, List<OnActivityDestroyedListener>>> iterator
= mDestroyedListenerMap.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<Activity, List<OnActivityDestroyedListener>> entry = iterator.next();
if (entry.getKey() == activity) {
List<OnActivityDestroyedListener> value = entry.getValue();
for (OnActivityDestroyedListener listener : value) {
listener.onActivityDestroyed(activity);
}
iterator.remove();
}
}
}
private Activity getTopActivityByReflect() {
try {
@SuppressLint("PrivateApi")
Class<?> activityThreadClass = Class.forName("android.app.ActivityThread");
Object currentActivityThreadMethod = activityThreadClass.getMethod("currentActivityThread").invoke(null);
Field mActivityListField = activityThreadClass.getDeclaredField("mActivityList");
mActivityListField.setAccessible(true);
Map activities = (Map) mActivityListField.get(currentActivityThreadMethod);
if (activities == null) return null;
for (Object activityRecord : activities.values()) {
Class activityRecordClass = activityRecord.getClass();
Field pausedField = activityRecordClass.getDeclaredField("paused");
pausedField.setAccessible(true);
if (!pausedField.getBoolean(activityRecord)) {
Field activityField = activityRecordClass.getDeclaredField("activity");
activityField.setAccessible(true);
return (Activity) activityField.get(activityRecord);
}
}
} catch (Exception e) {
Log.e("Utils", e.getMessage());
}
return null;
}
}
public static final class FileProvider4UtilCode extends FileProvider {
@Override
public boolean onCreate() {
V2XUtils.init(getContext());
try {
Class.forName("com.blankj.utildebug.DebugUtils");
} catch (Exception ignore) {
}
return true;
}
}
///////////////////////////////////////////////////////////////////////////
// interface
///////////////////////////////////////////////////////////////////////////
public abstract static class Task<Result> implements Runnable {
private static final int NEW = 0;
private static final int COMPLETING = 1;
private static final int CANCELLED = 2;
private static final int EXCEPTIONAL = 3;
private volatile int state = NEW;
abstract Result doInBackground();
private Callback<Result> mCallback;
public Task(final Callback<Result> callback) {
mCallback = callback;
}
@Override
public void run() {
try {
final Result t = doInBackground();
if (state != NEW) return;
state = COMPLETING;
UTIL_HANDLER.post(new Runnable() {
@Override
public void run() {
mCallback.onCall(t);
}
});
} catch (Throwable th) {
if (state != NEW) return;
state = EXCEPTIONAL;
}
}
public void cancel() {
state = CANCELLED;
}
public boolean isDone() {
return state != NEW;
}
public boolean isCanceled() {
return state == CANCELLED;
}
}
public interface Callback<T> {
void onCall(T data);
}
public interface OnAppStatusChangedListener {
void onForeground(Activity activity);
void onBackground(Activity activity);
}
public interface OnActivityDestroyedListener {
void onActivityDestroyed(Activity activity);
}
public interface Func1<Ret, Par> {
Ret call(Par param);
}
// 两次点击间隔不能少于1000ms
private static final int FAST_CLICK_DELAY_TIME = 1000;
private static long lastClickTime;

View File

@@ -17,11 +17,11 @@ import com.mogo.cloud.trafficlive.api.ITrafficCarLiveCallBack;
import com.mogo.cloud.trafficlive.api.MoGoAiCloudTrafficLive;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.eagle.core.widget.RoundLayout;
import com.mogo.map.location.MogoLocation;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.module.v2x.voice.V2XVoiceCallbackListener;
import com.mogo.module.v2x.voice.V2XVoiceConstants;
import com.mogo.module.v2x.voice.V2XVoiceManager;
@@ -123,7 +123,7 @@ public class CarZegoLiveVideoView extends RoundLayout {
@Override
public void onError(String errorMsg) {
refreshStatusToListener(false);
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("直播获取识败,可以对我说重试", null);
AIAssist.getInstance(Utils.getApp()).speakTTSVoice("直播获取识败,可以对我说重试", null);
stopLive();
mLoading.setVisibility(GONE);
mClLoadError.setVisibility(VISIBLE);

View File

@@ -16,13 +16,13 @@ import androidx.core.content.ContextCompat;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.eagle.core.widget.RoundLayout;
import com.mogo.module.common.entity.MarkerCarInfo;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.entity.net.V2XLivePushVoRes;
import com.mogo.module.v2x.network.V2XRefreshCallback;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.module.v2x.voice.V2XVoiceCallbackListener;
import com.mogo.module.v2x.voice.V2XVoiceConstants;
import com.mogo.module.v2x.voice.V2XVoiceManager;
@@ -180,7 +180,7 @@ public class V2XCarLiveVideoView extends RoundLayout {
mClLoadError.setVisibility(GONE);
} else if (event < 0) {
refreshStatusToListener(false);
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("直播获取识败,可以对我说重试", null);
AIAssist.getInstance(Utils.getApp()).speakTTSVoice("直播获取识败,可以对我说重试", null);
stopLive(mCarLiveInfo);
mLoading.setVisibility(GONE);
mClLoadError.setVisibility(VISIBLE);

View File

@@ -15,12 +15,12 @@ import androidx.core.content.ContextCompat;
import com.mogo.cloud.trafficlive.api.ITrafficIntersectionLiveCallBack;
import com.mogo.cloud.trafficlive.api.MoGoAiCloudTrafficLive;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.eagle.core.widget.RoundLayout;
import com.mogo.map.location.MogoLocation;
import com.mogo.module.common.entity.MarkerCarInfo;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.module.v2x.voice.V2XVoiceCallbackListener;
import com.mogo.module.v2x.voice.V2XVoiceConstants;
import com.mogo.module.v2x.voice.V2XVoiceManager;
@@ -201,7 +201,7 @@ public class V2XCrossRoadVideoView extends RoundLayout {
mClLoadError.setVisibility(GONE);
} else if (event < 0) {
refreshStatusToListener(false);
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("直播获取识败,可以对我说重试", null);
AIAssist.getInstance(Utils.getApp()).speakTTSVoice("直播获取识败,可以对我说重试", null);
stopLive();
mLoading.setVisibility(GONE);
mClLoadError.setVisibility(VISIBLE);

View File

@@ -16,10 +16,10 @@ import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.eagle.core.widget.RoundLayout;
import com.mogo.module.common.entity.MarkerCarInfo;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.module.v2x.voice.V2XVoiceCallbackListener;
import com.mogo.module.v2x.voice.V2XVoiceConstants;
import com.mogo.module.v2x.voice.V2XVoiceManager;
@@ -150,7 +150,7 @@ public class V2XLiveGSYVideoView extends RoundLayout {
mLoading.setVisibility(GONE);
mClLoadError.setVisibility(GONE);
} else if (event < 0) {
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("直播获取失败,可以对我说重试", null);
AIAssist.getInstance(Utils.getApp()).speakTTSVoice("直播获取失败,可以对我说重试", null);
stopLive(mCarLiveInfo);
mLoading.setVisibility(GONE);
mClLoadError.setVisibility(VISIBLE);