diff --git a/.idea/misc.xml b/.idea/misc.xml index 707ee6e613..2dc54c489f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/src/nwd/AndroidManifest.xml b/app/src/nwd/AndroidManifest.xml index c11d678710..ba50fd7bec 100644 --- a/app/src/nwd/AndroidManifest.xml +++ b/app/src/nwd/AndroidManifest.xml @@ -4,7 +4,6 @@ package="com.mogo.launcher" android:sharedUserId="android.uid.system"> - 20 ) { + mDefaultZoomLevel = 20; + } } else { - mMapView.zoomOut(); + mDefaultZoomLevel -= 1.5f; + if ( mDefaultZoomLevel < 1 ) { + mDefaultZoomLevel = 1; + } } - Logger.i( TAG, "mapview zoom = " + mMapView.getMap().getCameraPosition().zoom ); + changeZoom( mDefaultZoomLevel ); + Logger.i( TAG, "mapview zoom = " + mDefaultZoomLevel ); } } @@ -560,6 +570,7 @@ public class AMapNaviViewWrapper implements IMogoMapView, if ( DebugConfig.isDebug() ) { Logger.d( TAG, Log.getStackTraceString( new Throwable() ) ); } + Logger.d( TAG, "解锁锁车" ); mockTouchEvent(); } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java index 8df727a3bf..be606e22e7 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java @@ -2,6 +2,7 @@ package com.mogo.module.extensions.entrance; import android.content.Intent; import android.graphics.Color; +import android.graphics.Rect; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; @@ -54,6 +55,7 @@ import com.mogo.service.module.IMogoAddressManager; import com.mogo.service.module.IMogoModuleProvider; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.statusmanager.IMogoStatusManager; +import com.mogo.utils.WindowUtils; import java.util.ArrayList; import java.util.Arrays; @@ -61,6 +63,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import retrofit2.http.HEAD; + /** * @author congtaowang * @since 2020-01-07 @@ -117,6 +121,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent private TextView ivMode; private IMogoPolyline iMogoPolyline; + public static boolean isClickShare; @Override protected int getLayoutId() { @@ -129,7 +134,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mIMogoAuthorizeModuleManager = (IMogoAuthorizeModuleManager) ARouter.getInstance().build(AuthorizeConstant.PROVIDER_MODULE).navigation(getContext()); mIMogoAuthorizeModuleManager.registerAuthorizeListener(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE, this); - mEntrancePresenter = new EntrancePresenter(getContext(), this, mIMogoAuthorizeModuleManager); + mEntrancePresenter = new EntrancePresenter( getContext(), this, mIMogoAuthorizeModuleManager ); mMogoFragmentManager = mApis.getFragmentManagerApi(); mMogoAddressManager = mApis.getAddressManagerApi(); @@ -138,7 +143,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mSearch = findViewById( R.id.module_entrance_id_search ); mSearch.setOnClickListener( view -> { - setMarkerStatus(true); + setMarkerStatus( true ); mSearchProvider = ( IMogoModuleProvider ) ARouter.getInstance() .build( MogoModulePaths.PATH_MODULE_SEARCH ) .navigation(); @@ -153,7 +158,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mHome = findViewById( R.id.module_entrance_id_home ); mHome.setOnClickListener( view -> { - setMarkerStatus(true); + setMarkerStatus( true ); mMogoAddressManager.goHome(); mApis.getAdasControllerApi().closeADAS(); @@ -161,7 +166,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mCompany = findViewById( R.id.module_entrance_id_company ); mCompany.setOnClickListener( view -> { - setMarkerStatus(true); + setMarkerStatus( true ); mMogoAddressManager.goCompany(); mApis.getAdasControllerApi().closeADAS(); @@ -169,11 +174,36 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mUploadRoadCondition = findViewById( R.id.module_entrance_id_upload_road_condition ); mUploadRoadCondition.setOnClickListener( view -> { - ShareControl.getInstance( getActivity() ).showDialog(); - traceData( "1" ); + isClickShare = true; + if (mIMogoAuthorizeModuleManager.needAuthorize()) { + mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE); + } else { + ShareControl.getInstance( getActivity() ).showDialog(); + traceData( "1" ); + } } ); mVRMode = findViewById( R.id.module_entrance_id_vr_mode ); mVRMode.setOnClickListener( view -> { + + mMogoStatusManager.setUserInteractionStatus( TAG, true, false ); + Rect mBoundRect = new Rect(); + final int paddingTop = WindowUtils.dip2px( getContext(), 250 ); + final int paddingBottom = WindowUtils.dip2px( getContext(), 150 ); + final int paddingRight = WindowUtils.dip2px( getContext(), 150 ); + final int paddingLeft = WindowUtils.dip2px( getContext(), 650 ); + + mBoundRect.bottom = paddingBottom; + mBoundRect.top = paddingTop; + mBoundRect.left = paddingLeft; + mBoundRect.right = paddingRight; + mMApUIController.showBounds( TAG, + new MogoLatLng( + mService.getSingletonLocationClient( getContext() ).getLastKnowLocation().getLatitude(), + mService.getSingletonLocationClient( getContext() ).getLastKnowLocation().getLongitude() + ), + Arrays.asList( new MogoLatLng( 39.9736012000, 116.4220762300 ) ), + mBoundRect, + false ); } ); mMove2CurrentLocation = findViewById( R.id.module_entrance_id_move2_current_location ); @@ -223,36 +253,38 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mSpeedLimitUnit = findViewById( R.id.module_entrance_id_speed_limit_unit ); - mApis.getIntentManagerApi().registerIntentListener(AUTONAVI_STANDARD_BROADCAST_RECV, new IMogoIntentListener() { - @Override public void onIntentReceived(String intentStr, Intent intent) { - int key_type = intent.getIntExtra("KEY_TYPE", 0); + mApis.getIntentManagerApi().registerIntentListener( AUTONAVI_STANDARD_BROADCAST_RECV, new IMogoIntentListener() { + @Override + public void onIntentReceived( String intentStr, Intent intent ) { + int key_type = intent.getIntExtra( "KEY_TYPE", 0 ); - int type = intent.getIntExtra("EXTRA_TYPE", -1); - int opera_type = intent.getIntExtra("EXTRA_OPERA", -1); - if (key_type == 10027) { - if (opera_type == 0) { - ivMode.setSelected(false); - } else if (opera_type == 1) { - ivMode.setSelected(true); + int type = intent.getIntExtra( "EXTRA_TYPE", -1 ); + int opera_type = intent.getIntExtra( "EXTRA_OPERA", -1 ); + if ( key_type == 10027 ) { + if ( opera_type == 0 ) { + ivMode.setSelected( false ); + } else if ( opera_type == 1 ) { + ivMode.setSelected( true ); } ivMode.setText( - getString( ivMode.isSelected() ? R.string.mode_car_up : R.string.mode_north_up ) ); + getString( ivMode.isSelected() ? R.string.mode_car_up : R.string.mode_north_up ) ); } } - }); + } ); } - protected void setMarkerStatus(boolean show){ + protected void setMarkerStatus( boolean show ) { mMogoStatusManager.setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY, show + MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY, show ); } private static final String AUTONAVI_STANDARD_BROADCAST_RECV = - "AUTONAVI_STANDARD_BROADCAST_RECV"; + "AUTONAVI_STANDARD_BROADCAST_RECV"; + @NonNull @Override protected EntrancePresenter createPresenter() { @@ -280,28 +312,34 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent @Override public void onDestroyView() { super.onDestroyView(); - if (mEntrancePresenter != null) { + if ( mEntrancePresenter != null ) { mEntrancePresenter.unregisterUnWake(); } + isClickShare = false; mIMogoAuthorizeModuleManager.unregisterAuthorizeListener(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE); } @Override public void authorizeSuccess() { - Log.d(TAG, "authorizeSuccess --------> "); - mEntrancePresenter.handleNeedAuthorizeCmd(); + Log.d(TAG, "authorizeSuccess --------> isClickShare = " + isClickShare); + if (isClickShare) { + ShareControl.getInstance( getActivity() ).showDialog(); + traceData( "1" ); + } else { + mEntrancePresenter.handleNeedAuthorizeCmd(); + } } @Override - public void authorizeFailed(String errorMsg) { - Log.e(TAG, "authorizeFailed --------> "); + public void authorizeFailed( String errorMsg ) { + Log.e( TAG, "authorizeFailed --------> " ); } @Override - public void forbiddenVoiceWhenAuthorize(String cmd) { - Log.d(TAG, "forbiddenVoiceWhenAuthorize --------> "); + public void forbiddenVoiceWhenAuthorize( String cmd ) { + Log.d( TAG, "forbiddenVoiceWhenAuthorize --------> " ); } @@ -328,7 +366,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent ivMode.setVisibility( View.VISIBLE ); mExitNavi.setVisibility( View.VISIBLE ); mMApUIController.setPointToCenter( 0.675926, 0.77552 ); - mMApUIController.changeMapMode(ivMode.isSelected()?EnumMapUI.NorthUP_2D :EnumMapUI.CarUp_2D ); + mMApUIController.changeMapMode( ivMode.isSelected() ? EnumMapUI.NorthUP_2D : EnumMapUI.CarUp_2D ); } @Override @@ -339,7 +377,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mExitNavi.setVisibility( View.GONE ); mSpeedLimit.setVisibility( View.GONE ); mMApUIController.setPointToCenter( 0.66145, 0.590688 ); - mMApUIController.changeMapMode(EnumMapUI.NorthUP_2D); + mMApUIController.changeMapMode( EnumMapUI.NorthUP_2D ); } @Override diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java index 520194c88a..d5945ccce5 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java @@ -142,6 +142,8 @@ public class EntrancePresenter extends Presenter { @Override public void onIntentReceived(String intentStr, Intent intent) { mVoiceCmdType = intentStr; + EntranceFragment.isClickShare = false; + String data = intent.getStringExtra("data"); Log.d(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>data =" + data + " >>> needAuthorize = " + mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)); if (intentStr.equals(ExtensionsModuleConst.GO_TO_SHARE)) { //我要分享 --ok diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_right_arrow.png b/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_right_arrow.png new file mode 100644 index 0000000000..348a125779 Binary files /dev/null and b/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_right_arrow.png differ diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_right_arrow.png b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_right_arrow.png new file mode 100644 index 0000000000..3482d56ece Binary files /dev/null and b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_right_arrow.png differ diff --git a/modules/mogo-module-extensions/src/main/res/drawable/module_ext_dw_grey_bottom_bkg.xml b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_dw_grey_bottom_bkg.xml new file mode 100644 index 0000000000..68f51f1d56 --- /dev/null +++ b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_dw_grey_bottom_bkg.xml @@ -0,0 +1,5 @@ + + + + + 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 2fb0371afd..46c37d2177 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 @@ -146,7 +146,7 @@ android:layout_height="@dimen/module_ext_operation_panel_vr_height" android:background="@drawable/module_ext_dw_top_corner_bkg" android:orientation="vertical" - android:visibility="gone"> + android:visibility="visible"> + app:layout_constraintTop_toTopOf="parent" /> - - - - + app:layout_constraintTop_toTopOf="parent"> + + + + + + + android:textColor="#FFFFFF" + android:textSize="@dimen/module_ext_weather_temp_desc_textSize" /> 24px 15px + + 9px + 9px + 18px + 18px + -1px \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml index 05f3fc78bc..faf483cc84 100644 --- a/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml @@ -88,4 +88,10 @@ 24px 28px + 17px + 17px + 36px + 36px + -2px + \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/values/dimens.xml b/modules/mogo-module-extensions/src/main/res/values/dimens.xml index bb5f4d1780..5e54d8ef68 100644 --- a/modules/mogo-module-extensions/src/main/res/values/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values/dimens.xml @@ -88,4 +88,10 @@ 24px 28px + 17px + 17px + 36px + 36px + -2px + \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/values/strings.xml b/modules/mogo-module-extensions/src/main/res/values/strings.xml index 52dbe4bee8..bb5d91252c 100644 --- a/modules/mogo-module-extensions/src/main/res/values/strings.xml +++ b/modules/mogo-module-extensions/src/main/res/values/strings.xml @@ -20,28 +20,31 @@ 退出导航 继续导航 退出全览 - 车头 - 正北 + 车头 + 正北 - + 你好小智,播放音乐 - 你好小智,我要听音乐 你好小智,播放赵磊的歌 你好小智,我想听成都 你好小智,打开导航 - 你好小智,我要去拉萨 + 你好小智,我要回家 你好小智,我要去加油站 你好小智,导航去西单商场 你好小智,打开行车记录仪 你好小智,打开收音机 你好小智,调频到97.4 - 你好小智,调频到103.9 你好小智,今天天气怎么样 - 你好小智,北京明天天气怎么样 你好小智,打开车聊聊 你好小智,我想聊天 你好小智,中关村堵不堵 - 你好小智,打开探路 - 你好小智,附近路况 + 你好小智,前方路况怎么样 + 你好小智,上报路况 + 你好小智,分享这首歌 + 你好小智,打开辅助驾驶 + 你好小智,查询附近的人 + 你好小智,音量开到百分之三十 + 你好小智,打开全部应用 + 你好小智,返回桌面 diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/CardIntroduceConfigs.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/CardIntroduceConfigs.java index 3c928968d1..70124fa932 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/CardIntroduceConfigs.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/CardIntroduceConfigs.java @@ -5,6 +5,7 @@ import android.content.Context; import com.mogo.commons.voice.AIAssist; import com.mogo.commons.voice.VoicePreemptType; import com.mogo.module.common.ModuleNames; +import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.utils.CommonUtils; import com.mogo.utils.WorkThreadHandler; import com.mogo.utils.logger.Logger; @@ -30,6 +31,7 @@ public class CardIntroduceConfigs { public static String sBroadcastConfigKey; public static Map< String, CardIntroduceConfig > sConfigs = new HashMap<>(); + private static IMogoStatusManager sStatusManager; static { sConfigs.put( ModuleNames.CARD_TYPE_BUSINESS_OPERATION, new CardIntroduceConfig( ModuleNames.CARD_TYPE_BUSINESS_OPERATION, "", 3 ) ); @@ -40,8 +42,8 @@ public class CardIntroduceConfigs { sConfigs.put( ModuleNames.CARD_TYPE_NOVELTY, new CardIntroduceConfig( ModuleNames.CARD_TYPE_NOVELTY, "新鲜事,邀你给同城车友分享沿途封路、拥堵消息", 0 ) ); } - public static void init( Context context ) { - + public static void init( Context context, IMogoStatusManager manager ) { + sStatusManager = manager; WorkThreadHandler.getInstance().post( () -> { sBroadcastConfigKey = KEY_VOICE_BROADCAST_CONFIG + CommonUtils.getVersionCode( context ); String configsStr = SharedPrefsMgr.getInstance( context ).getString( sBroadcastConfigKey ); @@ -58,16 +60,24 @@ public class CardIntroduceConfigs { } ); } - public static void broadcast( Context context, String type ) { + public static void broadcastCardIntroduce( Context context, String type ) { if ( sConfigs.get( type ) == null ) { Logger.d( TAG, "un support %s", type ); return; } + if ( sConfigs.get( type ).broadcastAmount >= 3 ) { - Logger.d( TAG, "do not broadcast %s cast amount = %s", type, type ); + Logger.d( TAG, "do not broadcastCardIntroduce %s cast amount = %s", type, type ); return; } + if ( sStatusManager != null ) { + if ( !sStatusManager.isAIAssistReady() ) { + Logger.w( TAG, "ai assist not ready: %s", type ); + return; + } + } + CardIntroduceConfig config = sConfigs.get( type ); config.broadcastAmount++; diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java index fb8370c364..94c87acb14 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java @@ -39,9 +39,7 @@ import com.mogo.service.intent.IMogoIntentManager; import com.mogo.service.module.IMogoModuleLifecycle; import com.mogo.service.module.IMogoModuleProvider; import com.mogo.service.module.ModuleType; -import com.mogo.utils.CommonUtils; import com.mogo.utils.ResourcesHelper; -import com.mogo.utils.WorkThreadHandler; import com.mogo.utils.logger.Logger; import com.mogo.utils.network.utils.GsonUtil; import com.mogo.utils.storage.SharedPrefsMgr; @@ -97,7 +95,7 @@ public class MogoModulesManager implements MogoModulesHandler, mMogoIntentManager = apis.getIntentManagerApi(); registerReceiver(); - CardIntroduceConfigs.init( getContext() ); + CardIntroduceConfigs.init( getContext(), apis.getStatusManagerApi() ); } private Context getContext() { @@ -283,7 +281,7 @@ public class MogoModulesManager implements MogoModulesHandler, SharedPrefsMgr.getInstance( getContext() ).putString( KEY_SORTED_CARD_MODULES, GsonUtil.jsonFromObject( mSortedCards ) ); Log.i( TAG, "enable & disable card cost " + ( System.currentTimeMillis() - start1 ) + "ms" ); - CardIntroduceConfigs.broadcast( mActivity, mEnableModuleName ); + CardIntroduceConfigs.broadcastCardIntroduce( mActivity, mEnableModuleName ); } @Override diff --git a/modules/mogo-module-main/src/main/res/drawable/module_main_dw_top_frame_bkg.xml b/modules/mogo-module-main/src/main/res/drawable/module_main_dw_top_frame_bkg.xml index f9f2d1743c..96231332f1 100644 --- a/modules/mogo-module-main/src/main/res/drawable/module_main_dw_top_frame_bkg.xml +++ b/modules/mogo-module-main/src/main/res/drawable/module_main_dw_top_frame_bkg.xml @@ -2,7 +2,7 @@ - + \ No newline at end of file diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java index 0ab0657e81..9de4be2d80 100644 --- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java +++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java @@ -85,7 +85,7 @@ public class MapPresenter extends Presenter implements }, 1_000 ); } else { // 30s后锁车刷新 - mRefreshStrategyController.restartAutoRefreshAtTime( 30 ); + mRefreshStrategyController.restartAutoRefreshAtTime( 30_000 ); } } else if (type == 2) { diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index 9fb7bd3426..97b99a52ab 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -13,12 +13,14 @@ import android.os.Looper; import android.os.Message; import android.os.Trace; import android.text.TextUtils; +import android.util.Log; import android.view.MotionEvent; import android.view.View; import androidx.annotation.NonNull; import com.alibaba.android.arouter.launcher.ARouter; +import com.mogo.commons.debug.DebugConfig; import com.mogo.commons.voice.AIAssist; import com.mogo.commons.voice.IMogoVoiceCmdCallBack; import com.mogo.map.MogoLatLng; @@ -451,6 +453,9 @@ public class MogoServices implements IMogoMapListener, } private void stopAutoRefreshStrategy() { + if ( DebugConfig.isDebug() ) { + Logger.d( TAG, Log.getStackTraceString( new Throwable() ) ); + } Logger.d( TAG, "stop auto refresh strategy" ); mHandler.removeMessages( ServiceConst.MSG_TYPE_REFRESH_DECREASE ); } @@ -814,6 +819,7 @@ public class MogoServices implements IMogoMapListener, } } else if ( MogoReceiver.ACTION_VOICE_READY.equals( command ) ) { AIAssist.getInstance( mContext ).flush(); + mStatusManager.setAIAssistReady( TAG, true ); } else if ( ServiceConst.COMMAND_MY_LOCATION.equals( command ) ) { if ( mStatusManager.isSearchUIShow() ) { return; @@ -907,12 +913,12 @@ public class MogoServices implements IMogoMapListener, return; } mInternalUnWakeupRegisterStatus = true; - AIAssist.getInstance( mContext ) - .registerUnWakeupCommand( ServiceConst.CMD_UN_WAKE_PREV, - ServiceConst.CMD_UN_WAKE_PREV_UN_WAKE_WORDS, this ); - AIAssist.getInstance( mContext ) - .registerUnWakeupCommand( ServiceConst.CMD_UN_WAKE_NEXT, - ServiceConst.CMD_UN_WAKE_NEXT_UN_WAKE_WORDS, this ); +// AIAssist.getInstance( mContext ) +// .registerUnWakeupCommand( ServiceConst.CMD_UN_WAKE_PREV, +// ServiceConst.CMD_UN_WAKE_PREV_UN_WAKE_WORDS, this ); +// AIAssist.getInstance( mContext ) +// .registerUnWakeupCommand( ServiceConst.CMD_UN_WAKE_NEXT, +// ServiceConst.CMD_UN_WAKE_NEXT_UN_WAKE_WORDS, this ); AIAssist.getInstance( mContext ) .registerUnWakeupCommand( ServiceConst.CMD_UN_WAKEUP_MY_LOCATION, ServiceConst.CMD_UN_WAKEUP_WORDS_MY_LOCATION, this ); @@ -926,10 +932,10 @@ public class MogoServices implements IMogoMapListener, return; } mInternalUnWakeupRegisterStatus = false; - AIAssist.getInstance( mContext ) - .unregisterUnWakeupCommand( ServiceConst.CMD_UN_WAKE_PREV, this ); - AIAssist.getInstance( mContext ) - .unregisterUnWakeupCommand( ServiceConst.CMD_UN_WAKE_NEXT, this ); +// AIAssist.getInstance( mContext ) +// .unregisterUnWakeupCommand( ServiceConst.CMD_UN_WAKE_PREV, this ); +// AIAssist.getInstance( mContext ) +// .unregisterUnWakeupCommand( ServiceConst.CMD_UN_WAKE_NEXT, this ); AIAssist.getInstance( mContext ) .unregisterUnWakeupCommand( ServiceConst.CMD_UN_WAKEUP_MY_LOCATION, this ); } @@ -974,7 +980,11 @@ public class MogoServices implements IMogoMapListener, @Override public void onTransaction( int size ) { if ( size == 0 ) { - mUiController.setPointToCenter( 0.66145, 0.661094 ); + if ( mNavi.isNaviing() ) { + mUiController.setPointToCenter( 0.675926, 0.77552 ); + } else { + mUiController.setPointToCenter( 0.66145, 0.661094 ); + } mUiController.showMyLocation( !mNavi.isNaviing() ); AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ServiceConst.CMD_BACK ); } else { diff --git a/modules/mogo-module-share/src/main/AndroidManifest.xml b/modules/mogo-module-share/src/main/AndroidManifest.xml index 82aba71bd0..fb780d7be4 100644 --- a/modules/mogo-module-share/src/main/AndroidManifest.xml +++ b/modules/mogo-module-share/src/main/AndroidManifest.xml @@ -1,2 +1,4 @@ + package="com.mogo.module.share" > + + diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java index d100a6e95b..4256364c5e 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java @@ -45,12 +45,12 @@ public class ShareControl implements IShareControl { boolean isAdasShow = mogoServiceApis.getStatusManagerApi().isADASShow(); Logger.d("ShareControl", "showDialog 判断adas是否展示: " + isAdasShow); - if (isAdasShow) { - mogoServiceApis.getAdasControllerApi().closeADAS(); - } +// if (isAdasShow) { +// mogoServiceApis.getAdasControllerApi().closeADAS(); +// } mShareDialog = new LaucherShareDialog(mContext); - mShareDialog.setCanceledOnTouchOutside(true); +// mShareDialog.setCanceledOnTouchOutside(true); mShareDialog.show(); } diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java index db5b2899af..fa9aa484db 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java @@ -1,11 +1,14 @@ package com.mogo.module.share.dialog; -import android.app.Dialog; import android.content.Context; import android.content.Intent; +import android.graphics.PixelFormat; import android.net.Uri; -import android.os.Bundle; +import android.os.Build; +import android.view.Gravity; +import android.view.LayoutInflater; import android.view.View; +import android.view.WindowManager; import android.widget.RelativeLayout; import android.widget.TextView; @@ -16,6 +19,7 @@ import com.mogo.module.share.R; import com.mogo.module.share.constant.ShareConstants; import com.mogo.service.MogoServicePaths; import com.mogo.service.analytics.IMogoAnalytics; +import com.mogo.utils.WindowUtils; import com.mogo.utils.logger.Logger; import java.util.HashMap; @@ -25,9 +29,15 @@ import java.util.Map; /** * @author lixiaopeng * @description 通用分享dialog + * + * 由于和左侧Adas冲突,改成了windowManager方式实现,这种实现方式的问题是,无法监测back键的事件 * @since 2020-01-10 */ -public class LaucherShareDialog extends Dialog implements View.OnClickListener { +public class LaucherShareDialog implements View.OnClickListener { + private static final String TAG = "LaucherShareDialog"; + + private boolean isShown = false; + private TextView txtOk; private RelativeLayout mBlockLayout; private RelativeLayout mOilPriceLayout; @@ -36,33 +46,29 @@ public class LaucherShareDialog extends Dialog implements View.OnClickListener { private Context mContext; private IMogoAnalytics mAnalytics; + private WindowManager windowManager; + private WindowManager.LayoutParams layoutParams; public LaucherShareDialog(@NonNull Context context) { - super(context, R.style.BottomDialog); this.mContext = context; - getWindow().setBackgroundDrawableResource(android.R.color.transparent); mAnalytics = (IMogoAnalytics) ARouter.getInstance().build(MogoServicePaths.PATH_UTILS_ANALYTICS).navigation(mContext); - - } - - public LaucherShareDialog(@NonNull Context context, int themeResId) { - super(context, R.style.BottomDialog); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - initView(); - initListener(); } + private View body; private void initView() { - setContentView(R.layout.launcher_dialog_share); - txtOk = findViewById(R.id.btn_share_title); - mBlockLayout = findViewById(R.id.btn_block_layout); - mOilPriceLayout = findViewById(R.id.oil_price_layout); - mTrafficCheckLayout = findViewById(R.id.traffic_check_layout); - mRoadClosureLayout = findViewById(R.id.road_closure_layout); + Logger.d(TAG, "test-------3"); + body = LayoutInflater.from(mContext).inflate(R.layout.launcher_dialog_share, null); + body.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + } + }); + txtOk = body.findViewById(R.id.btn_share_title); + mBlockLayout = body.findViewById(R.id.btn_block_layout); + mOilPriceLayout = body.findViewById(R.id.oil_price_layout); + mTrafficCheckLayout = body.findViewById(R.id.traffic_check_layout); + mRoadClosureLayout = body.findViewById(R.id.road_closure_layout); } @@ -73,31 +79,34 @@ public class LaucherShareDialog extends Dialog implements View.OnClickListener { mRoadClosureLayout.setOnClickListener(this); } - @Override public void onClick(View view) { int id = view.getId(); + Logger.d(TAG, "onClick: " + id); if (id == R.id.btn_block_layout) { //拥堵 traceTanluData("1"); sendShareReceiver("1"); traceTypeData("1"); + dismiss(); } else if (id == R.id.oil_price_layout) { traceData("1"); Intent intent = new Intent(); intent.setData(Uri.parse("freshthing://com.zhidao.fresh.things/shareOilPrice")); mContext.startActivity(intent); traceTypeData("2"); + dismiss(); } else if (id == R.id.traffic_check_layout) { //交通检查 traceData("1"); sendShareReceiver("2"); traceTypeData("3"); + dismiss(); } else if (id == R.id.road_closure_layout) { //封路 traceData("1"); sendShareReceiver("3"); traceTypeData("4"); + dismiss(); } - dismiss(); } /** @@ -143,4 +152,39 @@ public class LaucherShareDialog extends Dialog implements View.OnClickListener { } + public void show(){ + Logger.d(TAG,"使用windowManager实现"); + if (!isShown) { + windowManager = (WindowManager) mContext.getApplicationContext().getSystemService(Context.WINDOW_SERVICE); + layoutParams = new WindowManager.LayoutParams(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; + } else { + layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; + } + layoutParams.format = PixelFormat.TRANSLUCENT; + layoutParams.gravity = Gravity.LEFT | Gravity.TOP; +// mWindowLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; + // FLAG_LAYOUT_IN_SCREEN:将window放置在整个屏幕之内,无视其他的装饰(比如状态栏); FLAG_NOT_TOUCH_MODAL:不阻塞事件传递到后面的窗口 + layoutParams.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; + layoutParams.width = WindowUtils.getScreenWidth(mContext); + layoutParams.height = WindowUtils.getScreenHeight(mContext); + layoutParams.dimAmount = 0;//后面变暗区域透明... + layoutParams.x = 0; + layoutParams.y = 0; + initView(); + initListener(); + windowManager.addView(body, layoutParams); + isShown = true; + } + } + + public void dismiss(){ + if (isShown && windowManager != null && body != null) { + windowManager.removeViewImmediate(body); + windowManager = null; + isShown = false; + } + } + } diff --git a/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share.xml b/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share.xml index e38447d88a..3e9ca3ab44 100644 --- a/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share.xml +++ b/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share.xml @@ -1,146 +1,157 @@ - - - + android:layout_width="match_parent" + android:layout_height="match_parent" + android:clickable="true" + android:focusable="true" + android:background="#88000000"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_width="@dimen/share_module_width" + android:layout_height="@dimen/share_module_height" + android:clickable="true" + android:focusable="true" + android:layout_gravity="center" + android:background="@drawable/shape_bg_222533_20px"> - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java index 0c4c379e3e..f749d793a6 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java @@ -77,6 +77,13 @@ public interface IMogoStatusManager extends IProvider { */ boolean isMainPageOnResume(); + /** + * 小智语音是否准备完毕 + * + * @return + */ + boolean isAIAssistReady(); + /** * 设置小智语音UI状态 * @@ -151,6 +158,14 @@ public interface IMogoStatusManager extends IProvider { */ void setMainPageResumeStatus( String tag, boolean resume ); + /** + * 设置小智语音状态 + * + * @param tag + * @param ready + */ + void setAIAssistReady( String tag, boolean ready ); + /** * 注册监听 * diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java index c1274c21a8..0f75d8d92f 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java @@ -54,5 +54,10 @@ public enum StatusDescriptor { /** * 主页 resume 状态 */ - MAIN_PAGE_RESUME; + MAIN_PAGE_RESUME, + + /** + * 小智语音状态 + */ + AI_ASSIST_READY; } diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java index 4802a529cb..0ac3f099db 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java @@ -94,6 +94,11 @@ public class MogoStatusManager implements IMogoStatusManager { return get_bool_val( StatusDescriptor.MAIN_PAGE_RESUME ); } + @Override + public boolean isAIAssistReady() { + return get_bool_val( StatusDescriptor.AI_ASSIST_READY ); + } + private boolean get_bool_val( StatusDescriptor descriptor ) { Boolean val = mStatus.get( descriptor ); return val == null ? false : val; @@ -165,6 +170,13 @@ public class MogoStatusManager implements IMogoStatusManager { recordStatusModifier( tag, StatusDescriptor.MAIN_PAGE_RESUME ); } + @Override + public void setAIAssistReady( String tag, boolean ready ) { + mStatus.put( StatusDescriptor.AI_ASSIST_READY, ready ); + invokeStatusChangedListener( StatusDescriptor.AI_ASSIST_READY, ready ); + recordStatusModifier( tag, StatusDescriptor.AI_ASSIST_READY ); + } + private void invokeStatusChangedListener( StatusDescriptor descriptor, boolean status ) { if ( mListeners.containsKey( descriptor ) ) { Iterator< IMogoStatusChangedListener > iterator = mListeners.get( descriptor ).iterator();