- com.mogo.launcher
+ - com.mogo.launcher.f
- com.mogo.launcher.app
- com.zhidao.launcher
- com.nwd.android.toolsmanager
diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/Back2LauncherFragment.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/Back2LauncherFragment.java
deleted file mode 100644
index 68a9943451..0000000000
--- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/Back2LauncherFragment.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.mogo.module.back;
-
-import android.os.Bundle;
-
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-
-import com.mogo.utils.logger.Logger;
-
-/**
- * @author congtaowang
- * @since 2020-02-26
- *
- * 描述
- */
-public class Back2LauncherFragment extends Fragment {
-
- private static final String TAG = "Back2LauncherFragment";
-
- @Override
- public void onCreate( @Nullable Bundle savedInstanceState ) {
- super.onCreate( savedInstanceState );
- BackToMainHomeManager.addMainHomeView();
- Logger.d( TAG, "addMainHomeView" );
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- BackToMainHomeManager.removeMainHomeView();
- Logger.d( TAG, "removeMainHomeView" );
- }
-}
diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java
index a92fcecdee..c03d6944b3 100644
--- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java
+++ b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java
@@ -49,46 +49,11 @@ public class BackToLauncherModuleProvider implements IMogoModuleProvider {
return BackToLauncherConst.MODULE_NAME;
}
- @Override
- public IMogoModuleLifecycle getCardLifecycle() {
- return null;
- }
-
- @Override
- public IMogoMapListener getMapListener() {
- return null;
- }
-
@Override
public int getType() {
return ModuleType.TYPE_SERVICE;
}
- @Override
- public IMogoNaviListener getNaviListener() {
- return null;
- }
-
- @Override
- public IMogoLocationListener getLocationListener() {
- return null;
- }
-
- @Override
- public IMogoMarkerClickListener getMarkerClickListener() {
- return null;
- }
-
- @Override
- public String getAppPackage() {
- return null;
- }
-
- @Override
- public String getAppName() {
- return null;
- }
-
@Override
public void init( Context context ) {
if ( CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X ) {
diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java
index 4ded331a36..ea748c53fe 100644
--- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java
+++ b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java
@@ -1,28 +1,20 @@
package com.mogo.module.back;
-import android.content.Context;
import android.content.Intent;
-import android.graphics.PixelFormat;
-import android.os.Build;
import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
import android.view.WindowManager;
import com.mogo.commons.AbsMogoApplication;
-import com.mogo.module.back.utils.WindowManagerViewHelper;
+import com.mogo.module.common.wm.WindowManagerView;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.statusmanager.IMogoStatusManager;
-import com.mogo.utils.AppUtils;
import com.mogo.utils.logger.Logger;
public class BackToMainHomeManager {
private static final String TAG = "BackToMainHomeManager";
- private static View mBackView;
-
private static IMogoFragmentManager mFragmentManager;
private static IMogoStatusManager mStatusManager;
private static IMogoServiceApis mApis;
@@ -34,8 +26,8 @@ public class BackToMainHomeManager {
}
public static void backToLauncher() {
- if (mStatusManager == null) {
- Logger.e(TAG,"未初始化完成");
+ if ( mStatusManager == null ) {
+ Logger.e( TAG, "未初始化完成" );
return;
}
if ( mStatusManager.isMainPageOnResume() ) {
@@ -45,6 +37,10 @@ public class BackToMainHomeManager {
return;
}
+ Intent intent2 = new Intent();
+ // 是否发自系统消息
+ intent2.putExtra( "isHomeKeyDown", false );
+ mApis.getIntentManagerApi().invoke( Intent.ACTION_CLOSE_SYSTEM_DIALOGS, intent2 );
Logger.d( TAG, "返回桌面" );
Intent intent = new Intent();
@@ -54,40 +50,34 @@ public class BackToMainHomeManager {
AbsMogoApplication.getApp().startActivity( intent );
}
+ private static WindowManagerView mWindowManagerView;
+
public static void addMainHomeView() {
Logger.d( "BackToMainHomeManager", "addMainHomeView" );
- if ( mBackView != null ) WindowManagerViewHelper.removeView( mBackView );
- mBackView = LayoutInflater.from( AbsMogoApplication.getApp() ).inflate( R.layout.mogo_module_back_home_back_layout, null );
- final Context context = mBackView.getContext();
- if ( context == null || context.getApplicationContext() == null ) {
- return;
+
+ if ( mWindowManagerView == null ) {
+ mWindowManagerView = new WindowManagerView.Builder( AbsMogoApplication.getApp() )
+ .contentView( R.layout.mogo_module_back_home_back_layout )
+ .position( AbsMogoApplication.getApp().getResources().getDimensionPixelOffset( R.dimen.module_back_main_home_icon_left ),
+ AbsMogoApplication.getApp().getResources().getDimensionPixelOffset( R.dimen.module_back_main_home_icon_top ) )
+ .size( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT )
+ .gravity( Gravity.LEFT | Gravity.TOP )
+ .showInWindowManager();
+ mWindowManagerView.attachTouchEvent( view -> {
+ backToLauncher();
+ } );
}
- WindowManager windowManager = ( WindowManager ) context.getApplicationContext().getSystemService( Context.WINDOW_SERVICE );
- if ( windowManager == null ) {
- return;
+ try {
+ mWindowManagerView.show();
+ } catch ( Exception e ) {
+ e.printStackTrace();
}
- mBackView.setOnClickListener( view -> {
- backToLauncher();
- } );
- WindowManager.LayoutParams params = new WindowManager.LayoutParams();
- params.height = WindowManager.LayoutParams.WRAP_CONTENT;
- params.width = WindowManager.LayoutParams.WRAP_CONTENT;
- params.x = AbsMogoApplication.getApp().getResources().getDimensionPixelOffset( R.dimen.module_back_main_home_icon_left );
- params.y = AbsMogoApplication.getApp().getResources().getDimensionPixelOffset( R.dimen.module_back_main_home_icon_top );
- params.gravity = Gravity.LEFT | Gravity.CENTER;
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- params.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
- } else {
- params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
- }
- params.format = PixelFormat.RGBA_8888;
- params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
- windowManager.addView( mBackView, params );
- WindowManagerViewHelper.attachMovementEvent( mBackView, params );
}
public static void removeMainHomeView() {
- WindowManagerViewHelper.removeView( mBackView );
+ if ( mWindowManagerView != null ) {
+ mWindowManagerView.dismiss();
+ }
}
}
diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/Utils.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/Utils.java
deleted file mode 100644
index ace6e4bdae..0000000000
--- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/Utils.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.mogo.module.back.utils;
-
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-
-import com.mogo.commons.AbsMogoApplication;
-
-public class Utils {
- public static boolean isActivityExits( String packageName, String classStr ) {
- Intent intent = new Intent();
- intent.setClassName( packageName, classStr );
- ResolveInfo resolveInfo = AbsMogoApplication.getApp().getPackageManager().resolveActivity( intent, PackageManager.MATCH_DEFAULT_ONLY );
- if ( resolveInfo != null ) {
- return true;
- } else {
- return false;
- }
- }
-}
diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/WindowManagerViewHelper.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/WindowManagerViewHelper.java
deleted file mode 100644
index ff03d5ab96..0000000000
--- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/WindowManagerViewHelper.java
+++ /dev/null
@@ -1,213 +0,0 @@
-package com.mogo.module.back.utils;
-
-import android.content.Context;
-import android.graphics.PixelFormat;
-import android.os.Build;
-import android.view.Gravity;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.WindowManager;
-
-/**
- * @author congtaowang
- * @since 2019-04-30
- *
- * 向 window manager 添加 view
- */
-public class WindowManagerViewHelper {
-
- public static void addView( View view ) {
-
- final Context context = view.getContext();
- if ( context == null || context.getApplicationContext() == null ) {
- return;
- }
- WindowManager windowManager = ( WindowManager ) context.getApplicationContext().getSystemService( Context.WINDOW_SERVICE );
- if ( windowManager == null ) {
- return;
- }
- WindowManager.LayoutParams params = new WindowManager.LayoutParams();
- params.height = WindowManager.LayoutParams.WRAP_CONTENT;
- params.width = WindowManager.LayoutParams.WRAP_CONTENT;
- params.gravity = Gravity.LEFT | Gravity.CENTER;
- params.type = getFitWindowParamsType();
- params.format = PixelFormat.RGBA_8888;
- params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
- windowManager.addView( view, params );
-
- attachMovementEvent( view, params );
- }
-
- private static int getFitWindowParamsType() {
- int type;
- if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1 ) {
- // Need request permission.
- type = WindowManager.LayoutParams.TYPE_PHONE;
- } else if ( Build.MODEL.equalsIgnoreCase( "MI 5" ) ) {
- // MI 5 phone not display crawler dot in android 7.0
- type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
- } else {
- // It's will be dismissed automatically 3s after showing in Android 25.
- type = WindowManager.LayoutParams.TYPE_TOAST;
- }
- return type;
- }
-
- public static void removeView( View view ) {
- if ( view == null || view.getContext() == null || view.getContext().getApplicationContext() == null ) {
- return;
- }
- WindowManager windowManager = ( WindowManager ) view.getContext().getApplicationContext().getSystemService( Context.WINDOW_SERVICE );
- if ( windowManager == null ) {
- return;
- }
- windowManager.removeViewImmediate( view );
- DispatchTouchEventWrapper.getInstance().release();
-
- }
-
- public static void attachMovementEvent( View view, WindowManager.LayoutParams params ) {
- if ( view == null ) {
- return;
- }
- view.setOnTouchListener( ( v, event ) -> {
- DispatchTouchEventWrapper.getInstance()
- .attach( view, params )
- .handle( event );
- return false;
- } );
- }
-
- static class DispatchTouchEventWrapper {
-
- private WindowViewHandler mWindowViewHandler;
-
- int mActionDownX = -1;
- int mActionDownY = -1;
-
- /**
- * Flag whether move after touch down.
- */
- boolean mMoveFlag = false;
-
- private static volatile DispatchTouchEventWrapper INST;
-
- private DispatchTouchEventWrapper() {
- }
-
- public static DispatchTouchEventWrapper getInstance() {
- if ( INST == null ) {
- synchronized ( DispatchTouchEventWrapper.class ) {
- if ( INST == null ) {
- INST = new DispatchTouchEventWrapper();
- }
- }
- }
- return INST;
- }
-
- public DispatchTouchEventWrapper attach( View windowView, WindowManager.LayoutParams params ) {
- if ( mWindowViewHandler == null || mWindowViewHandler.getWindowView() != windowView ) {
- mWindowViewHandler = new WindowViewHandler.DefaultHandler( windowView, params );
- }
- return this;
- }
-
- public boolean handle( MotionEvent event ) {
- switch ( event.getAction() & MotionEvent.ACTION_MASK ) {
- case MotionEvent.ACTION_DOWN:
- if ( onActionDown( event ) ) {
- return true;
- }
- break;
- case MotionEvent.ACTION_MOVE:
- if ( onActionMove( event ) ) {
- return true;
- }
- break;
- case MotionEvent.ACTION_UP:
- if ( onActionUp( event ) ) {
- return true;
- }
- break;
- }
- return false;
- }
-
- private boolean onActionDown( MotionEvent event ) {
- mActionDownX = ( ( int ) event.getRawX() );
- mActionDownY = ( ( int ) event.getRawY() );
- if ( mWindowViewHandler != null ) {
- mWindowViewHandler.recordNewPosition();
- return true;
- }
- return false;
- }
-
- private boolean onActionMove( MotionEvent event ) {
-
- if ( Math.abs( event.getRawX() - mActionDownX ) >= 20
- || Math.abs( event.getRawY() - mActionDownY ) >= 20 ) {
- mMoveFlag = true;
- }
-
- if ( isLastDownValueLegal() ) {
- moveWindowView( event );
- return true;
- }
- return false;
- }
-
- private boolean onActionUp( MotionEvent event ) {
- if ( isClickEventLike() ) {
- if ( mWindowViewHandler != null ) {
- mWindowViewHandler.performClickLike();
- }
- } else {
- if ( mWindowViewHandler != null ) {
- mWindowViewHandler.moveToEdge();
- mWindowViewHandler.recordNewPosition();
- }
- }
- mMoveFlag = false;
- clearLastDownAxisValue();
- return true;
- }
-
- private void clearLastDownAxisValue() {
- mActionDownX = mActionDownY = -1;
- }
-
- private boolean isLastDownValueLegal() {
- return mActionDownX != -1 && mActionDownY != -1;
- }
-
- private void moveWindowView( MotionEvent event ) {
- if ( mWindowViewHandler != null ) {
- mWindowViewHandler.move( event, mActionDownX, mActionDownY );
- }
- }
-
- /**
- * Simulate click event just like set {@link View.OnClickListener}
- *
- * @return
- */
- private boolean isClickEventLike() {
- System.out.println( mMoveFlag );
- return isLastDownValueLegal() && !mMoveFlag;
- }
-
- public void release() {
- if ( mWindowViewHandler != null ) {
- mWindowViewHandler.release();
- }
- mWindowViewHandler = null;
- mActionDownX = -1;
- mActionDownY = -1;
- mMoveFlag = false;
- INST = null;
- }
- }
-
-}
diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/WindowViewHandler.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/WindowViewHandler.java
deleted file mode 100644
index bbd48717cd..0000000000
--- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/WindowViewHandler.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package com.mogo.module.back.utils;
-
-import android.content.Context;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.WindowManager;
-
-import com.mogo.commons.AbsMogoApplication;
-import com.mogo.utils.WindowUtils;
-
-
-/**
- * Created by congtaowang on 2017/6/20.
- */
-
-public interface WindowViewHandler {
-
- View getWindowView();
-
- void recordNewPosition();
-
- void move(MotionEvent event, int downX, int downY);
-
- void release();
-
- void moveToEdge();
-
- void performClickLike();
-
- class DefaultHandler implements WindowViewHandler {
-
- protected View mWindowView;
-
- protected int mWindowViewLeft = -1;
- protected int mWindowViewTop = -1;
-
- private WindowManager.LayoutParams mParams;
-
- public DefaultHandler( View windowView, WindowManager.LayoutParams params ) {
- this.mWindowView = windowView;
- mParams = params;
- }
-
- @Override
- public View getWindowView() {
- return mWindowView;
- }
-
- @Override
- public void recordNewPosition() {
- mWindowViewLeft = mParams.x;
- mWindowViewTop = mParams.y;
- }
-
- @Override
- public void move( MotionEvent event, int downX, int downY ) {
- move( ( ( int ) ( event.getRawX() - downX ) ),
- ( ( int ) ( event.getRawY() - downY ) ) );
- }
-
- private void move( int distanceX, int distanceY ) {
- if ( mWindowView == null ) {
- return;
- }
- mParams.x = mWindowViewLeft + distanceX;
- mParams.y = mWindowViewTop + distanceY;
- WindowManager wm = ( ( WindowManager ) mWindowView.getContext().getSystemService( Context.WINDOW_SERVICE ) );
-
- if ( wm == null ) {
- return;
- }
-
- if ( mWindowView instanceof WindowViewUIController ) {
- if ( mParams.x > WindowUtils.getScreenWidth( AbsMogoApplication.getApp() ) / 2 ) {
- ( ( WindowViewUIController ) mWindowView ).rightMode();
- } else {
- ( ( WindowViewUIController ) mWindowView ).leftMode();
- }
- }
-
- wm.updateViewLayout( mWindowView, alignLayoutParamsBoundary( mParams ) );
- }
-
- @Override
- public void moveToEdge() {
- if ( mWindowView == null ) {
- return;
- }
- WindowManager wm = ( ( WindowManager ) mWindowView.getContext().getSystemService( Context.WINDOW_SERVICE ) );
-
- if ( mParams.x > WindowUtils.getScreenWidth( AbsMogoApplication.getApp() ) / 2 ) {
- mParams.x = WindowUtils.getScreenWidth( AbsMogoApplication.getApp() ) - mWindowView.getMeasuredWidth();
- } else {
- mParams.x = 0;
- }
-
- wm.updateViewLayout( mWindowView, alignLayoutParamsBoundary( mParams ) );
- }
-
- protected WindowManager.LayoutParams alignLayoutParamsBoundary( WindowManager.LayoutParams params ) {
- return params;
- }
-
- @Override
- public void performClickLike() {
- if ( mWindowView instanceof WindowViewUIController ) {
- ( ( WindowViewUIController ) mWindowView ).performClickLike();
- }
- }
-
- @Override
- public void release() {
- mWindowView = null;
- mWindowViewLeft = -1;
- mWindowViewTop = -1;
- }
- }
-
-}
diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/WindowViewUIController.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/WindowViewUIController.java
deleted file mode 100644
index e329cdea68..0000000000
--- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/WindowViewUIController.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.mogo.module.back.utils;
-
-/**
- * @author congtaowang
- * @since 2019-05-12
- *
- * 描述
- */
-public interface WindowViewUIController {
-
- void leftMode();
-
- void rightMode();
-
- void performClickLike();
-}
diff --git a/modules/mogo-module-back/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-back/src/main/res/values-xhdpi/dimens.xml
index bd57c0f8ae..e0b0d888aa 100644
--- a/modules/mogo-module-back/src/main/res/values-xhdpi/dimens.xml
+++ b/modules/mogo-module-back/src/main/res/values-xhdpi/dimens.xml
@@ -1,8 +1,8 @@
140px
- 0px
- 190px
+ 30px
+ 230px
diff --git a/modules/mogo-module-back/src/main/res/values/dimens.xml b/modules/mogo-module-back/src/main/res/values/dimens.xml
index dfab5dd86c..a50305933f 100644
--- a/modules/mogo-module-back/src/main/res/values/dimens.xml
+++ b/modules/mogo-module-back/src/main/res/values/dimens.xml
@@ -1,7 +1,7 @@
80px
- 0px
- 100px
+ 16px
+ 140px
\ No newline at end of file
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCardResult.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCardResult.java
index 3896ae58c4..61e425aaba 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCardResult.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCardResult.java
@@ -16,6 +16,7 @@ public class MarkerCardResult extends BaseData {
private List onlineCar;
private List exploreWay;
+ private long messageTime;
public List getCarChat() {
return carChat;
@@ -65,15 +66,11 @@ public class MarkerCardResult extends BaseData {
this.dataType = dataType;
}
- @Override
- public String toString() {
- return "MarkerCardResult{" +
- "dataType=" + dataType +
- ", carChat=" + carChat +
- ", exploreWay=" + exploreWay +
- ", onlineCar=" + onlineCar +
- ", shareMusic=" + shareMusic +
- ", noveltyInfo=" + noveltyInfo +
- '}';
+ public long getMessageTime() {
+ return messageTime;
+ }
+
+ public void setMessageTime(long messageTime) {
+ this.messageTime = messageTime;
}
}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerExploreWay.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerExploreWay.java
index 946833bfff..4fbbc9dd44 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerExploreWay.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerExploreWay.java
@@ -32,7 +32,7 @@ public class MarkerExploreWay implements Serializable {
public String getAddr() {
if (TextUtils.isEmpty(addr)) {
- return "";
+ return "未知道路";
}
return addr;
}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerUserInfo.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerUserInfo.java
index 98c3b35002..70c0f7f2c5 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerUserInfo.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerUserInfo.java
@@ -114,6 +114,14 @@ public class MarkerUserInfo implements Serializable {
this.gender = gender;
}
+ public void setGender(int gender) {
+ if (gender == 0) {
+ this.gender = "男";
+ } else {
+ this.gender = "女";
+ }
+ }
+
public String getSn() {
if (TextUtils.isEmpty(sn)) {
return "";
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XEventShowEntity.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XEventShowEntity.java
index a099e4db17..4b6d621d60 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XEventShowEntity.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XEventShowEntity.java
@@ -1,7 +1,13 @@
package com.mogo.module.common.entity;
+import androidx.annotation.IntDef;
+
import java.io.Serializable;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.util.List;
import java.util.Objects;
@@ -14,7 +20,8 @@ import java.util.Objects;
*/
public class V2XEventShowEntity implements Serializable {
- // 0---默认展示详情,1--直播,4--道路事件详情
+ // 0---默认展示详情,1--直播,
+ @ViewType
private int viewType;
// 道路事件详情
@@ -23,6 +30,10 @@ public class V2XEventShowEntity implements Serializable {
private V2XLiveCarInfoEntity v2XLiveCarInfoRes;
// 直播车机列表
private List v2XLiveCarList;
+ // 推送信息,疲劳驾驶,他人发起故障求助
+ private V2XPushMessageEntity v2XPushMessageEntity;
+ // 违章停车
+ private MarkerExploreWay v2XIllegalPark;
public int getViewType() {
return viewType;
@@ -56,6 +67,22 @@ public class V2XEventShowEntity implements Serializable {
this.v2XLiveCarList = v2XLiveCarList;
}
+ public V2XPushMessageEntity getV2XPushMessageEntity() {
+ return v2XPushMessageEntity;
+ }
+
+ public void setV2XPushMessageEntity(V2XPushMessageEntity v2XPushMessageEntity) {
+ this.v2XPushMessageEntity = v2XPushMessageEntity;
+ }
+
+ public MarkerExploreWay getV2XIllegalPark() {
+ return v2XIllegalPark;
+ }
+
+ public void setV2XIllegalPark(MarkerExploreWay v2XIllegalPark) {
+ this.v2XIllegalPark = v2XIllegalPark;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) {
@@ -68,21 +95,37 @@ public class V2XEventShowEntity implements Serializable {
return viewType == that.viewType &&
Objects.equals(v2XRoadEventEntity, that.v2XRoadEventEntity) &&
Objects.equals(v2XLiveCarInfoRes, that.v2XLiveCarInfoRes) &&
- Objects.equals(v2XLiveCarList, that.v2XLiveCarList);
+ Objects.equals(v2XLiveCarList, that.v2XLiveCarList) &&
+ Objects.equals(v2XPushMessageEntity, that.v2XPushMessageEntity) &&
+ Objects.equals(v2XIllegalPark, that.v2XIllegalPark);
}
@Override
public int hashCode() {
- return Objects.hash(viewType, v2XRoadEventEntity, v2XLiveCarInfoRes, v2XLiveCarList);
+ return Objects.hash(viewType, v2XRoadEventEntity,
+ v2XLiveCarInfoRes, v2XLiveCarList,
+ v2XPushMessageEntity, v2XIllegalPark);
}
- @Override
- public String toString() {
- return "V2XEventShowEntity{" +
- "viewType=" + viewType +
- ", v2XRoadEventEntity=" + v2XRoadEventEntity +
- ", v2XLiveCarInfoRes=" + v2XLiveCarInfoRes +
- ", v2XLiveCarList=" + v2XLiveCarList +
- '}';
+
+ @IntDef(value = {
+ V2XMessageEntity.V2XTypeEnum.ALERT_ROAD_WARNING,
+ V2XMessageEntity.V2XTypeEnum.ALERT_SEEK_WARNING,
+ V2XMessageEntity.V2XTypeEnum.ALERT_FATIGUE_DRIVING,
+ V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_WINDOW_WARNING,
+ V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_TOAST_WARNING,
+ V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_LIVE_CAR_WARNING,
+ V2XMessageEntity.V2XTypeEnum.ALERT_ANIMATION_WARNING,
+ V2XMessageEntity.V2XTypeEnum.ALERT_ROAD_LIVE_CAR_WARNING,
+ V2XMessageEntity.V2XTypeEnum.ALERT_ILLEGAL_PARK_WARNING,
+ V2XMessageEntity.V2XTypeEnum.ALERT_CAR_FOR_HELP,
+ })
+ @Target({
+ ElementType.PARAMETER,
+ ElementType.FIELD,
+ ElementType.METHOD,
+ }) //表示注解作用范围,参数注解,成员注解,方法注解
+ @Retention(RetentionPolicy.SOURCE) //表示注解所存活的时间,在运行时,而不会存在 .class 文件中
+ public @interface ViewType { //接口,定义新的注解类型
}
}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XHistoryScenarioData.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XHistoryScenarioData.java
new file mode 100644
index 0000000000..53f5250437
--- /dev/null
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XHistoryScenarioData.java
@@ -0,0 +1,82 @@
+package com.mogo.module.common.entity;
+
+import com.mogo.map.location.MogoLocation;
+import com.mogo.utils.sqlite.annotation.DbDatabase;
+import com.mogo.utils.sqlite.annotation.DbField;
+import com.mogo.utils.sqlite.annotation.DbTable;
+
+/**
+ * V2X 道路历史事件
+ *
+ * @author donghongyu
+ */
+@DbDatabase(dbName = "MoGoScenario.db")
+@DbTable(tableName = "tb_history_scenario")
+public class V2XHistoryScenarioData {
+
+ /**
+ * 事件类型
+ */
+ @DbField(fieldName = "scenarioType")
+ public Integer scenarioType;
+
+ /**
+ * 事件触发时间
+ */
+ @DbField(fieldName = "triggerTime")
+ public Long triggerTime;
+
+ /**
+ * 事件json
+ */
+ @DbField(fieldName = "eventJsonData")
+ public String eventJsonData;
+
+ /**
+ * 事件是否被处理过了,true-处理过了。false-未处理过
+ */
+ @DbField(fieldName = "isDispose")
+ public Boolean isDispose;
+
+ public Integer getScenarioType() {
+ return scenarioType;
+ }
+
+ public void setScenarioType(Integer scenarioType) {
+ this.scenarioType = scenarioType;
+ }
+
+ public String getEventJsonData() {
+ return eventJsonData;
+ }
+
+ public void setEventJsonData(String eventJsonData) {
+ this.eventJsonData = eventJsonData;
+ }
+
+ public Long getTriggerTime() {
+ return triggerTime;
+ }
+
+ public void setTriggerTime(Long triggerTime) {
+ this.triggerTime = triggerTime;
+ }
+
+ public Boolean isDispose() {
+ return isDispose;
+ }
+
+ public void setDispose(Boolean dispose) {
+ isDispose = dispose;
+ }
+
+ @Override
+ public V2XHistoryScenarioData clone() throws CloneNotSupportedException {
+ try {
+ return (V2XHistoryScenarioData) super.clone();
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ return this;
+ }
+}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XMessageEntity.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XMessageEntity.java
index 3e52d000f7..6dcf23400f 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XMessageEntity.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XMessageEntity.java
@@ -80,6 +80,8 @@ public class V2XMessageEntity implements Serializable {
* V2X 场景类型
*/
public interface V2XTypeEnum {
+ // 默认展示详情
+ int DEFAULT_WINDOW = 0;
// 道路事件预警
int ALERT_ROAD_WARNING = 1_000;
// 他车求助预警
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XPushMessageEntity.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XPushMessageEntity.java
index 4c4d1af587..78e6e6e47d 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XPushMessageEntity.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XPushMessageEntity.java
@@ -28,6 +28,7 @@ public class V2XPushMessageEntity implements Serializable {
private String videoSn;
private String videoChannel;
private int expireTime;
+ private long createTime;
private double lat;
private double lon;
private String sn;
@@ -37,6 +38,11 @@ public class V2XPushMessageEntity implements Serializable {
private double distance;
private boolean isShowWindow;
+ private int age;
+ private String displayName;
+ private int sex;
+ private long userId;
+
public int getViewType() {
return viewType;
}
@@ -220,10 +226,54 @@ public class V2XPushMessageEntity implements Serializable {
isShowWindow = showWindow;
}
+ public long getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(long createTime) {
+ this.createTime = createTime;
+ }
+
+ public int getAge() {
+ return age;
+ }
+
+ public void setAge(int age) {
+ this.age = age;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public void setDisplayName(String displayName) {
+ this.displayName = displayName;
+ }
+
+ public int getSex() {
+ return sex;
+ }
+
+ public void setSex(int sex) {
+ this.sex = sex;
+ }
+
+ public long getUserId() {
+ return userId;
+ }
+
+ public void setUserId(long userId) {
+ this.userId = userId;
+ }
+
@Override
public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
V2XPushMessageEntity that = (V2XPushMessageEntity) o;
return Objects.equals(sceneId, that.sceneId) &&
Objects.equals(tts, that.tts);
@@ -234,31 +284,5 @@ public class V2XPushMessageEntity implements Serializable {
return Objects.hash(sceneId, tts);
}
- @Override
- public String toString() {
- return "V2XPushMessageEntity{" +
- "viewType=" + viewType +
- ", sceneId='" + sceneId + '\'' +
- ", sceneName='" + sceneName + '\'' +
- ", sceneCategory=" + sceneCategory +
- ", sceneLevel=" + sceneLevel +
- ", sceneDescription='" + sceneDescription + '\'' +
- ", zoom=" + zoom +
- ", zoomScale=" + zoomScale +
- ", alarmContent='" + alarmContent + '\'' +
- ", tts='" + tts + '\'' +
- ", videoUrl='" + videoUrl + '\'' +
- ", videoSn='" + videoSn + '\'' +
- ", videoChannel='" + videoChannel + '\'' +
- ", expireTime=" + expireTime +
- ", lat=" + lat +
- ", lon=" + lon +
- ", sn='" + sn + '\'' +
- ", headImgUrl='" + headImgUrl + '\'' +
- ", msgImgUrl='" + msgImgUrl + '\'' +
- ", address='" + address + '\'' +
- ", distance=" + distance +
- ", isShowWindow=" + isShowWindow +
- '}';
- }
+
}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XWindowTypeEnum.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XWindowTypeEnum.java
deleted file mode 100644
index f8ed519770..0000000000
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XWindowTypeEnum.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.mogo.module.common.entity;
-
-/**
- * author : donghongyu
- * e-mail : 1358506549@qq.com
- * date : 2020/3/31 4:53 PM
- * desc : V2X 道路提醒类型
- * version: 1.0
- */
-public interface V2XWindowTypeEnum {
- // 默认展示详情
- int DEFAULT_WINDOW = 0;
- // 直播
- int LIVE_CAR_WINDOW = 1;
- // 道路事件详情
- int ROAD_EVENT_WINDOW = 2;
- // 推送事件详情
- int PUSH_EVENT_WINDOW = 3;
- // 演示动画场景
- int ANIMATION_WINDOW = 4;
- // 疲劳驾驶
- int FATIGUE_DRIVING_WINDOW = 5;
- // 他人故障求助
- int SEEK_HELP_WINDOW = 6;
- // 违章停车
- int ILLEGAL_PARK_WINDOW = 7;
-}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java
index b2065a807c..1d4cdb1e0b 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java
@@ -22,16 +22,9 @@ public class MapCenterPointStrategy {
public static final MapCenterPoint DEFAULT = new MapCenterPoint( 0.677734D, 0.5733333D );
- public static void init() {
- // 普通场景,使用高德内部值
- {
- Map< Integer, MapCenterPoint > common = new HashMap<>();
- common.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.5D, 0.666666666D ) );
- common.put( CarSeries.CAR_SERIES_E84X, new MapCenterPoint( 0.5D, 0.666666666D ) );
- common.put( CarSeries.CAR_SERIES_E84XCD, new MapCenterPoint( 0.5D, 0.666666666D ) );
- common.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.5D, 0.666666666D ) );
- sStrategies.put( Scene.COMMON, common );
- }
+ private static MapCenterPoint sLastPoint = DEFAULT;
+
+ public static void init() {
{
// 选点场景,定位中心点
@@ -112,6 +105,22 @@ public class MapCenterPointStrategy {
categoryV2XEvent.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.6963541D, 0.65D ) );
sStrategies.put( Scene.CATEGORY_V2X_EVENT, categoryV2XEvent );
}
+
+ try {
+ sLastPoint = sStrategies.get( Scene.AIMLESS ).get( CarSeries.getSeries() );
+ } catch ( Exception e ) {
+ sLastPoint = DEFAULT;
+ }
+ }
+
+ public static void restoreLastScene( IMogoMapUIController controller ) {
+ if ( sLastPoint == null ) {
+ return;
+ }
+ if ( controller == null ) {
+ return;
+ }
+ controller.setPointToCenter( sLastPoint.x, sLastPoint.y );
}
public static void addScene( int scene, Map< Integer, MapCenterPoint > config ) {
@@ -138,6 +147,7 @@ public class MapCenterPointStrategy {
if ( !sStrategies.containsKey( scene ) ) {
Logger.w( TAG, "no strategy for scene: %s, use DEFAULT", scene );
controller.setPointToCenter( DEFAULT.x, DEFAULT.y );
+ sLastPoint = DEFAULT;
return;
}
Map< Integer, MapCenterPoint > points = sStrategies.get( scene );
@@ -145,14 +155,17 @@ public class MapCenterPointStrategy {
if ( !points.containsKey( car ) ) {
Logger.w( TAG, "no strategy for series: %s, use DEFAULT", scene );
controller.setPointToCenter( DEFAULT.x, DEFAULT.y );
+ sLastPoint = DEFAULT;
return;
}
MapCenterPoint point = points.get( car );
if ( point == null ) {
Logger.w( TAG, "no strategy config for series: %s, use DEFAULT", scene );
controller.setPointToCenter( DEFAULT.x, DEFAULT.y );
+ sLastPoint = DEFAULT;
return;
}
+ sLastPoint = point;
controller.setPointToCenter( point.x, point.y );
}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/DialogImpl.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/DialogImpl.java
index 72c5960fd4..a7bcb305c1 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/DialogImpl.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/DialogImpl.java
@@ -29,6 +29,11 @@ class DialogImpl implements IWindowManagerView {
return dialog.isShowing();
}
+ @Override
+ public void handleTouchEvent(OnViewClickListener listener) {
+ // do nothings.
+ }
+
@Override
public void show() {
dialog.show();
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/IWindowManagerView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/IWindowManagerView.java
index d610cea67a..14891ed7d6 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/IWindowManagerView.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/IWindowManagerView.java
@@ -1,18 +1,27 @@
package com.mogo.module.common.wm;
+import android.view.View;
+
interface IWindowManagerView {
/**
* 初始化
+ *
* @param params contentView包装类
*/
- void init(WindowManagerView.WMViewParams params);
+ void init( WindowManagerView.WMViewParams params );
/**
* 是否显示
+ *
* @return true - 显示中
*/
boolean isShowing();
+ /**
+ * 支持手势拖动,该操作只支持触发点击操作
+ */
+ void handleTouchEvent(OnViewClickListener listener);
+
/**
* 显示
*/
@@ -22,4 +31,8 @@ interface IWindowManagerView {
* 隐藏
*/
void hide();
+
+ interface OnViewClickListener {
+ void onClick( View view );
+ }
}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerImpl.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerImpl.java
index 4821f6b0a2..d4314d4106 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerImpl.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerImpl.java
@@ -3,24 +3,26 @@ package com.mogo.module.common.wm;
import android.content.Context;
import android.graphics.PixelFormat;
import android.os.Build;
-import android.view.Gravity;
+import android.view.MotionEvent;
import android.view.WindowManager;
-import com.mogo.module.common.utils.CarSeries;
-import com.mogo.utils.WindowUtils;
-
/**
* 采用windowManager实现接口
*/
class WindowManagerImpl implements IWindowManagerView {
+
private WindowManager mWindowManager;
private WindowManager.LayoutParams mLayoutParams;
private WindowManagerView.WMViewParams mParams;
private boolean isShowing;
+
+ private float mLastX, mLastY;
+ private int mOldOffsetX, mOldOffsetY;
+
@Override
- public void init(WindowManagerView.WMViewParams params) {
+ public void init( WindowManagerView.WMViewParams params ) {
mParams = params;
- mWindowManager = (WindowManager) mParams.mContext.getApplicationContext().getSystemService( Context.WINDOW_SERVICE );
+ mWindowManager = ( WindowManager ) mParams.mContext.getApplicationContext().getSystemService( Context.WINDOW_SERVICE );
mLayoutParams = new WindowManager.LayoutParams();
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ) {
mLayoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
@@ -28,19 +30,14 @@ class WindowManagerImpl implements IWindowManagerView {
mLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
}
mLayoutParams.format = PixelFormat.TRANSLUCENT;
- mLayoutParams.gravity = Gravity.CENTER;
+ mLayoutParams.gravity = mParams.mGravity;
mLayoutParams.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
- if ( CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X ) {
- mLayoutParams.width = 1920;
- mLayoutParams.height = 1080;
- } else {
- mLayoutParams.width = WindowUtils.getScreenWidth( mParams.mContext );
- mLayoutParams.height = WindowUtils.getScreenHeight( mParams.mContext );
- }
+ mLayoutParams.width = mParams.mWidth;
+ mLayoutParams.height = mParams.mHeight;
+ mOldOffsetX = mLayoutParams.x = mParams.mX;
+ mOldOffsetY = mLayoutParams.y = mParams.mY;
mLayoutParams.dimAmount = 0.5f;
- mLayoutParams.x = 0;
- mLayoutParams.y = 0;
}
@Override
@@ -48,20 +45,47 @@ class WindowManagerImpl implements IWindowManagerView {
return isShowing;
}
+ @Override
+ public void handleTouchEvent(OnViewClickListener listener) {
+ mParams.mContentView.setOnTouchListener( ( v, event ) -> {
+ final int action = event.getAction();
+ float x = event.getX();
+ float y = event.getY();
+ if ( action == MotionEvent.ACTION_DOWN ) {
+ mLastX = x;
+ mLastY = y;
+ } else if ( action == MotionEvent.ACTION_MOVE ) {
+ mLayoutParams.x += ( int ) ( x - mLastX ) / 3; // 减小偏移量,防止过度抖动
+ mLayoutParams.y += ( int ) ( y - mLastY ) / 3; // 减小偏移量,防止过度抖动
+ mWindowManager.updateViewLayout( mParams.mContentView, mLayoutParams );
+ } else if ( action == MotionEvent.ACTION_UP ) {
+ int newOffsetX = mLayoutParams.x;
+ int newOffsetY = mLayoutParams.y;
+ // 只要按钮一动位置不是很大,就认为是点击事件
+ if ( Math.abs( mOldOffsetX - newOffsetX ) <= 20
+ && Math.abs( mOldOffsetY - newOffsetY ) <= 20 ) {
+ listener.onClick( mParams.mContentView );
+ }
+ mOldOffsetX = newOffsetX;
+ mOldOffsetY = newOffsetY;
+ }
+ return true;
+ } );
+ }
+
@Override
public void show() {
- if(!isShowing){
+ if ( !isShowing ) {
isShowing = true;
- mWindowManager.addView(mParams.mContentView,mLayoutParams);
+ mWindowManager.addView( mParams.mContentView, mLayoutParams );
}
}
@Override
public void hide() {
- if (isShowing && mParams != null) {
- mWindowManager.removeView(mParams.mContentView);
+ if ( isShowing && mParams != null ) {
+ mWindowManager.removeView( mParams.mContentView );
isShowing = false;
}
-
}
}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java
index d3c054a2ca..db2b244273 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java
@@ -1,20 +1,12 @@
package com.mogo.module.common.wm;
import android.content.Context;
-import android.graphics.PixelFormat;
-import android.os.Build;
-import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
-import android.view.WindowManager;
import androidx.annotation.IdRes;
import androidx.annotation.LayoutRes;
-import com.mogo.commons.debug.DebugConfig;
-import com.mogo.module.common.utils.CarSeries;
-import com.mogo.utils.WindowUtils;
-
/**
* @author congtaowang
* @since 2020-05-21
@@ -25,56 +17,91 @@ public class WindowManagerView {
private WMViewParams mParams;
- private IWindowManagerView managerView;
+ private IWindowManagerView mManagerView;
- private WindowManagerView(WMViewParams params) {
+ private WindowManagerView( WMViewParams params, IWindowManagerView view ) {
this.mParams = params;
- managerView = new DialogImpl();
- managerView.init(params);
-// init();
+ mManagerView = view;
+ view.init( params );
}
public boolean isShowing() {
- return managerView.isShowing();
+ return mManagerView.isShowing();
}
- public T findViewById(@IdRes int id) {
- return mParams.mContentView.findViewById(id);
+ public < T extends View > T findViewById( @IdRes int id ) {
+ return mParams.mContentView.findViewById( id );
+ }
+
+ public void attachTouchEvent( IWindowManagerView.OnViewClickListener listener ) {
+ mManagerView.handleTouchEvent(listener);
}
public void show() {
- managerView.show();
+ mManagerView.show();
}
public void dismiss() {
- managerView.hide();
+ mManagerView.hide();
}
public static class Builder {
private WMViewParams mParams = null;
- public Builder(Context context) {
+ public Builder( Context context ) {
mParams = new WMViewParams();
mParams.mContext = context;
}
- public Builder contentView(View contentView) {
+ public Builder contentView( View contentView ) {
mParams.mContentView = contentView;
return this;
}
- public Builder contentView(@LayoutRes int contentViewId) {
- mParams.mContentView = LayoutInflater.from(mParams.mContext).inflate(contentViewId,
- null);
+ public Builder contentView( @LayoutRes int contentViewId ) {
+ mParams.mContentView = LayoutInflater.from( mParams.mContext ).inflate( contentViewId, null );
return this;
}
+ public Builder size( int width, int height ) {
+ mParams.mWidth = width;
+ mParams.mHeight = height;
+ return this;
+ }
+
+ public Builder position( int x, int y ) {
+ mParams.mX = x;
+ mParams.mY = y;
+ return this;
+ }
+
+ public Builder gravity( int gravity ) {
+ mParams.mGravity = gravity;
+ return this;
+ }
+
+ /**
+ * 默认dialog实现
+ *
+ * @return
+ */
public WindowManagerView build() {
- if (mParams.mContentView == null) {
- throw new NullPointerException("WMViewParams#mContentView must not be null.");
+ return showInDialog();
+ }
+
+ public WindowManagerView showInDialog() {
+ if ( mParams.mContentView == null ) {
+ throw new NullPointerException( "WMViewParams#mContentView must not be null." );
}
- return new WindowManagerView(mParams);
+ return new WindowManagerView( mParams, new DialogImpl() );
+ }
+
+ public WindowManagerView showInWindowManager() {
+ if ( mParams.mContentView == null ) {
+ throw new NullPointerException( "WMViewParams#mContentView must not be null." );
+ }
+ return new WindowManagerView( mParams, new WindowManagerImpl() );
}
}
@@ -83,5 +110,10 @@ public class WindowManagerView {
public View mContentView;
public Context mContext;
+ public int mWidth;
+ public int mHeight;
+ public int mX;
+ public int mY;
+ public int mGravity;
}
}
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 162fe17f3e..5810a99910 100644
--- a/modules/mogo-module-common/src/main/res/values/styles.xml
+++ b/modules/mogo-module-common/src/main/res/values/styles.xml
@@ -5,6 +5,7 @@
- @null
- true
- @android:color/transparent
+ - 0.85
- true
- @null
- @android:color/transparent
diff --git a/modules/mogo-module-event-panel-noop/consumer-rules.pro b/modules/mogo-module-event-panel-noop/consumer-rules.pro
deleted file mode 100644
index da191c00b8..0000000000
--- a/modules/mogo-module-event-panel-noop/consumer-rules.pro
+++ /dev/null
@@ -1 +0,0 @@
--keep class com.zhidao.mogo.module.event.panel.EventPanelConstants
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel-noop/gradle.properties b/modules/mogo-module-event-panel-noop/gradle.properties
deleted file mode 100644
index df90d55670..0000000000
--- a/modules/mogo-module-event-panel-noop/gradle.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-GROUP=com.mogo.module
-POM_ARTIFACT_ID=module-event-panel-noop
-VERSION_CODE=1
diff --git a/modules/mogo-module-event-panel-noop/src/main/java/com/zhidao/mogo/module/event/panel/EventPanelConstants.kt b/modules/mogo-module-event-panel-noop/src/main/java/com/zhidao/mogo/module/event/panel/EventPanelConstants.kt
deleted file mode 100644
index dc22fdbc7a..0000000000
--- a/modules/mogo-module-event-panel-noop/src/main/java/com/zhidao/mogo/module/event/panel/EventPanelConstants.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.zhidao.mogo.module.event.panel
-
-/**
- * 事件面板相关常量
- *
- * @author tongchenfei
- */
-object EventPanelConstants {
- const val MODULE_NAME = "MODULE_EVENT_PANEL"
- const val PATH_NAME = "/event/panel"
-}
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel-noop/src/main/java/com/zhidao/mogo/module/event/panel/EventPanelModuleProvider.kt b/modules/mogo-module-event-panel-noop/src/main/java/com/zhidao/mogo/module/event/panel/EventPanelModuleProvider.kt
deleted file mode 100644
index a5c31d2f2a..0000000000
--- a/modules/mogo-module-event-panel-noop/src/main/java/com/zhidao/mogo/module/event/panel/EventPanelModuleProvider.kt
+++ /dev/null
@@ -1,94 +0,0 @@
-package com.zhidao.mogo.module.event.panel
-
-import android.content.Context
-import android.os.Bundle
-import android.view.View
-import androidx.fragment.app.Fragment
-import com.alibaba.android.arouter.facade.annotation.Route
-import com.mogo.map.listener.IMogoMapListener
-import com.mogo.map.location.IMogoLocationListener
-import com.mogo.map.marker.IMogoMarkerClickListener
-import com.mogo.map.navi.IMogoNaviListener
-import com.mogo.service.MogoServicePaths
-import com.mogo.service.eventpanel.IEventPanelProvider
-import com.mogo.service.module.IMogoModuleLifecycle
-import com.mogo.utils.logger.Logger
-import com.zhidao.mogo.module.event.panel.EventPanelConstants.MODULE_NAME
-
-/**
- * 事件面板provider的空方法实现
- *
- * @author tongchenfei
- */
-
-
-const val TAG = "EventPanelNoopModule"
-
-@Route(path = MogoServicePaths.PATH_EVENT_PANEL)
-class EventPanelModuleProvider : IEventPanelProvider {
- override fun init(context: Context) {
- Logger.d(TAG, "模块初始化====")
- }
-
- override fun createFragment(context: Context, data: Bundle?): Fragment? {
- return null
- }
-
- /**
- * 显示面板
- */
- override fun showPanel() {
- }
-
-
- /**
- * 隐藏面板
- */
- override fun hidePanel() {
- }
-
- override fun createView(context: Context): View? {
- return null
- }
-
- override fun getModuleName(): String {
- return MODULE_NAME
- }
-
- override fun getCardLifecycle(): IMogoModuleLifecycle? {
- return null
- }
-
- override fun getMapListener(): IMogoMapListener? {
- return null
- }
-
- override fun getType(): Int {
- return 0
- }
-
- override fun getNaviListener(): IMogoNaviListener? {
- return null
- }
-
- override fun getLocationListener(): IMogoLocationListener? {
- return null
- }
-
- override fun getMarkerClickListener(): IMogoMarkerClickListener? {
- return null
- }
-
- override fun getAppPackage(): String? {
- return null
- }
-
- override fun getAppName(): String? {
- return null
- }
-
- override fun isPanelShow(): Boolean {
- return false
- }
-
-}
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/consumer-rules.pro b/modules/mogo-module-event-panel/consumer-rules.pro
deleted file mode 100644
index 6cd2a10967..0000000000
--- a/modules/mogo-module-event-panel/consumer-rules.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-#-----EventPanel------
--keep class com.zhidao.mogo.module.event.panel.bean.** {*;}
--keep class com.zhidao.mogo.module.event.panel.dao.** {*;}
--keep class com.zhidao.mogo.module.event.panel.listener.** {*;}
--keep class com.zhidao.mogo.module.event.panel.EventPanelConstants
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/EventPanelConstants.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/EventPanelConstants.kt
deleted file mode 100644
index 31e0c28a34..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/EventPanelConstants.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.zhidao.mogo.module.event.panel
-
-/**
- * 事件面板相关常量
- *
- * @author tongchenfei
- */
-object EventPanelConstants {
- const val MODULE_NAME = "MODULE_EVENT_PANEL"
- const val PATH_NAME = "/event/panel"
-
- const val ROAD_EVENT_USEFUL = "2"
- const val ROAD_EVENT_UNUSEFUL = "1"
- const val ROAD_EVENT_USEFUL_STATUS_UNSET = "0"
-}
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/EventPanelModuleProvider.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/EventPanelModuleProvider.kt
deleted file mode 100644
index 461581fc28..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/EventPanelModuleProvider.kt
+++ /dev/null
@@ -1,103 +0,0 @@
-package com.zhidao.mogo.module.event.panel
-
-import android.content.Context
-import android.os.Bundle
-import android.view.View
-import androidx.fragment.app.Fragment
-import com.alibaba.android.arouter.facade.annotation.Route
-import com.mogo.map.listener.IMogoMapListener
-import com.mogo.map.location.IMogoLocationListener
-import com.mogo.map.marker.IMogoMarkerClickListener
-import com.mogo.map.navi.IMogoNaviListener
-import com.mogo.service.eventpanel.IEventPanelProvider
-import com.mogo.service.module.IMogoModuleLifecycle
-import com.mogo.service.module.IMogoModuleProvider
-import com.mogo.utils.logger.Logger
-import com.zhidao.mogo.module.event.panel.EventPanelConstants.MODULE_NAME
-import com.zhidao.mogo.module.event.panel.EventPanelConstants.PATH_NAME
-import com.zhidao.mogo.module.event.panel.fragment.EventPanelFragment
-import com.zhidao.mogo.module.event.panel.util.MogoApiManager
-import com.zhidao.mogo.module.event.panel.util.TripRecordDataManager
-
-/**
- * 事件面板provider
- *
- * @author tongchenfei
- */
-@Route(path = PATH_NAME)
-class EventPanelModuleProvider : IEventPanelProvider {
- /**
- * Do your init work in this method, it well be call when processor has been load.
- *
- * @param context ctx
- */
- override fun init(context: Context) {
- Logger.d(MODULE_NAME, "模块初始化====")
- MogoApiManager.init(context)
- TripRecordDataManager.init(context)
- }
-
- override fun createFragment(context: Context, data: Bundle?): Fragment? {
- return EventPanelFragment.getInstance()
- }
-
- /**
- * 显示面板
- */
- override fun showPanel() {
- EventPanelFragment.getInstance().showPanel()
- }
-
- override fun isPanelShow(): Boolean {
- return EventPanelFragment.getInstance().isPanelShow()
- }
-
-
- /**
- * 隐藏面板
- */
- override fun hidePanel() {
- EventPanelFragment.getInstance().hidePanel()
- }
-
- override fun createView(context: Context): View? {
- return null
- }
-
- override fun getModuleName(): String {
- return MODULE_NAME
- }
-
- override fun getCardLifecycle(): IMogoModuleLifecycle? {
- return null
- }
-
- override fun getMapListener(): IMogoMapListener? {
- return null
- }
-
- override fun getType(): Int {
- return 0
- }
-
- override fun getNaviListener(): IMogoNaviListener? {
- return null
- }
-
- override fun getLocationListener(): IMogoLocationListener? {
- return null
- }
-
- override fun getMarkerClickListener(): IMogoMarkerClickListener? {
- return null
- }
-
- override fun getAppPackage(): String? {
- return null
- }
-
- override fun getAppName(): String? {
- return null
- }
-
-}
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/adapter/EventPagerAdapter.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/adapter/EventPagerAdapter.kt
deleted file mode 100644
index d958b6bff1..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/adapter/EventPagerAdapter.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.zhidao.mogo.module.event.panel.adapter
-
-import androidx.fragment.app.Fragment
-import androidx.viewpager2.adapter.FragmentStateAdapter
-import com.zhidao.mogo.module.event.panel.fragment.MyShareFragment
-import com.zhidao.mogo.module.event.panel.fragment.ShareEventsFragment
-import com.zhidao.mogo.module.event.panel.fragment.SurroundingEventFragment
-import com.zhidao.mogo.module.event.panel.fragment.TripRecordFragment
-
-/**
- * 事件面板viewpager2的adapter
- *
- * @author tongchenfei
- */
-class EventPagerAdapter(fragment: Fragment) : FragmentStateAdapter(fragment) {
- private val fragments:Array = arrayOf(TripRecordFragment(), SurroundingEventFragment(), ShareEventsFragment())
-
- /**
- * 目前一共就三个fragment
- */
- override fun getItemCount(): Int = fragments.size
-
- override fun createFragment(position: Int): Fragment = fragments[position]
-}
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/adapter/ShareEventAdapter.java b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/adapter/ShareEventAdapter.java
deleted file mode 100644
index e782b957ed..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/adapter/ShareEventAdapter.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package com.zhidao.mogo.module.event.panel.adapter;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.zhidao.mogo.module.event.panel.R;
-import com.zhidao.mogo.module.event.panel.bean.ShareEventDescription;
-import com.zhidao.mogo.module.event.panel.bean.ShareEventItem;
-
-import java.util.ArrayList;
-
-public class ShareEventAdapter extends RecyclerView.Adapter {
- private Context context;
- private ArrayList dataArrayList;
- private Object Tag = "ShareEventAdapter";
- private final LayoutInflater shareLayoutInflater;
-
- public static enum ITEM_TYPE {
- ITEM_TYPE_NUM_DES,
- ITEM_TYPE_SHARE_LIST_ITEM,
- ITEM_TYPE_SHARE_EMPTY
- }
-
- public ShareEventAdapter(Context context, ArrayList dataArrayList) {
- this.context = context;
- this.dataArrayList = dataArrayList;
- shareLayoutInflater = LayoutInflater.from(context);
- }
-
- @NonNull
- @Override
- public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- //根据viewType创建自定义布局
- if (viewType == ITEM_TYPE.ITEM_TYPE_NUM_DES.ordinal()) {
- View v = shareLayoutInflater.inflate(R.layout.module_event_panel_share_description, parent,
- false);
- shareDescriptionViewHolder holder = new shareDescriptionViewHolder(v);
- return holder;
- } else if ((viewType == ITEM_TYPE.ITEM_TYPE_SHARE_LIST_ITEM.ordinal())) {
- View v = shareLayoutInflater.inflate(R.layout.module_event_panel_share_item, parent,
- false);
- shareItemViewHolder holder = new shareItemViewHolder(v);
- return holder;
- } else {
- View v = shareLayoutInflater.inflate(R.layout.module_event_panel_share_empty, parent,
- false);
- shareEmptyViewHolder holder = new shareEmptyViewHolder(v);
- return holder;
- }
-
- }
-
- @Override
- public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
-
- if (position == 0) {
- ShareEventDescription data = new ShareEventDescription();
- data.shareNum = "12";
- data.approveNum = "10";
-
- ((shareDescriptionViewHolder) holder).shareNumTextView.setText(data.shareNum);
- ((shareDescriptionViewHolder) holder).approveNumTextView.setText(data.approveNum);
-
- } else {
- if (dataArrayList.size() > 0) {
- ShareEventItem data = dataArrayList.get(position - 1);
- data.usefulNum = "2";
- data.uselessNum = "3";
- ((shareItemViewHolder) holder).caseStyleTextView.setText(data.caseStyle);
- ((shareItemViewHolder) holder).caseAddressTextView.setText(data.caseAddress);
- ((shareItemViewHolder) holder).caseTimeTextView.setText(data.caseTime);
- ((shareItemViewHolder) holder).caseUsefulTextView.setText(data.usefulNum);
- ((shareItemViewHolder) holder).caseUselessTextView.setText(data.uselessNum);
- }
- }
-
- }
-
- @Override
- public int getItemCount() {
- return dataArrayList.size() + dataArrayList.size() > 0 ? 1 : 2;
- }
-
- @Override
- public int getItemViewType(int position) {
- switch (dataArrayList.size()) {
- case 0:
- return position == 0 ? ITEM_TYPE.ITEM_TYPE_NUM_DES.ordinal() : ITEM_TYPE.ITEM_TYPE_SHARE_EMPTY.ordinal();
- }
-
- int type = position == 0 ? ITEM_TYPE.ITEM_TYPE_NUM_DES.ordinal() : ITEM_TYPE.ITEM_TYPE_SHARE_LIST_ITEM.ordinal();
- return type;
- }
-
- /*
- * 分享列表
- * */
- class shareItemViewHolder extends RecyclerView.ViewHolder {
- private TextView caseStyleTextView;
- private TextView caseAddressTextView;
- private TextView caseTimeTextView;
- private TextView caseUsefulTextView;
- private TextView caseUselessTextView;
-
- public shareItemViewHolder(@NonNull View itemView) {
- super(itemView);
- caseStyleTextView = itemView.findViewById(R.id.road_case_style);
- caseAddressTextView = itemView.findViewById(R.id.road_case_address);
- caseTimeTextView = itemView.findViewById(R.id.road_case_share_time);
- caseUsefulTextView = itemView.findViewById(R.id.road_case_useful_num);
- caseUselessTextView = itemView.findViewById(R.id.road_case_useless_num);
- }
- }
-
- /*
- * 分享次数,热心指数...
- * */
- class shareDescriptionViewHolder extends RecyclerView.ViewHolder {
- private TextView shareNumTextView;
- private TextView approveNumTextView;
-
- public shareDescriptionViewHolder(@NonNull View itemView) {
- super(itemView);
- shareNumTextView = itemView.findViewById(R.id.share_num);
- approveNumTextView = itemView.findViewById(R.id.share_approve);
- }
- }
-
- /*
- * 去分享
- * */
- class shareEmptyViewHolder extends RecyclerView.ViewHolder {
- public shareEmptyViewHolder(@NonNull View itemView) {
- super(itemView);
- }
- }
-}
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/bean/ShareEventDescription.java b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/bean/ShareEventDescription.java
deleted file mode 100644
index f8980d92f3..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/bean/ShareEventDescription.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.zhidao.mogo.module.event.panel.bean;
-
-public class ShareEventDescription {
- public String shareNum;
- public String approveNum;
-}
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/bean/ShareEventItem.java b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/bean/ShareEventItem.java
deleted file mode 100644
index 509492eb58..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/bean/ShareEventItem.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.zhidao.mogo.module.event.panel.bean;
-
-import java.io.Serializable;
-
-public class ShareEventItem implements Serializable {
- public String caseStyle;
- public String caseAddress;
- public String caseTime;
- public String usefulNum;
- public String uselessNum;
-}
-
-
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/bean/TripRecord.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/bean/TripRecord.kt
deleted file mode 100644
index d2738b3b4c..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/bean/TripRecord.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.zhidao.mogo.module.event.panel.bean
-
-import androidx.room.Entity
-import androidx.room.PrimaryKey
-import com.zhidao.mogo.module.event.panel.EventPanelConstants.ROAD_EVENT_USEFUL_STATUS_UNSET
-
-/**
- * 出行记录本地存储封装类,此类标识了数据库表名以及字段名
- *
- * @author tongchenfei
- */
-@Entity
-data class TripRecord(@PrimaryKey(autoGenerate = false)
- var id: Int,
- var eventId: String = "",
- var eventType: Int,
- /**
- * 是否有用
- * 1 - 没用
- * 2 - 有用
- * 0 - 未设置
- */
- var usefulStatus: String = ROAD_EVENT_USEFUL_STATUS_UNSET,
- var entity: String = "",
- var recordTime: Long = System.currentTimeMillis())
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/dao/TripRecordDao.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/dao/TripRecordDao.kt
deleted file mode 100644
index 23860e8534..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/dao/TripRecordDao.kt
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.zhidao.mogo.module.event.panel.dao
-
-import androidx.room.*
-import com.zhidao.mogo.module.event.panel.bean.TripRecord
-
-/**
- * 出行动态dao,全部使用同步方法,在线程中执行
- *
- * @author tongchenfei
- */
-@Dao
-interface TripRecordDao {
- /**
- * 查询当日数据
- * @param limitTime 当日0点的时间戳
- */
- @Query(value = "SELECT * FROM TripRecord WHERE recordTime > :limitTime ORDER BY recordTime DESC")
- fun queryAllTripRecord(limitTime: Long): List
-
- /**
- * 根据事件id获取出行动态
- *
- * @param eventId 事件id [com.mogo.module.common.entity.V2XRoadEventEntity.noveltyInfo.infoId]
- */
- @Query(value = "SELECT * FROM TripRecord WHERE eventId = :eventId")
- fun queryTripRecordByEventId(eventId: String): TripRecord?
-
- @Query(value = "SELECT * FROM TripRecord WHERE id = :id")
- fun queryTripRecordById(id: Int): TripRecord?
-
- @Insert(onConflict = OnConflictStrategy.REPLACE)
- fun insert(vararg tripRecord: TripRecord)
-
- @Update
- fun update(vararg tripRecord: TripRecord)
-
- @Delete
- fun delete(vararg tripRecord: TripRecord)
-
- /**
- * 删除超时的数据,即当天0时以前的数据
- * 虽然注解是Query,但是目的是执行后面的sql语句,所以就不要在意这些细节了
- *
- * @param limitTime 当日0点的时间戳
- */
- @Query(value = "DELETE FROM TripRecord WHERE recordTime < :limitTime")
- fun deleteOvertimeTripRecord(limitTime: Long)
-}
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/dao/TripRecordDatabase.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/dao/TripRecordDatabase.kt
deleted file mode 100644
index 92dafed8a4..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/dao/TripRecordDatabase.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.zhidao.mogo.module.event.panel.dao
-
-import android.content.Context
-import androidx.room.Database
-import androidx.room.Room
-import androidx.room.RoomDatabase
-import com.zhidao.mogo.module.event.panel.bean.TripRecord
-
-@Database(entities = [TripRecord::class], version = 1, exportSchema = false)
-abstract class TripRecordDatabase : RoomDatabase() {
- companion object{
- private var instance:TripRecordDatabase? = null
- fun getInstance(context: Context):TripRecordDatabase{
- if (instance == null) {
- synchronized(TripRecordDatabase::class.java) {
- if (instance == null) {
- instance = Room.databaseBuilder(context, TripRecordDatabase::class.java, "TripRecordDatabase.db").build()
- }
- }
- }
- return instance!!
- }
- }
- abstract fun getTripRecordDao():TripRecordDao
-}
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/EventPanelFragment.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/EventPanelFragment.kt
deleted file mode 100644
index 6f5a5f8912..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/EventPanelFragment.kt
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.zhidao.mogo.module.event.panel.fragment
-
-import android.view.View
-import androidx.fragment.app.Fragment
-import com.mogo.commons.mvp.MvpFragment
-import com.mogo.utils.logger.Logger
-import com.zhidao.mogo.module.event.panel.EventPanelConstants.MODULE_NAME
-import com.zhidao.mogo.module.event.panel.R
-import com.zhidao.mogo.module.event.panel.adapter.EventPagerAdapter
-import com.zhidao.mogo.module.event.panel.presenter.EventPanelPresenter
-import kotlinx.android.synthetic.main.module_event_panel_fragment_event_panel.*
-
-/**
- * 事件面板主fragment
- *
- * @author tongchenfei
- */
-class EventPanelFragment : MvpFragment() {
-
- companion object{
- private val fragment = EventPanelFragment()
- fun getInstance():EventPanelFragment{
- return fragment
- }
- }
-
- override fun getLayoutId(): Int {
- return R.layout.module_event_panel_fragment_event_panel
- }
-
- override fun initViews() {
- Logger.d(MODULE_NAME, "EventPanelFragment init view===")
- vpEventPanel.adapter = EventPagerAdapter(this)
- btnShowOrHidePanels.setOnClickListener {
- if (vpEventPanel.visibility == View.GONE) {
- showPanel()
- }else{
- hidePanel()
- }
- }
- }
- override fun createPresenter(): EventPanelPresenter {
- return EventPanelPresenter(this)
- }
-
- fun showPanel(){
- Logger.d(MODULE_NAME,"in fragment show panel")
- vpEventPanel.visibility = View.VISIBLE
- btnShowOrHidePanels.text = "隐藏面板"
- }
-
- fun hidePanel(){
- Logger.d(MODULE_NAME,"in fragment hide panel")
- vpEventPanel.visibility = View.GONE
- btnShowOrHidePanels.text = "显示面板"
- }
-
- fun isPanelShow():Boolean{
- return vpEventPanel.visibility == View.VISIBLE
- }
-}
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/MyShareFragment.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/MyShareFragment.kt
deleted file mode 100644
index 06c387766a..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/MyShareFragment.kt
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.zhidao.mogo.module.event.panel.fragment
-
-import com.mogo.commons.mvp.MvpFragment
-import com.zhidao.mogo.module.event.panel.R
-import com.zhidao.mogo.module.event.panel.presenter.MySharePresenter
-
-class MyShareFragment : MvpFragment() {
- /**
- * 布局资源
- *
- * @return
- */
- override fun getLayoutId(): Int = R.layout.module_event_panel_share_item
-
- /**
- * 初始化控件,必须在初始化完成之后才可以实例化presenter,避免
- * presenter 生命周期错乱
- */
- override fun initViews() {
- }
-
- /**
- * 创建 presenter 实例
- *
- * @return
- */
- override fun createPresenter(): MySharePresenter = MySharePresenter(this)
-}
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/ShareEventsFragment.java b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/ShareEventsFragment.java
deleted file mode 100644
index 0ec47f825f..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/ShareEventsFragment.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package com.zhidao.mogo.module.event.panel.fragment;
-
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.mogo.commons.mvp.MvpFragment;
-import com.zhidao.mogo.module.event.panel.R;
-import com.zhidao.mogo.module.event.panel.adapter.ShareEventAdapter;
-import com.zhidao.mogo.module.event.panel.bean.ShareEventItem;
-import com.zhidao.mogo.module.event.panel.presenter.ShareEventsPresenter;
-
-import java.util.ArrayList;
-
-public class ShareEventsFragment extends MvpFragment {
-
- private RecyclerView recyclerView;
- private View view;
- private ShareEventAdapter adapter;
- private ArrayList dataArrayList = new ArrayList();
-
- @Override
- protected int getLayoutId() {
- return R.layout.module_event_panel_share_recylerview;
- }
-
- @Override
- protected void initViews() {
-
- }
-
- @Nullable
- @Override
- public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- view = inflater.inflate(R.layout.module_event_panel_share_recylerview, container, false);
- initRecyclerView();
- initData();
- return view;
- }
-
- private void initRecyclerView() {
- recyclerView = view.findViewById(R.id.road_case_share_list);
- adapter = new ShareEventAdapter(getActivity(),dataArrayList);
- recyclerView.setAdapter(adapter);
- LinearLayoutManager linearLayoutManager =
- new LinearLayoutManager( getActivity(), LinearLayoutManager.VERTICAL, false );
- recyclerView.setLayoutManager(linearLayoutManager);
- }
-
- private void initData() {
-// for (int i = 0; i < 12; i++) {
-// ShareEventItem data = new ShareEventItem();
-// data.caseStyle = "道路拥堵";
-// data.caseAddress = "环球贸易中心";
-// data.caseTime = "2020-07-21 12:00:00";
-// dataArrayList.add(data);
-// }
- }
-
- @NonNull
- @Override
- protected ShareEventsPresenter createPresenter() {
- return new ShareEventsPresenter(this);
- }
-}
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/SurroundingEventFragment.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/SurroundingEventFragment.kt
deleted file mode 100644
index b9ffbd4e46..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/SurroundingEventFragment.kt
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.zhidao.mogo.module.event.panel.fragment
-
-import com.mogo.commons.mvp.MvpFragment
-import com.zhidao.mogo.module.event.panel.R
-import com.zhidao.mogo.module.event.panel.presenter.SurroundingEventPresenter
-import kotlinx.android.synthetic.main.module_event_panel_fragment_surrounding_event.*
-
-class SurroundingEventFragment:MvpFragment(){
- /**
- * 布局资源
- *
- * @return
- */
- override fun getLayoutId(): Int = R.layout.module_event_panel_fragment_surrounding_event
-
- /**
- * 初始化控件,必须在初始化完成之后才可以实例化presenter,避免
- * presenter 生命周期错乱
- */
- override fun initViews() {
- tvTitle.setOnClickListener {
- EventPanelFragment.getInstance().hidePanel()
- }
- }
-
- /**
- * 创建 presenter 实例
- *
- * @return
- */
- override fun createPresenter(): SurroundingEventPresenter = SurroundingEventPresenter(this)
-}
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/TripRecordFragment.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/TripRecordFragment.kt
deleted file mode 100644
index 09854c3542..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/TripRecordFragment.kt
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.zhidao.mogo.module.event.panel.fragment
-
-import android.util.Log
-import com.mogo.commons.mvp.MvpFragment
-import com.mogo.module.common.entity.V2XMessageEntity
-import com.mogo.utils.logger.Logger
-import com.zhidao.mogo.module.event.panel.EventPanelConstants.MODULE_NAME
-import com.zhidao.mogo.module.event.panel.R
-import com.zhidao.mogo.module.event.panel.bean.TripRecord
-import com.zhidao.mogo.module.event.panel.presenter.TripRecordPresenter
-import com.zhidao.mogo.module.event.panel.util.TripRecordDataManager
-import kotlinx.android.synthetic.main.module_event_panel_fragment_trip_record.*
-import kotlin.random.Random
-
-/**
- * 出行动态fragment
- */
-class TripRecordFragment : MvpFragment() {
- private val tripRecordList = ArrayList()
- override fun getLayoutId(): Int = R.layout.module_event_panel_fragment_trip_record
-
- override fun initViews() {
- btnInsert.setOnClickListener {
- TripRecordDataManager.insertTripRecord(TripRecord(id = 456, eventType = 456,eventId = "456"))
- }
- btnUpdate.setOnClickListener {
- TripRecordDataManager.syncRoadEventModifyState(eventId = "456", modifyType = "2")
- }
- btnQuery.setOnClickListener {
- Log.d(MODULE_NAME, "local list: $tripRecordList")
- mPresenter.queryAllTripRecord()
- }
- }
-
- override fun createPresenter(): TripRecordPresenter = TripRecordPresenter(this)
-
- fun refreshTripRecordList(tripRecords: List) {
- Logger.d(MODULE_NAME, "刷新出行动态列表:$tripRecords")
- tripRecordList.clear()
- tripRecordList.addAll(tripRecords)
- }
-
- /**
- * 刷新单个出行动态,如果无此动态,新增动态
- */
- fun refreshTripRecord(tripRecord: TripRecord) {
- Logger.d(MODULE_NAME, "刷新单个出行动态: $tripRecord")
- }
-}
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/listener/ITripRecordCallback.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/listener/ITripRecordCallback.kt
deleted file mode 100644
index 6bf2e6208e..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/listener/ITripRecordCallback.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.zhidao.mogo.module.event.panel.listener
-
-import com.zhidao.mogo.module.event.panel.bean.TripRecord
-
-/**
- * 数据库异步操作数据回调
- */
-interface ITripRecordCallback {
- /**
- * 查询全部出行动态成功
- */
- fun queryTripRecordListSuccess(tripRecordList:List)
-
- /**
- * 有出行动态新增或更新后,回调此接口
- */
- fun insertOrUpdateTripRecordSuccess(tripRecord:TripRecord)
-}
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/EventPanelPresenter.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/EventPanelPresenter.kt
deleted file mode 100644
index 2aa237ed72..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/EventPanelPresenter.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.zhidao.mogo.module.event.panel.presenter
-
-import com.mogo.commons.mvp.Presenter
-import com.zhidao.mogo.module.event.panel.fragment.EventPanelFragment
-
-/**
- * 事件面板presenter
- *
- * @author tongchenfei
- */
-class EventPanelPresenter(view: EventPanelFragment) : Presenter(view)
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/MySharePresenter.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/MySharePresenter.kt
deleted file mode 100644
index ab49fba81a..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/MySharePresenter.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.zhidao.mogo.module.event.panel.presenter
-
-import com.mogo.commons.mvp.Presenter
-import com.zhidao.mogo.module.event.panel.fragment.MyShareFragment
-
-class MySharePresenter(view: MyShareFragment) : Presenter(view) {
-}
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/ShareEventsPresenter.java b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/ShareEventsPresenter.java
deleted file mode 100644
index 4538dd7a7d..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/ShareEventsPresenter.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.zhidao.mogo.module.event.panel.presenter;
-
-import com.mogo.commons.mvp.IView;
-import com.mogo.commons.mvp.Presenter;
-import com.zhidao.mogo.module.event.panel.fragment.ShareEventsFragment;
-
-public class ShareEventsPresenter extends Presenter {
- public ShareEventsPresenter(IView view) {
- super((ShareEventsFragment) view);
- }
-}
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/SurroundingEventPresenter.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/SurroundingEventPresenter.kt
deleted file mode 100644
index 871272bb5b..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/SurroundingEventPresenter.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.zhidao.mogo.module.event.panel.presenter
-
-import com.mogo.commons.mvp.Presenter
-import com.zhidao.mogo.module.event.panel.fragment.SurroundingEventFragment
-
-class SurroundingEventPresenter(view: SurroundingEventFragment) : Presenter(view) {
-}
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/TripRecordPresenter.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/TripRecordPresenter.kt
deleted file mode 100644
index e1dd809210..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/TripRecordPresenter.kt
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.zhidao.mogo.module.event.panel.presenter
-
-import androidx.lifecycle.LifecycleOwner
-import com.mogo.commons.mvp.Presenter
-import com.zhidao.mogo.module.event.panel.bean.TripRecord
-import com.zhidao.mogo.module.event.panel.fragment.TripRecordFragment
-import com.zhidao.mogo.module.event.panel.listener.ITripRecordCallback
-import com.zhidao.mogo.module.event.panel.util.TripRecordDataManager
-
-class TripRecordPresenter(view: TripRecordFragment) : Presenter(view),ITripRecordCallback {
-
- init {
- TripRecordDataManager.addTripRecordCallback(this)
- }
-
- override fun onDestroy(owner: LifecycleOwner) {
- super.onDestroy(owner)
- TripRecordDataManager.removeTripRecordCallback(this)
- }
-
- fun queryAllTripRecord(){
- TripRecordDataManager.queryAllTripRecord()
- }
-
- override fun queryTripRecordListSuccess(tripRecordList: List) {
- mView.refreshTripRecordList(tripRecordList)
- }
-
- override fun insertOrUpdateTripRecordSuccess(tripRecord: TripRecord) {
- mView.refreshTripRecord(tripRecord)
- }
-
-}
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/util/MogoApiManager.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/util/MogoApiManager.kt
deleted file mode 100644
index d4d52b3c2d..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/util/MogoApiManager.kt
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.zhidao.mogo.module.event.panel.util
-
-import android.content.Context
-import com.alibaba.android.arouter.launcher.ARouter
-import com.mogo.service.IMogoServiceApis
-import com.mogo.service.MogoServicePaths
-
-object MogoApiManager {
- lateinit var serviceApis:IMogoServiceApis
-
- fun init(context: Context) {
- serviceApis = ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context) as IMogoServiceApis
- }
-}
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/util/TripRecordDataManager.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/util/TripRecordDataManager.kt
deleted file mode 100644
index 7a373ed714..0000000000
--- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/util/TripRecordDataManager.kt
+++ /dev/null
@@ -1,171 +0,0 @@
-package com.zhidao.mogo.module.event.panel.util
-
-import android.content.BroadcastReceiver
-import android.content.Context
-import android.content.Intent
-import android.content.IntentFilter
-import android.os.Handler
-import androidx.localbroadcastmanager.content.LocalBroadcastManager
-import com.mogo.module.common.entity.V2XMessageEntity
-import com.mogo.module.common.entity.V2XMessageEntity.V2XTypeEnum.*
-import com.mogo.module.common.entity.V2XRoadEventEntity
-import com.mogo.utils.ThreadPoolService
-import com.mogo.utils.logger.Logger
-import com.mogo.utils.network.utils.GsonUtil
-import com.zhidao.mogo.module.event.panel.EventPanelConstants.MODULE_NAME
-import com.zhidao.mogo.module.event.panel.bean.TripRecord
-import com.zhidao.mogo.module.event.panel.dao.TripRecordDao
-import com.zhidao.mogo.module.event.panel.dao.TripRecordDatabase
-import com.zhidao.mogo.module.event.panel.listener.ITripRecordCallback
-import java.util.*
-import kotlin.collections.ArrayList
-
-
-private const val BROADCAST_SCENE_EVENT_ACTION = "com.v2x.scene_local_broadcast"
-private const val BROADCAST_SCENE_MODIFY_ACTION = "com.zhidao.tanlu.dataerror"
-
-private const val BROADCAST_SCENE_EXTRA_KEY = "V2XMessageEntity"
-private const val BORADCAST_SCENE_MODIFY_EVENT_ID_KEY = "id"
-private const val BROADCAST_SCENE_MODIFY_EVENT_UPDATE_TYPE_KEY = "updateType"
-
-/**
- * 出行动态的数据管理类,由于TripRecordFragment初始化时机较晚,所以封装一个单例类,提早初始化
- */
-object TripRecordDataManager {
- private lateinit var context: Context
- private val sceneEventReceiver = SceneEventReceiver()
- private lateinit var tripRecordDao: TripRecordDao
-
- private val tripRecordCallbackList = ArrayList()
-
- fun init(context: Context) {
- this.context = context
- LocalBroadcastManager.getInstance(context).registerReceiver(sceneEventReceiver, IntentFilter(BROADCAST_SCENE_EVENT_ACTION))
- context.registerReceiver(sceneEventReceiver, IntentFilter(BROADCAST_SCENE_MODIFY_ACTION))
- tripRecordDao = TripRecordDatabase.getInstance(TripRecordDataManager.context).getTripRecordDao()
- }
-
- fun addTripRecordCallback(callback: ITripRecordCallback) {
- tripRecordCallbackList.add(callback)
- }
-
- fun removeTripRecordCallback(callback: ITripRecordCallback) {
- tripRecordCallbackList.remove(callback)
- }
-
- private val handler = Handler()
- fun queryAllTripRecord() {
- ThreadPoolService.singleExecute {
- val limitTime = countLimitTime()
- // 查询所有的出行动态
- val tripRecordList = tripRecordDao.queryAllTripRecord(limitTime)
- Logger.d(MODULE_NAME, "查询所有出行动态,limitTime: $limitTime, list: $tripRecordList")
- // 删除超时的出行动态
- tripRecordDao.deleteOvertimeTripRecord(limitTime)
- // 切换线程回调
- handler.post {
- tripRecordCallbackList.forEach { callback ->
- callback.queryTripRecordListSuccess(tripRecordList)
- }
- }
- }
- }
-
- fun insertTripRecord(record: TripRecord) {
- ThreadPoolService.singleExecute {
- // 先查一下此数据是否存在
- Logger.d(MODULE_NAME, "出行动态入库===$record")
-
- var check = tripRecordDao.queryTripRecordById(record.id)
-
- if (check == null) {
- Logger.d(MODULE_NAME, "数据库中不存在此数据,直接插入")
- check = record
- tripRecordDao.insert(record)
- } else {
- Logger.d(MODULE_NAME, "数据库中存在此数据,更新recordTime即可,其他参数不变")
- check.recordTime = System.currentTimeMillis()
- tripRecordDao.update(check)
- }
- // 为了防止只进不出,所以在插入新数据时,进行过期数据删除操作
- tripRecordDao.deleteOvertimeTripRecord(countLimitTime())
- // 切换线程回调
- handler.post {
- tripRecordCallbackList.forEach { callback ->
- callback.insertOrUpdateTripRecordSuccess(check)
- }
- }
- }
- }
-
- /**
- * 计算约束时间,即当日0时
- */
- private fun countLimitTime(): Long {
- val calendar = Calendar.getInstance()
- calendar.time = Date()
- calendar.set(Calendar.HOUR_OF_DAY, 0)
- calendar.set(Calendar.MINUTE, 0)
- calendar.set(Calendar.SECOND, 0)
- return calendar.timeInMillis
- }
-
- /**
- * 处理道路事件推送,保存到本地数据库
- * 目前只处理道路事件,违章提醒,他车求助,其他事件暂不处理
- */
- private fun dealSceneMessage(type: Int, content: Any) {
- if (type in arrayOf(ALERT_ROAD_WARNING, ALERT_ILLEGAL_PARK_WARNING, ALERT_SEEK_WARNING)) {
- val eventId = if (type == ALERT_ROAD_WARNING) {
- val event = content as V2XRoadEventEntity
- event.noveltyInfo.infoId
- } else {
- ""
- }
- Logger.d(MODULE_NAME, "处理场景事件,准备插入数据库===eventId: $eventId")
- insertTripRecord(TripRecord(id = content.hashCode(), eventId = eventId, eventType = type, entity = GsonUtil.jsonFromObject(content)))
- }
- }
-
- /**
- * 本地数据库同步v2x传过来的纠错信息
- */
- fun syncRoadEventModifyState(eventId: String, modifyType: String) {
- Logger.d(MODULE_NAME, "准备同步纠错信息: $eventId, $modifyType")
- ThreadPoolService.singleExecute {
- // 找出需要纠错的数据
- val willModify = tripRecordDao.queryTripRecordByEventId(eventId)
- if (willModify != null) {
- // 查到数据进行修改,如果查不到数据,就不做操作了
- Logger.d(MODULE_NAME, "准备修改纠错状态:$willModify")
- willModify.usefulStatus = modifyType
- tripRecordDao.update(willModify)
- // 切线程回调
- handler.post {
- tripRecordCallbackList.forEach { callback ->
- callback.insertOrUpdateTripRecordSuccess(willModify)
- }
- }
- }
- }
- }
-
- class SceneEventReceiver : BroadcastReceiver() {
- override fun onReceive(context: Context, intent: Intent) {
- Logger.d(MODULE_NAME, "收到V2X事件推送===")
- when (intent.action) {
- BROADCAST_SCENE_EVENT_ACTION -> {
- // 道路事件推送
- val message = intent.getSerializableExtra(BROADCAST_SCENE_EXTRA_KEY) as V2XMessageEntity<*>
- Logger.d(MODULE_NAME, "道路事件推送 type: ${message.type}, content: ${message.content}")
- dealSceneMessage(message.type, message.content)
- }
- BROADCAST_SCENE_MODIFY_ACTION -> {
- // 纠错推送
- syncRoadEventModifyState(intent.getStringExtra(BORADCAST_SCENE_MODIFY_EVENT_ID_KEY), intent.getStringExtra(BROADCAST_SCENE_MODIFY_EVENT_UPDATE_TYPE_KEY))
- }
- }
-
- }
- }
-}
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_fragment_event_panel.xml b/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_fragment_event_panel.xml
deleted file mode 100644
index 3536c79096..0000000000
--- a/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_fragment_event_panel.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_fragment_surrounding_event.xml b/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_fragment_surrounding_event.xml
deleted file mode 100644
index 58d69b494e..0000000000
--- a/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_fragment_surrounding_event.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_fragment_trip_record.xml b/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_fragment_trip_record.xml
deleted file mode 100644
index 734133c3be..0000000000
--- a/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_fragment_trip_record.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_share_description.xml b/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_share_description.xml
deleted file mode 100644
index 864ddbe8fb..0000000000
--- a/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_share_description.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_share_empty.xml b/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_share_empty.xml
deleted file mode 100644
index 98c49f2548..0000000000
--- a/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_share_empty.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_share_item.xml b/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_share_item.xml
deleted file mode 100644
index cb1c941fdc..0000000000
--- a/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_share_item.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_share_recylerview.xml b/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_share_recylerview.xml
deleted file mode 100644
index 4951050a70..0000000000
--- a/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_share_recylerview.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
diff --git a/modules/mogo-module-event-panel/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-event-panel/src/main/res/values-xhdpi/dimens.xml
deleted file mode 100644
index a6b3daec93..0000000000
--- a/modules/mogo-module-event-panel/src/main/res/values-xhdpi/dimens.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/res/values/dimens.xml b/modules/mogo-module-event-panel/src/main/res/values/dimens.xml
deleted file mode 100644
index a6b3daec93..0000000000
--- a/modules/mogo-module-event-panel/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/bean/BottomLayerViewWrapper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/bean/BottomLayerViewWrapper.java
new file mode 100644
index 0000000000..5dd939ff67
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/bean/BottomLayerViewWrapper.java
@@ -0,0 +1,46 @@
+package com.mogo.module.extensions.bean;
+
+import android.view.View;
+
+/**
+ * 底层view封装
+ *
+ * @author tongchenfei
+ */
+public class BottomLayerViewWrapper {
+ private View view;
+ private int x;
+ private int y;
+
+ public BottomLayerViewWrapper(){}
+
+ public BottomLayerViewWrapper(View view, int x, int y) {
+ this.view = view;
+ this.x = x;
+ this.y = y;
+ }
+
+ public View getView() {
+ return view;
+ }
+
+ public void setView(View view) {
+ this.view = view;
+ }
+
+ public int getX() {
+ return x;
+ }
+
+ public void setX(int x) {
+ this.x = x;
+ }
+
+ public int getY() {
+ return y;
+ }
+
+ public void setY(int y) {
+ this.y = y;
+ }
+}
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 9b98fe56a0..827f9320e1 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
@@ -1,5 +1,6 @@
package com.mogo.module.extensions.entrance;
+import android.content.Context;
import android.content.Intent;
import android.graphics.Rect;
import android.os.Bundle;
@@ -8,6 +9,7 @@ import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
@@ -38,6 +40,7 @@ import com.mogo.module.extensions.ExtensionsModuleConst;
import com.mogo.module.extensions.R;
import com.mogo.module.extensions.navi.NaviInfoView;
import com.mogo.module.extensions.userinfo.UserInfo;
+import com.mogo.module.extensions.utils.EntranceViewHolder;
import com.mogo.module.extensions.utils.TopViewAnimHelper;
import com.mogo.module.share.manager.ServiceApisManager;
import com.mogo.service.IMogoServiceApis;
@@ -153,6 +156,7 @@ public class EntranceFragment extends MvpFragment{
+ mApis.getMogoMonitorApi().showLogDebugDialog();
+ return true;
+ });
}
ConstraintLayout rootView = findViewById(R.id.module_entrance_id_top_motion_layout);
@@ -288,16 +297,12 @@ public class EntranceFragment extends MvpFragment {
- // todo 测试代码
-// mApis.getEventPanelManager().showPanel();
- // 原始逻辑
try {
LaunchUtils.launchByPkg(getContext(), "com.zhidao.auto.personal");
// 埋点
final Map properties = new HashMap<>();
properties.put("type", 3);
- ServiceApisManager.serviceApis.getAnalyticsApi().track("Launcher_APP_Icon",
- properties);
+ ServiceApisManager.serviceApis.getAnalyticsApi().track("Launcher_APP_Icon", properties);
} catch (Exception e) {
Logger.e(TAG, e, "打开个人中心Exception");
}
@@ -305,8 +310,7 @@ public class EntranceFragment extends MvpFragment{
+ TextView tv = new TextView(getContext());
+ tv.setText("entrance add");
+ mApis.getEntranceButtonController().addBottomLayerView(tv, 50, 50);
+ });
}
@Override
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java
index 2b4f032948..17ee75ccb4 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java
@@ -1,9 +1,11 @@
package com.mogo.module.extensions.entrance;
import android.content.Context;
+import android.view.View;
import android.widget.TextView;
import com.alibaba.android.arouter.facade.annotation.Route;
+import com.mogo.module.extensions.utils.EntranceViewHolder;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.entrance.ButtonIndex;
import com.mogo.service.entrance.IMogoEntranceButtonController;
@@ -22,6 +24,21 @@ public class MogoEntranceButtonControllerImpl implements IMogoEntranceButtonCont
return MogoEntranceButtons.getButton( index );
}
+ @Override
+ public void addBottomLayerView(View view) {
+ EntranceViewHolder.getInstance().addBottomLayerView(view);
+ }
+
+ @Override
+ public void addBottomLayerView(View view, int x, int y) {
+ EntranceViewHolder.getInstance().addBottomLayerView(view, x, y);
+ }
+
+ @Override
+ public void removeBottomLayerView(View view) {
+ EntranceViewHolder.getInstance().removeBottomLayerView(view);
+ }
+
@Override
public void init( Context context ) {
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java
new file mode 100644
index 0000000000..b35687f42c
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java
@@ -0,0 +1,94 @@
+package com.mogo.module.extensions.utils;
+
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+
+import com.mogo.module.extensions.bean.BottomLayerViewWrapper;
+import com.mogo.utils.logger.Logger;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * 入口页view管理
+ * @author tongchenfei
+ */
+public class EntranceViewHolder {
+ private static final String TAG = "EntranceViewHolder";
+ private List preAddView = new ArrayList<>();
+ private EntranceViewHolder(){}
+ private volatile static EntranceViewHolder instance = null;
+ public static EntranceViewHolder getInstance(){
+ if (instance == null) {
+ synchronized (EntranceViewHolder.class) {
+ if (instance == null) {
+ instance = new EntranceViewHolder();
+ }
+ }
+ }
+ return instance;
+ }
+ private ViewGroup rootViewGroup = null;
+ public void initRootViewGroup(View rootView) {
+ Logger.i(TAG, "initRootViewGroup==");
+ if(rootView instanceof ViewGroup) {
+ Logger.d(TAG, "initRootViewGroup 赋值");
+ rootViewGroup = (ViewGroup) rootView.getParent();
+ if (!preAddView.isEmpty()) {
+ Logger.d(TAG, "initRootViewGroup 增加底层view: " + preAddView.size());
+ Iterator iterator = preAddView.iterator();
+ while (iterator.hasNext()) {
+ BottomLayerViewWrapper wrapper = iterator.next();
+ realAddView(wrapper);
+ iterator.remove();
+ }
+ }
+ }
+ }
+
+ public void addBottomLayerView(View view) {
+ Logger.d(TAG, "addBottomLayerView, rootViewGroup is null: " + (rootViewGroup == null));
+ addBottomLayerView(view, 0, 0);
+ }
+
+ public void addBottomLayerView(View view, int x, int y) {
+ Logger.d(TAG, "addBottomLayerView, rootViewGroup is null: " + (rootViewGroup == null) +
+ "\n x: " + x + ", y: " + y);
+ BottomLayerViewWrapper wrapper = new BottomLayerViewWrapper(view, x, y);
+ if(rootViewGroup == null) {
+ preAddView.add(wrapper);
+ }else{
+ realAddView(wrapper);
+ }
+ }
+
+ /**
+ * 使用的时候需要预先判断rootViewGroup是否为空,本方法默认rootViewGroup不为空
+ */
+ private void realAddView(BottomLayerViewWrapper wrapper){
+ FrameLayout.LayoutParams params =
+ new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,
+ FrameLayout.LayoutParams.WRAP_CONTENT);
+ params.topMargin = wrapper.getY();
+ params.leftMargin = wrapper.getX();
+ View v = wrapper.getView();
+ v.setLayoutParams(params);
+ rootViewGroup.addView(v, 0);
+ }
+
+ public void removeBottomLayerView(View view) {
+ if (rootViewGroup != null) {
+ rootViewGroup.removeView(view);
+ }
+ Iterator iterator = preAddView.iterator();
+ while (iterator.hasNext()) {
+ BottomLayerViewWrapper wrapper = iterator.next();
+ if (wrapper.getView().equals(view)) {
+ iterator.remove();
+ }
+ }
+ }
+
+}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java
index 9359557453..37ba24720c 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java
@@ -379,13 +379,14 @@ public class TopViewAnimHelper {
// 约束设置需要在applyTo()方法之前执行,visiable设置需要在applyTo()
// 方法之后执行才能生效,所以分开了两个判断,至于为什么这么做才能生效,不得而知
constraintSet.connect(tvNextDistance.getId(), ConstraintSet.BOTTOM,
- ivTurnIcon.getId(), ConstraintSet.BOTTOM,(int) topMotionLayout.getContext().getResources().getDimension(R.dimen.dp_2));
-// constraintSet.connect(tvNextRoad.getId(), ConstraintSet.TOP,
-// ivTurnIcon.getId(), ConstraintSet.TOP);
+ ivTurnIcon.getId(), ConstraintSet.BOTTOM);
+ constraintSet.connect(ivTurnIcon.getId(), ConstraintSet.LEFT,
+ naviBg.getId(), ConstraintSet.LEFT,
+ (int) getDimen(R.dimen.module_ext_navi_info_panel_turn_icon_small_marginLeft));
// constraintSet.clear(tvNextRoad.getId(), ConstraintSet.BOTTOM);
constraintSet.connect(tvNextRoad.getId(), ConstraintSet.BOTTOM,
tvNextDistance.getId(), ConstraintSet.BOTTOM,
- (int) topMotionLayout.getContext().getResources().getDimension(R.dimen.dp_6));
+ (int) getDimen(R.dimen.module_map_id_navi_next_info_road_marginBottom_small));
constraintSet.connect(tvNextRoad.getId(), ConstraintSet.LEFT,
R.id.module_map_id_navi_next_info_turn_info, ConstraintSet.RIGHT,
(int) topMotionLayout.getContext().getResources().getDimension(R.dimen.dp_46));
@@ -400,10 +401,8 @@ public class TopViewAnimHelper {
computeNaviMarginTop(params.height));
// 动态改变相关字体大小
- tvNextDistance.setTextSize(TypedValue.COMPLEX_UNIT_PX,
- getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_textSize_small));
- tvNextDistanceUnit.setTextSize(TypedValue.COMPLEX_UNIT_PX,
- getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_unit_textSize_small));
+ tvNextDistance.setTextSize(TypedValue.COMPLEX_UNIT_PX,getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_textSize_small));
+ tvNextDistanceUnit.setTextSize(TypedValue.COMPLEX_UNIT_PX,getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_unit_textSize_small));
}
constraintSet.applyTo(topMotionLayout);
@@ -453,10 +452,8 @@ public class TopViewAnimHelper {
remainDistanceGroup.setVisibility(View.VISIBLE);
remainTimeGroup.setVisibility(View.VISIBLE);
arriveTimeGroup.setVisibility(View.VISIBLE);
- tvNextDistance.setTextSize(TypedValue.COMPLEX_UNIT_PX,
- getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_textSize));
- tvNextDistanceUnit.setTextSize(TypedValue.COMPLEX_UNIT_PX,
- getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_unit_textSize));
+ tvNextDistance.setTextSize(TypedValue.COMPLEX_UNIT_PX,getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_textSize));
+ tvNextDistanceUnit.setTextSize(TypedValue.COMPLEX_UNIT_PX,getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_unit_textSize));
}
constraintSet.clone(topMotionLayout);
@@ -472,6 +469,9 @@ public class TopViewAnimHelper {
// 方法之后执行才能生效,所以分开了两个判断,至于为什么这么做才能生效,不得而知
constraintSet.clear(tvNextDistance.getId(), ConstraintSet.BOTTOM);
// constraintSet.clear(tvNextRoad.getId(), ConstraintSet.BASELINE);
+ constraintSet.connect(ivTurnIcon.getId(), ConstraintSet.LEFT,
+ naviBg.getId(), ConstraintSet.LEFT,
+ (int) getDimen(R.dimen.module_ext_navi_info_panel_turn_icon_marginLeft));
constraintSet.connect(tvNextRoad.getId(), ConstraintSet.BOTTOM,
ivTurnIcon.getId(), ConstraintSet.BOTTOM,
(int) getDimen(R.dimen.module_map_id_navi_next_info_road_marginBottom));
@@ -502,7 +502,6 @@ public class TopViewAnimHelper {
Logger.d(TAG, "hide top setMapCenterPointByScene: " + scene);
MapCenterPointStrategy.setMapCenterPointByScene(mogoMapUIController, scene);
}
-// }
}
public void showNaviView() {
@@ -518,18 +517,18 @@ public class TopViewAnimHelper {
remainDistanceGroup.setVisibility(View.VISIBLE);
remainTimeGroup.setVisibility(View.VISIBLE);
arriveTimeGroup.setVisibility(View.VISIBLE);
- tvNextDistance.setTextSize(TypedValue.COMPLEX_UNIT_PX,
- getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_textSize));
- tvNextDistanceUnit.setTextSize(TypedValue.COMPLEX_UNIT_PX,
- getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_unit_textSize));
+ tvNextDistance.setTextSize(TypedValue.COMPLEX_UNIT_PX,getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_textSize));
+ tvNextDistanceUnit.setTextSize(TypedValue.COMPLEX_UNIT_PX,getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_unit_textSize));
// 调整约束
constraintSet.clone(topMotionLayout);
constraintSet.clear(tvNextDistance.getId(), ConstraintSet.BOTTOM);
// constraintSet.clear(tvNextRoad.getId(), ConstraintSet.BASELINE);
+ constraintSet.connect(ivTurnIcon.getId(), ConstraintSet.LEFT,
+ naviBg.getId(), ConstraintSet.LEFT,
+ (int) getDimen(R.dimen.module_ext_navi_info_panel_turn_icon_marginLeft));
constraintSet.connect(tvNextRoad.getId(), ConstraintSet.BOTTOM, ivTurnIcon.getId(),
- ConstraintSet.BOTTOM,
- (int) getDimen(R.dimen.module_map_id_navi_next_info_road_marginBottom));
+ ConstraintSet.BOTTOM);
constraintSet.connect(tvNextRoad.getId(), ConstraintSet.LEFT,
tvNextDistance.getId(), ConstraintSet.LEFT,
0);
@@ -553,19 +552,19 @@ public class TopViewAnimHelper {
remainDistanceGroup.setVisibility(View.GONE);
remainTimeGroup.setVisibility(View.GONE);
arriveTimeGroup.setVisibility(View.GONE);
- tvNextDistance.setTextSize(TypedValue.COMPLEX_UNIT_PX,
- getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_textSize_small));
- tvNextDistanceUnit.setTextSize(TypedValue.COMPLEX_UNIT_PX,
- getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_unit_textSize_small));
+ tvNextDistance.setTextSize(TypedValue.COMPLEX_UNIT_PX,getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_textSize_small));
+ tvNextDistanceUnit.setTextSize(TypedValue.COMPLEX_UNIT_PX,getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_unit_textSize_small));
// 调整约束
constraintSet.clone(topMotionLayout);
constraintSet.connect(tvNextDistance.getId(), ConstraintSet.BOTTOM,
- ivTurnIcon.getId(), ConstraintSet.BOTTOM,
- (int) topMotionLayout.getContext().getResources().getDimension(R.dimen.dp_2));
+ ivTurnIcon.getId(), ConstraintSet.BOTTOM);
+ constraintSet.connect(ivTurnIcon.getId(), ConstraintSet.LEFT,
+ naviBg.getId(), ConstraintSet.LEFT,
+ (int) getDimen(R.dimen.module_ext_navi_info_panel_turn_icon_small_marginLeft));
// constraintSet.clear(tvNextRoad.getId(), ConstraintSet.BOTTOM);
constraintSet.connect(tvNextRoad.getId(), ConstraintSet.BOTTOM,
tvNextDistance.getId(), ConstraintSet.BOTTOM,
- (int) topMotionLayout.getContext().getResources().getDimension(R.dimen.dp_6));
+ (int) getDimen(R.dimen.module_map_id_navi_next_info_road_marginBottom_small));
constraintSet.connect(tvNextRoad.getId(), ConstraintSet.LEFT,
R.id.module_map_id_navi_next_info_turn_info, ConstraintSet.RIGHT,
(int) topMotionLayout.getContext().getResources().getDimension(R.dimen.dp_46));
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewManager.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewManager.java
index c5f4d77e80..29a161821c 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewManager.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewManager.java
@@ -6,12 +6,8 @@ import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import com.alibaba.android.arouter.facade.annotation.Route;
-import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.module.extensions.R;
-import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
-import com.mogo.service.statusmanager.IMogoStatusChangedListener;
-import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.service.windowview.IMogoTopViewManager;
import com.mogo.service.windowview.IMogoTopViewStatusListener;
@@ -25,18 +21,10 @@ public class TopViewManager implements IMogoTopViewManager {
private Context context;
private LayoutParams parentParams;
- private IMogoServiceApis serviceApis;
@Override
public void init(Context context) {
this.context = context;
- serviceApis =
- (IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context);
- serviceApis.getStatusManagerApi().registerStatusChangedListener(MogoServicePaths.PATH_EXTENSIONS_TOP_VIEW_MANAGER, StatusDescriptor.MAIN_PAGE_RESUME, (descriptor, isTrue) -> {
- if (!isTrue) {
- TopViewAnimHelper.getInstance().removeAllView();
- }
- });
}
@Override
diff --git a/modules/mogo-module-extensions/src/main/res/layout/include_navi_info_panle.xml b/modules/mogo-module-extensions/src/main/res/layout/include_navi_info_panle.xml
index 431f1560b1..97dc87283c 100644
--- a/modules/mogo-module-extensions/src/main/res/layout/include_navi_info_panle.xml
+++ b/modules/mogo-module-extensions/src/main/res/layout/include_navi_info_panle.xml
@@ -187,7 +187,7 @@
android:id="@+id/module_map_id_arrive_time_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginEnd="@dimen/dp_95"
+ android:layout_marginEnd="@dimen/module_ext_navi_extra_info_margin_right"
android:src="@drawable/module_ext_ic_navi_info3"
app:layout_constraintBottom_toTopOf="@id/module_map_id_arrive_time"
app:layout_constraintRight_toRightOf="@+id/module_map_id_navi_bg"
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 bae7449c91..495a892b37 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
@@ -14,7 +14,7 @@
+ android:layout_height="wrap_content" />
+ app:layout_goneMarginTop="@dimen/module_ext_north_goneMarginTop"
+ tools:visibility="visible" />
@@ -51,12 +51,12 @@
android:layout_height="@dimen/module_ext_button_height"
android:layout_marginTop="@dimen/module_ext_camera_button_marginTop"
android:background="@drawable/module_ext_dw_common_corner_bkg"
- android:orientation="vertical"
android:gravity="center_horizontal"
+ android:orientation="vertical"
android:visibility="gone"
- tools:visibility="gone"
app:layout_constraintLeft_toLeftOf="@+id/module_map_id_navi_bg"
- app:layout_constraintTop_toBottomOf="@+id/module_map_id_navi_bg">
+ app:layout_constraintTop_toBottomOf="@+id/module_map_id_navi_bg"
+ tools:visibility="gone">
+ app:layout_constraintLeft_toLeftOf="parent" />
+
-
+
+
+ app:layout_constraintLeft_toLeftOf="parent" />
+
+
+ app:constraint_referenced_ids="btnDebugCtrlNaviView,btnDebugCtrlSubView,btnDebugCtrlTopView,btnDebugAddBottomLayerView" />
\ No newline at end of file
diff --git a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_extensions.xml b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_extensions.xml
index fc46b65df5..222f293173 100644
--- a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_extensions.xml
+++ b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_extensions.xml
@@ -10,10 +10,11 @@
android:layout_height="@dimen/module_ext_height"
android:background="@drawable/module_ext_drawable_weather_bkg"
android:gravity="center"
- android:paddingLeft="@dimen/module_ext_weather_container_paddingLeft"
- android:paddingRight="@dimen/module_ext_weather_container_paddingRight"
+ android:paddingStart="@dimen/module_ext_weather_container_paddingLeft"
+ android:paddingEnd="@dimen/module_ext_weather_container_paddingRight"
+ android:layout_marginEnd="@dimen/module_ext_msg_marginRight"
android:visibility="invisible"
- app:layout_constraintLeft_toLeftOf="parent"
+ app:layout_constraintRight_toLeftOf="@+id/module_ext_id_msg"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible">
@@ -35,13 +36,13 @@
android:id="@+id/module_ext_id_msg"
android:layout_width="@dimen/module_ext_height"
android:layout_height="@dimen/module_ext_height"
- android:layout_marginRight="@dimen/module_ext_msg_marginRight"
+ android:layout_marginEnd="@dimen/module_ext_msg_marginRight"
android:background="@drawable/module_ext_drawable_msg_container_bkg"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/ivUserHeadImg"
app:layout_constraintRight_toLeftOf="@+id/ivUserHeadImg"
app:layout_constraintTop_toTopOf="@+id/ivUserHeadImg"
- tools:visibility="visible">
+ tools:visibility="gone">
+ app:layout_constraintBottom_toBottomOf="@+id/module_ext_id_weather_container"
+ tools:visibility="gone"/>
\ No newline at end of file
diff --git a/modules/mogo-module-extensions/src/main/res/values-xhdpi-1920x1000/dimens.xml b/modules/mogo-module-extensions/src/main/res/values-xhdpi-1920x1000/dimens.xml
index 0e3d697760..ad9dc6d8fb 100644
--- a/modules/mogo-module-extensions/src/main/res/values-xhdpi-1920x1000/dimens.xml
+++ b/modules/mogo-module-extensions/src/main/res/values-xhdpi-1920x1000/dimens.xml
@@ -39,7 +39,7 @@
120px
120px
120px
- 40px
+ 30px
30px
32px
32px
@@ -84,7 +84,7 @@
159px
70px
70px
- 24px
+ 56px
83px
24px
40px
@@ -103,6 +103,7 @@
36px
36px
-2px
+ 95px
30px
40px
@@ -138,6 +139,7 @@
90px
6dp
15px
+ 4px
10px
20px
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 b1e5bf7240..7423964cdd 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
@@ -39,7 +39,7 @@
120px
120px
120px
- 40px
+ 30px
30px
32px
32px
@@ -84,7 +84,7 @@
159px
70px
70px
- 24px
+ 56px
83px
24px
40px
@@ -103,6 +103,7 @@
36px
36px
-2px
+ 95px
30px
40px
@@ -138,6 +139,7 @@
90px
6dp
15px
+ 4px
10px
20px
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 3b7a570ba8..26b9b2c5fe 100644
--- a/modules/mogo-module-extensions/src/main/res/values/dimens.xml
+++ b/modules/mogo-module-extensions/src/main/res/values/dimens.xml
@@ -40,7 +40,7 @@
66px
66px
66px
- 21px
+ 16px
16px
34.5px
20px
@@ -82,25 +82,26 @@
544px
117px
- 60px
+ 80px
85px
85px
- 38px
- 38px
- 13px
+ 40px
+ 40px
+ 30px
+ 44px
13px
20px
32px
- 32px
+ 28px
7px
5px
22px
- 22px
+ 16px
18px
- 24px
-
+ 24px
15px
- 5px
+ 13px
+ 58px
9px
9px
@@ -142,6 +143,7 @@
58px
3dp
10px
+ 4px
6px
10px
diff --git a/modules/mogo-module-main/build.gradle b/modules/mogo-module-main/build.gradle
index 2f686a9f62..f900dbe293 100644
--- a/modules/mogo-module-main/build.gradle
+++ b/modules/mogo-module-main/build.gradle
@@ -39,7 +39,6 @@ dependencies {
implementation rootProject.ext.dependencies.androidxappcompat
implementation rootProject.ext.dependencies.androidxconstraintlayout
implementation rootProject.ext.dependencies.arouter
- implementation rootProject.ext.dependencies.tanluupload
annotationProcessor rootProject.ext.dependencies.aroutercompiler
if (Boolean.valueOf(RELEASE)) {
api rootProject.ext.dependencies.mogoutils
@@ -51,7 +50,6 @@ dependencies {
api rootProject.ext.dependencies.moduleservice
api rootProject.ext.dependencies.moduleapps
api rootProject.ext.dependencies.moduleextensions
- api rootProject.ext.dependencies.mogomoduleback
} else {
api project(":foudations:mogo-utils")
api project(":foudations:mogo-commons")
@@ -62,7 +60,6 @@ dependencies {
api project(':services:mogo-service')
api project(':modules:mogo-module-apps')
api project(':modules:mogo-module-extensions')
- api project(':modules:mogo-module-back')
}
}
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 910a49f0c7..0c97508d87 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
@@ -31,6 +31,7 @@ import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.map.IMogoMapService;
import com.mogo.service.module.IMogoModuleProvider;
+import com.mogo.service.monitor.IMogoMonitorProvider;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.utils.logger.Logger;
import com.zhidao.autopilot.support.api.AutopilotServiceManage;
@@ -45,8 +46,7 @@ import java.util.List;
*/
public class MainActivity extends MvpActivity< MainView, MainPresenter > implements MainView,
IMogoLocationListener,
- IMogoMarkerClickListener,
- IMogoIntentListener {
+ IMogoMarkerClickListener {
protected static final String TAG = MainActivity.class.getSimpleName();
@@ -59,11 +59,11 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
// protected View mHeader;
protected View mApps;
protected View mEntrance;
+ protected View mEventPanel;
protected FrameLayout mFloatingLayout;
- protected FrameLayout mCoverUpLayout;
+ protected View mCoverUpLayout;
protected FrameLayout mLeftPanelLayout;
protected View mLeftShadowFrame;
- private boolean mIsHomeKeyDown = false;
@Override
protected int getLayoutId() {
@@ -78,6 +78,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
// mHeader = findViewById( R.id.module_main_id_header_fragment_container );
mApps = findViewById( R.id.module_main_id_apps_fragment_container );
mEntrance = findViewById( R.id.module_main_id_entrance_fragment_container );
+ mEventPanel = findViewById( R.id.module_main_id_event_panel_fragment_container );
mFloatingLayout = findViewById( R.id.module_main_id_floating_view );
mLeftShadowFrame = findViewById( R.id.module_main_id_map_left_shadow_frame );
mCoverUpLayout = findViewById( R.id.module_main_id_cover_up );
@@ -93,6 +94,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
protected void hideLayout() {
// mHeader.setVisibility( View.GONE );
mEntrance.setVisibility( View.GONE );
+ mEventPanel.setVisibility( View.GONE );
mFloatingLayout.setVisibility( View.GONE );
}
@@ -100,6 +102,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
protected void showLayout() {
// mHeader.setVisibility( View.VISIBLE );
mEntrance.setVisibility( View.VISIBLE );
+ mEventPanel.setVisibility( View.VISIBLE );
mFloatingLayout.setVisibility( View.VISIBLE );
}
@@ -149,7 +152,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
MapCenterPointStrategy.setMapCenterPointByScene( mMogoMapUIController, Scene.AIMLESS );
// 加载地图,触发地图加载完毕回调,在初始化其他卡片模块,保证卡片模块可以正确获取地图相关服务。
- addModule();
loadContainerModules();
MogoModulesManager.getInstance().loadModules();
mPresenter.delayOperations();
@@ -170,6 +172,11 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
hideLayout();
}
} );
+
+ // 初始化MonitorModule
+// IMogoMonitorProvider monitorProvider = (IMogoMonitorProvider) ARouter.getInstance().build(MogoServicePaths.PATH_MOGO_MONITOR).navigation(this);
+// monitorProvider.resetActivityContext(this);
+ mServiceApis.getMogoMonitorApi().resetActivityContext(this);
}
private void startBaseService() {
@@ -177,13 +184,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
startService( intent );
}
- /**
- * 添加模块
- */
- protected void addModule() {
-
- }
-
protected void loadContainerModules() {
// MogoModulesManager.getInstance().loadExtensionsModule( R.id.module_main_id_header_fragment_container );
MogoModulesManager.getInstance().loadEntrancesModule( R.id.module_main_id_entrance_fragment_container );
@@ -237,7 +237,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
if ( mCoverUpLayout.getVisibility() != View.VISIBLE ) {
mServiceApis.getAdasControllerApi().showADAS();
}
- getApis().getIntentManagerApi().registerIntentListener( Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this );
}
@Override
@@ -246,24 +245,21 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mMogoStatusManager.setMainPageResumeStatus( TAG, false );
mMogoStatusManager.setMainPageLaunchedStatus( TAG, false );
mServiceApis.getAuthManagerApi().dismiss();
- if ( shouldCloseADASPanel() ) {
+ if ( shouldCloseADASPanelWhenPause() ) {
mServiceApis.getAdasControllerApi().closeADAS();
}
- mIsHomeKeyDown = false;
}
- private boolean shouldCloseADASPanel() {
+ protected boolean shouldCloseADASPanelWhenPause(){
// m4 系列因为按home键会造成页面pause后resume,造成adas panel 闪烁
// f 系列加上上滑返回桌面后会走 mIsHomeKeyDown = true,但是不会造成页面pause
// 独立 app 任何情况下都需要隐藏 adas
- return !mIsHomeKeyDown
- || !DebugConfig.isLauncher();
+ return true;
}
@Override
protected void onStop() {
super.onStop();
- getApis().getIntentManagerApi().unregisterIntentListener( Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this );
}
@Override
@@ -302,13 +298,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
return mServiceApis;
}
- @Override
- public void onIntentReceived( String intentStr, Intent intent ) {
- if ( TextUtils.equals( Intent.ACTION_CLOSE_SYSTEM_DIALOGS, intentStr ) ) {
- mIsHomeKeyDown = true;
- }
- }
-
@Override
protected void onDestroy() {
super.onDestroy();
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java
index 66fbdfc738..ace4b835ad 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java
@@ -4,22 +4,12 @@ import android.content.Intent;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
-import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.lifecycle.LifecycleOwner;
-import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.mvp.Presenter;
import com.mogo.module.main.constants.MainConstants;
-import com.mogo.module.main.livedata.CardSwitchLiveData;
-import com.mogo.service.MogoServicePaths;
-import com.mogo.service.analytics.IMogoAnalytics;
-import com.mogo.service.module.IMogoModuleProvider;
-import com.zhidao.roadcondition.service.MainService;
-
-import java.util.HashMap;
-import java.util.Map;
/**
* @author congtaowang
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java
index d39eec80db..c0ce50ba8b 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java
@@ -14,6 +14,8 @@ import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.intent.IMogoIntentManager;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
+import com.mogo.utils.AppUtils;
+import com.mogo.utils.CommonUtils;
import com.mogo.utils.TipToast;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.logger.Logger;
@@ -35,6 +37,8 @@ public class SchemeIntent implements IMogoStatusChangedListener {
public static final String TYPE_NAVI = "navi";
+ public static final String TYPE_LAUNCH = "launch";
+
private IMogoServiceApis mApis;
private Context mContext;
@@ -84,10 +88,10 @@ public class SchemeIntent implements IMogoStatusChangedListener {
handleSwitch2Action( target );
break;
case "/main/share":
- Logger.d(TAG,"收到打开分享框的scheme,准备打开分享框");
+ Logger.d( TAG, "收到打开分享框的scheme,准备打开分享框" );
Map< String, Object > properties = new HashMap<>();
properties.put( "from", "1" );
- mApis.getAnalyticsApi().track("v2x_share_click", properties);
+ mApis.getAnalyticsApi().track( "v2x_share_click", properties );
mApis.getShareManager().showShareDialog();
break;
default:
@@ -115,6 +119,10 @@ public class SchemeIntent implements IMogoStatusChangedListener {
case TYPE_NAVI:
handleNaviIntent( target );
break;
+ case TYPE_LAUNCH:
+ handleLaunchIntent( target );
+ break;
+
}
}
@@ -145,6 +153,15 @@ public class SchemeIntent implements IMogoStatusChangedListener {
}
}
+ private void handleLaunchIntent( Uri uri ) {
+ String type = uri.getQueryParameter( "channelType" );
+ Map< String, Object > properties = new HashMap<>();
+ properties.put( "appname", CommonUtils.getAppName( mContext ) );
+ properties.put( "appversion", CommonUtils.getVersionName( mContext ) );
+ properties.put( "from", type );
+ mApis.getAnalyticsApi().track( "appenterfront", properties );
+ }
+
@Override
public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) {
if ( descriptor == StatusDescriptor.MAIN_PAGE_RESUME ) {
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/service/MogoMainService.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/service/MogoMainService.java
index 3a979612ae..788d0c81db 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/service/MogoMainService.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/service/MogoMainService.java
@@ -18,7 +18,6 @@ import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.logger.Logger;
-import com.zhidao.roadcondition.service.MainService;
public
/**
@@ -82,7 +81,7 @@ class MogoMainService extends Service implements IMogoLocationListener {
private void startTanluService() {
UiThreadHandler.postDelayed(() -> {
Logger.d(TAG, "startTanluService ---------- ");
- MainService.Companion.launchService(getApplicationContext(), "0");
+ mServiceApis.getTanluApi().startTanluService();
}, 58_000L
);
}
diff --git a/modules/mogo-module-main/src/main/res/drawable-ldpi/mogo_slogan.png b/modules/mogo-module-main/src/main/res/drawable-ldpi/mogo_slogan.png
new file mode 100644
index 0000000000..d577900772
Binary files /dev/null and b/modules/mogo-module-main/src/main/res/drawable-ldpi/mogo_slogan.png differ
diff --git a/modules/mogo-module-main/src/main/res/drawable-mdpi/mogo_slogan.png b/modules/mogo-module-main/src/main/res/drawable-mdpi/mogo_slogan.png
new file mode 100644
index 0000000000..d577900772
Binary files /dev/null and b/modules/mogo-module-main/src/main/res/drawable-mdpi/mogo_slogan.png differ
diff --git a/modules/mogo-module-main/src/main/res/drawable-xhdpi/mogo_slogan.png b/modules/mogo-module-main/src/main/res/drawable-xhdpi/mogo_slogan.png
new file mode 100644
index 0000000000..00d5cd14a3
Binary files /dev/null and b/modules/mogo-module-main/src/main/res/drawable-xhdpi/mogo_slogan.png differ
diff --git a/modules/mogo-module-main/src/main/res/drawable/main_bitmap_splash_bg.xml b/modules/mogo-module-main/src/main/res/drawable/main_bitmap_splash_bg.xml
new file mode 100644
index 0000000000..d78157cb0e
--- /dev/null
+++ b/modules/mogo-module-main/src/main/res/drawable/main_bitmap_splash_bg.xml
@@ -0,0 +1,23 @@
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
index bcb2744c24..ce44459946 100644
--- a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
+++ b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
@@ -66,13 +66,14 @@
android:layout_width="match_parent"
android:layout_height="match_parent" />
-
+ />
@null
- @null
- @null
- - @drawable/module_main_launcher_bg
+ - @drawable/main_bitmap_splash_bg
- false
- @style/MainAnimation
- @style/noCheckboxStyle
diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/AutoNaviBroadcastIntentHandler.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/AutoNaviBroadcastIntentHandler.java
new file mode 100644
index 0000000000..4ddc0f947f
--- /dev/null
+++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/AutoNaviBroadcastIntentHandler.java
@@ -0,0 +1,122 @@
+package com.mogo.module.map;
+
+import android.content.Intent;
+import android.text.TextUtils;
+
+import com.mogo.map.navi.MogoNaviConfig;
+import com.mogo.map.uicontroller.EnumMapUI;
+import com.mogo.service.intent.IMogoIntentListener;
+import com.mogo.service.intent.IMogoIntentManager;
+import com.mogo.utils.logger.Logger;
+
+public
+/**
+ * @author congtaowang
+ * @since 2020/7/30
+ *
+ * 接收高德地图车机版广播
+ */
+class AutoNaviBroadcastIntentHandler implements IMogoIntentListener {
+
+ public static final String TAG = "AutoNaviBroadcastReceiver";
+
+ public static final String AUTONAVI_STANDARD_BROADCAST_RECV = "AUTONAVI_STANDARD_BROADCAST_RECV";
+
+ public void register( IMogoIntentManager manager ) {
+ manager.registerIntentListener( AUTONAVI_STANDARD_BROADCAST_RECV, this );
+ }
+
+ public void unregister(IMogoIntentManager manager ) {
+ mCallback = null;
+ manager.unregisterIntentListener( AUTONAVI_STANDARD_BROADCAST_RECV, this );
+ }
+
+ private OnMapControlCallback mCallback;
+
+ public void setCallback( OnMapControlCallback mCallback ) {
+ this.mCallback = mCallback;
+ }
+
+ @Override
+ public void onIntentReceived( String intentStr, Intent intent ) {
+ String action = intent.getAction();
+
+ int keyType = intent.getIntExtra( "KEY_TYPE", 0 );
+ int type = intent.getIntExtra( "EXTRA_TYPE", -1 );
+ int operaType = intent.getIntExtra( "EXTRA_OPERA", -1 );
+
+ Logger.d( TAG, "action = %s, keyType=%s, type=%s, operType=%s", action, keyType, type, operaType );
+
+ if ( !TextUtils.equals( action, AUTONAVI_STANDARD_BROADCAST_RECV ) ) {
+ return;
+ }
+
+ if ( mCallback == null ) {
+ return;
+ }
+
+ if ( keyType == 10027 ) {
+ if ( type == 0 ) {
+ mCallback.onTrafficModeChanged( operaType == 0 );
+ } else if ( type == 2 ) {
+ if ( operaType == 0 ) {
+ mCallback.onCameraModeChanged( EnumMapUI.CarUp_2D );
+ } else if ( operaType == 1 ) {
+ mCallback.onCameraModeChanged( EnumMapUI.NorthUP_2D );
+ } else if ( operaType == 2 ) {
+ mCallback.onCameraModeChanged( EnumMapUI.CarUp_3D );
+ }
+ }
+ } else if ( keyType == 10048 ) {
+ //0:自动; 1:白天; 2:黑夜;
+ int dayNightMode = intent.getIntExtra( "EXTRA_DAY_NIGHT_MODE", -1 );
+ if ( dayNightMode == 0 ) {
+ mCallback.onDayNightModeChanged( EnumMapUI.Type_AUTO_LIGHT_Night );
+ } else if ( dayNightMode == 1 ) {
+ mCallback.onDayNightModeChanged( EnumMapUI.Type_Light );
+ } else if ( dayNightMode == 2 ) {
+ mCallback.onDayNightModeChanged( EnumMapUI.Type_Night );
+ }
+ } else if ( keyType == 10049 ) {
+ //继续导航
+ boolean extraEnduranceData = intent.getBooleanExtra( "EXTRA_ENDURANCE_DATA", false );
+ if ( extraEnduranceData ) {
+ mCallback.onContinueNavi();
+ }
+ } else if ( keyType == 20009 ) {
+ mCallback.onOpenNavi();
+ } else if ( keyType == 10038 || keyType == 10007 ) {
+ double lat;
+ double lon;
+
+ if ( type == 10007 ) {
+ lat = intent.getDoubleExtra( "ENTRY_LAT", 0.0 );
+ lon = intent.getDoubleExtra( "ENTRY_LON", 0.0 );
+ } else {
+ lat = intent.getDoubleExtra( "LAT", 0.0 );
+ lon = intent.getDoubleExtra( "LON", 0.0 );
+ }
+ mCallback.onCalculatePath( lon, lat );
+ } else if ( keyType == 10021 ) {
+ mCallback.onStopNaviInternal( intent );
+ } else if ( keyType == 10005 ) {
+ // 仅在导航场景下,⽀持第三⽅进⾏路线偏好的重新选择。
+ // 避免收费 | 1
+ // 多策略算路 | 2
+ // 不走高速 | 3
+ // 躲避拥堵 | 4
+ // 不走高速且避免收费 | 5
+ // 不走高速且躲避拥堵 | 6
+ // 躲避收费和拥堵 | 7
+ // 不走高速躲避收费和拥堵 | 8
+ // 高速优先 | 20
+ // 躲避拥堵且高速优先 | 24
+ int prefer = intent.getIntExtra( "NAVI_ROUTE_PREFER", 0 );
+ MogoNaviConfig config = new MogoNaviConfig().congestion( prefer == 4 )
+ .cost( prefer == 1 || prefer == 7 )
+ .highSpeed( prefer == 20 )
+ .avoidSpeed( prefer == 3 );
+ mCallback.onReCalculatePath( config );
+ }
+ }
+}
diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapControlCommandHandler.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapControlCommandHandler.java
new file mode 100644
index 0000000000..e8a38b4c45
--- /dev/null
+++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapControlCommandHandler.java
@@ -0,0 +1,94 @@
+package com.mogo.module.map;
+
+import com.mogo.map.uicontroller.EnumMapUI;
+import com.mogo.utils.logger.Logger;
+
+public
+/**
+ * @author congtaowang
+ * @since 2020/7/30
+ *
+ * 语音控制地图
+ */
+class MapControlCommandHandler {
+
+ private static final String TAG = "CustomVoiceCommandHandler";
+
+ private OnMapControlCallback mCallback;
+
+ public void setCallback( OnMapControlCallback mCallback ) {
+ this.mCallback = mCallback;
+ }
+
+ public void handleVoiceCommand( String cmd ) {
+ Logger.d( TAG, cmd );
+ switch ( cmd ) {
+ case VoiceConstants.CMD_MAP_TRAFFIC_MODE_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_TRAFFIC_MODE:
+ mCallback.onTrafficModeChanged( true );
+ break;
+ case VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE:
+ mCallback.onTrafficModeChanged( false );
+ break;
+ case VoiceConstants.CMD_MAP_ZOOM_IN_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_ZOOM_IN:
+ mCallback.onZoomMap( true );
+ break;
+ case VoiceConstants.CMD_MAP_ZOOM_OUT_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_ZOOM_OUT:
+ mCallback.onZoomMap( false );
+ break;
+ case VoiceConstants.CMD_MAP_2D_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_2D:
+ case VoiceConstants.CMD_MAP_NORTH_UP_MODE_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_NORTH_UP_MODE:
+ mCallback.onCameraModeChanged( EnumMapUI.NorthUP_2D );
+ break;
+ case VoiceConstants.CMD_MAP_3D_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_3D:
+ mCallback.onCameraModeChanged( EnumMapUI.CarUp_3D );
+ break;
+ case VoiceConstants.CMD_MAP_DAY_TIME_MODE_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_DAY_TIME_MODE:
+ mCallback.onDayNightModeChanged( EnumMapUI.Type_Light );
+ break;
+ case VoiceConstants.CMD_MAP_HISTORY_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_HISTORY:
+ mCallback.onOpenNavi();
+ break;
+ case VoiceConstants.CMD_MAP_STOP_NAVI_MODE_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_STOP_NAVI_MODE:
+ break;
+ case VoiceConstants.CMD_MAP_NIGHT_MODE_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_NIGHT_MODE:
+ mCallback.onDayNightModeChanged( EnumMapUI.Type_Night );
+ break;
+ case VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE:
+ mCallback.onDayNightModeChanged( EnumMapUI.Type_AUTO_LIGHT_Night );
+ break;
+ case VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE:
+ mCallback.onDisplayOverview();
+ break;
+ case VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE:
+ mCallback.onContinueNavi();
+ break;
+ case VoiceConstants.CMD_MAP_CAR_UP_MODE_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_CAR_UP_MODE:
+ mCallback.onCameraModeChanged( EnumMapUI.CarUp_2D );
+ break;
+ case VoiceConstants.CMD_MAP_SPEAK_DRAFT_MODE:
+ case VoiceConstants.CMD_MAP_SPEAK_DRAFT_MODE_UN_WAKEUP:
+ break;
+ case VoiceConstants.CMD_MAP_SPEAK_DETAIL_MODE:
+ case VoiceConstants.CMD_MAP_SPEAK_DETAIL_MODE_UN_WAKEUP:
+ break;
+ case VoiceConstants.CMD_MAP_SPEAK_REMAIN:
+ break;
+ default:
+ break;
+
+ }
+ }
+}
diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java
index 9a51a52573..a563efc7da 100644
--- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java
+++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java
@@ -39,9 +39,6 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
@Override
protected void initViews() {
- //mMogoMapView = findViewById( R.id.module_map_id_map );
- //mMogoMap = mMogoMapView.getMap();
- //mMogoMap.getUIController().showMyLocation( true );
}
@Override
@@ -63,9 +60,6 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
@Override
public void onActivityCreated( @Nullable Bundle savedInstanceState ) {
super.onActivityCreated( savedInstanceState );
- //if ( mMogoMapView != null ) {
- // mMogoMapView.onCreate( savedInstanceState );
- //}
initMapView();
}
@@ -125,7 +119,7 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
uiSettings.setZoomControlsEnabled( false );
//设置双指缩放手势是否可用。
uiSettings.setZoomGesturesEnabled( true );
- mMogoMap.getUIController().changeMapMode(EnumMapUI.NorthUP_2D);
+ mMogoMap.getUIController().changeMapMode( EnumMapUI.NorthUP_2D );
}
}
}
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 3e9378de92..a45306c822 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
@@ -1,16 +1,12 @@
package com.mogo.module.map;
import android.app.ActivityManager;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
-import android.content.IntentFilter;
import android.graphics.Rect;
import android.text.TextUtils;
import androidx.annotation.NonNull;
-import androidx.annotation.UiThread;
import androidx.lifecycle.LifecycleOwner;
import com.alibaba.android.arouter.launcher.ARouter;
@@ -34,7 +30,6 @@ import com.mogo.service.launcher.IMogoLauncher;
import com.mogo.service.map.IMogoMapService;
import com.mogo.service.module.IMogoRegisterCenter;
import com.mogo.service.module.IMogoSearchManager;
-import com.mogo.service.module.IMogoSettingManager;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.strategy.IMogoRefreshStrategyController;
import com.mogo.utils.AppUtils;
@@ -54,10 +49,10 @@ import java.util.Map;
public class MapPresenter extends Presenter< MapView > implements
IMogoIntentListener,
IMogoVoiceCmdCallBack,
- IMogoNaviListener2 {
+ IMogoNaviListener2,
+ OnMapControlCallback {
private static final String TAG = "MapPresenter";
- private static final String AUTONAVI_STANDARD_BROADCAST_RECV = "AUTONAVI_STANDARD_BROADCAST_RECV";
private IMogoMapService mMogoMapService;
private IMogoIntentManager mMogoIntentManager;
private IMogoSearchManager mSearchManager;
@@ -66,7 +61,6 @@ public class MapPresenter extends Presenter< MapView > implements
private IMogoRegisterCenter mRegisterCenter;
private IMogoLauncher mLauncher;
private IMogoSearchManager mMogoSearchManager;
- private IMogoSettingManager mSettingManager;
private Rect mDisplayOverviewBounds;
@@ -80,210 +74,33 @@ public class MapPresenter extends Presenter< MapView > implements
mView.getUIController().recoverLockMode();
}
};
+ private AutoNaviBroadcastIntentHandler mAutoNaviReceiver;
+ private MapControlCommandHandler mCustomVoiceCommandHandler;
public MapPresenter( MapView view ) {
super( view );
- initBroadcast();
}
- private BroadcastReceiver broadcastReceiver;
-
- /**
- * opera type为0:0 实时路况开;1实时路况关 type为1:0 放大地图; 1缩小地图 type为2:0切换2d车上; 1切换2d北上;2切换3d车上支持
- */
- private void initBroadcast() {
- // 高德地图免唤醒
- broadcastReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive( Context context, Intent intent ) {
- String action = intent.getAction();
- Logger.d( TAG, "action = %s", action );
-
- if ( !TextUtils.equals( action, AUTONAVI_STANDARD_BROADCAST_RECV ) ) {
- return;
- }
- int key_type = intent.getIntExtra( "KEY_TYPE", 0 );
- int type = intent.getIntExtra( "EXTRA_TYPE", -1 );
- int opera_type = intent.getIntExtra( "EXTRA_OPERA", -1 );
- Logger.d( TAG, "key_type" + key_type );
- if ( key_type == 10027 ) {
- if ( type == 0 ) {
- onChangeTrafficMode( opera_type );
- } else if ( type == 1 ) {
- zoomMap( opera_type == 0 );
- } else if ( type == 2 ) {
- onChangeCameraMode( opera_type );
- }
- } else if ( key_type == 10048 ) {
- //0:自动; 1:白天; 2:黑夜;
- int day_night_mode = intent.getIntExtra( "EXTRA_DAY_NIGHT_MODE", -1 );
- onChangeDayNightMode( day_night_mode );
- //继续导航
- } else if ( key_type == 10049 ) {
- if ( CustomNaviInterrupter.getInstance().interrupt() ) {
- return;
- }
- boolean extra_endurance_data = intent.getBooleanExtra( "EXTRA_ENDURANCE_DATA", false );
- if ( extra_endurance_data ) {
- onContinueNavigation();
- }
- } else if ( key_type == 10006 ) {
- // 避免冲突,会同时发送两个广播,这里不操作。
- //int extra_is_show = intent.getIntExtra( "EXTRA_IS_SHOW", 0 );
- //if ( extra_is_show == 0 ) {
- // onDisplayOverview();
- //} else {
- // onContinueNavigation();
- //}
- } else if ( key_type == 10005 ) {
- int navi_route_prefer = intent.getIntExtra( "NAVI_ROUTE_PREFER", type );
- } else if ( key_type == 20009 ) {
- if ( CustomNaviInterrupter.getInstance().interrupt() ) {
- return;
- }
- onOpenNavi();
- } else if ( key_type == 10038 || key_type == 10007 ) {
- if ( CustomNaviInterrupter.getInstance().interrupt() ) {
- return;
- }
- mLauncher.backToLauncher( getContext() );
- onChoosePath( intent, key_type );
- } else if ( key_type == 10021 ) {
- if ( CustomNaviInterrupter.getInstance().interrupt() ) {
- // 导航过程中语音指令退出导航,会出现 activity 不走 onResume 的情况
- UiThreadHandler.postDelayed( () -> {
- if ( isForeground( getContext() ) && !hasOthersActivity() && !mStatusManager.isMainPageOnResume() ) {
- mLauncher.backToLauncher( getContext() );
- }
- }, 500L );
- mMogoIntentManager.invoke( AUTONAVI_STANDARD_BROADCAST_RECV, intent );
- return;
- }
- onStopNaviInternal();
- } else if ( key_type == 10005 ) {
- // 仅在导航场景下,⽀持第三⽅进⾏路线偏好的重新选择。
- // 避免收费 | 1
- // 多策略算路 | 2
- // 不走高速 | 3
- // 躲避拥堵 | 4
- // 不走高速且避免收费 | 5
- // 不走高速且躲避拥堵 | 6
- // 躲避收费和拥堵 | 7
- // 不走高速躲避收费和拥堵 | 8
- // 高速优先 | 20
- // 躲避拥堵且高速优先 | 24
- if ( CustomNaviInterrupter.getInstance().interrupt() ) {
- return;
- }
- int prefer = intent.getIntExtra( "NAVI_ROUTE_PREFER", 0 );
- MogoNaviConfig config = new MogoNaviConfig().congestion( prefer == 4 )
- .cost( prefer == 1 || prefer == 7 )
- .highSpeed( prefer == 20 )
- .avoidSpeed( prefer == 3 );
- mMogoMapService.getNavi( getContext() ).reCalculateRoute( config );
-
- }
- mMogoIntentManager.invoke( AUTONAVI_STANDARD_BROADCAST_RECV, intent );
- }
- };
-
- IntentFilter inputFilter = new IntentFilter();
- inputFilter.addAction( AUTONAVI_STANDARD_BROADCAST_RECV );
- getContext().registerReceiver( broadcastReceiver, inputFilter );
+ @Override
+ public void onTrafficModeChanged( boolean open ) {
+ mView.getUIController().setTrafficEnabled( open );
}
- private boolean isForeground( Context context ) {
- if ( context != null ) {
- ActivityManager activityManager = ( ActivityManager ) context.getSystemService( Context.ACTIVITY_SERVICE );
- List< ActivityManager.RunningAppProcessInfo > processes = activityManager.getRunningAppProcesses();
- for ( ActivityManager.RunningAppProcessInfo processInfo : processes ) {
- if ( processInfo.processName.equals( context.getPackageName() ) ) {
- if ( processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND ) {
- return true;
- }
- }
- }
+ @Override
+ public void onCameraModeChanged( EnumMapUI mode ) {
+ mView.getUIController().changeMapMode( mode );
+ }
+
+ @Override
+ public void onDayNightModeChanged( EnumMapUI mode ) {
+ mView.getUIController().changeMapMode( mode );
+ }
+
+ @Override
+ public void onContinueNavi() {
+ if ( CustomNaviInterrupter.getInstance().interrupt() ) {
+ return;
}
- return false;
- }
-
- private boolean hasOthersActivity() {
- ActivityManager am = ( ActivityManager ) getContext().getSystemService( Context.ACTIVITY_SERVICE );
- List< ActivityManager.RunningTaskInfo > list = am.getRunningTasks( 1 );
- if ( list != null && !list.isEmpty() ) {
- for ( ActivityManager.RunningTaskInfo runningTaskInfo : list ) {
- if ( TextUtils.equals( runningTaskInfo.topActivity.getPackageName(), getContext().getPackageName() ) ) {
- return runningTaskInfo.numActivities > 1;
- }
- }
- }
- return true;
- }
-
- /**
- * 切换交通态势模式
- *
- * @param mode
- */
- private void onChangeTrafficMode( int mode ) {
- mView.getUIController().setTrafficEnabled( mode == 0 );
- }
-
- /**
- * 切换地图视图朝向模式
- */
- private void onChangeCameraMode( int mode ) {
- if ( mode == 0 ) {
- mView.getUIController().changeMapMode( EnumMapUI.CarUp_2D );
- } else if ( mode == 1 ) {
- mView.getUIController().changeMapMode( EnumMapUI.NorthUP_2D );
- } else if ( mode == 2 ) {
- mView.getUIController().changeMapMode( EnumMapUI.CarUp_3D );
- }
- }
-
- /**
- * 切换白天黑夜模式
- *
- * @param mode
- */
- private void onChangeDayNightMode( int mode ) {
- if ( mode == 0 ) {
- mView.getUIController().changeMapMode( EnumMapUI.Type_AUTO_LIGHT_Night );
- } else if ( mode == 1 ) {
- mView.getUIController().changeMapMode( EnumMapUI.Type_Light );
- } else if ( mode == 2 ) {
- mView.getUIController().changeMapMode( EnumMapUI.Type_Night );
- }
- }
-
- private void onStopNaviInternal() {
- mMogoMapService.getNavi( getContext() ).stopNavi();
- }
-
-
- /**
- * 唤醒指令导航去哪里
- */
- private void onChoosePath( Intent intent, int type ) {
- double lat;
- double lon;
-
- if ( type == 10007 ) {
- lat = intent.getDoubleExtra( "ENTRY_LAT", 0.0 );
- lon = intent.getDoubleExtra( "ENTRY_LON", 0.0 );
- } else {
- lat = intent.getDoubleExtra( "LAT", 0.0 );
- lon = intent.getDoubleExtra( "LON", 0.0 );
- }
- mMogoSearchManager.calculatePath( new MogoLatLng( lat, lon ) );
- }
-
- /**
- * 继续导航
- */
- private void onContinueNavigation() {
-
if ( mStatusManager.isMainPageOnResume() ) {
mStatusManager.setDisplayOverview( TAG, false );
mView.getUIController().recoverLockMode();
@@ -304,7 +121,64 @@ public class MapPresenter extends Presenter< MapView > implements
}
}
- private void onDisplayOverview() {
+ @Override
+ public void onOpenNavi() {
+ if ( CustomNaviInterrupter.getInstance().interrupt() ) {
+ return;
+ }
+ mLauncher.backToLauncher( getContext() );
+ if ( !mMogoMapService.getNavi( getContext() ).isNaviing() && !mStatusManager.isSearchUIShow() ) {
+ mSearchManager.showSearch();
+ }
+ AIAssist.getInstance( getContext() ).speakTTSVoice( "已打开" );
+ }
+
+ @Override
+ public void onCalculatePath( double lon, double lat ) {
+ if ( CustomNaviInterrupter.getInstance().interrupt() ) {
+ return;
+ }
+ mLauncher.backToLauncher( getContext() );
+ mMogoSearchManager.calculatePath( new MogoLatLng( lat, lon ) );
+ }
+
+ @Override
+ public void onStopNaviInternal( Intent intent ) {
+ if ( CustomNaviInterrupter.getInstance().interrupt() ) {
+ // 导航过程中语音指令退出导航,会出现 activity 不走 onResume 的情况
+ UiThreadHandler.postDelayed( () -> {
+ if ( AppUtils.isAppForeground( getContext() ) && !hasOthersActivity() && !mStatusManager.isMainPageOnResume() ) {
+ mLauncher.backToLauncher( getContext() );
+ }
+ }, 500L );
+ return;
+ }
+ mMogoMapService.getNavi( getContext() ).stopNavi();
+ }
+
+ @Override
+ public void onReCalculatePath( MogoNaviConfig config ) {
+ if ( CustomNaviInterrupter.getInstance().interrupt() ) {
+ return;
+ }
+ mMogoMapService.getNavi( getContext() ).reCalculateRoute( config );
+ }
+
+ private boolean hasOthersActivity() {
+ ActivityManager am = ( ActivityManager ) getContext().getSystemService( Context.ACTIVITY_SERVICE );
+ List< ActivityManager.RunningTaskInfo > list = am.getRunningTasks( 1 );
+ if ( list != null && !list.isEmpty() ) {
+ for ( ActivityManager.RunningTaskInfo runningTaskInfo : list ) {
+ if ( TextUtils.equals( runningTaskInfo.topActivity.getPackageName(), getContext().getPackageName() ) ) {
+ return runningTaskInfo.numActivities > 1;
+ }
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public void onDisplayOverview() {
if ( !mMogoMapService.getNavi( getContext() ).isNaviing() ) {
Logger.d( TAG, "未开始导航." );
return;
@@ -331,7 +205,8 @@ public class MapPresenter extends Presenter< MapView > implements
UiThreadHandler.postDelayed( mLockCarRunnable, 20_000 );
}
- private void zoomMap( boolean zoomIn ) {
+ @Override
+ public void onZoomMap( boolean zoomIn ) {
boolean isLocked = mMogoMapService.getMapUIController().isCarLocked();
MapControlResult result = mView.getUIController().changeZoom( zoomIn );
if ( !CustomNaviInterrupter.getInstance().interrupt() ) {
@@ -358,14 +233,6 @@ public class MapPresenter extends Presenter< MapView > implements
}
}
- private void onOpenNavi() {
- mLauncher.backToLauncher( getContext() );
- if ( !mMogoMapService.getNavi( getContext() ).isNaviing() && !mStatusManager.isSearchUIShow() ) {
- mSearchManager.showSearch();
- }
- AIAssist.getInstance( getContext() ).speakTTSVoice( "已打开" );
- }
-
@Override
public void onCreate( @NonNull LifecycleOwner owner ) {
super.onCreate( owner );
@@ -380,7 +247,6 @@ public class MapPresenter extends Presenter< MapView > implements
mRegisterCenter.registerMogoNaviListener( TAG, this );
mLauncher = apis.getLauncherApi();
mMogoSearchManager = apis.getSearchManagerApi();
- mSettingManager = apis.getSettingManagerApi();
IMogoNavi mogoNavi = mMogoMapService.getNavi( getContext() );
mogoNavi.setCalculatePathDisplayBounds( new Rect(
@@ -400,6 +266,16 @@ public class MapPresenter extends Presenter< MapView > implements
for ( String cmd : VoiceConstants.sUnUnRegisterCmds ) {
mMogoIntentManager.registerIntentListener( cmd, this );
}
+
+ initBroadcast();
+ mCustomVoiceCommandHandler = new MapControlCommandHandler();
+ mCustomVoiceCommandHandler.setCallback( this );
+ }
+
+ private void initBroadcast() {
+ mAutoNaviReceiver = new AutoNaviBroadcastIntentHandler();
+ mAutoNaviReceiver.setCallback( this );
+ mAutoNaviReceiver.register( mMogoIntentManager );
}
@Override
@@ -411,15 +287,14 @@ public class MapPresenter extends Presenter< MapView > implements
@Override
public void onPause( @NonNull LifecycleOwner owner ) {
super.onPause( owner );
-
unregisterVoiceCmd();
}
@Override
public void onDestroy( @NonNull LifecycleOwner owner ) {
super.onDestroy( owner );
- if ( broadcastReceiver != null ) {
- getContext().unregisterReceiver( broadcastReceiver );
+ if ( mAutoNaviReceiver != null ) {
+ mAutoNaviReceiver.unregister( mMogoIntentManager );
}
}
@@ -456,82 +331,7 @@ public class MapPresenter extends Presenter< MapView > implements
@Override
public void onCmdSelected( String cmd ) {
Logger.d( TAG, cmd );
- switch ( cmd ) {
- case VoiceConstants.CMD_MAP_TRAFFIC_MODE_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_TRAFFIC_MODE:
- mView.getUIController().setTrafficEnabled( true );
- break;
- case VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE:
- mView.getUIController().setTrafficEnabled( false );
- break;
- case VoiceConstants.CMD_MAP_ZOOM_IN_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_ZOOM_IN:
- zoomMap( true );
- break;
- case VoiceConstants.CMD_MAP_ZOOM_OUT_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_ZOOM_OUT:
- zoomMap( false );
- break;
- case VoiceConstants.CMD_MAP_2D_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_2D:
- case VoiceConstants.CMD_MAP_NORTH_UP_MODE_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_NORTH_UP_MODE:
- mView.getUIController().changeMapMode( EnumMapUI.NorthUP_2D );
- break;
- case VoiceConstants.CMD_MAP_3D_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_3D:
- mView.getUIController().changeMapMode( EnumMapUI.CarUp_3D );
- break;
- case VoiceConstants.CMD_MAP_DAY_TIME_MODE_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_DAY_TIME_MODE:
- mView.getUIController().changeMapMode( EnumMapUI.Type_Light );
- AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
- break;
- case VoiceConstants.CMD_MAP_HISTORY_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_HISTORY:
- onOpenNavi();
- break;
- case VoiceConstants.CMD_MAP_STOP_NAVI_MODE_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_STOP_NAVI_MODE:
- mLauncher.backToLauncher( getContext() );
- break;
- case VoiceConstants.CMD_MAP_NIGHT_MODE_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_NIGHT_MODE:
- mView.getUIController().changeMapMode( EnumMapUI.Type_Night );
- AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
- break;
- case VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE:
- mView.getUIController().changeMapMode( EnumMapUI.Type_AUTO_LIGHT_Night );
- AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
- break;
- case VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE:
- onDisplayOverview();
- break;
- case VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE:
- onContinueNavigation();
- break;
- case VoiceConstants.CMD_MAP_CAR_UP_MODE_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_CAR_UP_MODE:
- mView.getUIController().changeMapMode( EnumMapUI.CarUp_2D );
- AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
- break;
- case VoiceConstants.CMD_MAP_SPEAK_DRAFT_MODE:
- case VoiceConstants.CMD_MAP_SPEAK_DRAFT_MODE_UN_WAKEUP:
- mSettingManager.speakDraft();
- AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
- break;
- case VoiceConstants.CMD_MAP_SPEAK_DETAIL_MODE:
- case VoiceConstants.CMD_MAP_SPEAK_DETAIL_MODE_UN_WAKEUP:
- mSettingManager.speakDetail();
- AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
- break;
- case VoiceConstants.CMD_MAP_SPEAK_REMAIN:
- break;
- default:
- break;
- }
+ mCustomVoiceCommandHandler.handleVoiceCommand( cmd );
}
@Override
diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/OnMapControlCallback.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/OnMapControlCallback.java
new file mode 100644
index 0000000000..cd6263370d
--- /dev/null
+++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/OnMapControlCallback.java
@@ -0,0 +1,39 @@
+package com.mogo.module.map;
+
+import android.content.Intent;
+
+import com.mogo.map.navi.MogoNaviConfig;
+import com.mogo.map.uicontroller.EnumMapUI;
+
+public interface OnMapControlCallback {
+
+ // 交通态势
+ void onTrafficModeChanged( boolean open );
+
+ // 2d、3d模式切换、正北、车头
+ void onCameraModeChanged( EnumMapUI mode);
+
+ // 白天、黑夜模式切换
+ void onDayNightModeChanged( EnumMapUI mode );
+
+ // 继续导航
+ void onContinueNavi();
+
+ // 打开导航
+ void onOpenNavi();
+
+ // 开始路径规划
+ void onCalculatePath( double lon, double lat );
+
+ // 调用停止导航方法
+ void onStopNaviInternal( Intent intent );
+
+ // 重新规划路线
+ void onReCalculatePath( MogoNaviConfig config );
+
+ // 查看全程
+ void onDisplayOverview();
+
+ // 缩放地图
+ void onZoomMap( boolean zoomIn );
+}
\ No newline at end of file
diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/VoiceConstants.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/VoiceConstants.java
index 84b2d61b22..aff22c0b1c 100644
--- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/VoiceConstants.java
+++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/VoiceConstants.java
@@ -135,7 +135,7 @@ public class VoiceConstants {
*/
public static final String CMD_MAP_NORTH_UP_MODE = "com.ileja.traffic.north.up";
public static final String CMD_MAP_NORTH_UP_MODE_UN_WAKEUP = "CMD_MAP_NORTH_UP_MODE_UN_WAKEUP";
- public static final String[] CMD_MAP_NORTH_UP_MODE_TRIGGER_WORDS = {"北朝上"};
+ public static final String[] CMD_MAP_NORTH_UP_MODE_TRIGGER_WORDS = {"正北朝上","北朝上"};
/**
* 简洁模式
*/
@@ -164,19 +164,19 @@ public class VoiceConstants {
static {
// 免唤醒
-// sVoiceCmds.put( VoiceConstants.CMD_MAP_ZOOM_IN_UN_WAKEUP, VoiceConstants.CMD_MAP_ZOOM_IN_TRIGGER_WORDS );
-// sVoiceCmds.put( VoiceConstants.CMD_MAP_ZOOM_OUT_UN_WAKEUP, VoiceConstants.CMD_MAP_ZOOM_OUT_TRIGGER_WORDS );
+ sVoiceCmds.put( VoiceConstants.CMD_MAP_ZOOM_IN_UN_WAKEUP, VoiceConstants.CMD_MAP_ZOOM_IN_TRIGGER_WORDS );
+ sVoiceCmds.put( VoiceConstants.CMD_MAP_ZOOM_OUT_UN_WAKEUP, VoiceConstants.CMD_MAP_ZOOM_OUT_TRIGGER_WORDS );
//sVoiceCmds.put( VoiceConstants.CMD_MAP_2D_UN_WAKEUP, VoiceConstants.CMD_MAP_2D_TRIGGER_WORDS );
//sVoiceCmds.put( VoiceConstants.CMD_MAP_3D_UN_WAKEUP, VoiceConstants.CMD_MAP_3D_TRIGGER_WORDS );
- //sVoiceCmds.put( VoiceConstants.CMD_MAP_DAY_TIME_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_DAY_TIME_MODE_TRIGGER_WORDS );
- //sVoiceCmds.put( VoiceConstants.CMD_MAP_NIGHT_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_NIGHT_MODE_TRIGGER_WORDS );
- //sVoiceCmds.put( VoiceConstants.CMD_MAP_TRAFFIC_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_TRAFFIC_MODE_TRIGGER_WORDS );
- //sVoiceCmds.put( VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_TRIGGER_WORDS );
- //sVoiceCmds.put( VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_TRIGGER_WORDS );
+ sVoiceCmds.put( VoiceConstants.CMD_MAP_DAY_TIME_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_DAY_TIME_MODE_TRIGGER_WORDS );
+ sVoiceCmds.put( VoiceConstants.CMD_MAP_NIGHT_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_NIGHT_MODE_TRIGGER_WORDS );
+ sVoiceCmds.put( VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_TRIGGER_WORDS );
+ sVoiceCmds.put( VoiceConstants.CMD_MAP_TRAFFIC_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_TRAFFIC_MODE_TRIGGER_WORDS );
+ sVoiceCmds.put( VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_TRIGGER_WORDS );
//sVoiceCmds.put( VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE_TRIGGER_WORDS );
//sVoiceCmds.put( VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE_MODE_TRIGGER_WORDS );
- //sVoiceCmds.put( VoiceConstants.CMD_MAP_CAR_UP_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_CAR_UP_MODE_TRIGGER_WORDS );
- //sVoiceCmds.put( VoiceConstants.CMD_MAP_NORTH_UP_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_NORTH_UP_MODE_TRIGGER_WORDS );
+ sVoiceCmds.put( VoiceConstants.CMD_MAP_CAR_UP_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_CAR_UP_MODE_TRIGGER_WORDS );
+ sVoiceCmds.put( VoiceConstants.CMD_MAP_NORTH_UP_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_NORTH_UP_MODE_TRIGGER_WORDS );
//sVoiceCmds.put( VoiceConstants.CMD_MAP_GO_HOME_UN_WAKEUP, VoiceConstants.CMD_MAP_ZOOM_IN_GO_HOME );
//sVoiceCmds.put( VoiceConstants.CMD_MAP_GO_COMPANY_UN_WAKEUP, VoiceConstants.CMD_MAP_ZOOM_IN_GO_COMPANY );
sVoiceCmds.put( VoiceConstants.CMD_MAP_HISTORY_UN_WAKEUP, VoiceConstants.CMD_MAP_HISTORY_TRIGGER_WORDS );
diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/NoopPresenter.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/NoopPresenter.java
new file mode 100644
index 0000000000..4270a87d06
--- /dev/null
+++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/NoopPresenter.java
@@ -0,0 +1,52 @@
+package com.mogo.module.media.presenter;
+
+import android.content.Context;
+
+import com.mogo.module.media.model.MediaInfoData;
+import com.mogo.module.media.view.IMusicView;
+
+/**
+ * 空presenter实现,为了减少各种空判断
+ *
+ * @author tongchenfei
+ */
+public class NoopPresenter extends BaseMediaPresenter {
+ public NoopPresenter(IMusicView view) {
+ super(view);
+ }
+
+ @Override
+ public void init(Context context) {
+
+ }
+
+ @Override
+ public void play(MediaInfoData mediaInfoData) {
+
+ }
+
+ @Override
+ public void pause(MediaInfoData mediaInfoData) {
+
+ }
+
+ @Override
+ public void stop(MediaInfoData mediaInfoData) {
+
+ }
+
+ @Override
+ public void pre() {
+
+ }
+
+ @Override
+ public void next() {
+
+ }
+
+ @Override
+ public void openApp() {
+
+ }
+}
diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/PresenterFactory.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/PresenterFactory.java
new file mode 100644
index 0000000000..c5661387b7
--- /dev/null
+++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/PresenterFactory.java
@@ -0,0 +1,45 @@
+package com.mogo.module.media.presenter;
+
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+
+import com.mogo.module.media.view.IMusicView;
+
+import java.util.List;
+
+/**
+ * Presenter简单工厂,根据包名判断选择哪个presenter
+ *
+ * @author tongchenfei
+ */
+public class PresenterFactory {
+ private static final String KW_PKG_NAME = "cn.kuwo.kwmusiccar";
+ private static final String WE_CAR_FLOW_PKG_NAME = "com.tencent.wecarflow";
+
+ /**
+ * 获取泛型是IMusicView的BaseMediaPresenter
+ *
+ * @param context 上下文,用来遍历机器上的包名
+ * @param view IMusicView,用来做view展示
+ * @return presenter
+ */
+ public static BaseMediaPresenter createMusicViewPresenter(Context context,
+ IMusicView view) {
+ BaseMediaPresenter result = null;
+ PackageManager pkm = context.getPackageManager();
+ List pkgInfoList = pkm.getInstalledPackages(0);
+ // 只做了两级优先级判断,比较简单
+ for (PackageInfo pkgInfo : pkgInfoList) {
+ if (pkgInfo.packageName.equals(KW_PKG_NAME)) {
+ result = new KwPresenter(view);
+ } else if (pkgInfo.packageName.equals(WE_CAR_FLOW_PKG_NAME) && result == null) {
+ result = new WeCarFlowPresenter(view);
+ }
+ }
+ if (result == null) {
+ result = new NoopPresenter(view);
+ }
+ return result;
+ }
+}
diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java
index 55eb757511..5991f1ed25 100644
--- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java
+++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java
@@ -17,7 +17,9 @@ import com.mogo.module.media.ServiceMediaHandler;
import com.mogo.module.media.constants.MusicConstant;
import com.mogo.module.media.listener.NoDoubleClickListener;
import com.mogo.module.media.model.MediaInfoData;
+import com.mogo.module.media.presenter.BaseMediaPresenter;
import com.mogo.module.media.presenter.KwPresenter;
+import com.mogo.module.media.presenter.PresenterFactory;
import com.mogo.module.media.utils.Utils;
import com.mogo.module.media.view.IMusicView;
import com.mogo.module.media.widget.AnimCircleImageView;
@@ -41,7 +43,7 @@ public class MediaWindow2 implements IMusicView {
public static final String TAG = MediaWindow2.class.getName();
private Context mContext;
- private KwPresenter mPresenter;
+ private BaseMediaPresenter mPresenter;
private MediaInfoData mMediaInfoData = new MediaInfoData();
@@ -60,7 +62,7 @@ public class MediaWindow2 implements IMusicView {
public void initMedia(Context context) {
mContext = context;
- mPresenter = new KwPresenter(this);
+ mPresenter = PresenterFactory.createMusicViewPresenter(context, this);
mPresenter.init(context);
if(DebugConfig.isLauncher()) {
diff --git a/modules/mogo-module-event-panel/.gitignore b/modules/mogo-module-monitor/.gitignore
similarity index 100%
rename from modules/mogo-module-event-panel/.gitignore
rename to modules/mogo-module-monitor/.gitignore
diff --git a/modules/mogo-module-event-panel/build.gradle b/modules/mogo-module-monitor/build.gradle
similarity index 66%
rename from modules/mogo-module-event-panel/build.gradle
rename to modules/mogo-module-monitor/build.gradle
index 4fdf60062d..02099054e3 100644
--- a/modules/mogo-module-event-panel/build.gradle
+++ b/modules/mogo-module-monitor/build.gradle
@@ -1,7 +1,4 @@
apply plugin: 'com.android.library'
-apply plugin: 'kotlin-android'
-apply plugin: 'kotlin-android-extensions'
-apply plugin: 'kotlin-kapt'
apply plugin: 'com.alibaba.arouter'
android {
@@ -13,14 +10,13 @@ android {
versionCode Integer.valueOf(VERSION_CODE)
versionName getValueFromRootProperties("${project.name.replace("-", "_").toUpperCase()}_VERSION")
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles 'consumer-rules.pro'
javaCompileOptions {
annotationProcessorOptions {
arguments = [AROUTER_MODULE_NAME: project.getName()]
}
}
-
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
- consumerProguardFiles 'consumer-rules.pro'
}
buildTypes {
@@ -31,28 +27,18 @@ android {
}
compileOptions {
- targetCompatibility 1.8
- sourceCompatibility 1.8
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- implementation rootProject.ext.dependencies.androidxccorektx
- implementation rootProject.ext.dependencies.kotlinstdlibjdk7
implementation rootProject.ext.dependencies.androidxappcompat
implementation rootProject.ext.dependencies.androidxconstraintlayout
implementation rootProject.ext.dependencies.arouter
- kapt rootProject.ext.dependencies.aroutercompiler
- implementation rootProject.ext.dependencies.rxjava
- implementation rootProject.ext.dependencies.rxandroid
- implementation rootProject.ext.dependencies.androidxviewpager2
- implementation rootProject.ext.dependencies.androidxrecyclerview
- implementation rootProject.ext.dependencies.room
- kapt rootProject.ext.dependencies.roomAnnotationProcessor
- implementation rootProject.ext.dependencies.roomRxjava
-
+ annotationProcessor rootProject.ext.dependencies.aroutercompiler
if (Boolean.valueOf(RELEASE)) {
compileOnly rootProject.ext.dependencies.modulecommon
} else {
diff --git a/modules/mogo-module-monitor/build/generated/ap_generated_sources/debug/out/com/alibaba/android/arouter/routes/ARouter$$Group$$monitor.java b/modules/mogo-module-monitor/build/generated/ap_generated_sources/debug/out/com/alibaba/android/arouter/routes/ARouter$$Group$$monitor.java
deleted file mode 100644
index 532de5fd42..0000000000
--- a/modules/mogo-module-monitor/build/generated/ap_generated_sources/debug/out/com/alibaba/android/arouter/routes/ARouter$$Group$$monitor.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.alibaba.android.arouter.routes;
-
-import com.alibaba.android.arouter.facade.enums.RouteType;
-import com.alibaba.android.arouter.facade.model.RouteMeta;
-import com.alibaba.android.arouter.facade.template.IRouteGroup;
-import com.zhidao.mogo.module.monitor.MogoMonitorProvider;
-import java.lang.Override;
-import java.lang.String;
-import java.util.Map;
-
-/**
- * DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
-public class ARouter$$Group$$monitor implements IRouteGroup {
- @Override
- public void loadInto(Map atlas) {
- atlas.put("/monitor/api", RouteMeta.build(RouteType.PROVIDER, MogoMonitorProvider.class, "/monitor/api", "monitor", null, -1, -2147483648));
- }
-}
diff --git a/modules/mogo-module-monitor/build/generated/ap_generated_sources/debug/out/com/alibaba/android/arouter/routes/ARouter$$Providers$$mogomodulemonitor.java b/modules/mogo-module-monitor/build/generated/ap_generated_sources/debug/out/com/alibaba/android/arouter/routes/ARouter$$Providers$$mogomodulemonitor.java
deleted file mode 100644
index a339f62248..0000000000
--- a/modules/mogo-module-monitor/build/generated/ap_generated_sources/debug/out/com/alibaba/android/arouter/routes/ARouter$$Providers$$mogomodulemonitor.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.alibaba.android.arouter.routes;
-
-import com.alibaba.android.arouter.facade.enums.RouteType;
-import com.alibaba.android.arouter.facade.model.RouteMeta;
-import com.alibaba.android.arouter.facade.template.IProviderGroup;
-import com.zhidao.mogo.module.monitor.MogoMonitorProvider;
-import java.lang.Override;
-import java.lang.String;
-import java.util.Map;
-
-/**
- * DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
-public class ARouter$$Providers$$mogomodulemonitor implements IProviderGroup {
- @Override
- public void loadInto(Map providers) {
- providers.put("com.mogo.service.monitor.IMogoMonitorProvider", RouteMeta.build(RouteType.PROVIDER, MogoMonitorProvider.class, "/monitor/api", "monitor", null, -1, -2147483648));
- }
-}
diff --git a/modules/mogo-module-monitor/build/generated/ap_generated_sources/debug/out/com/alibaba/android/arouter/routes/ARouter$$Root$$mogomodulemonitor.java b/modules/mogo-module-monitor/build/generated/ap_generated_sources/debug/out/com/alibaba/android/arouter/routes/ARouter$$Root$$mogomodulemonitor.java
deleted file mode 100644
index 7591e0a779..0000000000
--- a/modules/mogo-module-monitor/build/generated/ap_generated_sources/debug/out/com/alibaba/android/arouter/routes/ARouter$$Root$$mogomodulemonitor.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.alibaba.android.arouter.routes;
-
-import com.alibaba.android.arouter.facade.template.IRouteGroup;
-import com.alibaba.android.arouter.facade.template.IRouteRoot;
-import java.lang.Class;
-import java.lang.Override;
-import java.lang.String;
-import java.util.Map;
-
-/**
- * DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
-public class ARouter$$Root$$mogomodulemonitor implements IRouteRoot {
- @Override
- public void loadInto(Map> routes) {
- routes.put("monitor", ARouter$$Group$$monitor.class);
- }
-}
diff --git a/modules/mogo-module-monitor/build/generated/source/buildConfig/debug/com/zhidao/mogo/module/monitor/BuildConfig.java b/modules/mogo-module-monitor/build/generated/source/buildConfig/debug/com/zhidao/mogo/module/monitor/BuildConfig.java
deleted file mode 100644
index 2d90505a1f..0000000000
--- a/modules/mogo-module-monitor/build/generated/source/buildConfig/debug/com/zhidao/mogo/module/monitor/BuildConfig.java
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Automatically generated file. DO NOT MODIFY
- */
-package com.zhidao.mogo.module.monitor;
-
-public final class BuildConfig {
- public static final boolean DEBUG = Boolean.parseBoolean("true");
- public static final String LIBRARY_PACKAGE_NAME = "com.zhidao.mogo.module.monitor";
- /**
- * @deprecated APPLICATION_ID is misleading in libraries. For the library package name use LIBRARY_PACKAGE_NAME
- */
- @Deprecated
- public static final String APPLICATION_ID = "com.zhidao.mogo.module.monitor";
- public static final String BUILD_TYPE = "debug";
- public static final String FLAVOR = "";
- public static final int VERSION_CODE = 1;
- public static final String VERSION_NAME = "1.0.0-SNAPSHOT";
-}
diff --git a/modules/mogo-module-monitor/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml b/modules/mogo-module-monitor/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml
deleted file mode 100644
index 8d912278c9..0000000000
--- a/modules/mogo-module-monitor/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
- /
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-monitor/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output.json b/modules/mogo-module-monitor/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output.json
deleted file mode 100644
index dcd23fb1b6..0000000000
--- a/modules/mogo-module-monitor/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output.json
+++ /dev/null
@@ -1 +0,0 @@
-[{"outputType":{"type":"AAPT_FRIENDLY_MERGED_MANIFESTS"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0.0-SNAPSHOT","enabled":true,"outputFile":"mogo-module-monitor-debug.aar","fullName":"debug","baseName":"debug"},"path":"AndroidManifest.xml","properties":{"packageId":"com.zhidao.mogo.module.monitor","split":""}}]
\ No newline at end of file
diff --git a/modules/mogo-module-monitor/build/intermediates/annotation_processor_list/debug/annotationProcessors.json b/modules/mogo-module-monitor/build/intermediates/annotation_processor_list/debug/annotationProcessors.json
deleted file mode 100644
index 0e71b72210..0000000000
--- a/modules/mogo-module-monitor/build/intermediates/annotation_processor_list/debug/annotationProcessors.json
+++ /dev/null
@@ -1 +0,0 @@
-{"jetified-arouter-compiler-1.2.2.jar (com.alibaba:arouter-compiler:1.2.2)":false,"auto-service-1.0-rc2.jar (com.google.auto.service:auto-service:1.0-rc2)":false}
\ No newline at end of file
diff --git a/modules/mogo-module-monitor/build/intermediates/compile_library_classes/debug/classes.jar b/modules/mogo-module-monitor/build/intermediates/compile_library_classes/debug/classes.jar
deleted file mode 100644
index f8fc29a9a3..0000000000
Binary files a/modules/mogo-module-monitor/build/intermediates/compile_library_classes/debug/classes.jar and /dev/null differ
diff --git a/modules/mogo-module-monitor/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/R.jar b/modules/mogo-module-monitor/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/R.jar
deleted file mode 100644
index 912c22d682..0000000000
Binary files a/modules/mogo-module-monitor/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/R.jar and /dev/null differ
diff --git a/modules/mogo-module-monitor/build/intermediates/incremental/debug-mergeNativeLibs/merge-state b/modules/mogo-module-monitor/build/intermediates/incremental/debug-mergeNativeLibs/merge-state
deleted file mode 100644
index 05cc9648ef..0000000000
Binary files a/modules/mogo-module-monitor/build/intermediates/incremental/debug-mergeNativeLibs/merge-state and /dev/null differ
diff --git a/modules/mogo-module-monitor/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml b/modules/mogo-module-monitor/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml
deleted file mode 100644
index cf4860e94e..0000000000
--- a/modules/mogo-module-monitor/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-monitor/build/intermediates/incremental/mergeDebugShaders/merger.xml b/modules/mogo-module-monitor/build/intermediates/incremental/mergeDebugShaders/merger.xml
deleted file mode 100644
index 5a9a176cd8..0000000000
--- a/modules/mogo-module-monitor/build/intermediates/incremental/mergeDebugShaders/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-monitor/build/intermediates/incremental/packageDebugAssets/merger.xml b/modules/mogo-module-monitor/build/intermediates/incremental/packageDebugAssets/merger.xml
deleted file mode 100644
index 7baf393456..0000000000
--- a/modules/mogo-module-monitor/build/intermediates/incremental/packageDebugAssets/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-monitor/build/intermediates/incremental/packageDebugResources/compile-file-map.properties b/modules/mogo-module-monitor/build/intermediates/incremental/packageDebugResources/compile-file-map.properties
deleted file mode 100644
index aa2a224e07..0000000000
--- a/modules/mogo-module-monitor/build/intermediates/incremental/packageDebugResources/compile-file-map.properties
+++ /dev/null
@@ -1 +0,0 @@
-#Tue Aug 11 10:29:56 CST 2020
diff --git a/modules/mogo-module-monitor/build/intermediates/incremental/packageDebugResources/merger.xml b/modules/mogo-module-monitor/build/intermediates/incremental/packageDebugResources/merger.xml
deleted file mode 100644
index 223a7e8161..0000000000
--- a/modules/mogo-module-monitor/build/intermediates/incremental/packageDebugResources/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-monitor/build/intermediates/javac/debug/classes/com/alibaba/android/arouter/routes/ARouter$$Group$$monitor.class b/modules/mogo-module-monitor/build/intermediates/javac/debug/classes/com/alibaba/android/arouter/routes/ARouter$$Group$$monitor.class
deleted file mode 100644
index c7c71a0576..0000000000
Binary files a/modules/mogo-module-monitor/build/intermediates/javac/debug/classes/com/alibaba/android/arouter/routes/ARouter$$Group$$monitor.class and /dev/null differ
diff --git a/modules/mogo-module-monitor/build/intermediates/javac/debug/classes/com/alibaba/android/arouter/routes/ARouter$$Providers$$mogomodulemonitor.class b/modules/mogo-module-monitor/build/intermediates/javac/debug/classes/com/alibaba/android/arouter/routes/ARouter$$Providers$$mogomodulemonitor.class
deleted file mode 100644
index af3320b6a4..0000000000
Binary files a/modules/mogo-module-monitor/build/intermediates/javac/debug/classes/com/alibaba/android/arouter/routes/ARouter$$Providers$$mogomodulemonitor.class and /dev/null differ
diff --git a/modules/mogo-module-monitor/build/intermediates/javac/debug/classes/com/alibaba/android/arouter/routes/ARouter$$Root$$mogomodulemonitor.class b/modules/mogo-module-monitor/build/intermediates/javac/debug/classes/com/alibaba/android/arouter/routes/ARouter$$Root$$mogomodulemonitor.class
deleted file mode 100644
index 8f5460a12e..0000000000
Binary files a/modules/mogo-module-monitor/build/intermediates/javac/debug/classes/com/alibaba/android/arouter/routes/ARouter$$Root$$mogomodulemonitor.class and /dev/null differ
diff --git a/modules/mogo-module-monitor/build/intermediates/javac/debug/classes/com/zhidao/mogo/module/monitor/BuildConfig.class b/modules/mogo-module-monitor/build/intermediates/javac/debug/classes/com/zhidao/mogo/module/monitor/BuildConfig.class
deleted file mode 100644
index 3af524e068..0000000000
Binary files a/modules/mogo-module-monitor/build/intermediates/javac/debug/classes/com/zhidao/mogo/module/monitor/BuildConfig.class and /dev/null differ
diff --git a/modules/mogo-module-monitor/build/intermediates/javac/debug/classes/com/zhidao/mogo/module/monitor/MogoMonitorConst.class b/modules/mogo-module-monitor/build/intermediates/javac/debug/classes/com/zhidao/mogo/module/monitor/MogoMonitorConst.class
deleted file mode 100644
index c4f7cc105a..0000000000
Binary files a/modules/mogo-module-monitor/build/intermediates/javac/debug/classes/com/zhidao/mogo/module/monitor/MogoMonitorConst.class and /dev/null differ
diff --git a/modules/mogo-module-monitor/build/intermediates/javac/debug/classes/com/zhidao/mogo/module/monitor/MogoMonitorProvider.class b/modules/mogo-module-monitor/build/intermediates/javac/debug/classes/com/zhidao/mogo/module/monitor/MogoMonitorProvider.class
deleted file mode 100644
index 57f7cf6a4f..0000000000
Binary files a/modules/mogo-module-monitor/build/intermediates/javac/debug/classes/com/zhidao/mogo/module/monitor/MogoMonitorProvider.class and /dev/null differ
diff --git a/modules/mogo-module-monitor/build/intermediates/library_java_res/debug/res.jar b/modules/mogo-module-monitor/build/intermediates/library_java_res/debug/res.jar
deleted file mode 100644
index 15cb0ecb3e..0000000000
Binary files a/modules/mogo-module-monitor/build/intermediates/library_java_res/debug/res.jar and /dev/null differ
diff --git a/modules/mogo-module-monitor/build/intermediates/library_manifest/debug/AndroidManifest.xml b/modules/mogo-module-monitor/build/intermediates/library_manifest/debug/AndroidManifest.xml
deleted file mode 100644
index 8d912278c9..0000000000
--- a/modules/mogo-module-monitor/build/intermediates/library_manifest/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
- /
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-monitor/build/intermediates/local_only_symbol_list/debug/parseDebugLibraryResources/R-def.txt b/modules/mogo-module-monitor/build/intermediates/local_only_symbol_list/debug/parseDebugLibraryResources/R-def.txt
deleted file mode 100644
index 78ac5b8bef..0000000000
--- a/modules/mogo-module-monitor/build/intermediates/local_only_symbol_list/debug/parseDebugLibraryResources/R-def.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-R_DEF: Internal format may change without notice
-local
diff --git a/modules/mogo-module-monitor/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt b/modules/mogo-module-monitor/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt
deleted file mode 100644
index 1a42461ac0..0000000000
--- a/modules/mogo-module-monitor/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-1
-2
-6
-7 F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml
-9 android:targetSdkVersion="22" />
-9-->F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml
-10 /
-11
-12
diff --git a/modules/mogo-module-monitor/build/intermediates/merged_manifests/debug/output.json b/modules/mogo-module-monitor/build/intermediates/merged_manifests/debug/output.json
deleted file mode 100644
index a3afe329c6..0000000000
--- a/modules/mogo-module-monitor/build/intermediates/merged_manifests/debug/output.json
+++ /dev/null
@@ -1 +0,0 @@
-[{"outputType":{"type":"MERGED_MANIFESTS"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0.0-SNAPSHOT","enabled":true,"outputFile":"mogo-module-monitor-debug.aar","fullName":"debug","baseName":"debug"},"path":"..\\..\\library_manifest\\debug\\AndroidManifest.xml","properties":{"packageId":"com.zhidao.mogo.module.monitor","split":""}}]
\ No newline at end of file
diff --git a/modules/mogo-module-monitor/build/intermediates/res/symbol-table-with-package/debug/package-aware-r.txt b/modules/mogo-module-monitor/build/intermediates/res/symbol-table-with-package/debug/package-aware-r.txt
deleted file mode 100644
index 4b34006df9..0000000000
--- a/modules/mogo-module-monitor/build/intermediates/res/symbol-table-with-package/debug/package-aware-r.txt
+++ /dev/null
@@ -1,1290 +0,0 @@
-com.zhidao.mogo.module.monitor
-anim abc_fade_in
-anim abc_fade_out
-anim abc_grow_fade_in_from_bottom
-anim abc_popup_enter
-anim abc_popup_exit
-anim abc_shrink_fade_out_from_bottom
-anim abc_slide_in_bottom
-anim abc_slide_in_top
-anim abc_slide_out_bottom
-anim abc_slide_out_top
-anim abc_tooltip_enter
-anim abc_tooltip_exit
-attr actionBarDivider
-attr actionBarItemBackground
-attr actionBarPopupTheme
-attr actionBarSize
-attr actionBarSplitStyle
-attr actionBarStyle
-attr actionBarTabBarStyle
-attr actionBarTabStyle
-attr actionBarTabTextStyle
-attr actionBarTheme
-attr actionBarWidgetTheme
-attr actionButtonStyle
-attr actionDropDownStyle
-attr actionLayout
-attr actionMenuTextAppearance
-attr actionMenuTextColor
-attr actionModeBackground
-attr actionModeCloseButtonStyle
-attr actionModeCloseDrawable
-attr actionModeCopyDrawable
-attr actionModeCutDrawable
-attr actionModeFindDrawable
-attr actionModePasteDrawable
-attr actionModePopupWindowStyle
-attr actionModeSelectAllDrawable
-attr actionModeShareDrawable
-attr actionModeSplitBackground
-attr actionModeStyle
-attr actionModeWebSearchDrawable
-attr actionOverflowButtonStyle
-attr actionOverflowMenuStyle
-attr actionProviderClass
-attr actionViewClass
-attr activityChooserViewStyle
-attr alertDialogButtonGroupStyle
-attr alertDialogCenterButtons
-attr alertDialogStyle
-attr alertDialogTheme
-attr allowStacking
-attr alpha
-attr alphabeticModifiers
-attr arrowHeadLength
-attr arrowShaftLength
-attr autoCompleteTextViewStyle
-attr autoSizeMaxTextSize
-attr autoSizeMinTextSize
-attr autoSizePresetSizes
-attr autoSizeStepGranularity
-attr autoSizeTextType
-attr background
-attr backgroundSplit
-attr backgroundStacked
-attr backgroundTint
-attr backgroundTintMode
-attr barLength
-attr barrierAllowsGoneWidgets
-attr barrierDirection
-attr borderlessButtonStyle
-attr buttonBarButtonStyle
-attr buttonBarNegativeButtonStyle
-attr buttonBarNeutralButtonStyle
-attr buttonBarPositiveButtonStyle
-attr buttonBarStyle
-attr buttonGravity
-attr buttonIconDimen
-attr buttonPanelSideLayout
-attr buttonStyle
-attr buttonStyleSmall
-attr buttonTint
-attr buttonTintMode
-attr chainUseRtl
-attr checkboxStyle
-attr checkedTextViewStyle
-attr closeIcon
-attr closeItemLayout
-attr collapseContentDescription
-attr collapseIcon
-attr color
-attr colorAccent
-attr colorBackgroundFloating
-attr colorButtonNormal
-attr colorControlActivated
-attr colorControlHighlight
-attr colorControlNormal
-attr colorError
-attr colorPrimary
-attr colorPrimaryDark
-attr colorSwitchThumbNormal
-attr commitIcon
-attr constraintSet
-attr constraint_referenced_ids
-attr content
-attr contentDescription
-attr contentInsetEnd
-attr contentInsetEndWithActions
-attr contentInsetLeft
-attr contentInsetRight
-attr contentInsetStart
-attr contentInsetStartWithNavigation
-attr controlBackground
-attr coordinatorLayoutStyle
-attr customNavigationLayout
-attr defaultQueryHint
-attr dialogCornerRadius
-attr dialogPreferredPadding
-attr dialogTheme
-attr displayOptions
-attr divider
-attr dividerHorizontal
-attr dividerPadding
-attr dividerVertical
-attr drawableSize
-attr drawerArrowStyle
-attr dropDownListViewStyle
-attr dropdownListPreferredItemHeight
-attr editTextBackground
-attr editTextColor
-attr editTextStyle
-attr elevation
-attr emptyVisibility
-attr expandActivityOverflowButtonDrawable
-attr firstBaselineToTopHeight
-attr font
-attr fontFamily
-attr fontProviderAuthority
-attr fontProviderCerts
-attr fontProviderFetchStrategy
-attr fontProviderFetchTimeout
-attr fontProviderPackage
-attr fontProviderQuery
-attr fontStyle
-attr fontVariationSettings
-attr fontWeight
-attr gapBetweenBars
-attr goIcon
-attr height
-attr hideOnContentScroll
-attr homeAsUpIndicator
-attr homeLayout
-attr icon
-attr iconTint
-attr iconTintMode
-attr iconifiedByDefault
-attr imageButtonStyle
-attr indeterminateProgressStyle
-attr initialActivityCount
-attr isLightTheme
-attr itemPadding
-attr keylines
-attr lastBaselineToBottomHeight
-attr layout
-attr layout_anchor
-attr layout_anchorGravity
-attr layout_behavior
-attr layout_constrainedHeight
-attr layout_constrainedWidth
-attr layout_constraintBaseline_creator
-attr layout_constraintBaseline_toBaselineOf
-attr layout_constraintBottom_creator
-attr layout_constraintBottom_toBottomOf
-attr layout_constraintBottom_toTopOf
-attr layout_constraintCircle
-attr layout_constraintCircleAngle
-attr layout_constraintCircleRadius
-attr layout_constraintDimensionRatio
-attr layout_constraintEnd_toEndOf
-attr layout_constraintEnd_toStartOf
-attr layout_constraintGuide_begin
-attr layout_constraintGuide_end
-attr layout_constraintGuide_percent
-attr layout_constraintHeight_default
-attr layout_constraintHeight_max
-attr layout_constraintHeight_min
-attr layout_constraintHeight_percent
-attr layout_constraintHorizontal_bias
-attr layout_constraintHorizontal_chainStyle
-attr layout_constraintHorizontal_weight
-attr layout_constraintLeft_creator
-attr layout_constraintLeft_toLeftOf
-attr layout_constraintLeft_toRightOf
-attr layout_constraintRight_creator
-attr layout_constraintRight_toLeftOf
-attr layout_constraintRight_toRightOf
-attr layout_constraintStart_toEndOf
-attr layout_constraintStart_toStartOf
-attr layout_constraintTop_creator
-attr layout_constraintTop_toBottomOf
-attr layout_constraintTop_toTopOf
-attr layout_constraintVertical_bias
-attr layout_constraintVertical_chainStyle
-attr layout_constraintVertical_weight
-attr layout_constraintWidth_default
-attr layout_constraintWidth_max
-attr layout_constraintWidth_min
-attr layout_constraintWidth_percent
-attr layout_dodgeInsetEdges
-attr layout_editor_absoluteX
-attr layout_editor_absoluteY
-attr layout_goneMarginBottom
-attr layout_goneMarginEnd
-attr layout_goneMarginLeft
-attr layout_goneMarginRight
-attr layout_goneMarginStart
-attr layout_goneMarginTop
-attr layout_insetEdge
-attr layout_keyline
-attr layout_optimizationLevel
-attr lineHeight
-attr listChoiceBackgroundIndicator
-attr listDividerAlertDialog
-attr listItemLayout
-attr listLayout
-attr listMenuViewStyle
-attr listPopupWindowStyle
-attr listPreferredItemHeight
-attr listPreferredItemHeightLarge
-attr listPreferredItemHeightSmall
-attr listPreferredItemPaddingLeft
-attr listPreferredItemPaddingRight
-attr logo
-attr logoDescription
-attr maxButtonHeight
-attr measureWithLargestChild
-attr multiChoiceItemLayout
-attr navigationContentDescription
-attr navigationIcon
-attr navigationMode
-attr numericModifiers
-attr overlapAnchor
-attr paddingBottomNoButtons
-attr paddingEnd
-attr paddingStart
-attr paddingTopNoTitle
-attr panelBackground
-attr panelMenuListTheme
-attr panelMenuListWidth
-attr popupMenuStyle
-attr popupTheme
-attr popupWindowStyle
-attr preserveIconSpacing
-attr progressBarPadding
-attr progressBarStyle
-attr queryBackground
-attr queryHint
-attr radioButtonStyle
-attr ratingBarStyle
-attr ratingBarStyleIndicator
-attr ratingBarStyleSmall
-attr searchHintIcon
-attr searchIcon
-attr searchViewStyle
-attr seekBarStyle
-attr selectableItemBackground
-attr selectableItemBackgroundBorderless
-attr showAsAction
-attr showDividers
-attr showText
-attr showTitle
-attr singleChoiceItemLayout
-attr spinBars
-attr spinnerDropDownItemStyle
-attr spinnerStyle
-attr splitTrack
-attr srcCompat
-attr state_above_anchor
-attr statusBarBackground
-attr subMenuArrow
-attr submitBackground
-attr subtitle
-attr subtitleTextAppearance
-attr subtitleTextColor
-attr subtitleTextStyle
-attr suggestionRowLayout
-attr switchMinWidth
-attr switchPadding
-attr switchStyle
-attr switchTextAppearance
-attr textAllCaps
-attr textAppearanceLargePopupMenu
-attr textAppearanceListItem
-attr textAppearanceListItemSecondary
-attr textAppearanceListItemSmall
-attr textAppearancePopupMenuHeader
-attr textAppearanceSearchResultSubtitle
-attr textAppearanceSearchResultTitle
-attr textAppearanceSmallPopupMenu
-attr textColorAlertDialogListItem
-attr textColorSearchUrl
-attr theme
-attr thickness
-attr thumbTextPadding
-attr thumbTint
-attr thumbTintMode
-attr tickMark
-attr tickMarkTint
-attr tickMarkTintMode
-attr tint
-attr tintMode
-attr title
-attr titleMargin
-attr titleMarginBottom
-attr titleMarginEnd
-attr titleMarginStart
-attr titleMarginTop
-attr titleMargins
-attr titleTextAppearance
-attr titleTextColor
-attr titleTextStyle
-attr toolbarNavigationButtonStyle
-attr toolbarStyle
-attr tooltipForegroundColor
-attr tooltipFrameBackground
-attr tooltipText
-attr track
-attr trackTint
-attr trackTintMode
-attr ttcIndex
-attr viewInflaterClass
-attr voiceIcon
-attr windowActionBar
-attr windowActionBarOverlay
-attr windowActionModeOverlay
-attr windowFixedHeightMajor
-attr windowFixedHeightMinor
-attr windowFixedWidthMajor
-attr windowFixedWidthMinor
-attr windowMinWidthMajor
-attr windowMinWidthMinor
-attr windowNoTitle
-bool abc_action_bar_embed_tabs
-bool abc_allow_stacked_button_bar
-bool abc_config_actionMenuItemAllCaps
-bool abc_config_showMenuShortcutsWhenKeyboardPresent
-color abc_background_cache_hint_selector_material_dark
-color abc_background_cache_hint_selector_material_light
-color abc_btn_colored_borderless_text_material
-color abc_btn_colored_text_material
-color abc_color_highlight_material
-color abc_hint_foreground_material_dark
-color abc_hint_foreground_material_light
-color abc_input_method_navigation_guard
-color abc_primary_text_disable_only_material_dark
-color abc_primary_text_disable_only_material_light
-color abc_primary_text_material_dark
-color abc_primary_text_material_light
-color abc_search_url_text
-color abc_search_url_text_normal
-color abc_search_url_text_pressed
-color abc_search_url_text_selected
-color abc_secondary_text_material_dark
-color abc_secondary_text_material_light
-color abc_tint_btn_checkable
-color abc_tint_default
-color abc_tint_edittext
-color abc_tint_seek_thumb
-color abc_tint_spinner
-color abc_tint_switch_track
-color accent_material_dark
-color accent_material_light
-color background_floating_material_dark
-color background_floating_material_light
-color background_material_dark
-color background_material_light
-color bright_foreground_disabled_material_dark
-color bright_foreground_disabled_material_light
-color bright_foreground_inverse_material_dark
-color bright_foreground_inverse_material_light
-color bright_foreground_material_dark
-color bright_foreground_material_light
-color burlywood
-color button_material_dark
-color button_material_light
-color dim_foreground_disabled_material_dark
-color dim_foreground_disabled_material_light
-color dim_foreground_material_dark
-color dim_foreground_material_light
-color error_color_material
-color error_color_material_dark
-color error_color_material_light
-color foreground_material_dark
-color foreground_material_light
-color highlighted_text_material_dark
-color highlighted_text_material_light
-color material_blue_grey_800
-color material_blue_grey_900
-color material_blue_grey_950
-color material_deep_teal_200
-color material_deep_teal_500
-color material_grey_100
-color material_grey_300
-color material_grey_50
-color material_grey_600
-color material_grey_800
-color material_grey_850
-color material_grey_900
-color notification_action_color_filter
-color notification_icon_bg_color
-color notification_material_background_media_default_color
-color primary_dark_material_dark
-color primary_dark_material_light
-color primary_material_dark
-color primary_material_light
-color primary_text_default_material_dark
-color primary_text_default_material_light
-color primary_text_disabled_material_dark
-color primary_text_disabled_material_light
-color ripple_material_dark
-color ripple_material_light
-color secondary_text_default_material_dark
-color secondary_text_default_material_light
-color secondary_text_disabled_material_dark
-color secondary_text_disabled_material_light
-color switch_thumb_disabled_material_dark
-color switch_thumb_disabled_material_light
-color switch_thumb_material_dark
-color switch_thumb_material_light
-color switch_thumb_normal_material_dark
-color switch_thumb_normal_material_light
-color tooltip_background_dark
-color tooltip_background_light
-color translucent_background
-dimen abc_action_bar_content_inset_material
-dimen abc_action_bar_content_inset_with_nav
-dimen abc_action_bar_default_height_material
-dimen abc_action_bar_default_padding_end_material
-dimen abc_action_bar_default_padding_start_material
-dimen abc_action_bar_elevation_material
-dimen abc_action_bar_icon_vertical_padding_material
-dimen abc_action_bar_overflow_padding_end_material
-dimen abc_action_bar_overflow_padding_start_material
-dimen abc_action_bar_progress_bar_size
-dimen abc_action_bar_stacked_max_height
-dimen abc_action_bar_stacked_tab_max_width
-dimen abc_action_bar_subtitle_bottom_margin_material
-dimen abc_action_bar_subtitle_top_margin_material
-dimen abc_action_button_min_height_material
-dimen abc_action_button_min_width_material
-dimen abc_action_button_min_width_overflow_material
-dimen abc_alert_dialog_button_bar_height
-dimen abc_alert_dialog_button_dimen
-dimen abc_button_inset_horizontal_material
-dimen abc_button_inset_vertical_material
-dimen abc_button_padding_horizontal_material
-dimen abc_button_padding_vertical_material
-dimen abc_cascading_menus_min_smallest_width
-dimen abc_config_prefDialogWidth
-dimen abc_control_corner_material
-dimen abc_control_inset_material
-dimen abc_control_padding_material
-dimen abc_dialog_corner_radius_material
-dimen abc_dialog_fixed_height_major
-dimen abc_dialog_fixed_height_minor
-dimen abc_dialog_fixed_width_major
-dimen abc_dialog_fixed_width_minor
-dimen abc_dialog_list_padding_bottom_no_buttons
-dimen abc_dialog_list_padding_top_no_title
-dimen abc_dialog_min_width_major
-dimen abc_dialog_min_width_minor
-dimen abc_dialog_padding_material
-dimen abc_dialog_padding_top_material
-dimen abc_dialog_title_divider_material
-dimen abc_disabled_alpha_material_dark
-dimen abc_disabled_alpha_material_light
-dimen abc_dropdownitem_icon_width
-dimen abc_dropdownitem_text_padding_left
-dimen abc_dropdownitem_text_padding_right
-dimen abc_edit_text_inset_bottom_material
-dimen abc_edit_text_inset_horizontal_material
-dimen abc_edit_text_inset_top_material
-dimen abc_floating_window_z
-dimen abc_list_item_padding_horizontal_material
-dimen abc_panel_menu_list_width
-dimen abc_progress_bar_height_material
-dimen abc_search_view_preferred_height
-dimen abc_search_view_preferred_width
-dimen abc_seekbar_track_background_height_material
-dimen abc_seekbar_track_progress_height_material
-dimen abc_select_dialog_padding_start_material
-dimen abc_switch_padding
-dimen abc_text_size_body_1_material
-dimen abc_text_size_body_2_material
-dimen abc_text_size_button_material
-dimen abc_text_size_caption_material
-dimen abc_text_size_display_1_material
-dimen abc_text_size_display_2_material
-dimen abc_text_size_display_3_material
-dimen abc_text_size_display_4_material
-dimen abc_text_size_headline_material
-dimen abc_text_size_large_material
-dimen abc_text_size_medium_material
-dimen abc_text_size_menu_header_material
-dimen abc_text_size_menu_material
-dimen abc_text_size_small_material
-dimen abc_text_size_subhead_material
-dimen abc_text_size_subtitle_material_toolbar
-dimen abc_text_size_title_material
-dimen abc_text_size_title_material_toolbar
-dimen compat_button_inset_horizontal_material
-dimen compat_button_inset_vertical_material
-dimen compat_button_padding_horizontal_material
-dimen compat_button_padding_vertical_material
-dimen compat_control_corner_material
-dimen compat_notification_large_icon_max_height
-dimen compat_notification_large_icon_max_width
-dimen disabled_alpha_material_dark
-dimen disabled_alpha_material_light
-dimen highlight_alpha_material_colored
-dimen highlight_alpha_material_dark
-dimen highlight_alpha_material_light
-dimen hint_alpha_material_dark
-dimen hint_alpha_material_light
-dimen hint_pressed_alpha_material_dark
-dimen hint_pressed_alpha_material_light
-dimen notification_action_icon_size
-dimen notification_action_text_size
-dimen notification_big_circle_margin
-dimen notification_content_margin_start
-dimen notification_large_icon_height
-dimen notification_large_icon_width
-dimen notification_main_column_padding_top
-dimen notification_media_narrow_margin
-dimen notification_right_icon_size
-dimen notification_right_side_padding_top
-dimen notification_small_icon_background_padding
-dimen notification_small_icon_size_as_large
-dimen notification_subtext_size
-dimen notification_top_pad
-dimen notification_top_pad_large_text
-dimen subtitle_corner_radius
-dimen subtitle_outline_width
-dimen subtitle_shadow_offset
-dimen subtitle_shadow_radius
-dimen tooltip_corner_radius
-dimen tooltip_horizontal_padding
-dimen tooltip_margin
-dimen tooltip_precise_anchor_extra_offset
-dimen tooltip_precise_anchor_threshold
-dimen tooltip_vertical_padding
-dimen tooltip_y_offset_non_touch
-dimen tooltip_y_offset_touch
-drawable abc_ab_share_pack_mtrl_alpha
-drawable abc_action_bar_item_background_material
-drawable abc_btn_borderless_material
-drawable abc_btn_check_material
-drawable abc_btn_check_to_on_mtrl_000
-drawable abc_btn_check_to_on_mtrl_015
-drawable abc_btn_colored_material
-drawable abc_btn_default_mtrl_shape
-drawable abc_btn_radio_material
-drawable abc_btn_radio_to_on_mtrl_000
-drawable abc_btn_radio_to_on_mtrl_015
-drawable abc_btn_switch_to_on_mtrl_00001
-drawable abc_btn_switch_to_on_mtrl_00012
-drawable abc_cab_background_internal_bg
-drawable abc_cab_background_top_material
-drawable abc_cab_background_top_mtrl_alpha
-drawable abc_control_background_material
-drawable abc_dialog_material_background
-drawable abc_edit_text_material
-drawable abc_ic_ab_back_material
-drawable abc_ic_arrow_drop_right_black_24dp
-drawable abc_ic_clear_material
-drawable abc_ic_commit_search_api_mtrl_alpha
-drawable abc_ic_go_search_api_material
-drawable abc_ic_menu_copy_mtrl_am_alpha
-drawable abc_ic_menu_cut_mtrl_alpha
-drawable abc_ic_menu_overflow_material
-drawable abc_ic_menu_paste_mtrl_am_alpha
-drawable abc_ic_menu_selectall_mtrl_alpha
-drawable abc_ic_menu_share_mtrl_alpha
-drawable abc_ic_search_api_material
-drawable abc_ic_star_black_16dp
-drawable abc_ic_star_black_36dp
-drawable abc_ic_star_black_48dp
-drawable abc_ic_star_half_black_16dp
-drawable abc_ic_star_half_black_36dp
-drawable abc_ic_star_half_black_48dp
-drawable abc_ic_voice_search_api_material
-drawable abc_item_background_holo_dark
-drawable abc_item_background_holo_light
-drawable abc_list_divider_material
-drawable abc_list_divider_mtrl_alpha
-drawable abc_list_focused_holo
-drawable abc_list_longpressed_holo
-drawable abc_list_pressed_holo_dark
-drawable abc_list_pressed_holo_light
-drawable abc_list_selector_background_transition_holo_dark
-drawable abc_list_selector_background_transition_holo_light
-drawable abc_list_selector_disabled_holo_dark
-drawable abc_list_selector_disabled_holo_light
-drawable abc_list_selector_holo_dark
-drawable abc_list_selector_holo_light
-drawable abc_menu_hardkey_panel_mtrl_mult
-drawable abc_popup_background_mtrl_mult
-drawable abc_ratingbar_indicator_material
-drawable abc_ratingbar_material
-drawable abc_ratingbar_small_material
-drawable abc_scrubber_control_off_mtrl_alpha
-drawable abc_scrubber_control_to_pressed_mtrl_000
-drawable abc_scrubber_control_to_pressed_mtrl_005
-drawable abc_scrubber_primary_mtrl_alpha
-drawable abc_scrubber_track_mtrl_alpha
-drawable abc_seekbar_thumb_material
-drawable abc_seekbar_tick_mark_material
-drawable abc_seekbar_track_material
-drawable abc_spinner_mtrl_am_alpha
-drawable abc_spinner_textfield_background_material
-drawable abc_switch_thumb_material
-drawable abc_switch_track_mtrl_alpha
-drawable abc_tab_indicator_material
-drawable abc_tab_indicator_mtrl_alpha
-drawable abc_text_cursor_material
-drawable abc_text_select_handle_left_mtrl_dark
-drawable abc_text_select_handle_left_mtrl_light
-drawable abc_text_select_handle_middle_mtrl_dark
-drawable abc_text_select_handle_middle_mtrl_light
-drawable abc_text_select_handle_right_mtrl_dark
-drawable abc_text_select_handle_right_mtrl_light
-drawable abc_textfield_activated_mtrl_alpha
-drawable abc_textfield_default_mtrl_alpha
-drawable abc_textfield_search_activated_mtrl_alpha
-drawable abc_textfield_search_default_mtrl_alpha
-drawable abc_textfield_search_material
-drawable abc_vector_test
-drawable ic_keyboard_arrow_left_white_36dp
-drawable ic_share_black_24dp
-drawable log_debug_dialog_bg
-drawable log_debug_retry_btn_bg
-drawable log_debug_start_btn_bg
-drawable log_debug_stop_btn_bg
-drawable notification_action_background
-drawable notification_bg
-drawable notification_bg_low
-drawable notification_bg_low_normal
-drawable notification_bg_low_pressed
-drawable notification_bg_normal
-drawable notification_bg_normal_pressed
-drawable notification_icon_background
-drawable notification_template_icon_bg
-drawable notification_template_icon_low_bg
-drawable notification_tile_bg
-drawable notify_panel_notification_icon_bg
-drawable tooltip_frame_dark
-drawable tooltip_frame_light
-id action0
-id action_bar
-id action_bar_activity_content
-id action_bar_container
-id action_bar_root
-id action_bar_spinner
-id action_bar_subtitle
-id action_bar_title
-id action_container
-id action_context_bar
-id action_divider
-id action_image
-id action_menu_divider
-id action_menu_presenter
-id action_mode_bar
-id action_mode_bar_stub
-id action_mode_close_button
-id action_text
-id actions
-id activity_chooser_view_content
-id add
-id alertTitle
-id async
-id backId
-id blocking
-id bottom
-id btnForceClearNotice
-id btnRetryFlow
-id btnStart
-id btnStop
-id buttonPanel
-id cancel_action
-id checkbox
-id chronometer
-id content
-id contentPanel
-id custom
-id customPanel
-id decor_content_parent
-id default_activity_button
-id edit_query
-id end
-id end_padder
-id expand_activities_button
-id expanded_menu
-id forever
-id gone
-id group_divider
-id home
-id icon
-id icon_group
-id image
-id info
-id invisible
-id italic
-id item_list
-id left
-id line1
-id line3
-id listMode
-id list_item
-id media_actions
-id message
-id multiply
-id noId
-id none
-id normal
-id notification_background
-id notification_main_column
-id notification_main_column_container
-id packed
-id parent
-id parentPanel
-id pathId
-id percent
-id progress_circular
-id progress_horizontal
-id radio
-id right
-id right_icon
-id right_side
-id screen
-id scrollIndicatorDown
-id scrollIndicatorUp
-id scrollView
-id search_badge
-id search_bar
-id search_button
-id search_close_btn
-id search_edit_frame
-id search_go_btn
-id search_mag_icon
-id search_plate
-id search_src_text
-id search_voice_btn
-id select_dialog_listview
-id shortcut
-id spacer
-id split_action_bar
-id spread
-id spread_inside
-id src_atop
-id src_in
-id src_over
-id start
-id status_bar_latest_event_content
-id submenuarrow
-id submit_area
-id tabMode
-id tag_transition_group
-id tag_unhandled_key_event_manager
-id tag_unhandled_key_listeners
-id text
-id text2
-id textSpacerNoButtons
-id textSpacerNoTitle
-id time
-id title
-id titleDividerNoCustom
-id titleId
-id titleLayoutId
-id title_template
-id top
-id topPanel
-id tvLogDebugTitle
-id tvLoggingNotice
-id uniform
-id up
-id wrap
-id wrap_content
-id yesId
-integer abc_config_activityDefaultDur
-integer abc_config_activityShortDur
-integer cancel_button_image_alpha
-integer config_tooltipAnimTime
-integer status_bar_notification_info_maxnum
-layout abc_action_bar_title_item
-layout abc_action_bar_up_container
-layout abc_action_menu_item_layout
-layout abc_action_menu_layout
-layout abc_action_mode_bar
-layout abc_action_mode_close_item_material
-layout abc_activity_chooser_view
-layout abc_activity_chooser_view_list_item
-layout abc_alert_dialog_button_bar_material
-layout abc_alert_dialog_material
-layout abc_alert_dialog_title_material
-layout abc_cascading_menu_item_layout
-layout abc_dialog_title_material
-layout abc_expanded_menu_layout
-layout abc_list_menu_item_checkbox
-layout abc_list_menu_item_icon
-layout abc_list_menu_item_layout
-layout abc_list_menu_item_radio
-layout abc_popup_menu_header_item_layout
-layout abc_popup_menu_item_layout
-layout abc_screen_content_include
-layout abc_screen_simple
-layout abc_screen_simple_overlay_action_mode
-layout abc_screen_toolbar
-layout abc_search_dropdown_item_icons_2line
-layout abc_search_view
-layout abc_select_dialog_material
-layout abc_tooltip
-layout activity_log
-layout dialog_log
-layout dialog_log_debug
-layout item_log
-layout notification_action
-layout notification_action_tombstone
-layout notification_media_action
-layout notification_media_cancel_action
-layout notification_template_big_media
-layout notification_template_big_media_custom
-layout notification_template_big_media_narrow
-layout notification_template_big_media_narrow_custom
-layout notification_template_custom_big
-layout notification_template_icon_group
-layout notification_template_lines_media
-layout notification_template_media
-layout notification_template_media_custom
-layout notification_template_part_chronometer
-layout notification_template_part_time
-layout select_dialog_item_material
-layout select_dialog_multichoice_material
-layout select_dialog_singlechoice_material
-layout support_simple_spinner_dropdown_item
-layout wm_logging_notice
-string abc_action_bar_home_description
-string abc_action_bar_up_description
-string abc_action_menu_overflow_description
-string abc_action_mode_done
-string abc_activity_chooser_view_see_all
-string abc_activitychooserview_choose_application
-string abc_capital_off
-string abc_capital_on
-string abc_font_family_body_1_material
-string abc_font_family_body_2_material
-string abc_font_family_button_material
-string abc_font_family_caption_material
-string abc_font_family_display_1_material
-string abc_font_family_display_2_material
-string abc_font_family_display_3_material
-string abc_font_family_display_4_material
-string abc_font_family_headline_material
-string abc_font_family_menu_material
-string abc_font_family_subhead_material
-string abc_font_family_title_material
-string abc_menu_alt_shortcut_label
-string abc_menu_ctrl_shortcut_label
-string abc_menu_delete_shortcut_label
-string abc_menu_enter_shortcut_label
-string abc_menu_function_shortcut_label
-string abc_menu_meta_shortcut_label
-string abc_menu_shift_shortcut_label
-string abc_menu_space_shortcut_label
-string abc_menu_sym_shortcut_label
-string abc_prepend_shortcut_label
-string abc_search_hint
-string abc_searchview_description_clear
-string abc_searchview_description_query
-string abc_searchview_description_search
-string abc_searchview_description_submit
-string abc_searchview_description_voice
-string abc_shareactionprovider_share_with
-string abc_shareactionprovider_share_with_application
-string abc_toolbar_collapse_description
-string app_name
-string dialog_title
-string no
-string search_menu_title
-string status_bar_notification_info_overflow
-string yes
-style AlertDialog_AppCompat
-style AlertDialog_AppCompat_Light
-style Animation_AppCompat_Dialog
-style Animation_AppCompat_DropDownUp
-style Animation_AppCompat_Tooltip
-style BaseFloatDialogStyle
-style Base_AlertDialog_AppCompat
-style Base_AlertDialog_AppCompat_Light
-style Base_Animation_AppCompat_Dialog
-style Base_Animation_AppCompat_DropDownUp
-style Base_Animation_AppCompat_Tooltip
-style Base_DialogWindowTitleBackground_AppCompat
-style Base_DialogWindowTitle_AppCompat
-style Base_TextAppearance_AppCompat
-style Base_TextAppearance_AppCompat_Body1
-style Base_TextAppearance_AppCompat_Body2
-style Base_TextAppearance_AppCompat_Button
-style Base_TextAppearance_AppCompat_Caption
-style Base_TextAppearance_AppCompat_Display1
-style Base_TextAppearance_AppCompat_Display2
-style Base_TextAppearance_AppCompat_Display3
-style Base_TextAppearance_AppCompat_Display4
-style Base_TextAppearance_AppCompat_Headline
-style Base_TextAppearance_AppCompat_Inverse
-style Base_TextAppearance_AppCompat_Large
-style Base_TextAppearance_AppCompat_Large_Inverse
-style Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Large
-style Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Small
-style Base_TextAppearance_AppCompat_Medium
-style Base_TextAppearance_AppCompat_Medium_Inverse
-style Base_TextAppearance_AppCompat_Menu
-style Base_TextAppearance_AppCompat_SearchResult
-style Base_TextAppearance_AppCompat_SearchResult_Subtitle
-style Base_TextAppearance_AppCompat_SearchResult_Title
-style Base_TextAppearance_AppCompat_Small
-style Base_TextAppearance_AppCompat_Small_Inverse
-style Base_TextAppearance_AppCompat_Subhead
-style Base_TextAppearance_AppCompat_Subhead_Inverse
-style Base_TextAppearance_AppCompat_Title
-style Base_TextAppearance_AppCompat_Title_Inverse
-style Base_TextAppearance_AppCompat_Tooltip
-style Base_TextAppearance_AppCompat_Widget_ActionBar_Menu
-style Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle
-style Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse
-style Base_TextAppearance_AppCompat_Widget_ActionBar_Title
-style Base_TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse
-style Base_TextAppearance_AppCompat_Widget_ActionMode_Subtitle
-style Base_TextAppearance_AppCompat_Widget_ActionMode_Title
-style Base_TextAppearance_AppCompat_Widget_Button
-style Base_TextAppearance_AppCompat_Widget_Button_Borderless_Colored
-style Base_TextAppearance_AppCompat_Widget_Button_Colored
-style Base_TextAppearance_AppCompat_Widget_Button_Inverse
-style Base_TextAppearance_AppCompat_Widget_DropDownItem
-style Base_TextAppearance_AppCompat_Widget_PopupMenu_Header
-style Base_TextAppearance_AppCompat_Widget_PopupMenu_Large
-style Base_TextAppearance_AppCompat_Widget_PopupMenu_Small
-style Base_TextAppearance_AppCompat_Widget_Switch
-style Base_TextAppearance_AppCompat_Widget_TextView_SpinnerItem
-style Base_TextAppearance_Widget_AppCompat_ExpandedMenu_Item
-style Base_TextAppearance_Widget_AppCompat_Toolbar_Subtitle
-style Base_TextAppearance_Widget_AppCompat_Toolbar_Title
-style Base_ThemeOverlay_AppCompat
-style Base_ThemeOverlay_AppCompat_ActionBar
-style Base_ThemeOverlay_AppCompat_Dark
-style Base_ThemeOverlay_AppCompat_Dark_ActionBar
-style Base_ThemeOverlay_AppCompat_Dialog
-style Base_ThemeOverlay_AppCompat_Dialog_Alert
-style Base_ThemeOverlay_AppCompat_Light
-style Base_Theme_AppCompat
-style Base_Theme_AppCompat_CompactMenu
-style Base_Theme_AppCompat_Dialog
-style Base_Theme_AppCompat_DialogWhenLarge
-style Base_Theme_AppCompat_Dialog_Alert
-style Base_Theme_AppCompat_Dialog_FixedSize
-style Base_Theme_AppCompat_Dialog_MinWidth
-style Base_Theme_AppCompat_Light
-style Base_Theme_AppCompat_Light_DarkActionBar
-style Base_Theme_AppCompat_Light_Dialog
-style Base_Theme_AppCompat_Light_DialogWhenLarge
-style Base_Theme_AppCompat_Light_Dialog_Alert
-style Base_Theme_AppCompat_Light_Dialog_FixedSize
-style Base_Theme_AppCompat_Light_Dialog_MinWidth
-style Base_V21_ThemeOverlay_AppCompat_Dialog
-style Base_V21_Theme_AppCompat
-style Base_V21_Theme_AppCompat_Dialog
-style Base_V21_Theme_AppCompat_Light
-style Base_V21_Theme_AppCompat_Light_Dialog
-style Base_V22_Theme_AppCompat
-style Base_V22_Theme_AppCompat_Light
-style Base_V23_Theme_AppCompat
-style Base_V23_Theme_AppCompat_Light
-style Base_V26_Theme_AppCompat
-style Base_V26_Theme_AppCompat_Light
-style Base_V26_Widget_AppCompat_Toolbar
-style Base_V28_Theme_AppCompat
-style Base_V28_Theme_AppCompat_Light
-style Base_V7_ThemeOverlay_AppCompat_Dialog
-style Base_V7_Theme_AppCompat
-style Base_V7_Theme_AppCompat_Dialog
-style Base_V7_Theme_AppCompat_Light
-style Base_V7_Theme_AppCompat_Light_Dialog
-style Base_V7_Widget_AppCompat_AutoCompleteTextView
-style Base_V7_Widget_AppCompat_EditText
-style Base_V7_Widget_AppCompat_Toolbar
-style Base_Widget_AppCompat_ActionBar
-style Base_Widget_AppCompat_ActionBar_Solid
-style Base_Widget_AppCompat_ActionBar_TabBar
-style Base_Widget_AppCompat_ActionBar_TabText
-style Base_Widget_AppCompat_ActionBar_TabView
-style Base_Widget_AppCompat_ActionButton
-style Base_Widget_AppCompat_ActionButton_CloseMode
-style Base_Widget_AppCompat_ActionButton_Overflow
-style Base_Widget_AppCompat_ActionMode
-style Base_Widget_AppCompat_ActivityChooserView
-style Base_Widget_AppCompat_AutoCompleteTextView
-style Base_Widget_AppCompat_Button
-style Base_Widget_AppCompat_ButtonBar
-style Base_Widget_AppCompat_ButtonBar_AlertDialog
-style Base_Widget_AppCompat_Button_Borderless
-style Base_Widget_AppCompat_Button_Borderless_Colored
-style Base_Widget_AppCompat_Button_ButtonBar_AlertDialog
-style Base_Widget_AppCompat_Button_Colored
-style Base_Widget_AppCompat_Button_Small
-style Base_Widget_AppCompat_CompoundButton_CheckBox
-style Base_Widget_AppCompat_CompoundButton_RadioButton
-style Base_Widget_AppCompat_CompoundButton_Switch
-style Base_Widget_AppCompat_DrawerArrowToggle
-style Base_Widget_AppCompat_DrawerArrowToggle_Common
-style Base_Widget_AppCompat_DropDownItem_Spinner
-style Base_Widget_AppCompat_EditText
-style Base_Widget_AppCompat_ImageButton
-style Base_Widget_AppCompat_Light_ActionBar
-style Base_Widget_AppCompat_Light_ActionBar_Solid
-style Base_Widget_AppCompat_Light_ActionBar_TabBar
-style Base_Widget_AppCompat_Light_ActionBar_TabText
-style Base_Widget_AppCompat_Light_ActionBar_TabText_Inverse
-style Base_Widget_AppCompat_Light_ActionBar_TabView
-style Base_Widget_AppCompat_Light_PopupMenu
-style Base_Widget_AppCompat_Light_PopupMenu_Overflow
-style Base_Widget_AppCompat_ListMenuView
-style Base_Widget_AppCompat_ListPopupWindow
-style Base_Widget_AppCompat_ListView
-style Base_Widget_AppCompat_ListView_DropDown
-style Base_Widget_AppCompat_ListView_Menu
-style Base_Widget_AppCompat_PopupMenu
-style Base_Widget_AppCompat_PopupMenu_Overflow
-style Base_Widget_AppCompat_PopupWindow
-style Base_Widget_AppCompat_ProgressBar
-style Base_Widget_AppCompat_ProgressBar_Horizontal
-style Base_Widget_AppCompat_RatingBar
-style Base_Widget_AppCompat_RatingBar_Indicator
-style Base_Widget_AppCompat_RatingBar_Small
-style Base_Widget_AppCompat_SearchView
-style Base_Widget_AppCompat_SearchView_ActionBar
-style Base_Widget_AppCompat_SeekBar
-style Base_Widget_AppCompat_SeekBar_Discrete
-style Base_Widget_AppCompat_Spinner
-style Base_Widget_AppCompat_Spinner_Underlined
-style Base_Widget_AppCompat_TextView_SpinnerItem
-style Base_Widget_AppCompat_Toolbar
-style Base_Widget_AppCompat_Toolbar_Button_Navigation
-style Platform_AppCompat
-style Platform_AppCompat_Light
-style Platform_ThemeOverlay_AppCompat
-style Platform_ThemeOverlay_AppCompat_Dark
-style Platform_ThemeOverlay_AppCompat_Light
-style Platform_V21_AppCompat
-style Platform_V21_AppCompat_Light
-style Platform_V25_AppCompat
-style Platform_V25_AppCompat_Light
-style Platform_Widget_AppCompat_Spinner
-style RtlOverlay_DialogWindowTitle_AppCompat
-style RtlOverlay_Widget_AppCompat_ActionBar_TitleItem
-style RtlOverlay_Widget_AppCompat_DialogTitle_Icon
-style RtlOverlay_Widget_AppCompat_PopupMenuItem
-style RtlOverlay_Widget_AppCompat_PopupMenuItem_InternalGroup
-style RtlOverlay_Widget_AppCompat_PopupMenuItem_Shortcut
-style RtlOverlay_Widget_AppCompat_PopupMenuItem_SubmenuArrow
-style RtlOverlay_Widget_AppCompat_PopupMenuItem_Text
-style RtlOverlay_Widget_AppCompat_PopupMenuItem_Title
-style RtlOverlay_Widget_AppCompat_SearchView_MagIcon
-style RtlOverlay_Widget_AppCompat_Search_DropDown
-style RtlOverlay_Widget_AppCompat_Search_DropDown_Icon1
-style RtlOverlay_Widget_AppCompat_Search_DropDown_Icon2
-style RtlOverlay_Widget_AppCompat_Search_DropDown_Query
-style RtlOverlay_Widget_AppCompat_Search_DropDown_Text
-style RtlUnderlay_Widget_AppCompat_ActionButton
-style RtlUnderlay_Widget_AppCompat_ActionButton_Overflow
-style TextAppearance_AppCompat
-style TextAppearance_AppCompat_Body1
-style TextAppearance_AppCompat_Body2
-style TextAppearance_AppCompat_Button
-style TextAppearance_AppCompat_Caption
-style TextAppearance_AppCompat_Display1
-style TextAppearance_AppCompat_Display2
-style TextAppearance_AppCompat_Display3
-style TextAppearance_AppCompat_Display4
-style TextAppearance_AppCompat_Headline
-style TextAppearance_AppCompat_Inverse
-style TextAppearance_AppCompat_Large
-style TextAppearance_AppCompat_Large_Inverse
-style TextAppearance_AppCompat_Light_SearchResult_Subtitle
-style TextAppearance_AppCompat_Light_SearchResult_Title
-style TextAppearance_AppCompat_Light_Widget_PopupMenu_Large
-style TextAppearance_AppCompat_Light_Widget_PopupMenu_Small
-style TextAppearance_AppCompat_Medium
-style TextAppearance_AppCompat_Medium_Inverse
-style TextAppearance_AppCompat_Menu
-style TextAppearance_AppCompat_SearchResult_Subtitle
-style TextAppearance_AppCompat_SearchResult_Title
-style TextAppearance_AppCompat_Small
-style TextAppearance_AppCompat_Small_Inverse
-style TextAppearance_AppCompat_Subhead
-style TextAppearance_AppCompat_Subhead_Inverse
-style TextAppearance_AppCompat_Title
-style TextAppearance_AppCompat_Title_Inverse
-style TextAppearance_AppCompat_Tooltip
-style TextAppearance_AppCompat_Widget_ActionBar_Menu
-style TextAppearance_AppCompat_Widget_ActionBar_Subtitle
-style TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse
-style TextAppearance_AppCompat_Widget_ActionBar_Title
-style TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse
-style TextAppearance_AppCompat_Widget_ActionMode_Subtitle
-style TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse
-style TextAppearance_AppCompat_Widget_ActionMode_Title
-style TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse
-style TextAppearance_AppCompat_Widget_Button
-style TextAppearance_AppCompat_Widget_Button_Borderless_Colored
-style TextAppearance_AppCompat_Widget_Button_Colored
-style TextAppearance_AppCompat_Widget_Button_Inverse
-style TextAppearance_AppCompat_Widget_DropDownItem
-style TextAppearance_AppCompat_Widget_PopupMenu_Header
-style TextAppearance_AppCompat_Widget_PopupMenu_Large
-style TextAppearance_AppCompat_Widget_PopupMenu_Small
-style TextAppearance_AppCompat_Widget_Switch
-style TextAppearance_AppCompat_Widget_TextView_SpinnerItem
-style TextAppearance_Compat_Notification
-style TextAppearance_Compat_Notification_Info
-style TextAppearance_Compat_Notification_Info_Media
-style TextAppearance_Compat_Notification_Line2
-style TextAppearance_Compat_Notification_Line2_Media
-style TextAppearance_Compat_Notification_Media
-style TextAppearance_Compat_Notification_Time
-style TextAppearance_Compat_Notification_Time_Media
-style TextAppearance_Compat_Notification_Title
-style TextAppearance_Compat_Notification_Title_Media
-style TextAppearance_Widget_AppCompat_ExpandedMenu_Item
-style TextAppearance_Widget_AppCompat_Toolbar_Subtitle
-style TextAppearance_Widget_AppCompat_Toolbar_Title
-style ThemeOverlay_AppCompat
-style ThemeOverlay_AppCompat_ActionBar
-style ThemeOverlay_AppCompat_Dark
-style ThemeOverlay_AppCompat_Dark_ActionBar
-style ThemeOverlay_AppCompat_Dialog
-style ThemeOverlay_AppCompat_Dialog_Alert
-style ThemeOverlay_AppCompat_Light
-style Theme_AppCompat
-style Theme_AppCompat_CompactMenu
-style Theme_AppCompat_DayNight
-style Theme_AppCompat_DayNight_DarkActionBar
-style Theme_AppCompat_DayNight_Dialog
-style Theme_AppCompat_DayNight_DialogWhenLarge
-style Theme_AppCompat_DayNight_Dialog_Alert
-style Theme_AppCompat_DayNight_Dialog_MinWidth
-style Theme_AppCompat_DayNight_NoActionBar
-style Theme_AppCompat_Dialog
-style Theme_AppCompat_DialogWhenLarge
-style Theme_AppCompat_Dialog_Alert
-style Theme_AppCompat_Dialog_MinWidth
-style Theme_AppCompat_Light
-style Theme_AppCompat_Light_DarkActionBar
-style Theme_AppCompat_Light_Dialog
-style Theme_AppCompat_Light_DialogWhenLarge
-style Theme_AppCompat_Light_Dialog_Alert
-style Theme_AppCompat_Light_Dialog_MinWidth
-style Theme_AppCompat_Light_NoActionBar
-style Theme_AppCompat_NoActionBar
-style Widget_AppCompat_ActionBar
-style Widget_AppCompat_ActionBar_Solid
-style Widget_AppCompat_ActionBar_TabBar
-style Widget_AppCompat_ActionBar_TabText
-style Widget_AppCompat_ActionBar_TabView
-style Widget_AppCompat_ActionButton
-style Widget_AppCompat_ActionButton_CloseMode
-style Widget_AppCompat_ActionButton_Overflow
-style Widget_AppCompat_ActionMode
-style Widget_AppCompat_ActivityChooserView
-style Widget_AppCompat_AutoCompleteTextView
-style Widget_AppCompat_Button
-style Widget_AppCompat_ButtonBar
-style Widget_AppCompat_ButtonBar_AlertDialog
-style Widget_AppCompat_Button_Borderless
-style Widget_AppCompat_Button_Borderless_Colored
-style Widget_AppCompat_Button_ButtonBar_AlertDialog
-style Widget_AppCompat_Button_Colored
-style Widget_AppCompat_Button_Small
-style Widget_AppCompat_CompoundButton_CheckBox
-style Widget_AppCompat_CompoundButton_RadioButton
-style Widget_AppCompat_CompoundButton_Switch
-style Widget_AppCompat_DrawerArrowToggle
-style Widget_AppCompat_DropDownItem_Spinner
-style Widget_AppCompat_EditText
-style Widget_AppCompat_ImageButton
-style Widget_AppCompat_Light_ActionBar
-style Widget_AppCompat_Light_ActionBar_Solid
-style Widget_AppCompat_Light_ActionBar_Solid_Inverse
-style Widget_AppCompat_Light_ActionBar_TabBar
-style Widget_AppCompat_Light_ActionBar_TabBar_Inverse
-style Widget_AppCompat_Light_ActionBar_TabText
-style Widget_AppCompat_Light_ActionBar_TabText_Inverse
-style Widget_AppCompat_Light_ActionBar_TabView
-style Widget_AppCompat_Light_ActionBar_TabView_Inverse
-style Widget_AppCompat_Light_ActionButton
-style Widget_AppCompat_Light_ActionButton_CloseMode
-style Widget_AppCompat_Light_ActionButton_Overflow
-style Widget_AppCompat_Light_ActionMode_Inverse
-style Widget_AppCompat_Light_ActivityChooserView
-style Widget_AppCompat_Light_AutoCompleteTextView
-style Widget_AppCompat_Light_DropDownItem_Spinner
-style Widget_AppCompat_Light_ListPopupWindow
-style Widget_AppCompat_Light_ListView_DropDown
-style Widget_AppCompat_Light_PopupMenu
-style Widget_AppCompat_Light_PopupMenu_Overflow
-style Widget_AppCompat_Light_SearchView
-style Widget_AppCompat_Light_Spinner_DropDown_ActionBar
-style Widget_AppCompat_ListMenuView
-style Widget_AppCompat_ListPopupWindow
-style Widget_AppCompat_ListView
-style Widget_AppCompat_ListView_DropDown
-style Widget_AppCompat_ListView_Menu
-style Widget_AppCompat_PopupMenu
-style Widget_AppCompat_PopupMenu_Overflow
-style Widget_AppCompat_PopupWindow
-style Widget_AppCompat_ProgressBar
-style Widget_AppCompat_ProgressBar_Horizontal
-style Widget_AppCompat_RatingBar
-style Widget_AppCompat_RatingBar_Indicator
-style Widget_AppCompat_RatingBar_Small
-style Widget_AppCompat_SearchView
-style Widget_AppCompat_SearchView_ActionBar
-style Widget_AppCompat_SeekBar
-style Widget_AppCompat_SeekBar_Discrete
-style Widget_AppCompat_Spinner
-style Widget_AppCompat_Spinner_DropDown
-style Widget_AppCompat_Spinner_DropDown_ActionBar
-style Widget_AppCompat_Spinner_Underlined
-style Widget_AppCompat_TextView_SpinnerItem
-style Widget_AppCompat_Toolbar
-style Widget_AppCompat_Toolbar_Button_Navigation
-style Widget_Compat_NotificationActionContainer
-style Widget_Compat_NotificationActionText
-style Widget_Support_CoordinatorLayout
-styleable ActionBar background backgroundSplit backgroundStacked contentInsetEnd contentInsetEndWithActions contentInsetLeft contentInsetRight contentInsetStart contentInsetStartWithNavigation customNavigationLayout displayOptions divider elevation height hideOnContentScroll homeAsUpIndicator homeLayout icon indeterminateProgressStyle itemPadding logo navigationMode popupTheme progressBarPadding progressBarStyle subtitle subtitleTextStyle title titleTextStyle
-styleable ActionBarLayout android_layout_gravity
-styleable ActionMenuItemView android_minWidth
-styleable ActionMenuView
-styleable ActionMode background backgroundSplit closeItemLayout height subtitleTextStyle titleTextStyle
-styleable ActivityChooserView expandActivityOverflowButtonDrawable initialActivityCount
-styleable AlertDialog android_layout buttonIconDimen buttonPanelSideLayout listItemLayout listLayout multiChoiceItemLayout showTitle singleChoiceItemLayout
-styleable AnimatedStateListDrawableCompat android_constantSize android_dither android_enterFadeDuration android_exitFadeDuration android_variablePadding android_visible
-styleable AnimatedStateListDrawableItem android_drawable android_id
-styleable AnimatedStateListDrawableTransition android_drawable android_fromId android_reversible android_toId
-styleable AppCompatImageView android_src srcCompat tint tintMode
-styleable AppCompatSeekBar android_thumb tickMark tickMarkTint tickMarkTintMode
-styleable AppCompatTextHelper android_drawableBottom android_drawableEnd android_drawableLeft android_drawableRight android_drawableStart android_drawableTop android_textAppearance
-styleable AppCompatTextView android_textAppearance autoSizeMaxTextSize autoSizeMinTextSize autoSizePresetSizes autoSizeStepGranularity autoSizeTextType firstBaselineToTopHeight fontFamily lastBaselineToBottomHeight lineHeight textAllCaps
-styleable AppCompatTheme actionBarDivider actionBarItemBackground actionBarPopupTheme actionBarSize actionBarSplitStyle actionBarStyle actionBarTabBarStyle actionBarTabStyle actionBarTabTextStyle actionBarTheme actionBarWidgetTheme actionButtonStyle actionDropDownStyle actionMenuTextAppearance actionMenuTextColor actionModeBackground actionModeCloseButtonStyle actionModeCloseDrawable actionModeCopyDrawable actionModeCutDrawable actionModeFindDrawable actionModePasteDrawable actionModePopupWindowStyle actionModeSelectAllDrawable actionModeShareDrawable actionModeSplitBackground actionModeStyle actionModeWebSearchDrawable actionOverflowButtonStyle actionOverflowMenuStyle activityChooserViewStyle alertDialogButtonGroupStyle alertDialogCenterButtons alertDialogStyle alertDialogTheme android_windowAnimationStyle android_windowIsFloating autoCompleteTextViewStyle borderlessButtonStyle buttonBarButtonStyle buttonBarNegativeButtonStyle buttonBarNeutralButtonStyle buttonBarPositiveButtonStyle buttonBarStyle buttonStyle buttonStyleSmall checkboxStyle checkedTextViewStyle colorAccent colorBackgroundFloating colorButtonNormal colorControlActivated colorControlHighlight colorControlNormal colorError colorPrimary colorPrimaryDark colorSwitchThumbNormal controlBackground dialogCornerRadius dialogPreferredPadding dialogTheme dividerHorizontal dividerVertical dropDownListViewStyle dropdownListPreferredItemHeight editTextBackground editTextColor editTextStyle homeAsUpIndicator imageButtonStyle listChoiceBackgroundIndicator listDividerAlertDialog listMenuViewStyle listPopupWindowStyle listPreferredItemHeight listPreferredItemHeightLarge listPreferredItemHeightSmall listPreferredItemPaddingLeft listPreferredItemPaddingRight panelBackground panelMenuListTheme panelMenuListWidth popupMenuStyle popupWindowStyle radioButtonStyle ratingBarStyle ratingBarStyleIndicator ratingBarStyleSmall searchViewStyle seekBarStyle selectableItemBackground selectableItemBackgroundBorderless spinnerDropDownItemStyle spinnerStyle switchStyle textAppearanceLargePopupMenu textAppearanceListItem textAppearanceListItemSecondary textAppearanceListItemSmall textAppearancePopupMenuHeader textAppearanceSearchResultSubtitle textAppearanceSearchResultTitle textAppearanceSmallPopupMenu textColorAlertDialogListItem textColorSearchUrl toolbarNavigationButtonStyle toolbarStyle tooltipForegroundColor tooltipFrameBackground viewInflaterClass windowActionBar windowActionBarOverlay windowActionModeOverlay windowFixedHeightMajor windowFixedHeightMinor windowFixedWidthMajor windowFixedWidthMinor windowMinWidthMajor windowMinWidthMinor windowNoTitle
-styleable ButtonBarLayout allowStacking
-styleable ColorStateListItem alpha android_alpha android_color
-styleable CompoundButton android_button buttonTint buttonTintMode
-styleable ConstraintLayout_Layout android_maxHeight android_maxWidth android_minHeight android_minWidth android_orientation barrierAllowsGoneWidgets barrierDirection chainUseRtl constraintSet constraint_referenced_ids layout_constrainedHeight layout_constrainedWidth layout_constraintBaseline_creator layout_constraintBaseline_toBaselineOf layout_constraintBottom_creator layout_constraintBottom_toBottomOf layout_constraintBottom_toTopOf layout_constraintCircle layout_constraintCircleAngle layout_constraintCircleRadius layout_constraintDimensionRatio layout_constraintEnd_toEndOf layout_constraintEnd_toStartOf layout_constraintGuide_begin layout_constraintGuide_end layout_constraintGuide_percent layout_constraintHeight_default layout_constraintHeight_max layout_constraintHeight_min layout_constraintHeight_percent layout_constraintHorizontal_bias layout_constraintHorizontal_chainStyle layout_constraintHorizontal_weight layout_constraintLeft_creator layout_constraintLeft_toLeftOf layout_constraintLeft_toRightOf layout_constraintRight_creator layout_constraintRight_toLeftOf layout_constraintRight_toRightOf layout_constraintStart_toEndOf layout_constraintStart_toStartOf layout_constraintTop_creator layout_constraintTop_toBottomOf layout_constraintTop_toTopOf layout_constraintVertical_bias layout_constraintVertical_chainStyle layout_constraintVertical_weight layout_constraintWidth_default layout_constraintWidth_max layout_constraintWidth_min layout_constraintWidth_percent layout_editor_absoluteX layout_editor_absoluteY layout_goneMarginBottom layout_goneMarginEnd layout_goneMarginLeft layout_goneMarginRight layout_goneMarginStart layout_goneMarginTop layout_optimizationLevel
-styleable ConstraintLayout_placeholder content emptyVisibility
-styleable ConstraintSet android_alpha android_elevation android_id android_layout_height android_layout_marginBottom android_layout_marginEnd android_layout_marginLeft android_layout_marginRight android_layout_marginStart android_layout_marginTop android_layout_width android_maxHeight android_maxWidth android_minHeight android_minWidth android_orientation android_rotation android_rotationX android_rotationY android_scaleX android_scaleY android_transformPivotX android_transformPivotY android_translationX android_translationY android_translationZ android_visibility barrierAllowsGoneWidgets barrierDirection chainUseRtl constraint_referenced_ids layout_constrainedHeight layout_constrainedWidth layout_constraintBaseline_creator layout_constraintBaseline_toBaselineOf layout_constraintBottom_creator layout_constraintBottom_toBottomOf layout_constraintBottom_toTopOf layout_constraintCircle layout_constraintCircleAngle layout_constraintCircleRadius layout_constraintDimensionRatio layout_constraintEnd_toEndOf layout_constraintEnd_toStartOf layout_constraintGuide_begin layout_constraintGuide_end layout_constraintGuide_percent layout_constraintHeight_default layout_constraintHeight_max layout_constraintHeight_min layout_constraintHeight_percent layout_constraintHorizontal_bias layout_constraintHorizontal_chainStyle layout_constraintHorizontal_weight layout_constraintLeft_creator layout_constraintLeft_toLeftOf layout_constraintLeft_toRightOf layout_constraintRight_creator layout_constraintRight_toLeftOf layout_constraintRight_toRightOf layout_constraintStart_toEndOf layout_constraintStart_toStartOf layout_constraintTop_creator layout_constraintTop_toBottomOf layout_constraintTop_toTopOf layout_constraintVertical_bias layout_constraintVertical_chainStyle layout_constraintVertical_weight layout_constraintWidth_default layout_constraintWidth_max layout_constraintWidth_min layout_constraintWidth_percent layout_editor_absoluteX layout_editor_absoluteY layout_goneMarginBottom layout_goneMarginEnd layout_goneMarginLeft layout_goneMarginRight layout_goneMarginStart layout_goneMarginTop
-styleable CoordinatorLayout keylines statusBarBackground
-styleable CoordinatorLayout_Layout android_layout_gravity layout_anchor layout_anchorGravity layout_behavior layout_dodgeInsetEdges layout_insetEdge layout_keyline
-styleable DrawerArrowToggle arrowHeadLength arrowShaftLength barLength color drawableSize gapBetweenBars spinBars thickness
-styleable FontFamily fontProviderAuthority fontProviderCerts fontProviderFetchStrategy fontProviderFetchTimeout fontProviderPackage fontProviderQuery
-styleable FontFamilyFont android_font android_fontStyle android_fontVariationSettings android_fontWeight android_ttcIndex font fontStyle fontVariationSettings fontWeight ttcIndex
-styleable GradientColor android_centerColor android_centerX android_centerY android_endColor android_endX android_endY android_gradientRadius android_startColor android_startX android_startY android_tileMode android_type
-styleable GradientColorItem android_color android_offset
-styleable LinearConstraintLayout android_orientation
-styleable LinearLayoutCompat android_baselineAligned android_baselineAlignedChildIndex android_gravity android_orientation android_weightSum divider dividerPadding measureWithLargestChild showDividers
-styleable LinearLayoutCompat_Layout android_layout_gravity android_layout_height android_layout_weight android_layout_width
-styleable ListPopupWindow android_dropDownHorizontalOffset android_dropDownVerticalOffset
-styleable MenuGroup android_checkableBehavior android_enabled android_id android_menuCategory android_orderInCategory android_visible
-styleable MenuItem actionLayout actionProviderClass actionViewClass alphabeticModifiers android_alphabeticShortcut android_checkable android_checked android_enabled android_icon android_id android_menuCategory android_numericShortcut android_onClick android_orderInCategory android_title android_titleCondensed android_visible contentDescription iconTint iconTintMode numericModifiers showAsAction tooltipText
-styleable MenuView android_headerBackground android_horizontalDivider android_itemBackground android_itemIconDisabledAlpha android_itemTextAppearance android_verticalDivider android_windowAnimationStyle preserveIconSpacing subMenuArrow
-styleable PopupWindow android_popupAnimationStyle android_popupBackground overlapAnchor
-styleable PopupWindowBackgroundState state_above_anchor
-styleable RecycleListView paddingBottomNoButtons paddingTopNoTitle
-styleable SearchView android_focusable android_imeOptions android_inputType android_maxWidth closeIcon commitIcon defaultQueryHint goIcon iconifiedByDefault layout queryBackground queryHint searchHintIcon searchIcon submitBackground suggestionRowLayout voiceIcon
-styleable Spinner android_dropDownWidth android_entries android_popupBackground android_prompt popupTheme
-styleable StateListDrawable android_constantSize android_dither android_enterFadeDuration android_exitFadeDuration android_variablePadding android_visible
-styleable StateListDrawableItem android_drawable
-styleable SwitchCompat android_textOff android_textOn android_thumb showText splitTrack switchMinWidth switchPadding switchTextAppearance thumbTextPadding thumbTint thumbTintMode track trackTint trackTintMode
-styleable TextAppearance android_fontFamily android_shadowColor android_shadowDx android_shadowDy android_shadowRadius android_textColor android_textColorHint android_textColorLink android_textSize android_textStyle android_typeface fontFamily textAllCaps
-styleable Toolbar android_gravity android_minHeight buttonGravity collapseContentDescription collapseIcon contentInsetEnd contentInsetEndWithActions contentInsetLeft contentInsetRight contentInsetStart contentInsetStartWithNavigation logo logoDescription maxButtonHeight navigationContentDescription navigationIcon popupTheme subtitle subtitleTextAppearance subtitleTextColor title titleMargin titleMarginBottom titleMarginEnd titleMarginStart titleMarginTop titleMargins titleTextAppearance titleTextColor
-styleable View android_focusable android_theme paddingEnd paddingStart theme
-styleable ViewBackgroundHelper android_background backgroundTint backgroundTintMode
-styleable ViewStubCompat android_id android_inflatedId android_layout
diff --git a/modules/mogo-module-monitor/build/intermediates/runtime_library_classes/debug/classes.jar b/modules/mogo-module-monitor/build/intermediates/runtime_library_classes/debug/classes.jar
deleted file mode 100644
index f8fc29a9a3..0000000000
Binary files a/modules/mogo-module-monitor/build/intermediates/runtime_library_classes/debug/classes.jar and /dev/null differ
diff --git a/modules/mogo-module-monitor/build/intermediates/symbols/debug/R.txt b/modules/mogo-module-monitor/build/intermediates/symbols/debug/R.txt
deleted file mode 100644
index 3a3f6d913d..0000000000
--- a/modules/mogo-module-monitor/build/intermediates/symbols/debug/R.txt
+++ /dev/null
@@ -1,1847 +0,0 @@
-int anim abc_fade_in 0x7f010001
-int anim abc_fade_out 0x7f010002
-int anim abc_grow_fade_in_from_bottom 0x7f010003
-int anim abc_popup_enter 0x7f010004
-int anim abc_popup_exit 0x7f010005
-int anim abc_shrink_fade_out_from_bottom 0x7f010006
-int anim abc_slide_in_bottom 0x7f010007
-int anim abc_slide_in_top 0x7f010008
-int anim abc_slide_out_bottom 0x7f010009
-int anim abc_slide_out_top 0x7f01000a
-int anim abc_tooltip_enter 0x7f01000b
-int anim abc_tooltip_exit 0x7f01000c
-int attr actionBarDivider 0x7f040001
-int attr actionBarItemBackground 0x7f040002
-int attr actionBarPopupTheme 0x7f040003
-int attr actionBarSize 0x7f040004
-int attr actionBarSplitStyle 0x7f040005
-int attr actionBarStyle 0x7f040006
-int attr actionBarTabBarStyle 0x7f040007
-int attr actionBarTabStyle 0x7f040008
-int attr actionBarTabTextStyle 0x7f040009
-int attr actionBarTheme 0x7f04000a
-int attr actionBarWidgetTheme 0x7f04000b
-int attr actionButtonStyle 0x7f04000c
-int attr actionDropDownStyle 0x7f04000d
-int attr actionLayout 0x7f04000e
-int attr actionMenuTextAppearance 0x7f04000f
-int attr actionMenuTextColor 0x7f040010
-int attr actionModeBackground 0x7f040011
-int attr actionModeCloseButtonStyle 0x7f040012
-int attr actionModeCloseDrawable 0x7f040013
-int attr actionModeCopyDrawable 0x7f040014
-int attr actionModeCutDrawable 0x7f040015
-int attr actionModeFindDrawable 0x7f040016
-int attr actionModePasteDrawable 0x7f040017
-int attr actionModePopupWindowStyle 0x7f040018
-int attr actionModeSelectAllDrawable 0x7f040019
-int attr actionModeShareDrawable 0x7f04001a
-int attr actionModeSplitBackground 0x7f04001b
-int attr actionModeStyle 0x7f04001c
-int attr actionModeWebSearchDrawable 0x7f04001d
-int attr actionOverflowButtonStyle 0x7f04001e
-int attr actionOverflowMenuStyle 0x7f04001f
-int attr actionProviderClass 0x7f040020
-int attr actionViewClass 0x7f040021
-int attr activityChooserViewStyle 0x7f040022
-int attr alertDialogButtonGroupStyle 0x7f040023
-int attr alertDialogCenterButtons 0x7f040024
-int attr alertDialogStyle 0x7f040025
-int attr alertDialogTheme 0x7f040026
-int attr allowStacking 0x7f040027
-int attr alpha 0x7f040028
-int attr alphabeticModifiers 0x7f040029
-int attr arrowHeadLength 0x7f04002a
-int attr arrowShaftLength 0x7f04002b
-int attr autoCompleteTextViewStyle 0x7f04002c
-int attr autoSizeMaxTextSize 0x7f04002d
-int attr autoSizeMinTextSize 0x7f04002e
-int attr autoSizePresetSizes 0x7f04002f
-int attr autoSizeStepGranularity 0x7f040030
-int attr autoSizeTextType 0x7f040031
-int attr background 0x7f040032
-int attr backgroundSplit 0x7f040033
-int attr backgroundStacked 0x7f040034
-int attr backgroundTint 0x7f040035
-int attr backgroundTintMode 0x7f040036
-int attr barLength 0x7f040037
-int attr barrierAllowsGoneWidgets 0x7f040038
-int attr barrierDirection 0x7f040039
-int attr borderlessButtonStyle 0x7f04003a
-int attr buttonBarButtonStyle 0x7f04003b
-int attr buttonBarNegativeButtonStyle 0x7f04003c
-int attr buttonBarNeutralButtonStyle 0x7f04003d
-int attr buttonBarPositiveButtonStyle 0x7f04003e
-int attr buttonBarStyle 0x7f04003f
-int attr buttonGravity 0x7f040040
-int attr buttonIconDimen 0x7f040041
-int attr buttonPanelSideLayout 0x7f040042
-int attr buttonStyle 0x7f040043
-int attr buttonStyleSmall 0x7f040044
-int attr buttonTint 0x7f040045
-int attr buttonTintMode 0x7f040046
-int attr chainUseRtl 0x7f040047
-int attr checkboxStyle 0x7f040048
-int attr checkedTextViewStyle 0x7f040049
-int attr closeIcon 0x7f04004a
-int attr closeItemLayout 0x7f04004b
-int attr collapseContentDescription 0x7f04004c
-int attr collapseIcon 0x7f04004d
-int attr color 0x7f04004e
-int attr colorAccent 0x7f04004f
-int attr colorBackgroundFloating 0x7f040050
-int attr colorButtonNormal 0x7f040051
-int attr colorControlActivated 0x7f040052
-int attr colorControlHighlight 0x7f040053
-int attr colorControlNormal 0x7f040054
-int attr colorError 0x7f040055
-int attr colorPrimary 0x7f040056
-int attr colorPrimaryDark 0x7f040057
-int attr colorSwitchThumbNormal 0x7f040058
-int attr commitIcon 0x7f040059
-int attr constraintSet 0x7f04005a
-int attr constraint_referenced_ids 0x7f04005b
-int attr content 0x7f04005c
-int attr contentDescription 0x7f04005d
-int attr contentInsetEnd 0x7f04005e
-int attr contentInsetEndWithActions 0x7f04005f
-int attr contentInsetLeft 0x7f040060
-int attr contentInsetRight 0x7f040061
-int attr contentInsetStart 0x7f040062
-int attr contentInsetStartWithNavigation 0x7f040063
-int attr controlBackground 0x7f040064
-int attr coordinatorLayoutStyle 0x7f040065
-int attr customNavigationLayout 0x7f040066
-int attr defaultQueryHint 0x7f040067
-int attr dialogCornerRadius 0x7f040068
-int attr dialogPreferredPadding 0x7f040069
-int attr dialogTheme 0x7f04006a
-int attr displayOptions 0x7f04006b
-int attr divider 0x7f04006c
-int attr dividerHorizontal 0x7f04006d
-int attr dividerPadding 0x7f04006e
-int attr dividerVertical 0x7f04006f
-int attr drawableSize 0x7f040070
-int attr drawerArrowStyle 0x7f040071
-int attr dropDownListViewStyle 0x7f040072
-int attr dropdownListPreferredItemHeight 0x7f040073
-int attr editTextBackground 0x7f040074
-int attr editTextColor 0x7f040075
-int attr editTextStyle 0x7f040076
-int attr elevation 0x7f040077
-int attr emptyVisibility 0x7f040078
-int attr expandActivityOverflowButtonDrawable 0x7f040079
-int attr firstBaselineToTopHeight 0x7f04007a
-int attr font 0x7f04007b
-int attr fontFamily 0x7f04007c
-int attr fontProviderAuthority 0x7f04007d
-int attr fontProviderCerts 0x7f04007e
-int attr fontProviderFetchStrategy 0x7f04007f
-int attr fontProviderFetchTimeout 0x7f040080
-int attr fontProviderPackage 0x7f040081
-int attr fontProviderQuery 0x7f040082
-int attr fontStyle 0x7f040083
-int attr fontVariationSettings 0x7f040084
-int attr fontWeight 0x7f040085
-int attr gapBetweenBars 0x7f040086
-int attr goIcon 0x7f040087
-int attr height 0x7f040088
-int attr hideOnContentScroll 0x7f040089
-int attr homeAsUpIndicator 0x7f04008a
-int attr homeLayout 0x7f04008b
-int attr icon 0x7f04008c
-int attr iconTint 0x7f04008d
-int attr iconTintMode 0x7f04008e
-int attr iconifiedByDefault 0x7f04008f
-int attr imageButtonStyle 0x7f040090
-int attr indeterminateProgressStyle 0x7f040091
-int attr initialActivityCount 0x7f040092
-int attr isLightTheme 0x7f040093
-int attr itemPadding 0x7f040094
-int attr keylines 0x7f040095
-int attr lastBaselineToBottomHeight 0x7f040096
-int attr layout 0x7f040097
-int attr layout_anchor 0x7f040098
-int attr layout_anchorGravity 0x7f040099
-int attr layout_behavior 0x7f04009a
-int attr layout_constrainedHeight 0x7f04009b
-int attr layout_constrainedWidth 0x7f04009c
-int attr layout_constraintBaseline_creator 0x7f04009d
-int attr layout_constraintBaseline_toBaselineOf 0x7f04009e
-int attr layout_constraintBottom_creator 0x7f04009f
-int attr layout_constraintBottom_toBottomOf 0x7f0400a0
-int attr layout_constraintBottom_toTopOf 0x7f0400a1
-int attr layout_constraintCircle 0x7f0400a2
-int attr layout_constraintCircleAngle 0x7f0400a3
-int attr layout_constraintCircleRadius 0x7f0400a4
-int attr layout_constraintDimensionRatio 0x7f0400a5
-int attr layout_constraintEnd_toEndOf 0x7f0400a6
-int attr layout_constraintEnd_toStartOf 0x7f0400a7
-int attr layout_constraintGuide_begin 0x7f0400a8
-int attr layout_constraintGuide_end 0x7f0400a9
-int attr layout_constraintGuide_percent 0x7f0400aa
-int attr layout_constraintHeight_default 0x7f0400ab
-int attr layout_constraintHeight_max 0x7f0400ac
-int attr layout_constraintHeight_min 0x7f0400ad
-int attr layout_constraintHeight_percent 0x7f0400ae
-int attr layout_constraintHorizontal_bias 0x7f0400af
-int attr layout_constraintHorizontal_chainStyle 0x7f0400b0
-int attr layout_constraintHorizontal_weight 0x7f0400b1
-int attr layout_constraintLeft_creator 0x7f0400b2
-int attr layout_constraintLeft_toLeftOf 0x7f0400b3
-int attr layout_constraintLeft_toRightOf 0x7f0400b4
-int attr layout_constraintRight_creator 0x7f0400b5
-int attr layout_constraintRight_toLeftOf 0x7f0400b6
-int attr layout_constraintRight_toRightOf 0x7f0400b7
-int attr layout_constraintStart_toEndOf 0x7f0400b8
-int attr layout_constraintStart_toStartOf 0x7f0400b9
-int attr layout_constraintTop_creator 0x7f0400ba
-int attr layout_constraintTop_toBottomOf 0x7f0400bb
-int attr layout_constraintTop_toTopOf 0x7f0400bc
-int attr layout_constraintVertical_bias 0x7f0400bd
-int attr layout_constraintVertical_chainStyle 0x7f0400be
-int attr layout_constraintVertical_weight 0x7f0400bf
-int attr layout_constraintWidth_default 0x7f0400c0
-int attr layout_constraintWidth_max 0x7f0400c1
-int attr layout_constraintWidth_min 0x7f0400c2
-int attr layout_constraintWidth_percent 0x7f0400c3
-int attr layout_dodgeInsetEdges 0x7f0400c4
-int attr layout_editor_absoluteX 0x7f0400c5
-int attr layout_editor_absoluteY 0x7f0400c6
-int attr layout_goneMarginBottom 0x7f0400c7
-int attr layout_goneMarginEnd 0x7f0400c8
-int attr layout_goneMarginLeft 0x7f0400c9
-int attr layout_goneMarginRight 0x7f0400ca
-int attr layout_goneMarginStart 0x7f0400cb
-int attr layout_goneMarginTop 0x7f0400cc
-int attr layout_insetEdge 0x7f0400cd
-int attr layout_keyline 0x7f0400ce
-int attr layout_optimizationLevel 0x7f0400cf
-int attr lineHeight 0x7f0400d0
-int attr listChoiceBackgroundIndicator 0x7f0400d1
-int attr listDividerAlertDialog 0x7f0400d2
-int attr listItemLayout 0x7f0400d3
-int attr listLayout 0x7f0400d4
-int attr listMenuViewStyle 0x7f0400d5
-int attr listPopupWindowStyle 0x7f0400d6
-int attr listPreferredItemHeight 0x7f0400d7
-int attr listPreferredItemHeightLarge 0x7f0400d8
-int attr listPreferredItemHeightSmall 0x7f0400d9
-int attr listPreferredItemPaddingLeft 0x7f0400da
-int attr listPreferredItemPaddingRight 0x7f0400db
-int attr logo 0x7f0400dc
-int attr logoDescription 0x7f0400dd
-int attr maxButtonHeight 0x7f0400de
-int attr measureWithLargestChild 0x7f0400df
-int attr multiChoiceItemLayout 0x7f0400e0
-int attr navigationContentDescription 0x7f0400e1
-int attr navigationIcon 0x7f0400e2
-int attr navigationMode 0x7f0400e3
-int attr numericModifiers 0x7f0400e4
-int attr overlapAnchor 0x7f0400e5
-int attr paddingBottomNoButtons 0x7f0400e6
-int attr paddingEnd 0x7f0400e7
-int attr paddingStart 0x7f0400e8
-int attr paddingTopNoTitle 0x7f0400e9
-int attr panelBackground 0x7f0400ea
-int attr panelMenuListTheme 0x7f0400eb
-int attr panelMenuListWidth 0x7f0400ec
-int attr popupMenuStyle 0x7f0400ed
-int attr popupTheme 0x7f0400ee
-int attr popupWindowStyle 0x7f0400ef
-int attr preserveIconSpacing 0x7f0400f0
-int attr progressBarPadding 0x7f0400f1
-int attr progressBarStyle 0x7f0400f2
-int attr queryBackground 0x7f0400f3
-int attr queryHint 0x7f0400f4
-int attr radioButtonStyle 0x7f0400f5
-int attr ratingBarStyle 0x7f0400f6
-int attr ratingBarStyleIndicator 0x7f0400f7
-int attr ratingBarStyleSmall 0x7f0400f8
-int attr searchHintIcon 0x7f0400f9
-int attr searchIcon 0x7f0400fa
-int attr searchViewStyle 0x7f0400fb
-int attr seekBarStyle 0x7f0400fc
-int attr selectableItemBackground 0x7f0400fd
-int attr selectableItemBackgroundBorderless 0x7f0400fe
-int attr showAsAction 0x7f0400ff
-int attr showDividers 0x7f040100
-int attr showText 0x7f040101
-int attr showTitle 0x7f040102
-int attr singleChoiceItemLayout 0x7f040103
-int attr spinBars 0x7f040104
-int attr spinnerDropDownItemStyle 0x7f040105
-int attr spinnerStyle 0x7f040106
-int attr splitTrack 0x7f040107
-int attr srcCompat 0x7f040108
-int attr state_above_anchor 0x7f040109
-int attr statusBarBackground 0x7f04010a
-int attr subMenuArrow 0x7f04010b
-int attr submitBackground 0x7f04010c
-int attr subtitle 0x7f04010d
-int attr subtitleTextAppearance 0x7f04010e
-int attr subtitleTextColor 0x7f04010f
-int attr subtitleTextStyle 0x7f040110
-int attr suggestionRowLayout 0x7f040111
-int attr switchMinWidth 0x7f040112
-int attr switchPadding 0x7f040113
-int attr switchStyle 0x7f040114
-int attr switchTextAppearance 0x7f040115
-int attr textAllCaps 0x7f040116
-int attr textAppearanceLargePopupMenu 0x7f040117
-int attr textAppearanceListItem 0x7f040118
-int attr textAppearanceListItemSecondary 0x7f040119
-int attr textAppearanceListItemSmall 0x7f04011a
-int attr textAppearancePopupMenuHeader 0x7f04011b
-int attr textAppearanceSearchResultSubtitle 0x7f04011c
-int attr textAppearanceSearchResultTitle 0x7f04011d
-int attr textAppearanceSmallPopupMenu 0x7f04011e
-int attr textColorAlertDialogListItem 0x7f04011f
-int attr textColorSearchUrl 0x7f040120
-int attr theme 0x7f040121
-int attr thickness 0x7f040122
-int attr thumbTextPadding 0x7f040123
-int attr thumbTint 0x7f040124
-int attr thumbTintMode 0x7f040125
-int attr tickMark 0x7f040126
-int attr tickMarkTint 0x7f040127
-int attr tickMarkTintMode 0x7f040128
-int attr tint 0x7f040129
-int attr tintMode 0x7f04012a
-int attr title 0x7f04012b
-int attr titleMargin 0x7f04012c
-int attr titleMarginBottom 0x7f04012d
-int attr titleMarginEnd 0x7f04012e
-int attr titleMarginStart 0x7f04012f
-int attr titleMarginTop 0x7f040130
-int attr titleMargins 0x7f040131
-int attr titleTextAppearance 0x7f040132
-int attr titleTextColor 0x7f040133
-int attr titleTextStyle 0x7f040134
-int attr toolbarNavigationButtonStyle 0x7f040135
-int attr toolbarStyle 0x7f040136
-int attr tooltipForegroundColor 0x7f040137
-int attr tooltipFrameBackground 0x7f040138
-int attr tooltipText 0x7f040139
-int attr track 0x7f04013a
-int attr trackTint 0x7f04013b
-int attr trackTintMode 0x7f04013c
-int attr ttcIndex 0x7f04013d
-int attr viewInflaterClass 0x7f04013e
-int attr voiceIcon 0x7f04013f
-int attr windowActionBar 0x7f040140
-int attr windowActionBarOverlay 0x7f040141
-int attr windowActionModeOverlay 0x7f040142
-int attr windowFixedHeightMajor 0x7f040143
-int attr windowFixedHeightMinor 0x7f040144
-int attr windowFixedWidthMajor 0x7f040145
-int attr windowFixedWidthMinor 0x7f040146
-int attr windowMinWidthMajor 0x7f040147
-int attr windowMinWidthMinor 0x7f040148
-int attr windowNoTitle 0x7f040149
-int bool abc_action_bar_embed_tabs 0x7f050001
-int bool abc_allow_stacked_button_bar 0x7f050002
-int bool abc_config_actionMenuItemAllCaps 0x7f050003
-int bool abc_config_showMenuShortcutsWhenKeyboardPresent 0x7f050004
-int color abc_background_cache_hint_selector_material_dark 0x7f060001
-int color abc_background_cache_hint_selector_material_light 0x7f060002
-int color abc_btn_colored_borderless_text_material 0x7f060003
-int color abc_btn_colored_text_material 0x7f060004
-int color abc_color_highlight_material 0x7f060005
-int color abc_hint_foreground_material_dark 0x7f060006
-int color abc_hint_foreground_material_light 0x7f060007
-int color abc_input_method_navigation_guard 0x7f060008
-int color abc_primary_text_disable_only_material_dark 0x7f060009
-int color abc_primary_text_disable_only_material_light 0x7f06000a
-int color abc_primary_text_material_dark 0x7f06000b
-int color abc_primary_text_material_light 0x7f06000c
-int color abc_search_url_text 0x7f06000d
-int color abc_search_url_text_normal 0x7f06000e
-int color abc_search_url_text_pressed 0x7f06000f
-int color abc_search_url_text_selected 0x7f060010
-int color abc_secondary_text_material_dark 0x7f060011
-int color abc_secondary_text_material_light 0x7f060012
-int color abc_tint_btn_checkable 0x7f060013
-int color abc_tint_default 0x7f060014
-int color abc_tint_edittext 0x7f060015
-int color abc_tint_seek_thumb 0x7f060016
-int color abc_tint_spinner 0x7f060017
-int color abc_tint_switch_track 0x7f060018
-int color accent_material_dark 0x7f060019
-int color accent_material_light 0x7f06001a
-int color background_floating_material_dark 0x7f06001b
-int color background_floating_material_light 0x7f06001c
-int color background_material_dark 0x7f06001d
-int color background_material_light 0x7f06001e
-int color bright_foreground_disabled_material_dark 0x7f06001f
-int color bright_foreground_disabled_material_light 0x7f060020
-int color bright_foreground_inverse_material_dark 0x7f060021
-int color bright_foreground_inverse_material_light 0x7f060022
-int color bright_foreground_material_dark 0x7f060023
-int color bright_foreground_material_light 0x7f060024
-int color burlywood 0x7f060025
-int color button_material_dark 0x7f060026
-int color button_material_light 0x7f060027
-int color dim_foreground_disabled_material_dark 0x7f060028
-int color dim_foreground_disabled_material_light 0x7f060029
-int color dim_foreground_material_dark 0x7f06002a
-int color dim_foreground_material_light 0x7f06002b
-int color error_color_material 0x7f06002c
-int color error_color_material_dark 0x7f06002d
-int color error_color_material_light 0x7f06002e
-int color foreground_material_dark 0x7f06002f
-int color foreground_material_light 0x7f060030
-int color highlighted_text_material_dark 0x7f060031
-int color highlighted_text_material_light 0x7f060032
-int color material_blue_grey_800 0x7f060033
-int color material_blue_grey_900 0x7f060034
-int color material_blue_grey_950 0x7f060035
-int color material_deep_teal_200 0x7f060036
-int color material_deep_teal_500 0x7f060037
-int color material_grey_100 0x7f060038
-int color material_grey_300 0x7f060039
-int color material_grey_50 0x7f06003a
-int color material_grey_600 0x7f06003b
-int color material_grey_800 0x7f06003c
-int color material_grey_850 0x7f06003d
-int color material_grey_900 0x7f06003e
-int color notification_action_color_filter 0x7f06003f
-int color notification_icon_bg_color 0x7f060040
-int color notification_material_background_media_default_color 0x7f060041
-int color primary_dark_material_dark 0x7f060042
-int color primary_dark_material_light 0x7f060043
-int color primary_material_dark 0x7f060044
-int color primary_material_light 0x7f060045
-int color primary_text_default_material_dark 0x7f060046
-int color primary_text_default_material_light 0x7f060047
-int color primary_text_disabled_material_dark 0x7f060048
-int color primary_text_disabled_material_light 0x7f060049
-int color ripple_material_dark 0x7f06004a
-int color ripple_material_light 0x7f06004b
-int color secondary_text_default_material_dark 0x7f06004c
-int color secondary_text_default_material_light 0x7f06004d
-int color secondary_text_disabled_material_dark 0x7f06004e
-int color secondary_text_disabled_material_light 0x7f06004f
-int color switch_thumb_disabled_material_dark 0x7f060050
-int color switch_thumb_disabled_material_light 0x7f060051
-int color switch_thumb_material_dark 0x7f060052
-int color switch_thumb_material_light 0x7f060053
-int color switch_thumb_normal_material_dark 0x7f060054
-int color switch_thumb_normal_material_light 0x7f060055
-int color tooltip_background_dark 0x7f060056
-int color tooltip_background_light 0x7f060057
-int color translucent_background 0x7f060058
-int dimen abc_action_bar_content_inset_material 0x7f070001
-int dimen abc_action_bar_content_inset_with_nav 0x7f070002
-int dimen abc_action_bar_default_height_material 0x7f070003
-int dimen abc_action_bar_default_padding_end_material 0x7f070004
-int dimen abc_action_bar_default_padding_start_material 0x7f070005
-int dimen abc_action_bar_elevation_material 0x7f070006
-int dimen abc_action_bar_icon_vertical_padding_material 0x7f070007
-int dimen abc_action_bar_overflow_padding_end_material 0x7f070008
-int dimen abc_action_bar_overflow_padding_start_material 0x7f070009
-int dimen abc_action_bar_progress_bar_size 0x7f07000a
-int dimen abc_action_bar_stacked_max_height 0x7f07000b
-int dimen abc_action_bar_stacked_tab_max_width 0x7f07000c
-int dimen abc_action_bar_subtitle_bottom_margin_material 0x7f07000d
-int dimen abc_action_bar_subtitle_top_margin_material 0x7f07000e
-int dimen abc_action_button_min_height_material 0x7f07000f
-int dimen abc_action_button_min_width_material 0x7f070010
-int dimen abc_action_button_min_width_overflow_material 0x7f070011
-int dimen abc_alert_dialog_button_bar_height 0x7f070012
-int dimen abc_alert_dialog_button_dimen 0x7f070013
-int dimen abc_button_inset_horizontal_material 0x7f070014
-int dimen abc_button_inset_vertical_material 0x7f070015
-int dimen abc_button_padding_horizontal_material 0x7f070016
-int dimen abc_button_padding_vertical_material 0x7f070017
-int dimen abc_cascading_menus_min_smallest_width 0x7f070018
-int dimen abc_config_prefDialogWidth 0x7f070019
-int dimen abc_control_corner_material 0x7f07001a
-int dimen abc_control_inset_material 0x7f07001b
-int dimen abc_control_padding_material 0x7f07001c
-int dimen abc_dialog_corner_radius_material 0x7f07001d
-int dimen abc_dialog_fixed_height_major 0x7f07001e
-int dimen abc_dialog_fixed_height_minor 0x7f07001f
-int dimen abc_dialog_fixed_width_major 0x7f070020
-int dimen abc_dialog_fixed_width_minor 0x7f070021
-int dimen abc_dialog_list_padding_bottom_no_buttons 0x7f070022
-int dimen abc_dialog_list_padding_top_no_title 0x7f070023
-int dimen abc_dialog_min_width_major 0x7f070024
-int dimen abc_dialog_min_width_minor 0x7f070025
-int dimen abc_dialog_padding_material 0x7f070026
-int dimen abc_dialog_padding_top_material 0x7f070027
-int dimen abc_dialog_title_divider_material 0x7f070028
-int dimen abc_disabled_alpha_material_dark 0x7f070029
-int dimen abc_disabled_alpha_material_light 0x7f07002a
-int dimen abc_dropdownitem_icon_width 0x7f07002b
-int dimen abc_dropdownitem_text_padding_left 0x7f07002c
-int dimen abc_dropdownitem_text_padding_right 0x7f07002d
-int dimen abc_edit_text_inset_bottom_material 0x7f07002e
-int dimen abc_edit_text_inset_horizontal_material 0x7f07002f
-int dimen abc_edit_text_inset_top_material 0x7f070030
-int dimen abc_floating_window_z 0x7f070031
-int dimen abc_list_item_padding_horizontal_material 0x7f070032
-int dimen abc_panel_menu_list_width 0x7f070033
-int dimen abc_progress_bar_height_material 0x7f070034
-int dimen abc_search_view_preferred_height 0x7f070035
-int dimen abc_search_view_preferred_width 0x7f070036
-int dimen abc_seekbar_track_background_height_material 0x7f070037
-int dimen abc_seekbar_track_progress_height_material 0x7f070038
-int dimen abc_select_dialog_padding_start_material 0x7f070039
-int dimen abc_switch_padding 0x7f07003a
-int dimen abc_text_size_body_1_material 0x7f07003b
-int dimen abc_text_size_body_2_material 0x7f07003c
-int dimen abc_text_size_button_material 0x7f07003d
-int dimen abc_text_size_caption_material 0x7f07003e
-int dimen abc_text_size_display_1_material 0x7f07003f
-int dimen abc_text_size_display_2_material 0x7f070040
-int dimen abc_text_size_display_3_material 0x7f070041
-int dimen abc_text_size_display_4_material 0x7f070042
-int dimen abc_text_size_headline_material 0x7f070043
-int dimen abc_text_size_large_material 0x7f070044
-int dimen abc_text_size_medium_material 0x7f070045
-int dimen abc_text_size_menu_header_material 0x7f070046
-int dimen abc_text_size_menu_material 0x7f070047
-int dimen abc_text_size_small_material 0x7f070048
-int dimen abc_text_size_subhead_material 0x7f070049
-int dimen abc_text_size_subtitle_material_toolbar 0x7f07004a
-int dimen abc_text_size_title_material 0x7f07004b
-int dimen abc_text_size_title_material_toolbar 0x7f07004c
-int dimen compat_button_inset_horizontal_material 0x7f07004d
-int dimen compat_button_inset_vertical_material 0x7f07004e
-int dimen compat_button_padding_horizontal_material 0x7f07004f
-int dimen compat_button_padding_vertical_material 0x7f070050
-int dimen compat_control_corner_material 0x7f070051
-int dimen compat_notification_large_icon_max_height 0x7f070052
-int dimen compat_notification_large_icon_max_width 0x7f070053
-int dimen disabled_alpha_material_dark 0x7f070054
-int dimen disabled_alpha_material_light 0x7f070055
-int dimen highlight_alpha_material_colored 0x7f070056
-int dimen highlight_alpha_material_dark 0x7f070057
-int dimen highlight_alpha_material_light 0x7f070058
-int dimen hint_alpha_material_dark 0x7f070059
-int dimen hint_alpha_material_light 0x7f07005a
-int dimen hint_pressed_alpha_material_dark 0x7f07005b
-int dimen hint_pressed_alpha_material_light 0x7f07005c
-int dimen notification_action_icon_size 0x7f07005d
-int dimen notification_action_text_size 0x7f07005e
-int dimen notification_big_circle_margin 0x7f07005f
-int dimen notification_content_margin_start 0x7f070060
-int dimen notification_large_icon_height 0x7f070061
-int dimen notification_large_icon_width 0x7f070062
-int dimen notification_main_column_padding_top 0x7f070063
-int dimen notification_media_narrow_margin 0x7f070064
-int dimen notification_right_icon_size 0x7f070065
-int dimen notification_right_side_padding_top 0x7f070066
-int dimen notification_small_icon_background_padding 0x7f070067
-int dimen notification_small_icon_size_as_large 0x7f070068
-int dimen notification_subtext_size 0x7f070069
-int dimen notification_top_pad 0x7f07006a
-int dimen notification_top_pad_large_text 0x7f07006b
-int dimen subtitle_corner_radius 0x7f07006c
-int dimen subtitle_outline_width 0x7f07006d
-int dimen subtitle_shadow_offset 0x7f07006e
-int dimen subtitle_shadow_radius 0x7f07006f
-int dimen tooltip_corner_radius 0x7f070070
-int dimen tooltip_horizontal_padding 0x7f070071
-int dimen tooltip_margin 0x7f070072
-int dimen tooltip_precise_anchor_extra_offset 0x7f070073
-int dimen tooltip_precise_anchor_threshold 0x7f070074
-int dimen tooltip_vertical_padding 0x7f070075
-int dimen tooltip_y_offset_non_touch 0x7f070076
-int dimen tooltip_y_offset_touch 0x7f070077
-int drawable abc_ab_share_pack_mtrl_alpha 0x7f080001
-int drawable abc_action_bar_item_background_material 0x7f080002
-int drawable abc_btn_borderless_material 0x7f080003
-int drawable abc_btn_check_material 0x7f080004
-int drawable abc_btn_check_to_on_mtrl_000 0x7f080005
-int drawable abc_btn_check_to_on_mtrl_015 0x7f080006
-int drawable abc_btn_colored_material 0x7f080007
-int drawable abc_btn_default_mtrl_shape 0x7f080008
-int drawable abc_btn_radio_material 0x7f080009
-int drawable abc_btn_radio_to_on_mtrl_000 0x7f08000a
-int drawable abc_btn_radio_to_on_mtrl_015 0x7f08000b
-int drawable abc_btn_switch_to_on_mtrl_00001 0x7f08000c
-int drawable abc_btn_switch_to_on_mtrl_00012 0x7f08000d
-int drawable abc_cab_background_internal_bg 0x7f08000e
-int drawable abc_cab_background_top_material 0x7f08000f
-int drawable abc_cab_background_top_mtrl_alpha 0x7f080010
-int drawable abc_control_background_material 0x7f080011
-int drawable abc_dialog_material_background 0x7f080012
-int drawable abc_edit_text_material 0x7f080013
-int drawable abc_ic_ab_back_material 0x7f080014
-int drawable abc_ic_arrow_drop_right_black_24dp 0x7f080015
-int drawable abc_ic_clear_material 0x7f080016
-int drawable abc_ic_commit_search_api_mtrl_alpha 0x7f080017
-int drawable abc_ic_go_search_api_material 0x7f080018
-int drawable abc_ic_menu_copy_mtrl_am_alpha 0x7f080019
-int drawable abc_ic_menu_cut_mtrl_alpha 0x7f08001a
-int drawable abc_ic_menu_overflow_material 0x7f08001b
-int drawable abc_ic_menu_paste_mtrl_am_alpha 0x7f08001c
-int drawable abc_ic_menu_selectall_mtrl_alpha 0x7f08001d
-int drawable abc_ic_menu_share_mtrl_alpha 0x7f08001e
-int drawable abc_ic_search_api_material 0x7f08001f
-int drawable abc_ic_star_black_16dp 0x7f080020
-int drawable abc_ic_star_black_36dp 0x7f080021
-int drawable abc_ic_star_black_48dp 0x7f080022
-int drawable abc_ic_star_half_black_16dp 0x7f080023
-int drawable abc_ic_star_half_black_36dp 0x7f080024
-int drawable abc_ic_star_half_black_48dp 0x7f080025
-int drawable abc_ic_voice_search_api_material 0x7f080026
-int drawable abc_item_background_holo_dark 0x7f080027
-int drawable abc_item_background_holo_light 0x7f080028
-int drawable abc_list_divider_material 0x7f080029
-int drawable abc_list_divider_mtrl_alpha 0x7f08002a
-int drawable abc_list_focused_holo 0x7f08002b
-int drawable abc_list_longpressed_holo 0x7f08002c
-int drawable abc_list_pressed_holo_dark 0x7f08002d
-int drawable abc_list_pressed_holo_light 0x7f08002e
-int drawable abc_list_selector_background_transition_holo_dark 0x7f08002f
-int drawable abc_list_selector_background_transition_holo_light 0x7f080030
-int drawable abc_list_selector_disabled_holo_dark 0x7f080031
-int drawable abc_list_selector_disabled_holo_light 0x7f080032
-int drawable abc_list_selector_holo_dark 0x7f080033
-int drawable abc_list_selector_holo_light 0x7f080034
-int drawable abc_menu_hardkey_panel_mtrl_mult 0x7f080035
-int drawable abc_popup_background_mtrl_mult 0x7f080036
-int drawable abc_ratingbar_indicator_material 0x7f080037
-int drawable abc_ratingbar_material 0x7f080038
-int drawable abc_ratingbar_small_material 0x7f080039
-int drawable abc_scrubber_control_off_mtrl_alpha 0x7f08003a
-int drawable abc_scrubber_control_to_pressed_mtrl_000 0x7f08003b
-int drawable abc_scrubber_control_to_pressed_mtrl_005 0x7f08003c
-int drawable abc_scrubber_primary_mtrl_alpha 0x7f08003d
-int drawable abc_scrubber_track_mtrl_alpha 0x7f08003e
-int drawable abc_seekbar_thumb_material 0x7f08003f
-int drawable abc_seekbar_tick_mark_material 0x7f080040
-int drawable abc_seekbar_track_material 0x7f080041
-int drawable abc_spinner_mtrl_am_alpha 0x7f080042
-int drawable abc_spinner_textfield_background_material 0x7f080043
-int drawable abc_switch_thumb_material 0x7f080044
-int drawable abc_switch_track_mtrl_alpha 0x7f080045
-int drawable abc_tab_indicator_material 0x7f080046
-int drawable abc_tab_indicator_mtrl_alpha 0x7f080047
-int drawable abc_text_cursor_material 0x7f080048
-int drawable abc_text_select_handle_left_mtrl_dark 0x7f080049
-int drawable abc_text_select_handle_left_mtrl_light 0x7f08004a
-int drawable abc_text_select_handle_middle_mtrl_dark 0x7f08004b
-int drawable abc_text_select_handle_middle_mtrl_light 0x7f08004c
-int drawable abc_text_select_handle_right_mtrl_dark 0x7f08004d
-int drawable abc_text_select_handle_right_mtrl_light 0x7f08004e
-int drawable abc_textfield_activated_mtrl_alpha 0x7f08004f
-int drawable abc_textfield_default_mtrl_alpha 0x7f080050
-int drawable abc_textfield_search_activated_mtrl_alpha 0x7f080051
-int drawable abc_textfield_search_default_mtrl_alpha 0x7f080052
-int drawable abc_textfield_search_material 0x7f080053
-int drawable abc_vector_test 0x7f080054
-int drawable ic_keyboard_arrow_left_white_36dp 0x7f080055
-int drawable ic_share_black_24dp 0x7f080056
-int drawable log_debug_dialog_bg 0x7f080057
-int drawable log_debug_retry_btn_bg 0x7f080058
-int drawable log_debug_start_btn_bg 0x7f080059
-int drawable log_debug_stop_btn_bg 0x7f08005a
-int drawable notification_action_background 0x7f08005b
-int drawable notification_bg 0x7f08005c
-int drawable notification_bg_low 0x7f08005d
-int drawable notification_bg_low_normal 0x7f08005e
-int drawable notification_bg_low_pressed 0x7f08005f
-int drawable notification_bg_normal 0x7f080060
-int drawable notification_bg_normal_pressed 0x7f080061
-int drawable notification_icon_background 0x7f080062
-int drawable notification_template_icon_bg 0x7f080063
-int drawable notification_template_icon_low_bg 0x7f080064
-int drawable notification_tile_bg 0x7f080065
-int drawable notify_panel_notification_icon_bg 0x7f080066
-int drawable tooltip_frame_dark 0x7f080067
-int drawable tooltip_frame_light 0x7f080068
-int id action0 0x7f0b0001
-int id action_bar 0x7f0b0002
-int id action_bar_activity_content 0x7f0b0003
-int id action_bar_container 0x7f0b0004
-int id action_bar_root 0x7f0b0005
-int id action_bar_spinner 0x7f0b0006
-int id action_bar_subtitle 0x7f0b0007
-int id action_bar_title 0x7f0b0008
-int id action_container 0x7f0b0009
-int id action_context_bar 0x7f0b000a
-int id action_divider 0x7f0b000b
-int id action_image 0x7f0b000c
-int id action_menu_divider 0x7f0b000d
-int id action_menu_presenter 0x7f0b000e
-int id action_mode_bar 0x7f0b000f
-int id action_mode_bar_stub 0x7f0b0010
-int id action_mode_close_button 0x7f0b0011
-int id action_text 0x7f0b0012
-int id actions 0x7f0b0013
-int id activity_chooser_view_content 0x7f0b0014
-int id add 0x7f0b0015
-int id alertTitle 0x7f0b0016
-int id async 0x7f0b0017
-int id backId 0x7f0b0018
-int id blocking 0x7f0b0019
-int id bottom 0x7f0b001a
-int id btnForceClearNotice 0x7f0b001b
-int id btnRetryFlow 0x7f0b001c
-int id btnStart 0x7f0b001d
-int id btnStop 0x7f0b001e
-int id buttonPanel 0x7f0b001f
-int id cancel_action 0x7f0b0020
-int id checkbox 0x7f0b0021
-int id chronometer 0x7f0b0022
-int id content 0x7f0b0023
-int id contentPanel 0x7f0b0024
-int id custom 0x7f0b0025
-int id customPanel 0x7f0b0026
-int id decor_content_parent 0x7f0b0027
-int id default_activity_button 0x7f0b0028
-int id edit_query 0x7f0b0029
-int id end 0x7f0b002a
-int id end_padder 0x7f0b002b
-int id expand_activities_button 0x7f0b002c
-int id expanded_menu 0x7f0b002d
-int id forever 0x7f0b002e
-int id gone 0x7f0b002f
-int id group_divider 0x7f0b0030
-int id home 0x7f0b0031
-int id icon 0x7f0b0032
-int id icon_group 0x7f0b0033
-int id image 0x7f0b0034
-int id info 0x7f0b0035
-int id invisible 0x7f0b0036
-int id italic 0x7f0b0037
-int id item_list 0x7f0b0038
-int id left 0x7f0b0039
-int id line1 0x7f0b003a
-int id line3 0x7f0b003b
-int id listMode 0x7f0b003c
-int id list_item 0x7f0b003d
-int id media_actions 0x7f0b003e
-int id message 0x7f0b003f
-int id multiply 0x7f0b0040
-int id noId 0x7f0b0041
-int id none 0x7f0b0042
-int id normal 0x7f0b0043
-int id notification_background 0x7f0b0044
-int id notification_main_column 0x7f0b0045
-int id notification_main_column_container 0x7f0b0046
-int id packed 0x7f0b0047
-int id parent 0x7f0b0048
-int id parentPanel 0x7f0b0049
-int id pathId 0x7f0b004a
-int id percent 0x7f0b004b
-int id progress_circular 0x7f0b004c
-int id progress_horizontal 0x7f0b004d
-int id radio 0x7f0b004e
-int id right 0x7f0b004f
-int id right_icon 0x7f0b0050
-int id right_side 0x7f0b0051
-int id screen 0x7f0b0052
-int id scrollIndicatorDown 0x7f0b0053
-int id scrollIndicatorUp 0x7f0b0054
-int id scrollView 0x7f0b0055
-int id search_badge 0x7f0b0056
-int id search_bar 0x7f0b0057
-int id search_button 0x7f0b0058
-int id search_close_btn 0x7f0b0059
-int id search_edit_frame 0x7f0b005a
-int id search_go_btn 0x7f0b005b
-int id search_mag_icon 0x7f0b005c
-int id search_plate 0x7f0b005d
-int id search_src_text 0x7f0b005e
-int id search_voice_btn 0x7f0b005f
-int id select_dialog_listview 0x7f0b0060
-int id shortcut 0x7f0b0061
-int id spacer 0x7f0b0062
-int id split_action_bar 0x7f0b0063
-int id spread 0x7f0b0064
-int id spread_inside 0x7f0b0065
-int id src_atop 0x7f0b0066
-int id src_in 0x7f0b0067
-int id src_over 0x7f0b0068
-int id start 0x7f0b0069
-int id status_bar_latest_event_content 0x7f0b006a
-int id submenuarrow 0x7f0b006b
-int id submit_area 0x7f0b006c
-int id tabMode 0x7f0b006d
-int id tag_transition_group 0x7f0b006e
-int id tag_unhandled_key_event_manager 0x7f0b006f
-int id tag_unhandled_key_listeners 0x7f0b0070
-int id text 0x7f0b0071
-int id text2 0x7f0b0072
-int id textSpacerNoButtons 0x7f0b0073
-int id textSpacerNoTitle 0x7f0b0074
-int id time 0x7f0b0075
-int id title 0x7f0b0076
-int id titleDividerNoCustom 0x7f0b0077
-int id titleId 0x7f0b0078
-int id titleLayoutId 0x7f0b0079
-int id title_template 0x7f0b007a
-int id top 0x7f0b007b
-int id topPanel 0x7f0b007c
-int id tvLogDebugTitle 0x7f0b007d
-int id tvLoggingNotice 0x7f0b007e
-int id uniform 0x7f0b007f
-int id up 0x7f0b0080
-int id wrap 0x7f0b0081
-int id wrap_content 0x7f0b0082
-int id yesId 0x7f0b0083
-int integer abc_config_activityDefaultDur 0x7f0c0001
-int integer abc_config_activityShortDur 0x7f0c0002
-int integer cancel_button_image_alpha 0x7f0c0003
-int integer config_tooltipAnimTime 0x7f0c0004
-int integer status_bar_notification_info_maxnum 0x7f0c0005
-int layout abc_action_bar_title_item 0x7f0e0001
-int layout abc_action_bar_up_container 0x7f0e0002
-int layout abc_action_menu_item_layout 0x7f0e0003
-int layout abc_action_menu_layout 0x7f0e0004
-int layout abc_action_mode_bar 0x7f0e0005
-int layout abc_action_mode_close_item_material 0x7f0e0006
-int layout abc_activity_chooser_view 0x7f0e0007
-int layout abc_activity_chooser_view_list_item 0x7f0e0008
-int layout abc_alert_dialog_button_bar_material 0x7f0e0009
-int layout abc_alert_dialog_material 0x7f0e000a
-int layout abc_alert_dialog_title_material 0x7f0e000b
-int layout abc_cascading_menu_item_layout 0x7f0e000c
-int layout abc_dialog_title_material 0x7f0e000d
-int layout abc_expanded_menu_layout 0x7f0e000e
-int layout abc_list_menu_item_checkbox 0x7f0e000f
-int layout abc_list_menu_item_icon 0x7f0e0010
-int layout abc_list_menu_item_layout 0x7f0e0011
-int layout abc_list_menu_item_radio 0x7f0e0012
-int layout abc_popup_menu_header_item_layout 0x7f0e0013
-int layout abc_popup_menu_item_layout 0x7f0e0014
-int layout abc_screen_content_include 0x7f0e0015
-int layout abc_screen_simple 0x7f0e0016
-int layout abc_screen_simple_overlay_action_mode 0x7f0e0017
-int layout abc_screen_toolbar 0x7f0e0018
-int layout abc_search_dropdown_item_icons_2line 0x7f0e0019
-int layout abc_search_view 0x7f0e001a
-int layout abc_select_dialog_material 0x7f0e001b
-int layout abc_tooltip 0x7f0e001c
-int layout activity_log 0x7f0e001d
-int layout dialog_log 0x7f0e001e
-int layout dialog_log_debug 0x7f0e001f
-int layout item_log 0x7f0e0020
-int layout notification_action 0x7f0e0021
-int layout notification_action_tombstone 0x7f0e0022
-int layout notification_media_action 0x7f0e0023
-int layout notification_media_cancel_action 0x7f0e0024
-int layout notification_template_big_media 0x7f0e0025
-int layout notification_template_big_media_custom 0x7f0e0026
-int layout notification_template_big_media_narrow 0x7f0e0027
-int layout notification_template_big_media_narrow_custom 0x7f0e0028
-int layout notification_template_custom_big 0x7f0e0029
-int layout notification_template_icon_group 0x7f0e002a
-int layout notification_template_lines_media 0x7f0e002b
-int layout notification_template_media 0x7f0e002c
-int layout notification_template_media_custom 0x7f0e002d
-int layout notification_template_part_chronometer 0x7f0e002e
-int layout notification_template_part_time 0x7f0e002f
-int layout select_dialog_item_material 0x7f0e0030
-int layout select_dialog_multichoice_material 0x7f0e0031
-int layout select_dialog_singlechoice_material 0x7f0e0032
-int layout support_simple_spinner_dropdown_item 0x7f0e0033
-int layout wm_logging_notice 0x7f0e0034
-int string abc_action_bar_home_description 0x7f140001
-int string abc_action_bar_up_description 0x7f140002
-int string abc_action_menu_overflow_description 0x7f140003
-int string abc_action_mode_done 0x7f140004
-int string abc_activity_chooser_view_see_all 0x7f140005
-int string abc_activitychooserview_choose_application 0x7f140006
-int string abc_capital_off 0x7f140007
-int string abc_capital_on 0x7f140008
-int string abc_font_family_body_1_material 0x7f140009
-int string abc_font_family_body_2_material 0x7f14000a
-int string abc_font_family_button_material 0x7f14000b
-int string abc_font_family_caption_material 0x7f14000c
-int string abc_font_family_display_1_material 0x7f14000d
-int string abc_font_family_display_2_material 0x7f14000e
-int string abc_font_family_display_3_material 0x7f14000f
-int string abc_font_family_display_4_material 0x7f140010
-int string abc_font_family_headline_material 0x7f140011
-int string abc_font_family_menu_material 0x7f140012
-int string abc_font_family_subhead_material 0x7f140013
-int string abc_font_family_title_material 0x7f140014
-int string abc_menu_alt_shortcut_label 0x7f140015
-int string abc_menu_ctrl_shortcut_label 0x7f140016
-int string abc_menu_delete_shortcut_label 0x7f140017
-int string abc_menu_enter_shortcut_label 0x7f140018
-int string abc_menu_function_shortcut_label 0x7f140019
-int string abc_menu_meta_shortcut_label 0x7f14001a
-int string abc_menu_shift_shortcut_label 0x7f14001b
-int string abc_menu_space_shortcut_label 0x7f14001c
-int string abc_menu_sym_shortcut_label 0x7f14001d
-int string abc_prepend_shortcut_label 0x7f14001e
-int string abc_search_hint 0x7f14001f
-int string abc_searchview_description_clear 0x7f140020
-int string abc_searchview_description_query 0x7f140021
-int string abc_searchview_description_search 0x7f140022
-int string abc_searchview_description_submit 0x7f140023
-int string abc_searchview_description_voice 0x7f140024
-int string abc_shareactionprovider_share_with 0x7f140025
-int string abc_shareactionprovider_share_with_application 0x7f140026
-int string abc_toolbar_collapse_description 0x7f140027
-int string app_name 0x7f140028
-int string dialog_title 0x7f140029
-int string no 0x7f14002a
-int string search_menu_title 0x7f14002b
-int string status_bar_notification_info_overflow 0x7f14002c
-int string yes 0x7f14002d
-int style AlertDialog_AppCompat 0x7f150001
-int style AlertDialog_AppCompat_Light 0x7f150002
-int style Animation_AppCompat_Dialog 0x7f150003
-int style Animation_AppCompat_DropDownUp 0x7f150004
-int style Animation_AppCompat_Tooltip 0x7f150005
-int style BaseFloatDialogStyle 0x7f150006
-int style Base_AlertDialog_AppCompat 0x7f150007
-int style Base_AlertDialog_AppCompat_Light 0x7f150008
-int style Base_Animation_AppCompat_Dialog 0x7f150009
-int style Base_Animation_AppCompat_DropDownUp 0x7f15000a
-int style Base_Animation_AppCompat_Tooltip 0x7f15000b
-int style Base_DialogWindowTitleBackground_AppCompat 0x7f15000c
-int style Base_DialogWindowTitle_AppCompat 0x7f15000d
-int style Base_TextAppearance_AppCompat 0x7f15000e
-int style Base_TextAppearance_AppCompat_Body1 0x7f15000f
-int style Base_TextAppearance_AppCompat_Body2 0x7f150010
-int style Base_TextAppearance_AppCompat_Button 0x7f150011
-int style Base_TextAppearance_AppCompat_Caption 0x7f150012
-int style Base_TextAppearance_AppCompat_Display1 0x7f150013
-int style Base_TextAppearance_AppCompat_Display2 0x7f150014
-int style Base_TextAppearance_AppCompat_Display3 0x7f150015
-int style Base_TextAppearance_AppCompat_Display4 0x7f150016
-int style Base_TextAppearance_AppCompat_Headline 0x7f150017
-int style Base_TextAppearance_AppCompat_Inverse 0x7f150018
-int style Base_TextAppearance_AppCompat_Large 0x7f150019
-int style Base_TextAppearance_AppCompat_Large_Inverse 0x7f15001a
-int style Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Large 0x7f15001b
-int style Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Small 0x7f15001c
-int style Base_TextAppearance_AppCompat_Medium 0x7f15001d
-int style Base_TextAppearance_AppCompat_Medium_Inverse 0x7f15001e
-int style Base_TextAppearance_AppCompat_Menu 0x7f15001f
-int style Base_TextAppearance_AppCompat_SearchResult 0x7f150020
-int style Base_TextAppearance_AppCompat_SearchResult_Subtitle 0x7f150021
-int style Base_TextAppearance_AppCompat_SearchResult_Title 0x7f150022
-int style Base_TextAppearance_AppCompat_Small 0x7f150023
-int style Base_TextAppearance_AppCompat_Small_Inverse 0x7f150024
-int style Base_TextAppearance_AppCompat_Subhead 0x7f150025
-int style Base_TextAppearance_AppCompat_Subhead_Inverse 0x7f150026
-int style Base_TextAppearance_AppCompat_Title 0x7f150027
-int style Base_TextAppearance_AppCompat_Title_Inverse 0x7f150028
-int style Base_TextAppearance_AppCompat_Tooltip 0x7f150029
-int style Base_TextAppearance_AppCompat_Widget_ActionBar_Menu 0x7f15002a
-int style Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle 0x7f15002b
-int style Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse 0x7f15002c
-int style Base_TextAppearance_AppCompat_Widget_ActionBar_Title 0x7f15002d
-int style Base_TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse 0x7f15002e
-int style Base_TextAppearance_AppCompat_Widget_ActionMode_Subtitle 0x7f15002f
-int style Base_TextAppearance_AppCompat_Widget_ActionMode_Title 0x7f150030
-int style Base_TextAppearance_AppCompat_Widget_Button 0x7f150031
-int style Base_TextAppearance_AppCompat_Widget_Button_Borderless_Colored 0x7f150032
-int style Base_TextAppearance_AppCompat_Widget_Button_Colored 0x7f150033
-int style Base_TextAppearance_AppCompat_Widget_Button_Inverse 0x7f150034
-int style Base_TextAppearance_AppCompat_Widget_DropDownItem 0x7f150035
-int style Base_TextAppearance_AppCompat_Widget_PopupMenu_Header 0x7f150036
-int style Base_TextAppearance_AppCompat_Widget_PopupMenu_Large 0x7f150037
-int style Base_TextAppearance_AppCompat_Widget_PopupMenu_Small 0x7f150038
-int style Base_TextAppearance_AppCompat_Widget_Switch 0x7f150039
-int style Base_TextAppearance_AppCompat_Widget_TextView_SpinnerItem 0x7f15003a
-int style Base_TextAppearance_Widget_AppCompat_ExpandedMenu_Item 0x7f15003b
-int style Base_TextAppearance_Widget_AppCompat_Toolbar_Subtitle 0x7f15003c
-int style Base_TextAppearance_Widget_AppCompat_Toolbar_Title 0x7f15003d
-int style Base_ThemeOverlay_AppCompat 0x7f15003e
-int style Base_ThemeOverlay_AppCompat_ActionBar 0x7f15003f
-int style Base_ThemeOverlay_AppCompat_Dark 0x7f150040
-int style Base_ThemeOverlay_AppCompat_Dark_ActionBar 0x7f150041
-int style Base_ThemeOverlay_AppCompat_Dialog 0x7f150042
-int style Base_ThemeOverlay_AppCompat_Dialog_Alert 0x7f150043
-int style Base_ThemeOverlay_AppCompat_Light 0x7f150044
-int style Base_Theme_AppCompat 0x7f150045
-int style Base_Theme_AppCompat_CompactMenu 0x7f150046
-int style Base_Theme_AppCompat_Dialog 0x7f150047
-int style Base_Theme_AppCompat_DialogWhenLarge 0x7f150048
-int style Base_Theme_AppCompat_Dialog_Alert 0x7f150049
-int style Base_Theme_AppCompat_Dialog_FixedSize 0x7f15004a
-int style Base_Theme_AppCompat_Dialog_MinWidth 0x7f15004b
-int style Base_Theme_AppCompat_Light 0x7f15004c
-int style Base_Theme_AppCompat_Light_DarkActionBar 0x7f15004d
-int style Base_Theme_AppCompat_Light_Dialog 0x7f15004e
-int style Base_Theme_AppCompat_Light_DialogWhenLarge 0x7f15004f
-int style Base_Theme_AppCompat_Light_Dialog_Alert 0x7f150050
-int style Base_Theme_AppCompat_Light_Dialog_FixedSize 0x7f150051
-int style Base_Theme_AppCompat_Light_Dialog_MinWidth 0x7f150052
-int style Base_V21_ThemeOverlay_AppCompat_Dialog 0x7f150053
-int style Base_V21_Theme_AppCompat 0x7f150054
-int style Base_V21_Theme_AppCompat_Dialog 0x7f150055
-int style Base_V21_Theme_AppCompat_Light 0x7f150056
-int style Base_V21_Theme_AppCompat_Light_Dialog 0x7f150057
-int style Base_V22_Theme_AppCompat 0x7f150058
-int style Base_V22_Theme_AppCompat_Light 0x7f150059
-int style Base_V23_Theme_AppCompat 0x7f15005a
-int style Base_V23_Theme_AppCompat_Light 0x7f15005b
-int style Base_V26_Theme_AppCompat 0x7f15005c
-int style Base_V26_Theme_AppCompat_Light 0x7f15005d
-int style Base_V26_Widget_AppCompat_Toolbar 0x7f15005e
-int style Base_V28_Theme_AppCompat 0x7f15005f
-int style Base_V28_Theme_AppCompat_Light 0x7f150060
-int style Base_V7_ThemeOverlay_AppCompat_Dialog 0x7f150061
-int style Base_V7_Theme_AppCompat 0x7f150062
-int style Base_V7_Theme_AppCompat_Dialog 0x7f150063
-int style Base_V7_Theme_AppCompat_Light 0x7f150064
-int style Base_V7_Theme_AppCompat_Light_Dialog 0x7f150065
-int style Base_V7_Widget_AppCompat_AutoCompleteTextView 0x7f150066
-int style Base_V7_Widget_AppCompat_EditText 0x7f150067
-int style Base_V7_Widget_AppCompat_Toolbar 0x7f150068
-int style Base_Widget_AppCompat_ActionBar 0x7f150069
-int style Base_Widget_AppCompat_ActionBar_Solid 0x7f15006a
-int style Base_Widget_AppCompat_ActionBar_TabBar 0x7f15006b
-int style Base_Widget_AppCompat_ActionBar_TabText 0x7f15006c
-int style Base_Widget_AppCompat_ActionBar_TabView 0x7f15006d
-int style Base_Widget_AppCompat_ActionButton 0x7f15006e
-int style Base_Widget_AppCompat_ActionButton_CloseMode 0x7f15006f
-int style Base_Widget_AppCompat_ActionButton_Overflow 0x7f150070
-int style Base_Widget_AppCompat_ActionMode 0x7f150071
-int style Base_Widget_AppCompat_ActivityChooserView 0x7f150072
-int style Base_Widget_AppCompat_AutoCompleteTextView 0x7f150073
-int style Base_Widget_AppCompat_Button 0x7f150074
-int style Base_Widget_AppCompat_ButtonBar 0x7f150075
-int style Base_Widget_AppCompat_ButtonBar_AlertDialog 0x7f150076
-int style Base_Widget_AppCompat_Button_Borderless 0x7f150077
-int style Base_Widget_AppCompat_Button_Borderless_Colored 0x7f150078
-int style Base_Widget_AppCompat_Button_ButtonBar_AlertDialog 0x7f150079
-int style Base_Widget_AppCompat_Button_Colored 0x7f15007a
-int style Base_Widget_AppCompat_Button_Small 0x7f15007b
-int style Base_Widget_AppCompat_CompoundButton_CheckBox 0x7f15007c
-int style Base_Widget_AppCompat_CompoundButton_RadioButton 0x7f15007d
-int style Base_Widget_AppCompat_CompoundButton_Switch 0x7f15007e
-int style Base_Widget_AppCompat_DrawerArrowToggle 0x7f15007f
-int style Base_Widget_AppCompat_DrawerArrowToggle_Common 0x7f150080
-int style Base_Widget_AppCompat_DropDownItem_Spinner 0x7f150081
-int style Base_Widget_AppCompat_EditText 0x7f150082
-int style Base_Widget_AppCompat_ImageButton 0x7f150083
-int style Base_Widget_AppCompat_Light_ActionBar 0x7f150084
-int style Base_Widget_AppCompat_Light_ActionBar_Solid 0x7f150085
-int style Base_Widget_AppCompat_Light_ActionBar_TabBar 0x7f150086
-int style Base_Widget_AppCompat_Light_ActionBar_TabText 0x7f150087
-int style Base_Widget_AppCompat_Light_ActionBar_TabText_Inverse 0x7f150088
-int style Base_Widget_AppCompat_Light_ActionBar_TabView 0x7f150089
-int style Base_Widget_AppCompat_Light_PopupMenu 0x7f15008a
-int style Base_Widget_AppCompat_Light_PopupMenu_Overflow 0x7f15008b
-int style Base_Widget_AppCompat_ListMenuView 0x7f15008c
-int style Base_Widget_AppCompat_ListPopupWindow 0x7f15008d
-int style Base_Widget_AppCompat_ListView 0x7f15008e
-int style Base_Widget_AppCompat_ListView_DropDown 0x7f15008f
-int style Base_Widget_AppCompat_ListView_Menu 0x7f150090
-int style Base_Widget_AppCompat_PopupMenu 0x7f150091
-int style Base_Widget_AppCompat_PopupMenu_Overflow 0x7f150092
-int style Base_Widget_AppCompat_PopupWindow 0x7f150093
-int style Base_Widget_AppCompat_ProgressBar 0x7f150094
-int style Base_Widget_AppCompat_ProgressBar_Horizontal 0x7f150095
-int style Base_Widget_AppCompat_RatingBar 0x7f150096
-int style Base_Widget_AppCompat_RatingBar_Indicator 0x7f150097
-int style Base_Widget_AppCompat_RatingBar_Small 0x7f150098
-int style Base_Widget_AppCompat_SearchView 0x7f150099
-int style Base_Widget_AppCompat_SearchView_ActionBar 0x7f15009a
-int style Base_Widget_AppCompat_SeekBar 0x7f15009b
-int style Base_Widget_AppCompat_SeekBar_Discrete 0x7f15009c
-int style Base_Widget_AppCompat_Spinner 0x7f15009d
-int style Base_Widget_AppCompat_Spinner_Underlined 0x7f15009e
-int style Base_Widget_AppCompat_TextView_SpinnerItem 0x7f15009f
-int style Base_Widget_AppCompat_Toolbar 0x7f1500a0
-int style Base_Widget_AppCompat_Toolbar_Button_Navigation 0x7f1500a1
-int style Platform_AppCompat 0x7f1500a2
-int style Platform_AppCompat_Light 0x7f1500a3
-int style Platform_ThemeOverlay_AppCompat 0x7f1500a4
-int style Platform_ThemeOverlay_AppCompat_Dark 0x7f1500a5
-int style Platform_ThemeOverlay_AppCompat_Light 0x7f1500a6
-int style Platform_V21_AppCompat 0x7f1500a7
-int style Platform_V21_AppCompat_Light 0x7f1500a8
-int style Platform_V25_AppCompat 0x7f1500a9
-int style Platform_V25_AppCompat_Light 0x7f1500aa
-int style Platform_Widget_AppCompat_Spinner 0x7f1500ab
-int style RtlOverlay_DialogWindowTitle_AppCompat 0x7f1500ac
-int style RtlOverlay_Widget_AppCompat_ActionBar_TitleItem 0x7f1500ad
-int style RtlOverlay_Widget_AppCompat_DialogTitle_Icon 0x7f1500ae
-int style RtlOverlay_Widget_AppCompat_PopupMenuItem 0x7f1500af
-int style RtlOverlay_Widget_AppCompat_PopupMenuItem_InternalGroup 0x7f1500b0
-int style RtlOverlay_Widget_AppCompat_PopupMenuItem_Shortcut 0x7f1500b1
-int style RtlOverlay_Widget_AppCompat_PopupMenuItem_SubmenuArrow 0x7f1500b2
-int style RtlOverlay_Widget_AppCompat_PopupMenuItem_Text 0x7f1500b3
-int style RtlOverlay_Widget_AppCompat_PopupMenuItem_Title 0x7f1500b4
-int style RtlOverlay_Widget_AppCompat_SearchView_MagIcon 0x7f1500b5
-int style RtlOverlay_Widget_AppCompat_Search_DropDown 0x7f1500b6
-int style RtlOverlay_Widget_AppCompat_Search_DropDown_Icon1 0x7f1500b7
-int style RtlOverlay_Widget_AppCompat_Search_DropDown_Icon2 0x7f1500b8
-int style RtlOverlay_Widget_AppCompat_Search_DropDown_Query 0x7f1500b9
-int style RtlOverlay_Widget_AppCompat_Search_DropDown_Text 0x7f1500ba
-int style RtlUnderlay_Widget_AppCompat_ActionButton 0x7f1500bb
-int style RtlUnderlay_Widget_AppCompat_ActionButton_Overflow 0x7f1500bc
-int style TextAppearance_AppCompat 0x7f1500bd
-int style TextAppearance_AppCompat_Body1 0x7f1500be
-int style TextAppearance_AppCompat_Body2 0x7f1500bf
-int style TextAppearance_AppCompat_Button 0x7f1500c0
-int style TextAppearance_AppCompat_Caption 0x7f1500c1
-int style TextAppearance_AppCompat_Display1 0x7f1500c2
-int style TextAppearance_AppCompat_Display2 0x7f1500c3
-int style TextAppearance_AppCompat_Display3 0x7f1500c4
-int style TextAppearance_AppCompat_Display4 0x7f1500c5
-int style TextAppearance_AppCompat_Headline 0x7f1500c6
-int style TextAppearance_AppCompat_Inverse 0x7f1500c7
-int style TextAppearance_AppCompat_Large 0x7f1500c8
-int style TextAppearance_AppCompat_Large_Inverse 0x7f1500c9
-int style TextAppearance_AppCompat_Light_SearchResult_Subtitle 0x7f1500ca
-int style TextAppearance_AppCompat_Light_SearchResult_Title 0x7f1500cb
-int style TextAppearance_AppCompat_Light_Widget_PopupMenu_Large 0x7f1500cc
-int style TextAppearance_AppCompat_Light_Widget_PopupMenu_Small 0x7f1500cd
-int style TextAppearance_AppCompat_Medium 0x7f1500ce
-int style TextAppearance_AppCompat_Medium_Inverse 0x7f1500cf
-int style TextAppearance_AppCompat_Menu 0x7f1500d0
-int style TextAppearance_AppCompat_SearchResult_Subtitle 0x7f1500d1
-int style TextAppearance_AppCompat_SearchResult_Title 0x7f1500d2
-int style TextAppearance_AppCompat_Small 0x7f1500d3
-int style TextAppearance_AppCompat_Small_Inverse 0x7f1500d4
-int style TextAppearance_AppCompat_Subhead 0x7f1500d5
-int style TextAppearance_AppCompat_Subhead_Inverse 0x7f1500d6
-int style TextAppearance_AppCompat_Title 0x7f1500d7
-int style TextAppearance_AppCompat_Title_Inverse 0x7f1500d8
-int style TextAppearance_AppCompat_Tooltip 0x7f1500d9
-int style TextAppearance_AppCompat_Widget_ActionBar_Menu 0x7f1500da
-int style TextAppearance_AppCompat_Widget_ActionBar_Subtitle 0x7f1500db
-int style TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse 0x7f1500dc
-int style TextAppearance_AppCompat_Widget_ActionBar_Title 0x7f1500dd
-int style TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse 0x7f1500de
-int style TextAppearance_AppCompat_Widget_ActionMode_Subtitle 0x7f1500df
-int style TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse 0x7f1500e0
-int style TextAppearance_AppCompat_Widget_ActionMode_Title 0x7f1500e1
-int style TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse 0x7f1500e2
-int style TextAppearance_AppCompat_Widget_Button 0x7f1500e3
-int style TextAppearance_AppCompat_Widget_Button_Borderless_Colored 0x7f1500e4
-int style TextAppearance_AppCompat_Widget_Button_Colored 0x7f1500e5
-int style TextAppearance_AppCompat_Widget_Button_Inverse 0x7f1500e6
-int style TextAppearance_AppCompat_Widget_DropDownItem 0x7f1500e7
-int style TextAppearance_AppCompat_Widget_PopupMenu_Header 0x7f1500e8
-int style TextAppearance_AppCompat_Widget_PopupMenu_Large 0x7f1500e9
-int style TextAppearance_AppCompat_Widget_PopupMenu_Small 0x7f1500ea
-int style TextAppearance_AppCompat_Widget_Switch 0x7f1500eb
-int style TextAppearance_AppCompat_Widget_TextView_SpinnerItem 0x7f1500ec
-int style TextAppearance_Compat_Notification 0x7f1500ed
-int style TextAppearance_Compat_Notification_Info 0x7f1500ee
-int style TextAppearance_Compat_Notification_Info_Media 0x7f1500ef
-int style TextAppearance_Compat_Notification_Line2 0x7f1500f0
-int style TextAppearance_Compat_Notification_Line2_Media 0x7f1500f1
-int style TextAppearance_Compat_Notification_Media 0x7f1500f2
-int style TextAppearance_Compat_Notification_Time 0x7f1500f3
-int style TextAppearance_Compat_Notification_Time_Media 0x7f1500f4
-int style TextAppearance_Compat_Notification_Title 0x7f1500f5
-int style TextAppearance_Compat_Notification_Title_Media 0x7f1500f6
-int style TextAppearance_Widget_AppCompat_ExpandedMenu_Item 0x7f1500f7
-int style TextAppearance_Widget_AppCompat_Toolbar_Subtitle 0x7f1500f8
-int style TextAppearance_Widget_AppCompat_Toolbar_Title 0x7f1500f9
-int style ThemeOverlay_AppCompat 0x7f1500fa
-int style ThemeOverlay_AppCompat_ActionBar 0x7f1500fb
-int style ThemeOverlay_AppCompat_Dark 0x7f1500fc
-int style ThemeOverlay_AppCompat_Dark_ActionBar 0x7f1500fd
-int style ThemeOverlay_AppCompat_Dialog 0x7f1500fe
-int style ThemeOverlay_AppCompat_Dialog_Alert 0x7f1500ff
-int style ThemeOverlay_AppCompat_Light 0x7f150100
-int style Theme_AppCompat 0x7f150101
-int style Theme_AppCompat_CompactMenu 0x7f150102
-int style Theme_AppCompat_DayNight 0x7f150103
-int style Theme_AppCompat_DayNight_DarkActionBar 0x7f150104
-int style Theme_AppCompat_DayNight_Dialog 0x7f150105
-int style Theme_AppCompat_DayNight_DialogWhenLarge 0x7f150106
-int style Theme_AppCompat_DayNight_Dialog_Alert 0x7f150107
-int style Theme_AppCompat_DayNight_Dialog_MinWidth 0x7f150108
-int style Theme_AppCompat_DayNight_NoActionBar 0x7f150109
-int style Theme_AppCompat_Dialog 0x7f15010a
-int style Theme_AppCompat_DialogWhenLarge 0x7f15010b
-int style Theme_AppCompat_Dialog_Alert 0x7f15010c
-int style Theme_AppCompat_Dialog_MinWidth 0x7f15010d
-int style Theme_AppCompat_Light 0x7f15010e
-int style Theme_AppCompat_Light_DarkActionBar 0x7f15010f
-int style Theme_AppCompat_Light_Dialog 0x7f150110
-int style Theme_AppCompat_Light_DialogWhenLarge 0x7f150111
-int style Theme_AppCompat_Light_Dialog_Alert 0x7f150112
-int style Theme_AppCompat_Light_Dialog_MinWidth 0x7f150113
-int style Theme_AppCompat_Light_NoActionBar 0x7f150114
-int style Theme_AppCompat_NoActionBar 0x7f150115
-int style Widget_AppCompat_ActionBar 0x7f150116
-int style Widget_AppCompat_ActionBar_Solid 0x7f150117
-int style Widget_AppCompat_ActionBar_TabBar 0x7f150118
-int style Widget_AppCompat_ActionBar_TabText 0x7f150119
-int style Widget_AppCompat_ActionBar_TabView 0x7f15011a
-int style Widget_AppCompat_ActionButton 0x7f15011b
-int style Widget_AppCompat_ActionButton_CloseMode 0x7f15011c
-int style Widget_AppCompat_ActionButton_Overflow 0x7f15011d
-int style Widget_AppCompat_ActionMode 0x7f15011e
-int style Widget_AppCompat_ActivityChooserView 0x7f15011f
-int style Widget_AppCompat_AutoCompleteTextView 0x7f150120
-int style Widget_AppCompat_Button 0x7f150121
-int style Widget_AppCompat_ButtonBar 0x7f150122
-int style Widget_AppCompat_ButtonBar_AlertDialog 0x7f150123
-int style Widget_AppCompat_Button_Borderless 0x7f150124
-int style Widget_AppCompat_Button_Borderless_Colored 0x7f150125
-int style Widget_AppCompat_Button_ButtonBar_AlertDialog 0x7f150126
-int style Widget_AppCompat_Button_Colored 0x7f150127
-int style Widget_AppCompat_Button_Small 0x7f150128
-int style Widget_AppCompat_CompoundButton_CheckBox 0x7f150129
-int style Widget_AppCompat_CompoundButton_RadioButton 0x7f15012a
-int style Widget_AppCompat_CompoundButton_Switch 0x7f15012b
-int style Widget_AppCompat_DrawerArrowToggle 0x7f15012c
-int style Widget_AppCompat_DropDownItem_Spinner 0x7f15012d
-int style Widget_AppCompat_EditText 0x7f15012e
-int style Widget_AppCompat_ImageButton 0x7f15012f
-int style Widget_AppCompat_Light_ActionBar 0x7f150130
-int style Widget_AppCompat_Light_ActionBar_Solid 0x7f150131
-int style Widget_AppCompat_Light_ActionBar_Solid_Inverse 0x7f150132
-int style Widget_AppCompat_Light_ActionBar_TabBar 0x7f150133
-int style Widget_AppCompat_Light_ActionBar_TabBar_Inverse 0x7f150134
-int style Widget_AppCompat_Light_ActionBar_TabText 0x7f150135
-int style Widget_AppCompat_Light_ActionBar_TabText_Inverse 0x7f150136
-int style Widget_AppCompat_Light_ActionBar_TabView 0x7f150137
-int style Widget_AppCompat_Light_ActionBar_TabView_Inverse 0x7f150138
-int style Widget_AppCompat_Light_ActionButton 0x7f150139
-int style Widget_AppCompat_Light_ActionButton_CloseMode 0x7f15013a
-int style Widget_AppCompat_Light_ActionButton_Overflow 0x7f15013b
-int style Widget_AppCompat_Light_ActionMode_Inverse 0x7f15013c
-int style Widget_AppCompat_Light_ActivityChooserView 0x7f15013d
-int style Widget_AppCompat_Light_AutoCompleteTextView 0x7f15013e
-int style Widget_AppCompat_Light_DropDownItem_Spinner 0x7f15013f
-int style Widget_AppCompat_Light_ListPopupWindow 0x7f150140
-int style Widget_AppCompat_Light_ListView_DropDown 0x7f150141
-int style Widget_AppCompat_Light_PopupMenu 0x7f150142
-int style Widget_AppCompat_Light_PopupMenu_Overflow 0x7f150143
-int style Widget_AppCompat_Light_SearchView 0x7f150144
-int style Widget_AppCompat_Light_Spinner_DropDown_ActionBar 0x7f150145
-int style Widget_AppCompat_ListMenuView 0x7f150146
-int style Widget_AppCompat_ListPopupWindow 0x7f150147
-int style Widget_AppCompat_ListView 0x7f150148
-int style Widget_AppCompat_ListView_DropDown 0x7f150149
-int style Widget_AppCompat_ListView_Menu 0x7f15014a
-int style Widget_AppCompat_PopupMenu 0x7f15014b
-int style Widget_AppCompat_PopupMenu_Overflow 0x7f15014c
-int style Widget_AppCompat_PopupWindow 0x7f15014d
-int style Widget_AppCompat_ProgressBar 0x7f15014e
-int style Widget_AppCompat_ProgressBar_Horizontal 0x7f15014f
-int style Widget_AppCompat_RatingBar 0x7f150150
-int style Widget_AppCompat_RatingBar_Indicator 0x7f150151
-int style Widget_AppCompat_RatingBar_Small 0x7f150152
-int style Widget_AppCompat_SearchView 0x7f150153
-int style Widget_AppCompat_SearchView_ActionBar 0x7f150154
-int style Widget_AppCompat_SeekBar 0x7f150155
-int style Widget_AppCompat_SeekBar_Discrete 0x7f150156
-int style Widget_AppCompat_Spinner 0x7f150157
-int style Widget_AppCompat_Spinner_DropDown 0x7f150158
-int style Widget_AppCompat_Spinner_DropDown_ActionBar 0x7f150159
-int style Widget_AppCompat_Spinner_Underlined 0x7f15015a
-int style Widget_AppCompat_TextView_SpinnerItem 0x7f15015b
-int style Widget_AppCompat_Toolbar 0x7f15015c
-int style Widget_AppCompat_Toolbar_Button_Navigation 0x7f15015d
-int style Widget_Compat_NotificationActionContainer 0x7f15015e
-int style Widget_Compat_NotificationActionText 0x7f15015f
-int style Widget_Support_CoordinatorLayout 0x7f150160
-int[] styleable ActionBar { 0x7f040032, 0x7f040033, 0x7f040034, 0x7f04005e, 0x7f04005f, 0x7f040060, 0x7f040061, 0x7f040062, 0x7f040063, 0x7f040066, 0x7f04006b, 0x7f04006c, 0x7f040077, 0x7f040088, 0x7f040089, 0x7f04008a, 0x7f04008b, 0x7f04008c, 0x7f040091, 0x7f040094, 0x7f0400dc, 0x7f0400e3, 0x7f0400ee, 0x7f0400f1, 0x7f0400f2, 0x7f04010d, 0x7f040110, 0x7f04012b, 0x7f040134 }
-int styleable ActionBar_background 0
-int styleable ActionBar_backgroundSplit 1
-int styleable ActionBar_backgroundStacked 2
-int styleable ActionBar_contentInsetEnd 3
-int styleable ActionBar_contentInsetEndWithActions 4
-int styleable ActionBar_contentInsetLeft 5
-int styleable ActionBar_contentInsetRight 6
-int styleable ActionBar_contentInsetStart 7
-int styleable ActionBar_contentInsetStartWithNavigation 8
-int styleable ActionBar_customNavigationLayout 9
-int styleable ActionBar_displayOptions 10
-int styleable ActionBar_divider 11
-int styleable ActionBar_elevation 12
-int styleable ActionBar_height 13
-int styleable ActionBar_hideOnContentScroll 14
-int styleable ActionBar_homeAsUpIndicator 15
-int styleable ActionBar_homeLayout 16
-int styleable ActionBar_icon 17
-int styleable ActionBar_indeterminateProgressStyle 18
-int styleable ActionBar_itemPadding 19
-int styleable ActionBar_logo 20
-int styleable ActionBar_navigationMode 21
-int styleable ActionBar_popupTheme 22
-int styleable ActionBar_progressBarPadding 23
-int styleable ActionBar_progressBarStyle 24
-int styleable ActionBar_subtitle 25
-int styleable ActionBar_subtitleTextStyle 26
-int styleable ActionBar_title 27
-int styleable ActionBar_titleTextStyle 28
-int[] styleable ActionBarLayout { 0x10100b3 }
-int styleable ActionBarLayout_android_layout_gravity 0
-int[] styleable ActionMenuItemView { 0x101013f }
-int styleable ActionMenuItemView_android_minWidth 0
-int[] styleable ActionMenuView { }
-int[] styleable ActionMode { 0x7f040032, 0x7f040033, 0x7f04004b, 0x7f040088, 0x7f040110, 0x7f040134 }
-int styleable ActionMode_background 0
-int styleable ActionMode_backgroundSplit 1
-int styleable ActionMode_closeItemLayout 2
-int styleable ActionMode_height 3
-int styleable ActionMode_subtitleTextStyle 4
-int styleable ActionMode_titleTextStyle 5
-int[] styleable ActivityChooserView { 0x7f040079, 0x7f040092 }
-int styleable ActivityChooserView_expandActivityOverflowButtonDrawable 0
-int styleable ActivityChooserView_initialActivityCount 1
-int[] styleable AlertDialog { 0x10100f2, 0x7f040041, 0x7f040042, 0x7f0400d3, 0x7f0400d4, 0x7f0400e0, 0x7f040102, 0x7f040103 }
-int styleable AlertDialog_android_layout 0
-int styleable AlertDialog_buttonIconDimen 1
-int styleable AlertDialog_buttonPanelSideLayout 2
-int styleable AlertDialog_listItemLayout 3
-int styleable AlertDialog_listLayout 4
-int styleable AlertDialog_multiChoiceItemLayout 5
-int styleable AlertDialog_showTitle 6
-int styleable AlertDialog_singleChoiceItemLayout 7
-int[] styleable AnimatedStateListDrawableCompat { 0x1010196, 0x101011c, 0x101030c, 0x101030d, 0x1010195, 0x1010194 }
-int styleable AnimatedStateListDrawableCompat_android_constantSize 0
-int styleable AnimatedStateListDrawableCompat_android_dither 1
-int styleable AnimatedStateListDrawableCompat_android_enterFadeDuration 2
-int styleable AnimatedStateListDrawableCompat_android_exitFadeDuration 3
-int styleable AnimatedStateListDrawableCompat_android_variablePadding 4
-int styleable AnimatedStateListDrawableCompat_android_visible 5
-int[] styleable AnimatedStateListDrawableItem { 0x1010199, 0x10100d0 }
-int styleable AnimatedStateListDrawableItem_android_drawable 0
-int styleable AnimatedStateListDrawableItem_android_id 1
-int[] styleable AnimatedStateListDrawableTransition { 0x1010199, 0x101044a, 0x101044b, 0x1010449 }
-int styleable AnimatedStateListDrawableTransition_android_drawable 0
-int styleable AnimatedStateListDrawableTransition_android_fromId 1
-int styleable AnimatedStateListDrawableTransition_android_reversible 2
-int styleable AnimatedStateListDrawableTransition_android_toId 3
-int[] styleable AppCompatImageView { 0x1010119, 0x7f040108, 0x7f040129, 0x7f04012a }
-int styleable AppCompatImageView_android_src 0
-int styleable AppCompatImageView_srcCompat 1
-int styleable AppCompatImageView_tint 2
-int styleable AppCompatImageView_tintMode 3
-int[] styleable AppCompatSeekBar { 0x1010142, 0x7f040126, 0x7f040127, 0x7f040128 }
-int styleable AppCompatSeekBar_android_thumb 0
-int styleable AppCompatSeekBar_tickMark 1
-int styleable AppCompatSeekBar_tickMarkTint 2
-int styleable AppCompatSeekBar_tickMarkTintMode 3
-int[] styleable AppCompatTextHelper { 0x101016e, 0x1010393, 0x101016f, 0x1010170, 0x1010392, 0x101016d, 0x1010034 }
-int styleable AppCompatTextHelper_android_drawableBottom 0
-int styleable AppCompatTextHelper_android_drawableEnd 1
-int styleable AppCompatTextHelper_android_drawableLeft 2
-int styleable AppCompatTextHelper_android_drawableRight 3
-int styleable AppCompatTextHelper_android_drawableStart 4
-int styleable AppCompatTextHelper_android_drawableTop 5
-int styleable AppCompatTextHelper_android_textAppearance 6
-int[] styleable AppCompatTextView { 0x1010034, 0x7f04002d, 0x7f04002e, 0x7f04002f, 0x7f040030, 0x7f040031, 0x7f04007a, 0x7f04007c, 0x7f040096, 0x7f0400d0, 0x7f040116 }
-int styleable AppCompatTextView_android_textAppearance 0
-int styleable AppCompatTextView_autoSizeMaxTextSize 1
-int styleable AppCompatTextView_autoSizeMinTextSize 2
-int styleable AppCompatTextView_autoSizePresetSizes 3
-int styleable AppCompatTextView_autoSizeStepGranularity 4
-int styleable AppCompatTextView_autoSizeTextType 5
-int styleable AppCompatTextView_firstBaselineToTopHeight 6
-int styleable AppCompatTextView_fontFamily 7
-int styleable AppCompatTextView_lastBaselineToBottomHeight 8
-int styleable AppCompatTextView_lineHeight 9
-int styleable AppCompatTextView_textAllCaps 10
-int[] styleable AppCompatTheme { 0x7f040001, 0x7f040002, 0x7f040003, 0x7f040004, 0x7f040005, 0x7f040006, 0x7f040007, 0x7f040008, 0x7f040009, 0x7f04000a, 0x7f04000b, 0x7f04000c, 0x7f04000d, 0x7f04000f, 0x7f040010, 0x7f040011, 0x7f040012, 0x7f040013, 0x7f040014, 0x7f040015, 0x7f040016, 0x7f040017, 0x7f040018, 0x7f040019, 0x7f04001a, 0x7f04001b, 0x7f04001c, 0x7f04001d, 0x7f04001e, 0x7f04001f, 0x7f040022, 0x7f040023, 0x7f040024, 0x7f040025, 0x7f040026, 0x10100ae, 0x1010057, 0x7f04002c, 0x7f04003a, 0x7f04003b, 0x7f04003c, 0x7f04003d, 0x7f04003e, 0x7f04003f, 0x7f040043, 0x7f040044, 0x7f040048, 0x7f040049, 0x7f04004f, 0x7f040050, 0x7f040051, 0x7f040052, 0x7f040053, 0x7f040054, 0x7f040055, 0x7f040056, 0x7f040057, 0x7f040058, 0x7f040064, 0x7f040068, 0x7f040069, 0x7f04006a, 0x7f04006d, 0x7f04006f, 0x7f040072, 0x7f040073, 0x7f040074, 0x7f040075, 0x7f040076, 0x7f04008a, 0x7f040090, 0x7f0400d1, 0x7f0400d2, 0x7f0400d5, 0x7f0400d6, 0x7f0400d7, 0x7f0400d8, 0x7f0400d9, 0x7f0400da, 0x7f0400db, 0x7f0400ea, 0x7f0400eb, 0x7f0400ec, 0x7f0400ed, 0x7f0400ef, 0x7f0400f5, 0x7f0400f6, 0x7f0400f7, 0x7f0400f8, 0x7f0400fb, 0x7f0400fc, 0x7f0400fd, 0x7f0400fe, 0x7f040105, 0x7f040106, 0x7f040114, 0x7f040117, 0x7f040118, 0x7f040119, 0x7f04011a, 0x7f04011b, 0x7f04011c, 0x7f04011d, 0x7f04011e, 0x7f04011f, 0x7f040120, 0x7f040135, 0x7f040136, 0x7f040137, 0x7f040138, 0x7f04013e, 0x7f040140, 0x7f040141, 0x7f040142, 0x7f040143, 0x7f040144, 0x7f040145, 0x7f040146, 0x7f040147, 0x7f040148, 0x7f040149 }
-int styleable AppCompatTheme_actionBarDivider 0
-int styleable AppCompatTheme_actionBarItemBackground 1
-int styleable AppCompatTheme_actionBarPopupTheme 2
-int styleable AppCompatTheme_actionBarSize 3
-int styleable AppCompatTheme_actionBarSplitStyle 4
-int styleable AppCompatTheme_actionBarStyle 5
-int styleable AppCompatTheme_actionBarTabBarStyle 6
-int styleable AppCompatTheme_actionBarTabStyle 7
-int styleable AppCompatTheme_actionBarTabTextStyle 8
-int styleable AppCompatTheme_actionBarTheme 9
-int styleable AppCompatTheme_actionBarWidgetTheme 10
-int styleable AppCompatTheme_actionButtonStyle 11
-int styleable AppCompatTheme_actionDropDownStyle 12
-int styleable AppCompatTheme_actionMenuTextAppearance 13
-int styleable AppCompatTheme_actionMenuTextColor 14
-int styleable AppCompatTheme_actionModeBackground 15
-int styleable AppCompatTheme_actionModeCloseButtonStyle 16
-int styleable AppCompatTheme_actionModeCloseDrawable 17
-int styleable AppCompatTheme_actionModeCopyDrawable 18
-int styleable AppCompatTheme_actionModeCutDrawable 19
-int styleable AppCompatTheme_actionModeFindDrawable 20
-int styleable AppCompatTheme_actionModePasteDrawable 21
-int styleable AppCompatTheme_actionModePopupWindowStyle 22
-int styleable AppCompatTheme_actionModeSelectAllDrawable 23
-int styleable AppCompatTheme_actionModeShareDrawable 24
-int styleable AppCompatTheme_actionModeSplitBackground 25
-int styleable AppCompatTheme_actionModeStyle 26
-int styleable AppCompatTheme_actionModeWebSearchDrawable 27
-int styleable AppCompatTheme_actionOverflowButtonStyle 28
-int styleable AppCompatTheme_actionOverflowMenuStyle 29
-int styleable AppCompatTheme_activityChooserViewStyle 30
-int styleable AppCompatTheme_alertDialogButtonGroupStyle 31
-int styleable AppCompatTheme_alertDialogCenterButtons 32
-int styleable AppCompatTheme_alertDialogStyle 33
-int styleable AppCompatTheme_alertDialogTheme 34
-int styleable AppCompatTheme_android_windowAnimationStyle 35
-int styleable AppCompatTheme_android_windowIsFloating 36
-int styleable AppCompatTheme_autoCompleteTextViewStyle 37
-int styleable AppCompatTheme_borderlessButtonStyle 38
-int styleable AppCompatTheme_buttonBarButtonStyle 39
-int styleable AppCompatTheme_buttonBarNegativeButtonStyle 40
-int styleable AppCompatTheme_buttonBarNeutralButtonStyle 41
-int styleable AppCompatTheme_buttonBarPositiveButtonStyle 42
-int styleable AppCompatTheme_buttonBarStyle 43
-int styleable AppCompatTheme_buttonStyle 44
-int styleable AppCompatTheme_buttonStyleSmall 45
-int styleable AppCompatTheme_checkboxStyle 46
-int styleable AppCompatTheme_checkedTextViewStyle 47
-int styleable AppCompatTheme_colorAccent 48
-int styleable AppCompatTheme_colorBackgroundFloating 49
-int styleable AppCompatTheme_colorButtonNormal 50
-int styleable AppCompatTheme_colorControlActivated 51
-int styleable AppCompatTheme_colorControlHighlight 52
-int styleable AppCompatTheme_colorControlNormal 53
-int styleable AppCompatTheme_colorError 54
-int styleable AppCompatTheme_colorPrimary 55
-int styleable AppCompatTheme_colorPrimaryDark 56
-int styleable AppCompatTheme_colorSwitchThumbNormal 57
-int styleable AppCompatTheme_controlBackground 58
-int styleable AppCompatTheme_dialogCornerRadius 59
-int styleable AppCompatTheme_dialogPreferredPadding 60
-int styleable AppCompatTheme_dialogTheme 61
-int styleable AppCompatTheme_dividerHorizontal 62
-int styleable AppCompatTheme_dividerVertical 63
-int styleable AppCompatTheme_dropDownListViewStyle 64
-int styleable AppCompatTheme_dropdownListPreferredItemHeight 65
-int styleable AppCompatTheme_editTextBackground 66
-int styleable AppCompatTheme_editTextColor 67
-int styleable AppCompatTheme_editTextStyle 68
-int styleable AppCompatTheme_homeAsUpIndicator 69
-int styleable AppCompatTheme_imageButtonStyle 70
-int styleable AppCompatTheme_listChoiceBackgroundIndicator 71
-int styleable AppCompatTheme_listDividerAlertDialog 72
-int styleable AppCompatTheme_listMenuViewStyle 73
-int styleable AppCompatTheme_listPopupWindowStyle 74
-int styleable AppCompatTheme_listPreferredItemHeight 75
-int styleable AppCompatTheme_listPreferredItemHeightLarge 76
-int styleable AppCompatTheme_listPreferredItemHeightSmall 77
-int styleable AppCompatTheme_listPreferredItemPaddingLeft 78
-int styleable AppCompatTheme_listPreferredItemPaddingRight 79
-int styleable AppCompatTheme_panelBackground 80
-int styleable AppCompatTheme_panelMenuListTheme 81
-int styleable AppCompatTheme_panelMenuListWidth 82
-int styleable AppCompatTheme_popupMenuStyle 83
-int styleable AppCompatTheme_popupWindowStyle 84
-int styleable AppCompatTheme_radioButtonStyle 85
-int styleable AppCompatTheme_ratingBarStyle 86
-int styleable AppCompatTheme_ratingBarStyleIndicator 87
-int styleable AppCompatTheme_ratingBarStyleSmall 88
-int styleable AppCompatTheme_searchViewStyle 89
-int styleable AppCompatTheme_seekBarStyle 90
-int styleable AppCompatTheme_selectableItemBackground 91
-int styleable AppCompatTheme_selectableItemBackgroundBorderless 92
-int styleable AppCompatTheme_spinnerDropDownItemStyle 93
-int styleable AppCompatTheme_spinnerStyle 94
-int styleable AppCompatTheme_switchStyle 95
-int styleable AppCompatTheme_textAppearanceLargePopupMenu 96
-int styleable AppCompatTheme_textAppearanceListItem 97
-int styleable AppCompatTheme_textAppearanceListItemSecondary 98
-int styleable AppCompatTheme_textAppearanceListItemSmall 99
-int styleable AppCompatTheme_textAppearancePopupMenuHeader 100
-int styleable AppCompatTheme_textAppearanceSearchResultSubtitle 101
-int styleable AppCompatTheme_textAppearanceSearchResultTitle 102
-int styleable AppCompatTheme_textAppearanceSmallPopupMenu 103
-int styleable AppCompatTheme_textColorAlertDialogListItem 104
-int styleable AppCompatTheme_textColorSearchUrl 105
-int styleable AppCompatTheme_toolbarNavigationButtonStyle 106
-int styleable AppCompatTheme_toolbarStyle 107
-int styleable AppCompatTheme_tooltipForegroundColor 108
-int styleable AppCompatTheme_tooltipFrameBackground 109
-int styleable AppCompatTheme_viewInflaterClass 110
-int styleable AppCompatTheme_windowActionBar 111
-int styleable AppCompatTheme_windowActionBarOverlay 112
-int styleable AppCompatTheme_windowActionModeOverlay 113
-int styleable AppCompatTheme_windowFixedHeightMajor 114
-int styleable AppCompatTheme_windowFixedHeightMinor 115
-int styleable AppCompatTheme_windowFixedWidthMajor 116
-int styleable AppCompatTheme_windowFixedWidthMinor 117
-int styleable AppCompatTheme_windowMinWidthMajor 118
-int styleable AppCompatTheme_windowMinWidthMinor 119
-int styleable AppCompatTheme_windowNoTitle 120
-int[] styleable ButtonBarLayout { 0x7f040027 }
-int styleable ButtonBarLayout_allowStacking 0
-int[] styleable ColorStateListItem { 0x7f040028, 0x101031f, 0x10101a5 }
-int styleable ColorStateListItem_alpha 0
-int styleable ColorStateListItem_android_alpha 1
-int styleable ColorStateListItem_android_color 2
-int[] styleable CompoundButton { 0x1010107, 0x7f040045, 0x7f040046 }
-int styleable CompoundButton_android_button 0
-int styleable CompoundButton_buttonTint 1
-int styleable CompoundButton_buttonTintMode 2
-int[] styleable ConstraintLayout_Layout { 0x1010120, 0x101011f, 0x1010140, 0x101013f, 0x10100c4, 0x7f040038, 0x7f040039, 0x7f040047, 0x7f04005a, 0x7f04005b, 0x7f04009b, 0x7f04009c, 0x7f04009d, 0x7f04009e, 0x7f04009f, 0x7f0400a0, 0x7f0400a1, 0x7f0400a2, 0x7f0400a3, 0x7f0400a4, 0x7f0400a5, 0x7f0400a6, 0x7f0400a7, 0x7f0400a8, 0x7f0400a9, 0x7f0400aa, 0x7f0400ab, 0x7f0400ac, 0x7f0400ad, 0x7f0400ae, 0x7f0400af, 0x7f0400b0, 0x7f0400b1, 0x7f0400b2, 0x7f0400b3, 0x7f0400b4, 0x7f0400b5, 0x7f0400b6, 0x7f0400b7, 0x7f0400b8, 0x7f0400b9, 0x7f0400ba, 0x7f0400bb, 0x7f0400bc, 0x7f0400bd, 0x7f0400be, 0x7f0400bf, 0x7f0400c0, 0x7f0400c1, 0x7f0400c2, 0x7f0400c3, 0x7f0400c5, 0x7f0400c6, 0x7f0400c7, 0x7f0400c8, 0x7f0400c9, 0x7f0400ca, 0x7f0400cb, 0x7f0400cc, 0x7f0400cf }
-int styleable ConstraintLayout_Layout_android_maxHeight 0
-int styleable ConstraintLayout_Layout_android_maxWidth 1
-int styleable ConstraintLayout_Layout_android_minHeight 2
-int styleable ConstraintLayout_Layout_android_minWidth 3
-int styleable ConstraintLayout_Layout_android_orientation 4
-int styleable ConstraintLayout_Layout_barrierAllowsGoneWidgets 5
-int styleable ConstraintLayout_Layout_barrierDirection 6
-int styleable ConstraintLayout_Layout_chainUseRtl 7
-int styleable ConstraintLayout_Layout_constraintSet 8
-int styleable ConstraintLayout_Layout_constraint_referenced_ids 9
-int styleable ConstraintLayout_Layout_layout_constrainedHeight 10
-int styleable ConstraintLayout_Layout_layout_constrainedWidth 11
-int styleable ConstraintLayout_Layout_layout_constraintBaseline_creator 12
-int styleable ConstraintLayout_Layout_layout_constraintBaseline_toBaselineOf 13
-int styleable ConstraintLayout_Layout_layout_constraintBottom_creator 14
-int styleable ConstraintLayout_Layout_layout_constraintBottom_toBottomOf 15
-int styleable ConstraintLayout_Layout_layout_constraintBottom_toTopOf 16
-int styleable ConstraintLayout_Layout_layout_constraintCircle 17
-int styleable ConstraintLayout_Layout_layout_constraintCircleAngle 18
-int styleable ConstraintLayout_Layout_layout_constraintCircleRadius 19
-int styleable ConstraintLayout_Layout_layout_constraintDimensionRatio 20
-int styleable ConstraintLayout_Layout_layout_constraintEnd_toEndOf 21
-int styleable ConstraintLayout_Layout_layout_constraintEnd_toStartOf 22
-int styleable ConstraintLayout_Layout_layout_constraintGuide_begin 23
-int styleable ConstraintLayout_Layout_layout_constraintGuide_end 24
-int styleable ConstraintLayout_Layout_layout_constraintGuide_percent 25
-int styleable ConstraintLayout_Layout_layout_constraintHeight_default 26
-int styleable ConstraintLayout_Layout_layout_constraintHeight_max 27
-int styleable ConstraintLayout_Layout_layout_constraintHeight_min 28
-int styleable ConstraintLayout_Layout_layout_constraintHeight_percent 29
-int styleable ConstraintLayout_Layout_layout_constraintHorizontal_bias 30
-int styleable ConstraintLayout_Layout_layout_constraintHorizontal_chainStyle 31
-int styleable ConstraintLayout_Layout_layout_constraintHorizontal_weight 32
-int styleable ConstraintLayout_Layout_layout_constraintLeft_creator 33
-int styleable ConstraintLayout_Layout_layout_constraintLeft_toLeftOf 34
-int styleable ConstraintLayout_Layout_layout_constraintLeft_toRightOf 35
-int styleable ConstraintLayout_Layout_layout_constraintRight_creator 36
-int styleable ConstraintLayout_Layout_layout_constraintRight_toLeftOf 37
-int styleable ConstraintLayout_Layout_layout_constraintRight_toRightOf 38
-int styleable ConstraintLayout_Layout_layout_constraintStart_toEndOf 39
-int styleable ConstraintLayout_Layout_layout_constraintStart_toStartOf 40
-int styleable ConstraintLayout_Layout_layout_constraintTop_creator 41
-int styleable ConstraintLayout_Layout_layout_constraintTop_toBottomOf 42
-int styleable ConstraintLayout_Layout_layout_constraintTop_toTopOf 43
-int styleable ConstraintLayout_Layout_layout_constraintVertical_bias 44
-int styleable ConstraintLayout_Layout_layout_constraintVertical_chainStyle 45
-int styleable ConstraintLayout_Layout_layout_constraintVertical_weight 46
-int styleable ConstraintLayout_Layout_layout_constraintWidth_default 47
-int styleable ConstraintLayout_Layout_layout_constraintWidth_max 48
-int styleable ConstraintLayout_Layout_layout_constraintWidth_min 49
-int styleable ConstraintLayout_Layout_layout_constraintWidth_percent 50
-int styleable ConstraintLayout_Layout_layout_editor_absoluteX 51
-int styleable ConstraintLayout_Layout_layout_editor_absoluteY 52
-int styleable ConstraintLayout_Layout_layout_goneMarginBottom 53
-int styleable ConstraintLayout_Layout_layout_goneMarginEnd 54
-int styleable ConstraintLayout_Layout_layout_goneMarginLeft 55
-int styleable ConstraintLayout_Layout_layout_goneMarginRight 56
-int styleable ConstraintLayout_Layout_layout_goneMarginStart 57
-int styleable ConstraintLayout_Layout_layout_goneMarginTop 58
-int styleable ConstraintLayout_Layout_layout_optimizationLevel 59
-int[] styleable ConstraintLayout_placeholder { 0x7f04005c, 0x7f040078 }
-int styleable ConstraintLayout_placeholder_content 0
-int styleable ConstraintLayout_placeholder_emptyVisibility 1
-int[] styleable ConstraintSet { 0x101031f, 0x1010440, 0x10100d0, 0x10100f5, 0x10100fa, 0x10103b6, 0x10100f7, 0x10100f9, 0x10103b5, 0x10100f8, 0x10100f4, 0x1010120, 0x101011f, 0x1010140, 0x101013f, 0x10100c4, 0x1010326, 0x1010327, 0x1010328, 0x1010324, 0x1010325, 0x1010320, 0x1010321, 0x1010322, 0x1010323, 0x10103fa, 0x10100dc, 0x7f040038, 0x7f040039, 0x7f040047, 0x7f04005b, 0x7f04009b, 0x7f04009c, 0x7f04009d, 0x7f04009e, 0x7f04009f, 0x7f0400a0, 0x7f0400a1, 0x7f0400a2, 0x7f0400a3, 0x7f0400a4, 0x7f0400a5, 0x7f0400a6, 0x7f0400a7, 0x7f0400a8, 0x7f0400a9, 0x7f0400aa, 0x7f0400ab, 0x7f0400ac, 0x7f0400ad, 0x7f0400ae, 0x7f0400af, 0x7f0400b0, 0x7f0400b1, 0x7f0400b2, 0x7f0400b3, 0x7f0400b4, 0x7f0400b5, 0x7f0400b6, 0x7f0400b7, 0x7f0400b8, 0x7f0400b9, 0x7f0400ba, 0x7f0400bb, 0x7f0400bc, 0x7f0400bd, 0x7f0400be, 0x7f0400bf, 0x7f0400c0, 0x7f0400c1, 0x7f0400c2, 0x7f0400c3, 0x7f0400c5, 0x7f0400c6, 0x7f0400c7, 0x7f0400c8, 0x7f0400c9, 0x7f0400ca, 0x7f0400cb, 0x7f0400cc }
-int styleable ConstraintSet_android_alpha 0
-int styleable ConstraintSet_android_elevation 1
-int styleable ConstraintSet_android_id 2
-int styleable ConstraintSet_android_layout_height 3
-int styleable ConstraintSet_android_layout_marginBottom 4
-int styleable ConstraintSet_android_layout_marginEnd 5
-int styleable ConstraintSet_android_layout_marginLeft 6
-int styleable ConstraintSet_android_layout_marginRight 7
-int styleable ConstraintSet_android_layout_marginStart 8
-int styleable ConstraintSet_android_layout_marginTop 9
-int styleable ConstraintSet_android_layout_width 10
-int styleable ConstraintSet_android_maxHeight 11
-int styleable ConstraintSet_android_maxWidth 12
-int styleable ConstraintSet_android_minHeight 13
-int styleable ConstraintSet_android_minWidth 14
-int styleable ConstraintSet_android_orientation 15
-int styleable ConstraintSet_android_rotation 16
-int styleable ConstraintSet_android_rotationX 17
-int styleable ConstraintSet_android_rotationY 18
-int styleable ConstraintSet_android_scaleX 19
-int styleable ConstraintSet_android_scaleY 20
-int styleable ConstraintSet_android_transformPivotX 21
-int styleable ConstraintSet_android_transformPivotY 22
-int styleable ConstraintSet_android_translationX 23
-int styleable ConstraintSet_android_translationY 24
-int styleable ConstraintSet_android_translationZ 25
-int styleable ConstraintSet_android_visibility 26
-int styleable ConstraintSet_barrierAllowsGoneWidgets 27
-int styleable ConstraintSet_barrierDirection 28
-int styleable ConstraintSet_chainUseRtl 29
-int styleable ConstraintSet_constraint_referenced_ids 30
-int styleable ConstraintSet_layout_constrainedHeight 31
-int styleable ConstraintSet_layout_constrainedWidth 32
-int styleable ConstraintSet_layout_constraintBaseline_creator 33
-int styleable ConstraintSet_layout_constraintBaseline_toBaselineOf 34
-int styleable ConstraintSet_layout_constraintBottom_creator 35
-int styleable ConstraintSet_layout_constraintBottom_toBottomOf 36
-int styleable ConstraintSet_layout_constraintBottom_toTopOf 37
-int styleable ConstraintSet_layout_constraintCircle 38
-int styleable ConstraintSet_layout_constraintCircleAngle 39
-int styleable ConstraintSet_layout_constraintCircleRadius 40
-int styleable ConstraintSet_layout_constraintDimensionRatio 41
-int styleable ConstraintSet_layout_constraintEnd_toEndOf 42
-int styleable ConstraintSet_layout_constraintEnd_toStartOf 43
-int styleable ConstraintSet_layout_constraintGuide_begin 44
-int styleable ConstraintSet_layout_constraintGuide_end 45
-int styleable ConstraintSet_layout_constraintGuide_percent 46
-int styleable ConstraintSet_layout_constraintHeight_default 47
-int styleable ConstraintSet_layout_constraintHeight_max 48
-int styleable ConstraintSet_layout_constraintHeight_min 49
-int styleable ConstraintSet_layout_constraintHeight_percent 50
-int styleable ConstraintSet_layout_constraintHorizontal_bias 51
-int styleable ConstraintSet_layout_constraintHorizontal_chainStyle 52
-int styleable ConstraintSet_layout_constraintHorizontal_weight 53
-int styleable ConstraintSet_layout_constraintLeft_creator 54
-int styleable ConstraintSet_layout_constraintLeft_toLeftOf 55
-int styleable ConstraintSet_layout_constraintLeft_toRightOf 56
-int styleable ConstraintSet_layout_constraintRight_creator 57
-int styleable ConstraintSet_layout_constraintRight_toLeftOf 58
-int styleable ConstraintSet_layout_constraintRight_toRightOf 59
-int styleable ConstraintSet_layout_constraintStart_toEndOf 60
-int styleable ConstraintSet_layout_constraintStart_toStartOf 61
-int styleable ConstraintSet_layout_constraintTop_creator 62
-int styleable ConstraintSet_layout_constraintTop_toBottomOf 63
-int styleable ConstraintSet_layout_constraintTop_toTopOf 64
-int styleable ConstraintSet_layout_constraintVertical_bias 65
-int styleable ConstraintSet_layout_constraintVertical_chainStyle 66
-int styleable ConstraintSet_layout_constraintVertical_weight 67
-int styleable ConstraintSet_layout_constraintWidth_default 68
-int styleable ConstraintSet_layout_constraintWidth_max 69
-int styleable ConstraintSet_layout_constraintWidth_min 70
-int styleable ConstraintSet_layout_constraintWidth_percent 71
-int styleable ConstraintSet_layout_editor_absoluteX 72
-int styleable ConstraintSet_layout_editor_absoluteY 73
-int styleable ConstraintSet_layout_goneMarginBottom 74
-int styleable ConstraintSet_layout_goneMarginEnd 75
-int styleable ConstraintSet_layout_goneMarginLeft 76
-int styleable ConstraintSet_layout_goneMarginRight 77
-int styleable ConstraintSet_layout_goneMarginStart 78
-int styleable ConstraintSet_layout_goneMarginTop 79
-int[] styleable CoordinatorLayout { 0x7f040095, 0x7f04010a }
-int styleable CoordinatorLayout_keylines 0
-int styleable CoordinatorLayout_statusBarBackground 1
-int[] styleable CoordinatorLayout_Layout { 0x10100b3, 0x7f040098, 0x7f040099, 0x7f04009a, 0x7f0400c4, 0x7f0400cd, 0x7f0400ce }
-int styleable CoordinatorLayout_Layout_android_layout_gravity 0
-int styleable CoordinatorLayout_Layout_layout_anchor 1
-int styleable CoordinatorLayout_Layout_layout_anchorGravity 2
-int styleable CoordinatorLayout_Layout_layout_behavior 3
-int styleable CoordinatorLayout_Layout_layout_dodgeInsetEdges 4
-int styleable CoordinatorLayout_Layout_layout_insetEdge 5
-int styleable CoordinatorLayout_Layout_layout_keyline 6
-int[] styleable DrawerArrowToggle { 0x7f04002a, 0x7f04002b, 0x7f040037, 0x7f04004e, 0x7f040070, 0x7f040086, 0x7f040104, 0x7f040122 }
-int styleable DrawerArrowToggle_arrowHeadLength 0
-int styleable DrawerArrowToggle_arrowShaftLength 1
-int styleable DrawerArrowToggle_barLength 2
-int styleable DrawerArrowToggle_color 3
-int styleable DrawerArrowToggle_drawableSize 4
-int styleable DrawerArrowToggle_gapBetweenBars 5
-int styleable DrawerArrowToggle_spinBars 6
-int styleable DrawerArrowToggle_thickness 7
-int[] styleable FontFamily { 0x7f04007d, 0x7f04007e, 0x7f04007f, 0x7f040080, 0x7f040081, 0x7f040082 }
-int styleable FontFamily_fontProviderAuthority 0
-int styleable FontFamily_fontProviderCerts 1
-int styleable FontFamily_fontProviderFetchStrategy 2
-int styleable FontFamily_fontProviderFetchTimeout 3
-int styleable FontFamily_fontProviderPackage 4
-int styleable FontFamily_fontProviderQuery 5
-int[] styleable FontFamilyFont { 0x1010532, 0x101053f, 0x1010570, 0x1010533, 0x101056f, 0x7f04007b, 0x7f040083, 0x7f040084, 0x7f040085, 0x7f04013d }
-int styleable FontFamilyFont_android_font 0
-int styleable FontFamilyFont_android_fontStyle 1
-int styleable FontFamilyFont_android_fontVariationSettings 2
-int styleable FontFamilyFont_android_fontWeight 3
-int styleable FontFamilyFont_android_ttcIndex 4
-int styleable FontFamilyFont_font 5
-int styleable FontFamilyFont_fontStyle 6
-int styleable FontFamilyFont_fontVariationSettings 7
-int styleable FontFamilyFont_fontWeight 8
-int styleable FontFamilyFont_ttcIndex 9
-int[] styleable GradientColor { 0x101020b, 0x10101a2, 0x10101a3, 0x101019e, 0x1010512, 0x1010513, 0x10101a4, 0x101019d, 0x1010510, 0x1010511, 0x1010201, 0x10101a1 }
-int styleable GradientColor_android_centerColor 0
-int styleable GradientColor_android_centerX 1
-int styleable GradientColor_android_centerY 2
-int styleable GradientColor_android_endColor 3
-int styleable GradientColor_android_endX 4
-int styleable GradientColor_android_endY 5
-int styleable GradientColor_android_gradientRadius 6
-int styleable GradientColor_android_startColor 7
-int styleable GradientColor_android_startX 8
-int styleable GradientColor_android_startY 9
-int styleable GradientColor_android_tileMode 10
-int styleable GradientColor_android_type 11
-int[] styleable GradientColorItem { 0x10101a5, 0x1010514 }
-int styleable GradientColorItem_android_color 0
-int styleable GradientColorItem_android_offset 1
-int[] styleable LinearConstraintLayout { 0x10100c4 }
-int styleable LinearConstraintLayout_android_orientation 0
-int[] styleable LinearLayoutCompat { 0x1010126, 0x1010127, 0x10100af, 0x10100c4, 0x1010128, 0x7f04006c, 0x7f04006e, 0x7f0400df, 0x7f040100 }
-int styleable LinearLayoutCompat_android_baselineAligned 0
-int styleable LinearLayoutCompat_android_baselineAlignedChildIndex 1
-int styleable LinearLayoutCompat_android_gravity 2
-int styleable LinearLayoutCompat_android_orientation 3
-int styleable LinearLayoutCompat_android_weightSum 4
-int styleable LinearLayoutCompat_divider 5
-int styleable LinearLayoutCompat_dividerPadding 6
-int styleable LinearLayoutCompat_measureWithLargestChild 7
-int styleable LinearLayoutCompat_showDividers 8
-int[] styleable LinearLayoutCompat_Layout { 0x10100b3, 0x10100f5, 0x1010181, 0x10100f4 }
-int styleable LinearLayoutCompat_Layout_android_layout_gravity 0
-int styleable LinearLayoutCompat_Layout_android_layout_height 1
-int styleable LinearLayoutCompat_Layout_android_layout_weight 2
-int styleable LinearLayoutCompat_Layout_android_layout_width 3
-int[] styleable ListPopupWindow { 0x10102ac, 0x10102ad }
-int styleable ListPopupWindow_android_dropDownHorizontalOffset 0
-int styleable ListPopupWindow_android_dropDownVerticalOffset 1
-int[] styleable MenuGroup { 0x10101e0, 0x101000e, 0x10100d0, 0x10101de, 0x10101df, 0x1010194 }
-int styleable MenuGroup_android_checkableBehavior 0
-int styleable MenuGroup_android_enabled 1
-int styleable MenuGroup_android_id 2
-int styleable MenuGroup_android_menuCategory 3
-int styleable MenuGroup_android_orderInCategory 4
-int styleable MenuGroup_android_visible 5
-int[] styleable MenuItem { 0x7f04000e, 0x7f040020, 0x7f040021, 0x7f040029, 0x10101e3, 0x10101e5, 0x1010106, 0x101000e, 0x1010002, 0x10100d0, 0x10101de, 0x10101e4, 0x101026f, 0x10101df, 0x10101e1, 0x10101e2, 0x1010194, 0x7f04005d, 0x7f04008d, 0x7f04008e, 0x7f0400e4, 0x7f0400ff, 0x7f040139 }
-int styleable MenuItem_actionLayout 0
-int styleable MenuItem_actionProviderClass 1
-int styleable MenuItem_actionViewClass 2
-int styleable MenuItem_alphabeticModifiers 3
-int styleable MenuItem_android_alphabeticShortcut 4
-int styleable MenuItem_android_checkable 5
-int styleable MenuItem_android_checked 6
-int styleable MenuItem_android_enabled 7
-int styleable MenuItem_android_icon 8
-int styleable MenuItem_android_id 9
-int styleable MenuItem_android_menuCategory 10
-int styleable MenuItem_android_numericShortcut 11
-int styleable MenuItem_android_onClick 12
-int styleable MenuItem_android_orderInCategory 13
-int styleable MenuItem_android_title 14
-int styleable MenuItem_android_titleCondensed 15
-int styleable MenuItem_android_visible 16
-int styleable MenuItem_contentDescription 17
-int styleable MenuItem_iconTint 18
-int styleable MenuItem_iconTintMode 19
-int styleable MenuItem_numericModifiers 20
-int styleable MenuItem_showAsAction 21
-int styleable MenuItem_tooltipText 22
-int[] styleable MenuView { 0x101012f, 0x101012d, 0x1010130, 0x1010131, 0x101012c, 0x101012e, 0x10100ae, 0x7f0400f0, 0x7f04010b }
-int styleable MenuView_android_headerBackground 0
-int styleable MenuView_android_horizontalDivider 1
-int styleable MenuView_android_itemBackground 2
-int styleable MenuView_android_itemIconDisabledAlpha 3
-int styleable MenuView_android_itemTextAppearance 4
-int styleable MenuView_android_verticalDivider 5
-int styleable MenuView_android_windowAnimationStyle 6
-int styleable MenuView_preserveIconSpacing 7
-int styleable MenuView_subMenuArrow 8
-int[] styleable PopupWindow { 0x10102c9, 0x1010176, 0x7f0400e5 }
-int styleable PopupWindow_android_popupAnimationStyle 0
-int styleable PopupWindow_android_popupBackground 1
-int styleable PopupWindow_overlapAnchor 2
-int[] styleable PopupWindowBackgroundState { 0x7f040109 }
-int styleable PopupWindowBackgroundState_state_above_anchor 0
-int[] styleable RecycleListView { 0x7f0400e6, 0x7f0400e9 }
-int styleable RecycleListView_paddingBottomNoButtons 0
-int styleable RecycleListView_paddingTopNoTitle 1
-int[] styleable SearchView { 0x10100da, 0x1010264, 0x1010220, 0x101011f, 0x7f04004a, 0x7f040059, 0x7f040067, 0x7f040087, 0x7f04008f, 0x7f040097, 0x7f0400f3, 0x7f0400f4, 0x7f0400f9, 0x7f0400fa, 0x7f04010c, 0x7f040111, 0x7f04013f }
-int styleable SearchView_android_focusable 0
-int styleable SearchView_android_imeOptions 1
-int styleable SearchView_android_inputType 2
-int styleable SearchView_android_maxWidth 3
-int styleable SearchView_closeIcon 4
-int styleable SearchView_commitIcon 5
-int styleable SearchView_defaultQueryHint 6
-int styleable SearchView_goIcon 7
-int styleable SearchView_iconifiedByDefault 8
-int styleable SearchView_layout 9
-int styleable SearchView_queryBackground 10
-int styleable SearchView_queryHint 11
-int styleable SearchView_searchHintIcon 12
-int styleable SearchView_searchIcon 13
-int styleable SearchView_submitBackground 14
-int styleable SearchView_suggestionRowLayout 15
-int styleable SearchView_voiceIcon 16
-int[] styleable Spinner { 0x1010262, 0x10100b2, 0x1010176, 0x101017b, 0x7f0400ee }
-int styleable Spinner_android_dropDownWidth 0
-int styleable Spinner_android_entries 1
-int styleable Spinner_android_popupBackground 2
-int styleable Spinner_android_prompt 3
-int styleable Spinner_popupTheme 4
-int[] styleable StateListDrawable { 0x1010196, 0x101011c, 0x101030c, 0x101030d, 0x1010195, 0x1010194 }
-int styleable StateListDrawable_android_constantSize 0
-int styleable StateListDrawable_android_dither 1
-int styleable StateListDrawable_android_enterFadeDuration 2
-int styleable StateListDrawable_android_exitFadeDuration 3
-int styleable StateListDrawable_android_variablePadding 4
-int styleable StateListDrawable_android_visible 5
-int[] styleable StateListDrawableItem { 0x1010199 }
-int styleable StateListDrawableItem_android_drawable 0
-int[] styleable SwitchCompat { 0x1010125, 0x1010124, 0x1010142, 0x7f040101, 0x7f040107, 0x7f040112, 0x7f040113, 0x7f040115, 0x7f040123, 0x7f040124, 0x7f040125, 0x7f04013a, 0x7f04013b, 0x7f04013c }
-int styleable SwitchCompat_android_textOff 0
-int styleable SwitchCompat_android_textOn 1
-int styleable SwitchCompat_android_thumb 2
-int styleable SwitchCompat_showText 3
-int styleable SwitchCompat_splitTrack 4
-int styleable SwitchCompat_switchMinWidth 5
-int styleable SwitchCompat_switchPadding 6
-int styleable SwitchCompat_switchTextAppearance 7
-int styleable SwitchCompat_thumbTextPadding 8
-int styleable SwitchCompat_thumbTint 9
-int styleable SwitchCompat_thumbTintMode 10
-int styleable SwitchCompat_track 11
-int styleable SwitchCompat_trackTint 12
-int styleable SwitchCompat_trackTintMode 13
-int[] styleable TextAppearance { 0x10103ac, 0x1010161, 0x1010162, 0x1010163, 0x1010164, 0x1010098, 0x101009a, 0x101009b, 0x1010095, 0x1010097, 0x1010096, 0x7f04007c, 0x7f040116 }
-int styleable TextAppearance_android_fontFamily 0
-int styleable TextAppearance_android_shadowColor 1
-int styleable TextAppearance_android_shadowDx 2
-int styleable TextAppearance_android_shadowDy 3
-int styleable TextAppearance_android_shadowRadius 4
-int styleable TextAppearance_android_textColor 5
-int styleable TextAppearance_android_textColorHint 6
-int styleable TextAppearance_android_textColorLink 7
-int styleable TextAppearance_android_textSize 8
-int styleable TextAppearance_android_textStyle 9
-int styleable TextAppearance_android_typeface 10
-int styleable TextAppearance_fontFamily 11
-int styleable TextAppearance_textAllCaps 12
-int[] styleable Toolbar { 0x10100af, 0x1010140, 0x7f040040, 0x7f04004c, 0x7f04004d, 0x7f04005e, 0x7f04005f, 0x7f040060, 0x7f040061, 0x7f040062, 0x7f040063, 0x7f0400dc, 0x7f0400dd, 0x7f0400de, 0x7f0400e1, 0x7f0400e2, 0x7f0400ee, 0x7f04010d, 0x7f04010e, 0x7f04010f, 0x7f04012b, 0x7f04012c, 0x7f04012d, 0x7f04012e, 0x7f04012f, 0x7f040130, 0x7f040131, 0x7f040132, 0x7f040133 }
-int styleable Toolbar_android_gravity 0
-int styleable Toolbar_android_minHeight 1
-int styleable Toolbar_buttonGravity 2
-int styleable Toolbar_collapseContentDescription 3
-int styleable Toolbar_collapseIcon 4
-int styleable Toolbar_contentInsetEnd 5
-int styleable Toolbar_contentInsetEndWithActions 6
-int styleable Toolbar_contentInsetLeft 7
-int styleable Toolbar_contentInsetRight 8
-int styleable Toolbar_contentInsetStart 9
-int styleable Toolbar_contentInsetStartWithNavigation 10
-int styleable Toolbar_logo 11
-int styleable Toolbar_logoDescription 12
-int styleable Toolbar_maxButtonHeight 13
-int styleable Toolbar_navigationContentDescription 14
-int styleable Toolbar_navigationIcon 15
-int styleable Toolbar_popupTheme 16
-int styleable Toolbar_subtitle 17
-int styleable Toolbar_subtitleTextAppearance 18
-int styleable Toolbar_subtitleTextColor 19
-int styleable Toolbar_title 20
-int styleable Toolbar_titleMargin 21
-int styleable Toolbar_titleMarginBottom 22
-int styleable Toolbar_titleMarginEnd 23
-int styleable Toolbar_titleMarginStart 24
-int styleable Toolbar_titleMarginTop 25
-int styleable Toolbar_titleMargins 26
-int styleable Toolbar_titleTextAppearance 27
-int styleable Toolbar_titleTextColor 28
-int[] styleable View { 0x10100da, 0x1010000, 0x7f0400e7, 0x7f0400e8, 0x7f040121 }
-int styleable View_android_focusable 0
-int styleable View_android_theme 1
-int styleable View_paddingEnd 2
-int styleable View_paddingStart 3
-int styleable View_theme 4
-int[] styleable ViewBackgroundHelper { 0x10100d4, 0x7f040035, 0x7f040036 }
-int styleable ViewBackgroundHelper_android_background 0
-int styleable ViewBackgroundHelper_backgroundTint 1
-int styleable ViewBackgroundHelper_backgroundTintMode 2
-int[] styleable ViewStubCompat { 0x10100d0, 0x10100f3, 0x10100f2 }
-int styleable ViewStubCompat_android_id 0
-int styleable ViewStubCompat_android_inflatedId 1
-int styleable ViewStubCompat_android_layout 2
diff --git a/modules/mogo-module-monitor/build/outputs/logs/manifest-merger-debug-report.txt b/modules/mogo-module-monitor/build/outputs/logs/manifest-merger-debug-report.txt
deleted file mode 100644
index 95af33d566..0000000000
--- a/modules/mogo-module-monitor/build/outputs/logs/manifest-merger-debug-report.txt
+++ /dev/null
@@ -1,37 +0,0 @@
--- Merging decision tree log ---
-manifest
-ADDED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml:1:1-5:12
-INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml:1:1-5:12
-INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml:1:1-5:12
-INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml:1:1-5:12
-INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml:1:1-5:12
-INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml:1:1-5:12
-INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml:1:1-5:12
- package
- ADDED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml:2:5-45
- INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml
- INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml
- android:versionName
- INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml
- ADDED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml:1:1-5:12
- INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml
- android:versionCode
- INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml
- ADDED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml:1:1-5:12
- INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml
- xmlns:android
- ADDED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml:1:11-69
-uses-sdk
-INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml reason: use-sdk injection requested
-INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml
-INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml
-INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml
-INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml
- android:targetSdkVersion
- INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml
- ADDED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml
- INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml
- android:minSdkVersion
- INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml
- ADDED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml
- INJECTED from F:\Station\Launcher\modules\mogo-module-monitor\src\main\AndroidManifest.xml
diff --git a/modules/mogo-module-monitor/consumer-rules.pro b/modules/mogo-module-monitor/consumer-rules.pro
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/modules/mogo-module-monitor/gradle.properties b/modules/mogo-module-monitor/gradle.properties
new file mode 100644
index 0000000000..db3ee2befd
--- /dev/null
+++ b/modules/mogo-module-monitor/gradle.properties
@@ -0,0 +1,3 @@
+GROUP=com.mogo.module
+POM_ARTIFACT_ID=module-monitor
+VERSION_CODE=1
diff --git a/modules/mogo-module-monitor/proguard-rules.pro b/modules/mogo-module-monitor/proguard-rules.pro
new file mode 100644
index 0000000000..481bb43481
--- /dev/null
+++ b/modules/mogo-module-monitor/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/modules/mogo-module-event-panel/src/main/AndroidManifest.xml b/modules/mogo-module-monitor/src/main/AndroidManifest.xml
similarity index 63%
rename from modules/mogo-module-event-panel/src/main/AndroidManifest.xml
rename to modules/mogo-module-monitor/src/main/AndroidManifest.xml
index c865fb2efe..9fdb2a839e 100644
--- a/modules/mogo-module-event-panel/src/main/AndroidManifest.xml
+++ b/modules/mogo-module-monitor/src/main/AndroidManifest.xml
@@ -1,5 +1,5 @@
+ package="com.zhidao.mogo.module.monitor">
/
\ No newline at end of file
diff --git a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorConst.java b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorConst.java
new file mode 100644
index 0000000000..b72b0fde8f
--- /dev/null
+++ b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorConst.java
@@ -0,0 +1,21 @@
+package com.zhidao.mogo.module.monitor;
+
+class MogoMonitorConst {
+ public static final String MODULE_NAME = "MogoMonitor";
+ public static final String MODULE_PATH = "/monitor/api";
+
+ public static final int LOG_PUSH_TYPE = 500000;
+
+ public static final int START_CATCH_LOG = 1;
+ public static final int STOP_CATCH_LOG = 2;
+ /**
+ * 本应用设置,打开日志
+ */
+ public static final int LOCAL_CONFIG_OPEN_LOG = 3;
+ /**
+ * 本应用设置,关闭日志
+ */
+ public static final int LOCAL_CONFIG_CLOSE_LOG = 4;
+
+ public static final String BROADCAST_LOG_CTRL = "com.mogo.control.action.LOG_CTRL";
+}
diff --git a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorProvider.java b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorProvider.java
new file mode 100644
index 0000000000..133fd25bd5
--- /dev/null
+++ b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorProvider.java
@@ -0,0 +1,184 @@
+package com.zhidao.mogo.module.monitor;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Handler;
+import android.os.Message;
+import android.widget.Toast;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.mogo.commons.debug.DebugConfig;
+import com.mogo.service.IMogoServiceApis;
+import com.mogo.service.MogoServicePaths;
+import com.mogo.service.connection.IMogoOnMessageListener;
+import com.mogo.service.monitor.IMogoMonitorProvider;
+import com.mogo.utils.logger.LogLevel;
+import com.mogo.utils.logger.Logger;
+import com.mogo.utils.network.NetConfig;
+import com.mogo.utils.network.utils.GsonUtil;
+import com.zhidao.mogo.module.monitor.bean.RemoteLogPushContent;
+import com.zhidao.mogo.module.monitor.dialog.ILogDialogListener;
+import com.zhidao.mogo.module.monitor.dialog.LogDebugDialog;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 应用监控模块provider
+ *
+ * @author tongchenfei
+ */
+@Route(path = MogoMonitorConst.MODULE_PATH)
+public class MogoMonitorProvider implements IMogoMonitorProvider,
+ IMogoOnMessageListener, ILogDialogListener, Handler.Callback {
+ private static final String TAG = MogoMonitorConst.MODULE_NAME;
+ private static final int MSG_TRY_CLOSE_LOG = 1001;
+ private static final String MANUAL_CATCH_PKG_NAME = "manual-catch-log";
+ private Context context;
+ private LogDebugDialog logDebugDialog;
+ private RemoteLogPushContent manualContent = new RemoteLogPushContent(60,
+ MANUAL_CATCH_PKG_NAME);
+ private Handler handler = new Handler(this);
+ @Override
+ public void showLogDebugDialog() {
+ logDebugDialog.show();
+ }
+
+ @Override
+ public void init(Context context) {
+ this.context = context;
+ IMogoServiceApis apis =
+ (IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context);
+ apis.getSocketManagerApi(context).registerOnMessageListener(MogoMonitorConst.LOG_PUSH_TYPE, this);
+ startRemoteCtrl();
+ }
+
+ private void startRemoteCtrl(){
+ Intent intent = new Intent("com.mogo.remotecontrol.action");
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ ComponentName comp = new ComponentName("com.mogo.remotecontrol",
+ "com.mogo.remotecontrol.RemoteCtrlService");
+ intent.setComponent(comp);
+ context.startService(intent);
+ Logger.d(TAG, "startRemoteCtrl");
+ }
+
+ @Override
+ public void resetActivityContext(Context context) {
+ this.context = context;
+ logDebugDialog = new LogDebugDialog(context);
+ logDebugDialog.setDialogListener(this);
+ }
+
+ @Override
+ public Class target() {
+ return RemoteLogPushContent.class;
+ }
+
+ @Override
+ public void onMsgReceived(RemoteLogPushContent obj) {
+ Logger.d(TAG, "收到push消息: " + obj);
+ switch (obj.getType()) {
+ case MogoMonitorConst.START_CATCH_LOG:
+ if(!catchingList.contains(obj.getPkgName())){
+ startCatchLog(obj);
+ }
+ break;
+ case MogoMonitorConst.STOP_CATCH_LOG:
+ stopCatchLog(obj);
+ break;
+ case MogoMonitorConst.LOCAL_CONFIG_OPEN_LOG:
+ openLoggerLevel();
+ break;
+ case MogoMonitorConst.LOCAL_CONFIG_CLOSE_LOG:
+ closeLoggerLevel();
+ break;
+ default:
+ break;
+ }
+ }
+
+ private List catchingList = new ArrayList<>();
+
+ @Override
+ public void onLogStart() {
+ // 这个是通过对话框点击开始的回调
+ if(catchingList.contains(MANUAL_CATCH_PKG_NAME)){
+ Toast.makeText(context, "已经在抓日志了", Toast.LENGTH_LONG).show();
+ }else {
+ Logger.d(TAG, "开始抓取日志====");
+ manualContent.setType(MogoMonitorConst.START_CATCH_LOG);
+ startCatchLog(manualContent);
+ }
+ }
+ @Override
+ public void onLogStop() {
+ // 这个是通过对话框点击结束的回调
+ Logger.d(TAG,"结束抓取日志====");
+ manualContent.setType(MogoMonitorConst.STOP_CATCH_LOG);
+ stopCatchLog(manualContent);
+ }
+
+ public void sendCtrlBroadcast(RemoteLogPushContent content) {
+ startRemoteCtrl();
+
+ Intent intent = new Intent(MogoMonitorConst.BROADCAST_LOG_CTRL);
+ intent.putExtra("content", GsonUtil.jsonFromObject(content));
+ intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+ intent.addFlags(Intent.FLAG_EXCLUDE_STOPPED_PACKAGES);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ Logger.d(TAG, "sendCtrlBroadcast: " + content);
+ context.sendBroadcast(intent);
+ }
+
+ /**
+ * 放开Logger的限制
+ */
+ private void openLoggerLevel() {
+ Logger.init(LogLevel.DEBUG);
+ }
+
+ /**
+ * 根据状态收紧Logger的限制
+ */
+ private void closeLoggerLevel() {
+ if(!catchingList.isEmpty()) {
+ Logger.init(DebugConfig.isDebug() ? LogLevel.DEBUG : LogLevel.OFF);
+ NetConfig.instance().setLoggable(DebugConfig.isDebug());
+ }
+ }
+
+ private void startCatchLog(RemoteLogPushContent content){
+ catchingList.add(content.getPkgName());
+
+ long delay = content.getDuration() * 60 * 1000;
+ handler.removeMessages(MSG_TRY_CLOSE_LOG);
+ if (delay <= 0) {
+ // 如果push 下来的delay小于等于0,那就给个默认最大值一小时
+ delay = 60 * 60 * 1000;
+ }
+ handler.sendEmptyMessageDelayed(MSG_TRY_CLOSE_LOG, delay);
+ openLoggerLevel();
+ sendCtrlBroadcast(content);
+ }
+
+ private void stopCatchLog(RemoteLogPushContent content) {
+ catchingList.remove(content.getPkgName());
+ if (catchingList.isEmpty()) {
+ handler.removeMessages(MSG_TRY_CLOSE_LOG);
+ }
+ sendCtrlBroadcast(content);
+ closeLoggerLevel();
+ }
+
+ @Override
+ public boolean handleMessage(Message msg) {
+ if (msg.what == MSG_TRY_CLOSE_LOG) {
+ closeLoggerLevel();
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/bean/RemoteLogPushContent.java b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/bean/RemoteLogPushContent.java
new file mode 100644
index 0000000000..0a6da6e2b3
--- /dev/null
+++ b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/bean/RemoteLogPushContent.java
@@ -0,0 +1,62 @@
+package com.zhidao.mogo.module.monitor.bean;
+
+public class RemoteLogPushContent {
+ private int type;
+ /**
+ * 日志抓取时长,单位是分钟
+ */
+ private int duration;
+ private String cmd;
+ private String pkgName;
+
+ public RemoteLogPushContent(){
+
+ }
+
+ public RemoteLogPushContent(int duration, String pkgName) {
+ this.duration = duration;
+ this.pkgName = pkgName;
+ }
+
+ public int getType() {
+ return type;
+ }
+
+ public void setType(int type) {
+ this.type = type;
+ }
+
+ public String getCmd() {
+ return cmd;
+ }
+
+ public void setCmd(String cmd) {
+ this.cmd = cmd;
+ }
+
+ public int getDuration() {
+ return duration;
+ }
+
+ public void setDuration(int duration) {
+ this.duration = duration;
+ }
+
+ public String getPkgName() {
+ return pkgName;
+ }
+
+ public void setPkgName(String pkgName) {
+ this.pkgName = pkgName;
+ }
+
+ @Override
+ public String toString() {
+ return "RemoteLogPushContent{" +
+ "type=" + type +
+ ", duration=" + duration +
+ ", cmd='" + cmd + '\'' +
+ ", pkgName='" + pkgName + '\'' +
+ '}';
+ }
+}
diff --git a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/dialog/ILogDialogListener.java b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/dialog/ILogDialogListener.java
new file mode 100644
index 0000000000..8a97de2cb4
--- /dev/null
+++ b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/dialog/ILogDialogListener.java
@@ -0,0 +1,17 @@
+package com.zhidao.mogo.module.monitor.dialog;
+
+/**
+ * Log调试对话框操作回调
+ * @author tongchenfei
+ */
+public interface ILogDialogListener {
+ /**
+ * 点击了开始抓日志
+ */
+ void onLogStart();
+
+ /**
+ * 点击了结束抓日志
+ */
+ void onLogStop();
+}
diff --git a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/dialog/LogDebugDialog.java b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/dialog/LogDebugDialog.java
new file mode 100644
index 0000000000..b26eb35859
--- /dev/null
+++ b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/dialog/LogDebugDialog.java
@@ -0,0 +1,46 @@
+package com.zhidao.mogo.module.monitor.dialog;
+
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+
+import com.mogo.module.common.dialog.BaseFloatDialog;
+import com.zhidao.mogo.module.monitor.R;
+
+/**
+ * 日志手动调用开始结束的对话框,兼容了智慧出行,覆盖adas浮窗
+ *
+ * @author tongchenfei
+ */
+public class LogDebugDialog extends BaseFloatDialog {
+ public LogDebugDialog(@NonNull Context context) {
+ super(context);
+ setContentView(R.layout.dialog_log_debug);
+ findViewById(R.id.btnStart).setOnClickListener(v -> {
+ if (dialogListener != null) {
+ dialogListener.onLogStart();
+ }
+ dismiss();
+ });
+ findViewById(R.id.btnStop).setOnClickListener(v->{
+ if (dialogListener != null) {
+ dialogListener.onLogStop();
+ }
+
+ dismiss();
+ });
+ findViewById(R.id.btnForceClearNotice).setOnClickListener(v->{
+ dismiss();
+ });
+ findViewById(R.id.btnRetryFlow).setOnClickListener(v->{
+ dismiss();
+ });
+ }
+
+ private ILogDialogListener dialogListener;
+
+ public void setDialogListener(ILogDialogListener dialogListener) {
+ this.dialogListener = dialogListener;
+ }
+
+}
diff --git a/modules/mogo-module-monitor/src/main/res/drawable/log_debug_dialog_bg.xml b/modules/mogo-module-monitor/src/main/res/drawable/log_debug_dialog_bg.xml
new file mode 100644
index 0000000000..012558ce6d
--- /dev/null
+++ b/modules/mogo-module-monitor/src/main/res/drawable/log_debug_dialog_bg.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-monitor/src/main/res/drawable/log_debug_retry_btn_bg.xml b/modules/mogo-module-monitor/src/main/res/drawable/log_debug_retry_btn_bg.xml
new file mode 100644
index 0000000000..0cb65e7650
--- /dev/null
+++ b/modules/mogo-module-monitor/src/main/res/drawable/log_debug_retry_btn_bg.xml
@@ -0,0 +1,17 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-monitor/src/main/res/drawable/log_debug_start_btn_bg.xml b/modules/mogo-module-monitor/src/main/res/drawable/log_debug_start_btn_bg.xml
new file mode 100644
index 0000000000..c21ba027d9
--- /dev/null
+++ b/modules/mogo-module-monitor/src/main/res/drawable/log_debug_start_btn_bg.xml
@@ -0,0 +1,17 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-monitor/src/main/res/drawable/log_debug_stop_btn_bg.xml b/modules/mogo-module-monitor/src/main/res/drawable/log_debug_stop_btn_bg.xml
new file mode 100644
index 0000000000..d8e32b922f
--- /dev/null
+++ b/modules/mogo-module-monitor/src/main/res/drawable/log_debug_stop_btn_bg.xml
@@ -0,0 +1,17 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-monitor/src/main/res/layout/dialog_log_debug.xml b/modules/mogo-module-monitor/src/main/res/layout/dialog_log_debug.xml
new file mode 100644
index 0000000000..fd3a32aa17
--- /dev/null
+++ b/modules/mogo-module-monitor/src/main/res/layout/dialog_log_debug.xml
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-push-base/.gitignore b/modules/mogo-module-push-base/.gitignore
new file mode 100644
index 0000000000..426a199cc8
--- /dev/null
+++ b/modules/mogo-module-push-base/.gitignore
@@ -0,0 +1,14 @@
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
\ No newline at end of file
diff --git a/modules/mogo-module-push-base/build.gradle b/modules/mogo-module-push-base/build.gradle
new file mode 100644
index 0000000000..3f5839e3b9
--- /dev/null
+++ b/modules/mogo-module-push-base/build.gradle
@@ -0,0 +1,47 @@
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
+apply plugin: 'kotlin-kapt'
+android {
+ compileSdkVersion rootProject.ext.android.compileSdkVersion
+ buildToolsVersion rootProject.ext.android.buildToolsVersion
+
+
+ defaultConfig {
+ minSdkVersion rootProject.ext.android.minSdkVersion
+ targetSdkVersion rootProject.ext.android.targetSdkVersion
+ versionCode Integer.valueOf(VERSION_CODE)
+ versionName getValueFromRootProperties("${project.name.replace("-", "_").toUpperCase()}_VERSION")
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles 'consumer-rules.pro'
+ kapt {
+ arguments {
+ arg("AROUTER_MODULE_NAME", project.getName())
+ }
+ }
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+
+ compileOptions {
+ targetCompatibility 1.8
+ sourceCompatibility 1.8
+ }
+
+ kotlinOptions {
+ jvmTarget = "1.8"
+ }
+
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+}
+
+apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()
diff --git a/modules/mogo-module-push-base/consumer-rules.pro b/modules/mogo-module-push-base/consumer-rules.pro
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/modules/mogo-module-push-base/gradle.properties b/modules/mogo-module-push-base/gradle.properties
new file mode 100644
index 0000000000..653f4713ca
--- /dev/null
+++ b/modules/mogo-module-push-base/gradle.properties
@@ -0,0 +1,3 @@
+GROUP=com.mogo.module
+POM_ARTIFACT_ID=module-push-base
+VERSION_CODE=1
diff --git a/modules/mogo-module-event-panel-noop/proguard-rules.pro b/modules/mogo-module-push-base/proguard-rules.pro
similarity index 91%
rename from modules/mogo-module-event-panel-noop/proguard-rules.pro
rename to modules/mogo-module-push-base/proguard-rules.pro
index 58b6896c9d..f1b424510d 100644
--- a/modules/mogo-module-event-panel-noop/proguard-rules.pro
+++ b/modules/mogo-module-push-base/proguard-rules.pro
@@ -19,5 +19,3 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
-
--keep class com.zhidao.mogo.module.event.panel.EventPanelConstants
\ No newline at end of file
diff --git a/modules/mogo-module-push-base/src/main/AndroidManifest.xml b/modules/mogo-module-push-base/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..9a8574da7b
--- /dev/null
+++ b/modules/mogo-module-push-base/src/main/AndroidManifest.xml
@@ -0,0 +1,3 @@
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-push-base/src/main/java/com/mogo/module/push/base/PushUIConstants.java b/modules/mogo-module-push-base/src/main/java/com/mogo/module/push/base/PushUIConstants.java
new file mode 100644
index 0000000000..4cfde10760
--- /dev/null
+++ b/modules/mogo-module-push-base/src/main/java/com/mogo/module/push/base/PushUIConstants.java
@@ -0,0 +1,7 @@
+package com.mogo.module.push.base;
+
+public class PushUIConstants {
+ public static final String NAME = "PUSH_UI";
+ public static final String PATH = "/push/ui";
+ public static final String Push_MESSAGE_ACTIVITY_PATH = "/push/ui/message"; //消息列表activity
+}
diff --git a/modules/mogo-module-push-noop/.gitignore b/modules/mogo-module-push-noop/.gitignore
new file mode 100644
index 0000000000..426a199cc8
--- /dev/null
+++ b/modules/mogo-module-push-noop/.gitignore
@@ -0,0 +1,14 @@
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
\ No newline at end of file
diff --git a/modules/mogo-module-push-noop/README.md b/modules/mogo-module-push-noop/README.md
new file mode 100644
index 0000000000..a15717364f
--- /dev/null
+++ b/modules/mogo-module-push-noop/README.md
@@ -0,0 +1,4 @@
+# 基于 socketserver 实现的push推送(空)
+
+---
+目前,仅 launcher 实现推送,独立 app 不用
\ No newline at end of file
diff --git a/modules/mogo-module-push-noop/build.gradle b/modules/mogo-module-push-noop/build.gradle
new file mode 100644
index 0000000000..369d2a1a49
--- /dev/null
+++ b/modules/mogo-module-push-noop/build.gradle
@@ -0,0 +1,57 @@
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
+apply plugin: 'kotlin-kapt'
+android {
+ compileSdkVersion rootProject.ext.android.compileSdkVersion
+ buildToolsVersion rootProject.ext.android.buildToolsVersion
+
+
+ defaultConfig {
+ minSdkVersion rootProject.ext.android.minSdkVersion
+ targetSdkVersion rootProject.ext.android.targetSdkVersion
+ versionCode Integer.valueOf(VERSION_CODE)
+ versionName getValueFromRootProperties("${project.name.replace("-", "_").toUpperCase()}_VERSION")
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles 'consumer-rules.pro'
+ kapt {
+ arguments {
+ arg("AROUTER_MODULE_NAME", project.getName())
+ }
+ }
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+
+ compileOptions {
+ targetCompatibility 1.8
+ sourceCompatibility 1.8
+ }
+
+ kotlinOptions {
+ jvmTarget = "1.8"
+ }
+
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ // 小智语音,免唤醒词等服务
+ compileOnly rootProject.ext.dependencies.mogoserviceapi
+ compileOnly rootProject.ext.dependencies.arouter
+ kapt rootProject.ext.dependencies.aroutercompiler
+
+ if( Boolean.valueOf(RELEASE) ){
+ implementation rootProject.ext.dependencies.modulepushbase
+ } else {
+ implementation project(":modules:mogo-module-push-base")
+ }
+}
+
+apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()
diff --git a/modules/mogo-module-push-noop/consumer-rules.pro b/modules/mogo-module-push-noop/consumer-rules.pro
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/modules/mogo-module-push-noop/gradle.properties b/modules/mogo-module-push-noop/gradle.properties
new file mode 100644
index 0000000000..9142345995
--- /dev/null
+++ b/modules/mogo-module-push-noop/gradle.properties
@@ -0,0 +1,3 @@
+GROUP=com.mogo.module
+POM_ARTIFACT_ID=module-push-noop
+VERSION_CODE=1
diff --git a/modules/mogo-module-push-noop/proguard-rules.pro b/modules/mogo-module-push-noop/proguard-rules.pro
new file mode 100644
index 0000000000..f1b424510d
--- /dev/null
+++ b/modules/mogo-module-push-noop/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/modules/mogo-module-push-noop/src/main/AndroidManifest.xml b/modules/mogo-module-push-noop/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..50c17495d9
--- /dev/null
+++ b/modules/mogo-module-push-noop/src/main/AndroidManifest.xml
@@ -0,0 +1,3 @@
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-push-noop/src/main/java/com/mogo/module/push/noop/PushModuleProvider.java b/modules/mogo-module-push-noop/src/main/java/com/mogo/module/push/noop/PushModuleProvider.java
new file mode 100644
index 0000000000..11555a184c
--- /dev/null
+++ b/modules/mogo-module-push-noop/src/main/java/com/mogo/module/push/noop/PushModuleProvider.java
@@ -0,0 +1,80 @@
+package com.mogo.module.push.noop;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.mogo.map.listener.IMogoMapListener;
+import com.mogo.map.location.IMogoLocationListener;
+import com.mogo.map.marker.IMogoMarkerClickListener;
+import com.mogo.map.navi.IMogoNaviListener;
+import com.mogo.module.push.base.PushUIConstants;
+import com.mogo.service.module.IMogoModuleLifecycle;
+import com.mogo.service.module.IMogoModuleProvider;
+
+@Route(path = PushUIConstants.PATH)
+public class PushModuleProvider implements IMogoModuleProvider {
+ @Override
+ public Fragment createFragment(Context context, Bundle data) {
+ return null;
+ }
+
+ @Override
+ public View createView(Context context) {
+ return null;
+ }
+
+ @NonNull
+ @Override
+ public String getModuleName() {
+ return "";
+ }
+
+ @Override
+ public IMogoModuleLifecycle getCardLifecycle() {
+ return null;
+ }
+
+ @Override
+ public IMogoMapListener getMapListener() {
+ return null;
+ }
+
+ @Override
+ public int getType() {
+ return 0;
+ }
+
+ @Override
+ public IMogoNaviListener getNaviListener() {
+ return null;
+ }
+
+ @Override
+ public IMogoLocationListener getLocationListener() {
+ return null;
+ }
+
+ @Override
+ public IMogoMarkerClickListener getMarkerClickListener() {
+ return null;
+ }
+
+ @Override
+ public String getAppPackage() {
+ return " ";
+ }
+
+ @Override
+ public String getAppName() {
+ return " ";
+ }
+
+ @Override
+ public void init(final Context context) {
+ }
+}
diff --git a/modules/mogo-module-push/.gitignore b/modules/mogo-module-push/.gitignore
new file mode 100644
index 0000000000..426a199cc8
--- /dev/null
+++ b/modules/mogo-module-push/.gitignore
@@ -0,0 +1,14 @@
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
\ No newline at end of file
diff --git a/modules/mogo-module-push/README.md b/modules/mogo-module-push/README.md
new file mode 100644
index 0000000000..e262a8de52
--- /dev/null
+++ b/modules/mogo-module-push/README.md
@@ -0,0 +1,12 @@
+# 基于 socketserver 实现的push推送
+
+---
+目前,仅 launcher 实现推送,独立 app 不用
+
+## launcher 在前台
+
+ 通过launcher内部空白区域的弹层承载推送内容
+
+## launcher 在后台
+
+ 通过 windowmanger 方式承载推送内容
\ No newline at end of file
diff --git a/modules/mogo-module-push/build.gradle b/modules/mogo-module-push/build.gradle
new file mode 100644
index 0000000000..80fa923f80
--- /dev/null
+++ b/modules/mogo-module-push/build.gradle
@@ -0,0 +1,71 @@
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
+apply plugin: 'kotlin-kapt'
+android {
+ compileSdkVersion rootProject.ext.android.compileSdkVersion
+ buildToolsVersion rootProject.ext.android.buildToolsVersion
+
+
+ defaultConfig {
+ minSdkVersion rootProject.ext.android.minSdkVersion
+ targetSdkVersion rootProject.ext.android.targetSdkVersion
+ versionCode Integer.valueOf(VERSION_CODE)
+ versionName getValueFromRootProperties("${project.name.replace("-", "_").toUpperCase()}_VERSION")
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles 'consumer-rules.pro'
+ kapt {
+ arguments {
+ arg("AROUTER_MODULE_NAME", project.getName())
+ }
+ }
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+
+ compileOptions {
+ targetCompatibility 1.8
+ sourceCompatibility 1.8
+ }
+
+ kotlinOptions {
+ jvmTarget = "1.8"
+ }
+
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ // 小智语音,免唤醒词等服务
+ compileOnly rootProject.ext.dependencies.mogomap
+ compileOnly rootProject.ext.dependencies.mogoutils
+ compileOnly rootProject.ext.dependencies.mogocommons
+ compileOnly rootProject.ext.dependencies.mogoserviceapi
+ compileOnly rootProject.ext.dependencies.modulecommon
+ compileOnly rootProject.ext.dependencies.androidxconstraintlayout
+ compileOnly rootProject.ext.dependencies.arouter
+ compileOnly rootProject.ext.dependencies.aiassist
+ kapt rootProject.ext.dependencies.aroutercompiler
+ compileOnly rootProject.ext.dependencies.androidxrecyclerview
+ implementation rootProject.ext.dependencies.androidxappcompat
+ implementation rootProject.ext.dependencies.kotlinstdlibjdk7
+ implementation rootProject.ext.dependencies.androidxccorektx
+ implementation rootProject.ext.dependencies.litezxing
+ implementation rootProject.ext.dependencies.androidxroomruntime
+ implementation rootProject.ext.dependencies.androidxroomktx
+ kapt rootProject.ext.dependencies.androidxroomcompiler
+
+ if( Boolean.valueOf(RELEASE) ){
+ implementation rootProject.ext.dependencies.modulepushbase
+ } else {
+ implementation project(":modules:mogo-module-push-base")
+ }
+}
+
+apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()
diff --git a/modules/mogo-module-push/consumer-rules.pro b/modules/mogo-module-push/consumer-rules.pro
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/modules/mogo-module-push/gradle.properties b/modules/mogo-module-push/gradle.properties
new file mode 100644
index 0000000000..cf466ecef3
--- /dev/null
+++ b/modules/mogo-module-push/gradle.properties
@@ -0,0 +1,3 @@
+GROUP=com.mogo.module
+POM_ARTIFACT_ID=module-push
+VERSION_CODE=1
diff --git a/modules/mogo-module-push/proguard-rules.pro b/modules/mogo-module-push/proguard-rules.pro
new file mode 100644
index 0000000000..f1b424510d
--- /dev/null
+++ b/modules/mogo-module-push/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/modules/mogo-module-push/src/main/AndroidManifest.xml b/modules/mogo-module-push/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..3334a218b2
--- /dev/null
+++ b/modules/mogo-module-push/src/main/AndroidManifest.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-push/src/main/java/com/mogo/module/push/Config.kt b/modules/mogo-module-push/src/main/java/com/mogo/module/push/Config.kt
new file mode 100644
index 0000000000..d5de33e9d7
--- /dev/null
+++ b/modules/mogo-module-push/src/main/java/com/mogo/module/push/Config.kt
@@ -0,0 +1,20 @@
+package com.mogo.module.push
+
+object Config {
+ const val PUSH_TYPE = 100 //注册长连接类型
+ const val NEWS_ARRIVE = "news_arrive" //Push到达
+ const val NEWS_CARD_SHOW = "news_card_show"//push 展示
+ const val NEWS_CARD_DISAPPEAR = "news_card_disappear"// push 展示到期,自动消失
+ const val NEWS_CARD_CLICK = "news_card_click"//点击消息体
+ const val NEWS_CARD_SWIPE = "news_card_swipe"//划掉消息
+ const val NEWS_CARD_CLICK_BTN = "news_card_click_btn"//点击按钮
+
+
+ const val NEWS_HISTORY_OPEN = "news_history_open"//打开消息列表
+ const val NEWS_HISTORY_CLOSE = "news_history_close"//关闭消息列表
+ const val NEWS_HISTORY_ALL_CLEAR = "news_history_all_clear"//清除消息列表
+ const val NEWS_HISTORY_ONE_CLEAR = "news_history_one_clear"//清除消息历史中的消息
+ const val NEWS_HISTORY_ONE_CLICK = "news_history_one_click"//点击消息历史中的消息
+
+
+}
\ No newline at end of file
diff --git a/modules/mogo-module-push/src/main/java/com/mogo/module/push/PushModuleProvider.java b/modules/mogo-module-push/src/main/java/com/mogo/module/push/PushModuleProvider.java
new file mode 100644
index 0000000000..83ef3d1b42
--- /dev/null
+++ b/modules/mogo-module-push/src/main/java/com/mogo/module/push/PushModuleProvider.java
@@ -0,0 +1,89 @@
+package com.mogo.module.push;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.mogo.map.listener.IMogoMapListener;
+import com.mogo.map.location.IMogoLocationListener;
+import com.mogo.map.marker.IMogoMarkerClickListener;
+import com.mogo.map.navi.IMogoNaviListener;
+import com.mogo.module.push.base.PushUIConstants;
+import com.mogo.module.push.repository.PushRepository;
+import com.mogo.module.push.utils.HandlerUtils;
+import com.mogo.service.module.IMogoModuleLifecycle;
+import com.mogo.service.module.IMogoModuleProvider;
+
+
+@Route(path = PushUIConstants.PATH)
+public class PushModuleProvider implements IMogoModuleProvider {
+ @Override
+ public Fragment createFragment(Context context, Bundle data) {
+ return null;
+ }
+
+ @Override
+ public View createView(Context context) {
+ return null;
+ }
+
+ @NonNull
+ @Override
+ public String getModuleName() {
+ return "";
+ }
+
+ @Override
+ public IMogoModuleLifecycle getCardLifecycle() {
+ return null;
+ }
+
+ @Override
+ public IMogoMapListener getMapListener() {
+ return null;
+ }
+
+ @Override
+ public int getType() {
+ return 0;
+ }
+
+ @Override
+ public IMogoNaviListener getNaviListener() {
+ return null;
+ }
+
+ @Override
+ public IMogoLocationListener getLocationListener() {
+ return null;
+ }
+
+ @Override
+ public IMogoMarkerClickListener getMarkerClickListener() {
+ return null;
+ }
+
+ @Override
+ public String getAppPackage() {
+ return " ";
+ }
+
+ @Override
+ public String getAppName() {
+ return " ";
+ }
+
+ @Override
+ public void init(final Context context) {
+ HandlerUtils.INSTANCE.getMBgHandler().post(new Runnable() {
+ @Override
+ public void run() {
+ PushRepository.Companion.init(context);
+ }
+ });
+ }
+}
diff --git a/modules/mogo-module-push/src/main/java/com/mogo/module/push/activity/PushMessageActivity.kt b/modules/mogo-module-push/src/main/java/com/mogo/module/push/activity/PushMessageActivity.kt
new file mode 100644
index 0000000000..195aa828ab
--- /dev/null
+++ b/modules/mogo-module-push/src/main/java/com/mogo/module/push/activity/PushMessageActivity.kt
@@ -0,0 +1,126 @@
+package com.mogo.module.push.activity
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.View
+import androidx.appcompat.app.AppCompatActivity
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.mogo.module.push.Config
+import com.mogo.module.push.R
+import com.mogo.module.push.adapter.PushMessageAdapter
+import com.mogo.module.push.base.PushUIConstants
+import com.mogo.module.push.model.PushBean
+import com.mogo.module.push.repository.PushRepository
+import com.mogo.module.push.utils.AnalyticsUtils
+import com.mogo.module.push.utils.HandlerUtils
+import com.mogo.module.push.utils.startClearAnimator
+import com.mogo.module.push.view.PushItemAnimator
+import com.mogo.module.push.view.SwipeItemLayout
+import com.mogo.module.push.view.getApis
+import com.mogo.module.push.viewmodel.MessageViewModel
+import com.mogo.service.intent.IMogoIntentListener
+import com.mogo.utils.UiThreadHandler
+import com.mogo.utils.logger.Logger
+import kotlinx.android.synthetic.main.module_push_message_activity.*
+
+@Route(path = PushUIConstants.Push_MESSAGE_ACTIVITY_PATH)
+class PushMessageActivity : AppCompatActivity(), IMogoIntentListener {
+ private lateinit var viewModel: MessageViewModel
+ private var adapter = PushMessageAdapter()
+ private var clearing = false
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+// window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
+ setContentView(R.layout.module_push_message_activity)
+ AnalyticsUtils.track(Config.NEWS_HISTORY_OPEN)
+ module_push_activity_close.setOnClickListener {
+ AnalyticsUtils.track(Config.NEWS_HISTORY_CLOSE)
+ finish()
+ }
+ module_push_activity_clear.setOnClickListener {
+ AnalyticsUtils.track(Config.NEWS_HISTORY_ALL_CLEAR)
+ if (!clearing) {
+ clearing = true
+ startClearAnimator(module_push_activity_recycler_view) {
+ viewModel.deleteAll()
+ clearing = false
+ }
+ }
+ }
+ adapter.deletePushBean = object : PushMessageAdapter.PushAdapterListener {
+ override fun lastItemShow(show: Boolean) {
+ if (!show && !clearing) {
+ val size = viewModel.list?.size ?: 0
+ if (size > 0 && size < module_push_activity_recycler_view.childCount) {
+ return
+ }
+ }
+ module_push_activity_clear.visibility =
+ if (show) View.VISIBLE else View.GONE
+ }
+
+ override fun deleteBean(bean: PushBean, action: Boolean) {
+ if (clearing) return
+ viewModel.delete(bean)
+ if (action) {
+ AnalyticsUtils.track(Config.NEWS_HISTORY_ONE_CLICK, "title", bean.title)
+ finish()
+ } else {
+ AnalyticsUtils.track(Config.NEWS_HISTORY_ONE_CLEAR, "title", bean.title)
+ adapter.removeItem(bean)
+ if (adapter.datas?.size ?: 0 == 0) {
+ module_push_activity_not_data.visibility = View.VISIBLE
+ }
+ updateHistoryMessageCount()
+ }
+ }
+ }
+ module_push_activity_recycler_view.layoutManager = LinearLayoutManager(this)
+ module_push_activity_recycler_view.adapter = adapter
+ module_push_activity_recycler_view.itemAnimator = PushItemAnimator()
+ module_push_activity_recycler_view.addOnItemTouchListener(
+ SwipeItemLayout.OnSwipeItemTouchListener(this)
+ )
+ viewModel = MessageViewModel(object :
+ MessageViewModel.MessageListChange {
+ override fun messageListChange(list: MutableList?) {
+ runOnUiThread {
+ var size = list?.size ?: 0
+ adapter.datas = list
+ module_push_activity_not_data.visibility = if (size > 0) View.GONE else View.VISIBLE
+ updateHistoryMessageCount()
+ }
+ }
+ })
+
+ getApis(this).intentManagerApi.registerIntentListener(Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this)
+ }
+
+ private fun updateHistoryMessageCount(){
+ HandlerUtils.mBgHandler.post{
+ var count = PushRepository.pushRepository.pushBeanDao.getAllCount()
+ UiThreadHandler.post {
+ module_push_activity_title.text = if (count > 0) "历史消息(${count})" else "历史消息"
+ }
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ adapter.notifyDataSetChanged()
+ }
+
+ override fun onIntentReceived(intentStr: String?, intent: Intent?) {
+ if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(intentStr)) {
+ Logger.d("PushMessageActivity", "close by home key.")
+ finish()
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ getApis(this).intentManagerApi.unregisterIntentListener(Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this)
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-push/src/main/java/com/mogo/module/push/adapter/PushMessageAdapter.kt b/modules/mogo-module-push/src/main/java/com/mogo/module/push/adapter/PushMessageAdapter.kt
new file mode 100644
index 0000000000..868a609d29
--- /dev/null
+++ b/modules/mogo-module-push/src/main/java/com/mogo/module/push/adapter/PushMessageAdapter.kt
@@ -0,0 +1,127 @@
+package com.mogo.module.push.adapter
+
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.mogo.module.push.R
+import com.mogo.module.push.model.PushBean
+import com.mogo.module.push.repository.PushRepository
+import com.mogo.module.push.utils.dealSchema
+import com.mogo.module.push.utils.stringConverterBitmap
+import com.mogo.module.push.view.getApis
+import com.mogo.service.imageloader.MogoImageView
+import kotlin.math.abs
+
+class PushMessageAdapter : RecyclerView.Adapter() {
+ interface PushAdapterListener {
+ fun deleteBean(bean: PushBean, action: Boolean)
+
+ fun lastItemShow(show: Boolean)
+ }
+
+ var onAttachStateChangeListener = object : View.OnAttachStateChangeListener {
+ override fun onViewDetachedFromWindow(p0: View?) {
+ deletePushBean.lastItemShow(false)
+ }
+
+ override fun onViewAttachedToWindow(p0: View?) {
+ deletePushBean.lastItemShow(true)
+ }
+
+ }
+
+ lateinit var deletePushBean: PushAdapterListener
+
+ var datas: MutableList? = null
+ set(value) {
+ field = value
+ notifyDataSetChanged()
+ }
+
+ fun removeItem(bean: PushBean) {
+ datas?.let {
+ val position = it.indexOf(bean)
+ if (position >= 0) {
+ it.removeAt(position)
+ notifyItemRemoved(position)
+ }
+ if (itemCount == 0) {
+ deletePushBean.lastItemShow(false)
+ }
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MessageViewHolder {
+ return MessageViewHolder(
+ LayoutInflater.from(parent.context).inflate(
+ R.layout.module_push_message_item,
+ parent,
+ false
+ )
+ )
+ }
+
+ override fun getItemCount(): Int {
+ return datas?.size ?: 0
+ }
+
+ override fun onBindViewHolder(holder: MessageViewHolder, position: Int) {
+ holder.setPushBean(datas!![position], position)
+ }
+
+
+ inner class MessageViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ private val pushAppIcon: MogoImageView = view.findViewById(R.id.module_push_item_app_icon)
+ private val pushTitle: TextView = view.findViewById(R.id.module_push_item_title)
+ private val pushContent: TextView = view.findViewById(R.id.module_push_item_content)
+ private val pushImage: MogoImageView = view.findViewById(R.id.module_push_item_image)
+ private val pushTimer: TextView = view.findViewById(R.id.module_push_item_time)
+ private val pushDelete: TextView = view.findViewById(R.id.module_push_item_delete)
+ private val pushClick: View = view.findViewById(R.id.module_push_item_click)
+
+ fun setPushBean(bean: PushBean, position: Int) {
+ if (position == (datas?.size ?: 0) - 1) {
+ itemView.addOnAttachStateChangeListener(onAttachStateChangeListener)
+ } else {
+ itemView.removeOnAttachStateChangeListener(onAttachStateChangeListener)
+ }
+ pushDelete.setOnClickListener {
+ deletePushBean.deleteBean(bean, false)
+ }
+ if (!bean.mainSchema.isNullOrEmpty()) {
+ pushClick.setOnClickListener {
+ dealSchema(bean.mainSchema, itemView.context)
+ deletePushBean.deleteBean(bean, true)
+ }
+ } else {
+ pushClick.setOnClickListener(null)
+ }
+ getApis(itemView.context).imageLoaderApi.displayImage(bean.appIcon, pushAppIcon)
+ pushTitle.text = bean.title
+ pushContent.text = bean.content
+ pushContent.visibility = if (bean.content.isNullOrEmpty()) View.GONE else View.VISIBLE
+ if (bean.QRCode.isNullOrEmpty() && bean.imageUrl.isNotEmpty()) {
+ getApis(itemView.context).imageLoaderApi.displayImage(bean.imageUrl, pushImage)
+ }
+ if (!bean.QRCode.isNullOrEmpty()) {
+ pushImage.setImageBitmap(
+ stringConverterBitmap(
+ bean.QRCode,
+ pushImage.context.resources.getDimensionPixelSize(R.dimen.module_push_message_item_image_size),
+ pushImage.context.resources.getDimensionPixelSize(R.dimen.module_push_message_item_image_size)
+ )
+ )
+ }
+ val diff = abs((System.currentTimeMillis() - bean.timestamp) / 1000).toInt()
+ pushTimer.text = when {
+ diff == 0 -> "现在"
+ diff < 60 -> "${diff}秒前"
+ diff < 60 * 60 -> "${diff / 60}分钟前"
+ diff < 60 * 60 * 24 -> "${diff / 60 / 60}小时前"
+ else -> "${diff / 60 / 60 / 24}天前"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-push/src/main/java/com/mogo/module/push/dao/PushBeanDao.kt b/modules/mogo-module-push/src/main/java/com/mogo/module/push/dao/PushBeanDao.kt
new file mode 100644
index 0000000000..ff2548093d
--- /dev/null
+++ b/modules/mogo-module-push/src/main/java/com/mogo/module/push/dao/PushBeanDao.kt
@@ -0,0 +1,25 @@
+package com.mogo.module.push.dao
+
+import androidx.room.*
+import com.mogo.module.push.model.PushBean
+
+@Dao
+interface PushBeanDao {
+ @Query("SELECT * FROM pushBean ORDER BY timestamp DESC")
+ fun getAll(): MutableList
+
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
+ fun insertAll(vararg bean: PushBean)
+
+ @Delete
+ fun delete(vararg bean: PushBean)
+
+ @Query("DELETE FROM pushBean")
+ fun deleteAll()
+
+ @Query("SELECT count(1) FROM pushBean")
+ fun getAllCount(): Int
+
+ @Query("DELETE FROM pushBean WHERE timestamp IN (SELECT MIN(timestamp) FROM pushBean)")
+ fun deleteMin()
+}
\ No newline at end of file
diff --git a/modules/mogo-module-push/src/main/java/com/mogo/module/push/dao/PushBeanDatabase.kt b/modules/mogo-module-push/src/main/java/com/mogo/module/push/dao/PushBeanDatabase.kt
new file mode 100644
index 0000000000..7631c88a18
--- /dev/null
+++ b/modules/mogo-module-push/src/main/java/com/mogo/module/push/dao/PushBeanDatabase.kt
@@ -0,0 +1,10 @@
+package com.mogo.module.push.dao
+
+import androidx.room.Database
+import androidx.room.RoomDatabase
+import com.mogo.module.push.model.PushBean
+
+@Database(entities = [PushBean::class], version = 1)
+abstract class PushBeanDatabase : RoomDatabase() {
+ abstract fun pushBeanDao(): PushBeanDao
+}
\ No newline at end of file
diff --git a/modules/mogo-module-push/src/main/java/com/mogo/module/push/model/PushBean.kt b/modules/mogo-module-push/src/main/java/com/mogo/module/push/model/PushBean.kt
new file mode 100644
index 0000000000..452a62f19e
--- /dev/null
+++ b/modules/mogo-module-push/src/main/java/com/mogo/module/push/model/PushBean.kt
@@ -0,0 +1,54 @@
+package com.mogo.module.push.model
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.Ignore
+import androidx.room.PrimaryKey
+import com.google.gson.annotations.SerializedName
+
+@Entity
+data class PushBean(
+ @Ignore
+ val speedLimit: Int = 0, //超过速度后延迟显示
+ @Ignore
+ var showTimeout: Int = 0, //显示等待时长
+ @Ignore
+ var showTimeoutShadow: Int = 0, // 显示等待时长备份
+ @ColumnInfo(name = "icon")
+ var appIcon: String = "", //目标app icon图标地址
+ @ColumnInfo(name = "title")
+ var title: String = "", //标题
+ @ColumnInfo(name = "content")
+ var content: String = "", //详细内容
+ @ColumnInfo(name = "image")
+ var imageUrl: String = "", //图片地址
+ @ColumnInfo(name = "qr")
+ var QRCode: String = "", //二维码地址
+ @Ignore
+ val tts: String = "", //语音播报词
+ @ColumnInfo(name = "scheme")
+ var mainSchema: String = "", //schema跳转协议
+ @Ignore
+ val mainVoiceCmd: List? = null, //触发主schema 命令词
+ @Ignore
+ val cancelVoiceCmd: List? = null, //隐藏当前push命令词
+ @Ignore
+ val buttons: List