diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 8e9756d758..b59a552525 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -77,6 +77,7 @@ diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java index 8c00446e99..5e5c66109a 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java @@ -338,11 +338,13 @@ public class NaviClient implements IMogoNavi { return; } if ( mAimlessModeStatus && !isNaviing() ) { + mAMapNavi.startSpeak(); mAMapNavi.startAimlessMode( AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED ); mAimlessStatus = true; Logger.d( TAG, "开启巡航成功" ); } else { mAimlessStatus = false; + mAMapNavi.stopSpeak(); Logger.d( TAG, "开启巡航失败" ); } } @@ -353,6 +355,7 @@ public class NaviClient implements IMogoNavi { return; } mAMapNavi.stopAimlessMode(); + mAMapNavi.stopSpeak(); mAimlessStatus = false; Logger.d( TAG, "关闭巡航成功" ); } diff --git a/modules/mogo-module-authorize/src/main/res/values/colors.xml b/modules/mogo-module-authorize/src/main/res/values/colors.xml index 5886e84810..e32111d451 100644 --- a/modules/mogo-module-authorize/src/main/res/values/colors.xml +++ b/modules/mogo-module-authorize/src/main/res/values/colors.xml @@ -3,5 +3,5 @@ #99FFFFFF #FFFFFF #FFFFFF - #7F000000 + #99000000 \ No newline at end of file diff --git a/modules/mogo-module-common/src/main/res/values/colors.xml b/modules/mogo-module-common/src/main/res/values/colors.xml index 0856fc721d..3b0ff8796d 100644 --- a/modules/mogo-module-common/src/main/res/values/colors.xml +++ b/modules/mogo-module-common/src/main/res/values/colors.xml @@ -1,6 +1,6 @@ - #7f000000 + #99000000 #FFFFFF #FFFFFF #FFFFFF diff --git a/modules/mogo-module-common/src/main/res/values/styles.xml b/modules/mogo-module-common/src/main/res/values/styles.xml index e12e13d325..047f2a7f55 100644 --- a/modules/mogo-module-common/src/main/res/values/styles.xml +++ b/modules/mogo-module-common/src/main/res/values/styles.xml @@ -5,7 +5,7 @@ @null true @android:color/transparent - 0.4 + 0.6 true @null @android:color/transparent diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/StrokeTextView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/StrokeTextView.java new file mode 100644 index 0000000000..65e37ad663 --- /dev/null +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/StrokeTextView.java @@ -0,0 +1,101 @@ +package com.mogo.module.extensions.weather; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.text.Layout; +import android.text.TextPaint; +import android.util.AttributeSet; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.appcompat.widget.AppCompatTextView; + +import com.mogo.skin.support.IMogoSkinCompatSupportable; +import com.mogo.skin.support.helper.MogoSkinCompatTextHelperDelegate; + +import java.lang.reflect.Field; + +/** + * 带边框的textView + * + * @author tongchenfei + */ +public class StrokeTextView extends AppCompatTextView implements IMogoSkinCompatSupportable { + + private MogoSkinCompatTextHelperDelegate textHelperDelegate; + + public StrokeTextView(Context context) { + this(context,null); + } + + public StrokeTextView(Context context, @Nullable AttributeSet attrs) { + this(context, attrs, 0); + } + + public StrokeTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + textHelperDelegate = new MogoSkinCompatTextHelperDelegate(this); + } + + @Override + public void setTextAppearance(Context context, int resId) { + super.setTextAppearance(context, resId); + textHelperDelegate.onSetTextAppearance(context, resId); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + int widthMode = MeasureSpec.getMode(widthMeasureSpec); + int widthSize = getMeasuredWidth(); + if (widthMode == MeasureSpec.AT_MOST) { + widthSize += 20; + Layout mLayout = getLayout(); + if (mLayout != null) { + mLayout.increaseWidthTo(widthSize); + } + setMeasuredDimension(widthSize, getMeasuredHeight()); + } + } + + @Override + protected void onDraw(Canvas canvas) { + int oriColor = getCurrentTextColor(); + // 先画边框 + TextPaint paint = getPaint(); + setCurTextColor(Color.YELLOW); + paint.setStyle(Paint.Style.STROKE); + paint.setShadowLayer(10F, 0F, 0F, Color.YELLOW); + float b = getTextSize() / 20; + float shadowWidth = Math.max(b, 2f); + paint.setStrokeWidth(shadowWidth); + super.onDraw(canvas); + // 再画文字 + setCurTextColor(oriColor); + paint.setStyle(Paint.Style.FILL); + super.onDraw(canvas); + } + + /** + * 通过反射直接设置mCurTextColor这个变量,直接调用{@link #setTextColor(int)}会出现重复递归的问题 + * + * @param color 要设置的颜色值 + */ + private void setCurTextColor(int color) { + try { + Field mCurTextColor = TextView.class.getDeclaredField("mCurTextColor"); + mCurTextColor.setAccessible(true); + mCurTextColor.set(this,color); + mCurTextColor.setAccessible(false); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } + } + + @Override + public void applySkin() { + textHelperDelegate.applySkin(); + } +} diff --git a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml index 4446c317a0..6adf068080 100644 --- a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml +++ b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml @@ -290,5 +290,4 @@ android:layout_height="wrap_content" android:visibility="gone" app:constraint_referenced_ids="btnShowDrawableTipNoSize,btnShowDrawableTip,btnShowTextTip,btnDebugCtrlNaviView,btnDebugCtrlSubView,btnDebugCtrlTopView,btnDebugAddBottomLayerView" /> - \ No newline at end of file diff --git a/modules/mogo-module-main/build.gradle b/modules/mogo-module-main/build.gradle index 62b7e4e96a..e1ebdfcbef 100644 --- a/modules/mogo-module-main/build.gradle +++ b/modules/mogo-module-main/build.gradle @@ -39,6 +39,7 @@ dependencies { implementation rootProject.ext.dependencies.androidxappcompat implementation rootProject.ext.dependencies.androidxconstraintlayout implementation rootProject.ext.dependencies.arouter + implementation rootProject.ext.dependencies.callchatprovider annotationProcessor rootProject.ext.dependencies.aroutercompiler compileOnly rootProject.ext.dependencies.adasapi compileOnly rootProject.ext.dependencies.adasconfigapi diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java index 713108df6c..0f28fa8859 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java @@ -21,6 +21,7 @@ import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.module.common.MogoApisHandler; +import com.mogo.module.common.api.CallChatApi; import com.mogo.module.common.map.MapCenterPointStrategy; import com.mogo.module.common.map.Scene; import com.mogo.module.main.cards.MogoModulesManager; @@ -111,6 +112,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme FloatingViewHandler.init( mFloatingLayout ); mServiceApis.getOnlineCarPanelApi().initContainer( R.id.module_main_id_message_history_fragment_container, this ); + CallChatApi.getInstance().getApiProvider().initVehicleTeamContainer("init", R.id.module_main_id_message_history_fragment_container, this); } // 隐藏布局 @@ -366,6 +368,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme mServiceApis.getRefreshStrategyControllerApi().clearAllData(); AIAssist.getInstance( this ).release(); mServiceApis.getOnlineCarPanelApi().clear(); + CallChatApi.getInstance().getApiProvider().initVehicleTeamContainer("init", 0, null); ContextHolderUtil.releaseContext(); MogoModulesManager.getInstance().onDestroy(); SchemeIntent.getInstance().clear(); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XSurroundingDetailAdapter.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XSurroundingDetailAdapter.java index b7a6665727..08c4d3abe2 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XSurroundingDetailAdapter.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XSurroundingDetailAdapter.java @@ -77,17 +77,31 @@ public class V2XSurroundingDetailAdapter extends RecyclerView.Adapter { - Logger.d(V2XConst.MODULE_NAME, "反馈有用"); + Logger.d(V2XConst.MODULE_NAME, "反馈有用 position = " + position); roadReportTrue(exploreWay); + showView(true); }); mUnHeartLikeView.setOnClickCallListener(v -> { - Logger.d(V2XConst.MODULE_NAME, "反馈无用"); + Logger.d(V2XConst.MODULE_NAME, "反馈无用 position = " + position); roadReportErr(exploreWay); + showView(true); }); } + private void showView(boolean isAlreadyShow) { + if (isAlreadyShow) { + mHeartLikeView.setVisibility(View.GONE); + mUnHeartLikeView.setVisibility(View.GONE); + } else { + mHeartLikeView.setVisibility(View.VISIBLE); + mUnHeartLikeView.setVisibility(View.VISIBLE); + } + } + /** * 反馈路况正确 */ diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XFatigueDrivingVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XFatigueDrivingVH.java index 2da020805c..ed99977aa1 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XFatigueDrivingVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XFatigueDrivingVH.java @@ -32,7 +32,7 @@ import com.mogo.module.v2x.voice.V2XVoiceManager; public class V2XFatigueDrivingVH extends V2XBaseViewHolder { private TextView mTvAddress, mTvAddressDistance; - private ImageView mIvToNav; + private ImageView mIvToNav, mIvClose; private MarkerExploreWay mNoveltyInfo; private V2XPushMessageEntity mV2XPushMessageEntity; @@ -45,7 +45,9 @@ public class V2XFatigueDrivingVH extends V2XBaseViewHolder { mTvAddress = itemView.findViewById(R.id.tvAddress); mTvAddressDistance = itemView.findViewById(R.id.tvAddressDistance); mIvToNav = itemView.findViewById(R.id.ivToNav); + mIvClose = itemView.findViewById(R.id.ivClose); mIvToNav.setOnClickListener(v -> triggerStartNavi(mNoveltyInfo)); + mIvClose.setOnClickListener(v -> V2XFatigueDrivingScenario.getInstance().close()); // 设置视图状态监听 itemView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/panel/BackRefreshInfo.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/panel/BackRefreshInfo.java new file mode 100644 index 0000000000..2291ee041c --- /dev/null +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/panel/BackRefreshInfo.java @@ -0,0 +1,10 @@ +package com.mogo.module.v2x.entity.panel; + +import java.io.Serializable; + +/** + * 返回刷新 + */ +public class BackRefreshInfo implements Serializable { + +} diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XEventPanelFragment.kt b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XEventPanelFragment.kt index b2c539f83a..3eb198c1d0 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XEventPanelFragment.kt +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XEventPanelFragment.kt @@ -9,7 +9,6 @@ import android.text.Spanned import android.text.style.AbsoluteSizeSpan import android.text.style.ForegroundColorSpan import android.text.style.StyleSpan -import android.util.Log import android.view.View import android.widget.ImageView import android.widget.RadioButton @@ -31,6 +30,7 @@ import com.mogo.module.v2x.V2XConst.MODULE_NAME import com.mogo.module.v2x.V2XServiceManager import com.mogo.module.v2x.adapter.V2XEventPagerAdapter import com.mogo.module.v2x.adapter.V2XSurroundingDetailAdapter +import com.mogo.module.v2x.entity.panel.BackRefreshInfo import com.mogo.module.v2x.entity.panel.SurroundingConstruction import com.mogo.module.v2x.presenter.EventPanelPresenter import com.mogo.module.v2x.utils.TrackUtils @@ -211,6 +211,7 @@ class V2XEventPanelFragment : MvpFragment { try { mV2XScenarioHistoryFragment.fromVoice = true - mRbScenarioHistory?.isChecked = true + if (mRbScenarioHistory?.isChecked == true) { + mV2XScenarioHistoryFragment.ttsForVoiceCheckout() + } else { + mRbScenarioHistory?.isChecked = true + } } catch (e: java.lang.Exception) { e.printStackTrace() } @@ -351,7 +356,11 @@ class V2XEventPanelFragment : MvpFragment { try { mV2XSurroundingFragment.fromVoice = true - mRbSurroundingEvent?.isChecked = true + if (mRbSurroundingEvent?.isChecked == true) { + mV2XSurroundingFragment.ttsForVoiceCheckout() + } else { + mRbSurroundingEvent?.isChecked = true + } } catch (e: java.lang.Exception) { e.printStackTrace() } @@ -359,7 +368,11 @@ class V2XEventPanelFragment : MvpFragment { try { mV2XShareEventsFragment.fromVoice = true - mRbShareEvents?.isChecked = true + if (mRbShareEvents?.isChecked == true) { + mV2XShareEventsFragment.ttsForVoiceCheckout() + } else { + mRbShareEvents?.isChecked = true + } } catch (e: java.lang.Exception) { e.printStackTrace() } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XSurroundingFragment.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XSurroundingFragment.java index 6e444aa4f9..58ee3fa1a9 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XSurroundingFragment.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XSurroundingFragment.java @@ -42,6 +42,7 @@ import com.mogo.module.v2x.V2XServiceManager; import com.mogo.module.v2x.adapter.V2XShareEventAdapter; import com.mogo.module.v2x.adapter.V2XSurroundingAdapter; import com.mogo.module.v2x.adapter.V2XSurroundingDetailAdapter; +import com.mogo.module.v2x.entity.panel.BackRefreshInfo; import com.mogo.module.v2x.entity.panel.SurroundingConstruction; import com.mogo.module.v2x.listener.SurroundingItemClickListener; import com.mogo.module.v2x.presenter.SurroundingEventPresenter; @@ -55,6 +56,8 @@ import com.mogo.utils.WorkThreadHandler; import com.mogo.utils.logger.Logger; import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; import java.util.ArrayList; import java.util.Collection; @@ -125,7 +128,6 @@ public class V2XSurroundingFragment extends MvpFragment { ivCar.setImageResource(R.drawable.icon_car_red) - ivCarTop.visibility = View.VISIBLE } // 取快递 V2XPoiTypeEnum.ALERT_TRAFFIC_EXPRESS -> { ivCar.setImageResource(R.drawable.v_to_x_marker_express) - ivBg.visibility = View.GONE } // 顺风车 V2XPoiTypeEnum.ALERT_TRAFFIC_TAXI -> { ivCar.setImageResource(R.drawable.v_to_x_marker_taxi) - ivBg.visibility = View.GONE } } } diff --git a/modules/mogo-module-v2x/src/main/res/drawable/v2x_selector_colse.xml b/modules/mogo-module-v2x/src/main/res/drawable/v2x_selector_close.xml similarity index 100% rename from modules/mogo-module-v2x/src/main/res/drawable/v2x_selector_colse.xml rename to modules/mogo-module-v2x/src/main/res/drawable/v2x_selector_close.xml diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fatigue_driving.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fatigue_driving.xml index 728d647def..e6ffe54e9d 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fatigue_driving.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fatigue_driving.xml @@ -10,7 +10,8 @@ android:paddingTop="@dimen/dp_42" android:paddingEnd="@dimen/dp_62" android:paddingBottom="@dimen/dp_42" - app:roundLayoutRadius="@dimen/dp_40"> + app:roundLayoutRadius="@dimen/dp_40" + tools:layout_height="wrap_content"> @@ -40,6 +41,7 @@ android:id="@+id/tvAddress" android:layout_width="0dp" android:layout_height="wrap_content" + android:layout_marginTop="@dimen/dp_15" android:layout_marginEnd="@dimen/dp_30" android:layout_marginBottom="@dimen/dp_20" android:textColor="@color/v2x_FFF_333" @@ -69,8 +71,18 @@ android:id="@+id/ivToNav" android:layout_width="@dimen/module_v2x_event_button_size" android:layout_height="@dimen/module_v2x_event_button_size" + android:layout_marginEnd="@dimen/dp_40" android:src="@drawable/selector_nav_btn" app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/ivClose" + app:layout_constraintTop_toTopOf="parent" /> + + diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fault_help.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fault_help.xml index cad8477a05..6516a9ead7 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fault_help.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fault_help.xml @@ -8,69 +8,79 @@ android:paddingStart="@dimen/dp_62" android:paddingTop="@dimen/dp_42" android:paddingEnd="@dimen/dp_62" - android:paddingBottom="@dimen/dp_42"> + android:paddingBottom="@dimen/dp_42" + tools:layout_height="wrap_content"> - + app:layout_constraintTop_toTopOf="parent"> - + - + - + + + + + diff --git a/modules/mogo-module-v2x/src/main/res/layout/view_marker_event_car.xml b/modules/mogo-module-v2x/src/main/res/layout/view_marker_event_car.xml index 231eec52a2..79c46cd09d 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/view_marker_event_car.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/view_marker_event_car.xml @@ -24,24 +24,11 @@ android:id="@+id/ivCar" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:rotation="90" + android:rotation="45" app:layout_constraintBottom_toBottomOf="@+id/ivBg" app:layout_constraintEnd_toEndOf="@+id/ivBg" app:layout_constraintStart_toStartOf="@+id/ivBg" app:layout_constraintTop_toTopOf="@+id/ivBg" tools:src="@drawable/v_to_x_warning_car_red" /> - \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/layout/window_road_event_detail.xml b/modules/mogo-module-v2x/src/main/res/layout/window_road_event_detail.xml index 028b4ceb1f..79f85e14d1 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/window_road_event_detail.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/window_road_event_detail.xml @@ -24,9 +24,9 @@ android:id="@+id/btnCloseWindow" android:layout_width="@dimen/dp_88" android:layout_height="@dimen/dp_88" - android:layout_marginEnd="@dimen/dp_28" + android:layout_marginEnd="@dimen/dp_32" android:layout_marginBottom="@dimen/dp_40" - android:background="@drawable/v2x_panel_close" + android:background="@drawable/v2x_selector_close" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintRight_toRightOf="parent" /> diff --git a/skin/mogo-skin-light/src/main/module-v2x-res/drawable/v2x_selector_colse_light.xml b/skin/mogo-skin-light/src/main/module-v2x-res/drawable/v2x_selector_close_light.xml similarity index 100% rename from skin/mogo-skin-light/src/main/module-v2x-res/drawable/v2x_selector_colse_light.xml rename to skin/mogo-skin-light/src/main/module-v2x-res/drawable/v2x_selector_close_light.xml