Merge branch 'master' into dev_MogoAP_eagle-220_211207_8.0.17

# Conflicts:
#	core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt
#	gradle.properties
#	modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasProvider.java
#	modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java
#	modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java
This commit is contained in:
donghongyu
2021-12-31 15:25:55 +08:00
30 changed files with 339 additions and 631 deletions

View File

@@ -29,9 +29,4 @@ public interface ExtensionsView extends IView {
*/
void renderMsgInfo( boolean hasMsg, int amount );
/**
* 刷新个人信息
* @param userInfo 个人信息
*/
void renderUserInfo(UserInfo userInfo);
}

View File

@@ -1,16 +1,9 @@
package com.mogo.module.extensions.entrance;
import static com.mogo.module.common.utils.SPConst.getSPGuideRecord;
import static com.mogo.module.extensions.ExtensionsModuleConst.TYPE_ENTRANCE;
import static com.mogo.module.share.constant.ShareConstants.KEY_CLICK_SHARE_BUTTON;
import static com.mogo.module.share.constant.ShareConstants.KEY_CLICK_SHARE_TIME;
import static com.mogo.module.share.constant.ShareConstants.KEY_SERVER_SHOW_DAY_COUNT;
import static com.mogo.module.share.constant.ShareConstants.KEY_SHARE_INNER_GUIDE;
import static com.mogo.module.share.constant.ShareConstants.KEY_SHARE_INNER_GUIDE_TIME;
import static com.mogo.module.share.constant.ShareConstants.KEY_SHARE_OUTER_GUIDE;
import static com.mogo.module.share.constant.ShareConstants.KEY_SHARE_OUTER_GUIDE_TIME;
import static com.mogo.module.share.constant.ShareConstants.ONE_DAY_TIME;
import static com.mogo.module.share.constant.ShareConstants.SEVEN_DAY_TIME;
import static com.mogo.module.share.constant.ShareConstants.VOICE_ALERT_COUNT;
import android.content.Intent;
@@ -36,7 +29,6 @@ import androidx.constraintlayout.widget.ConstraintSet;
import androidx.constraintlayout.widget.Group;
import com.alibaba.android.arouter.launcher.ARouter;
import com.bumptech.glide.request.RequestOptions;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.mvp.MvpFragment;
@@ -61,20 +53,16 @@ import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.map.uicontroller.VisualAngleMode;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.dialog.WMDialog;
import com.mogo.module.common.glide.SkinAbleBitmapTarget;
import com.mogo.module.common.map.CustomNaviInterrupter;
import com.mogo.module.common.map.MapCenterPointStrategy;
import com.mogo.module.common.map.Scene;
import com.mogo.module.common.view.OnPreventFastClickListener;
import com.mogo.module.extensions.R;
import com.mogo.module.extensions.navi.AnimNavInfoView;
import com.mogo.module.extensions.userinfo.UserInfo;
import com.mogo.module.extensions.utils.CameraLiveNoticeHelper;
import com.mogo.module.extensions.utils.EntranceViewHolder;
import com.mogo.module.extensions.utils.NoMapTopViewShaderHelper;
import com.mogo.module.extensions.utils.TopViewAnimHelper;
import com.mogo.module.extensions.utils.TopViewNoLinkageAnimHelper;
import com.mogo.module.share.manager.ServiceApisManager;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.cloud.socket.IMogoOnMessageListener;
@@ -87,6 +75,9 @@ import com.mogo.service.module.IMogoRegisterCenter;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.storage.SharedPrefsMgr;
import java.util.HashMap;
import java.util.Map;
@@ -138,13 +129,10 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
private View mMsgContainer;
private TextView mMsgCounter;
private ImageView mUserHeadImg;
private String[] mClickShareVoiceStrings;
private String[] mInnerGuideVoiceStrings;
private boolean isShowGuide;
private String[] mOuterGuideVoiceStrings;
/**
* 搜索模块
@@ -177,7 +165,6 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
};
private Group seekHelpGroup;
private Group groupUserHead;
private UploadButtonAnimatorController mUploadButtonAnimatorController;
@@ -221,7 +208,6 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
mDisplayOverview = findViewById(R.id.module_ext_id_display_overview);
mDisplayOverviewText = findViewById(R.id.module_ext_id_display_overview_text);
mMove2CurrentLocation = findViewById(R.id.module_entrance_id_move2_current_location);
mUserHeadImg = findViewById(R.id.ivUserHeadImg);
groupFix = findViewById(R.id.groupFix);
ConstraintLayout rootView = findViewById(R.id.module_entrance_id_top_motion_layout);
@@ -249,7 +235,6 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
mWeatherContainer = findViewById(R.id.module_ext_id_weather_container);
mWeatherIcon = findViewById(R.id.module_ext_id_weather_icon);
mWeatherTemp = findViewById(R.id.module_ext_id_weather_temp);
groupUserHead = findViewById(R.id.groupUserHead);
mMsgContainer = findViewById(R.id.module_ext_id_msg);
mMsgCounter = findViewById(R.id.module_ext_id_msg_counter);
mUploadButtonAnimatorController = new UploadButtonAnimatorController(mUploading, mUpload,
@@ -260,25 +245,11 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
tvEnterVrMode.setOnClickListener(clickListener);
tvExitVrMode.setOnClickListener(clickListener);
mMsgContainer.setOnClickListener(clickListener);
mUserHeadImg.setOnClickListener(clickListener);
mMove2CurrentLocation.setOnClickListener(clickListener);
mDisplayOverview.setOnClickListener(clickListener);
mExitNavi.setOnClickListener(clickListener);
mCameraMode.setOnClickListener(clickListener);
groupUserHead.setVisibility(DebugConfig.isLauncher() ? View.VISIBLE : View.GONE);
if (DebugConfig.isDebug()) {
mUserHeadImg.setOnLongClickListener(view -> {
if (groupFix.getVisibility() == View.VISIBLE) {
groupFix.setVisibility(View.GONE);
} else {
groupFix.setVisibility(View.VISIBLE);
}
return true;
});
}
dealWeatherContainer();
listenSeekNumber();
@@ -308,8 +279,6 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
mUploadRoadCondition.setVisibility(View.GONE);
mWeatherContainer.setVisibility(View.GONE);
mMsgContainer.setVisibility(View.GONE);
groupUserHead.setVisibility(View.GONE);
groupUserHead.setVisibility(View.GONE);
// tvExitVrMode.setVisibility(View.VISIBLE);
TopViewAnimHelper.getInstance().enterVrMode();
TopViewNoLinkageAnimHelper.getInstance().enterVrMode();
@@ -322,7 +291,6 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
tvEnterVrMode.setVisibility(View.VISIBLE);
mMove2CurrentLocation.setVisibility(View.VISIBLE);
mUploadRoadCondition.setVisibility(View.VISIBLE);
groupUserHead.setVisibility(View.VISIBLE);
if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isSeekHelping()) {
seekHelpGroup.setVisibility(View.VISIBLE);
}
@@ -346,67 +314,10 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
mMove2CurrentLocation.setVisibility(View.GONE);
mWeatherContainer.setVisibility(View.GONE);
mMsgContainer.setVisibility(View.GONE);
groupUserHead.setVisibility(View.GONE);
}
UiThreadHandler.postDelayed(this::playShareOuterGuideVoice, 5_000L);
}
private boolean isGreaterThanOneDay() {
boolean isGreaterThanOneDay;
long guideRecordTime = SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).getLong(getSPGuideRecord(), 0);
Logger.d(TAG, " isGreaterThanOneDay interval = " + (System.currentTimeMillis() - guideRecordTime) + "---currentTime = " + System.currentTimeMillis() + "---guideRecordTime =" + guideRecordTime);
if ((System.currentTimeMillis() - guideRecordTime) > ONE_DAY_TIME) {
isGreaterThanOneDay = true;
} else {
isGreaterThanOneDay = false;
}
return isGreaterThanOneDay;
}
/**
* 外部触发引导
*/
private void playShareOuterGuideVoice() {
long intervalTime = SharedPrefsMgr.getInstance(getContext()).getLong(KEY_SHARE_OUTER_GUIDE_TIME, 0);
int shareItemSum = SharedPrefsMgr.getInstance(getContext()).getInt(KEY_SHARE_OUTER_GUIDE, 0);
int serverIssueCount = SharedPrefsMgr.getInstance(getContext()).getInt(KEY_SERVER_SHOW_DAY_COUNT, 6);
if (shareItemSum < serverIssueCount) {
long time = System.currentTimeMillis();
Logger.d(TAG, " playShareOuterGuideVoice shareItemSum = " + shareItemSum + "---- intervalTime = " + intervalTime + "----serverIssueCount = " + serverIssueCount + "---time = " + time);
if (intervalTime == 0) {
SharedPrefsMgr.getInstance(getContext()).putLong(KEY_SHARE_OUTER_GUIDE_TIME, time);
SharedPrefsMgr.getInstance(getContext()).putInt(KEY_SHARE_OUTER_GUIDE, ++shareItemSum);
// AIAssist.getInstance(getContext()).speakTTSVoice(mOuterGuideVoiceStrings[random.nextInt(3)]);
AIAssist.getInstance(getContext()).speakTTSVoice(mOuterGuideVoiceStrings[0]);
} else {
Logger.d(TAG, " playShareOuterGuideVoice else interval = " + (time - intervalTime));
if ((time - intervalTime) > SEVEN_DAY_TIME) {
if (shareItemSum == 1) {
AIAssist.getInstance(getContext()).speakTTSVoice(mOuterGuideVoiceStrings[1]);
} else if (shareItemSum == 2) {
AIAssist.getInstance(getContext()).speakTTSVoice(mOuterGuideVoiceStrings[2]);
} else if (shareItemSum == 3) {
AIAssist.getInstance(getContext()).speakTTSVoice(mOuterGuideVoiceStrings[0]);
} else if (shareItemSum == 4) {
AIAssist.getInstance(getContext()).speakTTSVoice(mOuterGuideVoiceStrings[1]);
} else if (shareItemSum == 5) {
AIAssist.getInstance(getContext()).speakTTSVoice(mOuterGuideVoiceStrings[2]);
}
SharedPrefsMgr.getInstance(getContext()).putLong(KEY_SHARE_OUTER_GUIDE_TIME, time);
SharedPrefsMgr.getInstance(getContext()).putInt(KEY_SHARE_OUTER_GUIDE, ++shareItemSum);
} else {
Logger.e(TAG, " playShareOuterGuideVoice else < ONE_DAY_TIME ");
}
}
}
}
private void playShareGuideVoice() {
long intervalTime = SharedPrefsMgr.getInstance(getContext()).getLong(KEY_CLICK_SHARE_TIME, 0);
int shareItemSum = SharedPrefsMgr.getInstance(getContext()).getInt(KEY_CLICK_SHARE_BUTTON, 0);
@@ -448,33 +359,6 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
}
private void showSlideMapVoiceGuide() {
long intervalTime = SharedPrefsMgr.getInstance(getContext()).getLong(KEY_SHARE_INNER_GUIDE_TIME, 0);
int shareItemSum = SharedPrefsMgr.getInstance(getContext()).getInt(KEY_SHARE_INNER_GUIDE, 0);
if (shareItemSum < VOICE_ALERT_COUNT) {
long time = System.currentTimeMillis();
Logger.d(TAG, " showSlideMapVoiceGuide shareItemSum = " + shareItemSum + "---- intervalTime = " + intervalTime + "---time = " + time);
if (intervalTime == 0) {
SharedPrefsMgr.getInstance(getContext()).putLong(KEY_SHARE_INNER_GUIDE_TIME, time);
SharedPrefsMgr.getInstance(getContext()).putInt(KEY_SHARE_INNER_GUIDE, ++shareItemSum);
AIAssist.getInstance(getContext()).speakTTSVoice(mInnerGuideVoiceStrings[0]);
} else {
Logger.d(TAG, " showSlideMapVoiceGuide else interval = " + (time - intervalTime));
if ((time - intervalTime) > ONE_DAY_TIME) {
if (shareItemSum == 1) {
AIAssist.getInstance(getContext()).speakTTSVoice(mInnerGuideVoiceStrings[1]);
} else {
AIAssist.getInstance(getContext()).speakTTSVoice(mInnerGuideVoiceStrings[2]);
}
SharedPrefsMgr.getInstance(getContext()).putLong(KEY_SHARE_INNER_GUIDE_TIME, time);
SharedPrefsMgr.getInstance(getContext()).putInt(KEY_SHARE_INNER_GUIDE, ++shareItemSum);
} else {
Logger.e(TAG, " showSlideMapVoiceGuide else < ONE_DAY_TIME ");
}
}
}
}
@Override
public void onTouch(MotionEvent motionEvent) {
@@ -484,11 +368,6 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
break;
case MotionEvent.ACTION_UP:
if (isGreaterThanOneDay()) {
if (motionEvent.getX() > 200) {
showSlideMapVoiceGuide();
}
}
break;
@@ -549,10 +428,6 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
mClickShareVoiceStrings =
getContext().getResources().getStringArray(R.array.click_share_voice_guide_array);
mInnerGuideVoiceStrings =
getContext().getResources().getStringArray(R.array.search_voice_guide_inner_array);
mOuterGuideVoiceStrings =
getContext().getResources().getStringArray(R.array.search_voice_guide_outer_array);
//TODO 因为衡阳6.30交付没有2D模式临时方案进入vr模式不可缩放地图
// 进入鹰眼模式,设置手势缩放地图失效
@@ -772,19 +647,6 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
getString(R.string.module_ext_str_dots) : String.valueOf(amount));
}
@Override
public void renderUserInfo(UserInfo userInfo) {
if (!DebugConfig.isMapBased()) {
return;
}
if (userInfo != null) {
Logger.d(TAG, "renderUserInfo: " + userInfo);
RequestOptions options =
new RequestOptions().circleCrop().placeholder(R.drawable.model_ext_default_user_head).error(R.drawable.model_ext_default_user_head);
GlideApp.with(getContext()).asBitmap().apply(options).load(userInfo.getHeadImgurl()).into(new SkinAbleBitmapTarget(mUserHeadImg, options));
}
}
@Override
public void onMapModeChanged(EnumMapUI ui) {
if (mCameraMode == null) {
@@ -988,18 +850,6 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
} catch (Exception e) {
e.printStackTrace();
}
} else if (v.getId() == R.id.ivUserHeadImg) {
// 个人中心
try {
LaunchUtils.launchByPkg(getContext(), "com.zhidao.auto.personal");
// 埋点
final Map<String, Object> properties = new HashMap<>();
properties.put("type", 3);
ServiceApisManager.serviceApis.getAnalyticsApi().track("Launcher_APP_Icon",
properties);
} catch (Exception e) {
Logger.e(TAG, e, "打开个人中心Exception");
}
} else if (v.getId() == R.id.module_ext_enter_vr_mode) {
// 进入vr模式
mMApUIController.changeMapMode(EnumMapUI.Type_VR);

View File

@@ -1,5 +1,7 @@
package com.mogo.module.extensions.entrance;
import static com.mogo.module.share.constant.ShareConstants.KEY_SERVER_SHOW_DAY_COUNT;
import android.content.Context;
import android.util.ArrayMap;
@@ -8,8 +10,8 @@ import androidx.lifecycle.LifecycleOwner;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.mvp.Presenter;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
import com.mogo.eagle.core.network.utils.digest.DigestUtils;
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
@@ -19,14 +21,10 @@ import com.mogo.module.extensions.R;
import com.mogo.module.extensions.bean.CommonConfig;
import com.mogo.module.extensions.bean.CommonConfigResponse;
import com.mogo.module.extensions.net.GetConfigApiServices;
import com.mogo.module.extensions.net.UserInfoNetApiServices;
import com.mogo.module.extensions.userinfo.UserInfo;
import com.mogo.module.extensions.userinfo.UserInfoResponse;
import com.mogo.module.extensions.weather.Phenomena;
import com.mogo.module.extensions.weather.WeatherCallback;
import com.mogo.module.extensions.weather.WeatherInfo;
import com.mogo.module.extensions.weather.WeatherModel;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
import com.mogo.service.network.IMogoNetwork;
import com.mogo.service.statusmanager.IMogoMsgCenter;
import com.mogo.service.statusmanager.IMogoMsgCenterListener;
@@ -38,8 +36,6 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import static com.mogo.module.share.constant.ShareConstants.KEY_SERVER_SHOW_DAY_COUNT;
/**
* @author congtaowang
* @since 2020-01-07
@@ -105,13 +101,6 @@ public class EntrancePresenter extends Presenter<EntranceView> implements Weathe
public void onResume(@NonNull LifecycleOwner owner) {
super.onResume(owner);
isResumed = true;
if (userInfo != null) {
mView.renderUserInfo(userInfo);
}
if (DebugConfig.isNeedRequestUserInfo()) {
// 相当于每次onResume都会请求一下个人信息目的是能够相对及时的同步手机端的个人信息修改
requestUserInfo();
}
getCommonConfig();
}
@@ -179,56 +168,4 @@ public class EntrancePresenter extends Presenter<EntranceView> implements Weathe
});
}
private UserInfo userInfo;
public void requestUserInfo() {
Map<String, String> params = new ArrayMap<>();
params.put("sn", MoGoAiCloudClientConfig.getInstance().getSn());
params.put("source", "2");
String sign = createSign(params, "JGqZw9");
params.put("sig", sign);
mNetWork.create(UserInfoNetApiServices.class, HostConst.CARLIFE_HOST).requestUserInfo(params).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new SingleObserver<UserInfoResponse>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(UserInfoResponse userInfoBaseResponse) {
userInfo = userInfoBaseResponse.getResult();
if (isResumed) {
if (userInfo != null) {
Logger.d(TAG, "获取个人信息成功: " + userInfo);
mView.renderUserInfo(userInfo);
} else {
Logger.e(TAG, "获取个人信息失败");
}
}
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
Logger.e(TAG, e, "获取个人信息失败==");
}
});
}
private String createSign(Map<String, String> map, String salt) {
try {
StringBuilder queryString = new StringBuilder();
for (Map.Entry<String, String> entry : map.entrySet()) {
queryString.append(entry.getKey())
.append("=")
.append(entry.getValue())
.append("&");
}
queryString.append("key=").append(DigestUtils.shaHex(salt));
return DigestUtils.shaHex(queryString.toString()).toUpperCase();
} catch (Exception e) {
e.printStackTrace();
Logger.e(TAG, e, "createSign()");
return "";
}
}
}