Merge branch 'feature/v1.0.2' into feature/v1.0.3

This commit is contained in:
unknown
2020-03-25 13:41:12 +08:00
45 changed files with 471 additions and 153 deletions

View File

@@ -9,7 +9,7 @@ android {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion
versionCode rootProject.ext.android.versionCode
versionName "${rootProject.ext.android.versionName}"
versionName "${rootProject.ext.android.versionName}.${getMonthAndDay()}"
applicationId rootProject.ext.android.applicationId
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -141,6 +141,12 @@ android.applicationVariants.all { variant ->
}
}
def getMonthAndDay(){
SimpleDateFormat sdf = new SimpleDateFormat("MMddHH")
return sdf.format(new Date())
}
def getCurrentDate() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss")
return sdf.format(new Date())

View File

@@ -5,7 +5,7 @@ ext {
buildToolsVersion: "29.0.2",
minSdkVersion : 19,
targetSdkVersion : 22,
versionCode : 2,
versionCode : 3,
versionName : "1.0.2",
]

View File

@@ -0,0 +1,65 @@
package com.mogo.utils;
import android.os.Handler;
import android.os.HandlerThread;
/**
* @author congtaowang
* @since 2020-03-23
* <p>
* 描述
*/
public class WorkThreadHandler {
private Handler mHandler;
private HandlerThread mThread;
private WorkThreadHandler() {
// private constructor
mThread = new HandlerThread( "work-thread-handler" );
mThread.start();
mHandler = new Handler( mThread.getLooper() );
}
private static final class InstanceHolder {
private static final WorkThreadHandler INSTANCE = new WorkThreadHandler();
}
public static WorkThreadHandler getInstance() {
return InstanceHolder.INSTANCE;
}
private Object readResolve() {
// 阻止反序列化,必须实现 Serializable 接口
return InstanceHolder.INSTANCE;
}
private Object sToken = new Object();
public boolean post( Runnable r ) {
return mHandler != null && mHandler.post( r );
}
public boolean postDelayed(Runnable r, long delayMillis ) {
return mHandler != null && mHandler.postDelayed( r, delayMillis );
}
public Handler getWorkThreadHandler() {
return mHandler;
}
public boolean postOnceDelayed(Runnable r, long delayMillis ) {
if ( mHandler == null ) {
return false;
} else {
mHandler.removeCallbacks( r, sToken );
return mHandler.postDelayed( r, delayMillis );
}
}
public void removeCallbacks( Runnable runnable ) {
if ( mHandler != null ) {
mHandler.removeCallbacks( runnable );
}
}
}

View File

@@ -58,7 +58,7 @@ CARCHATTINGPROVIDER_VERSION=1.0.2.3-SNAPSHOT
# 在线车辆F
MOGO_MODULE_ONLINECAR_VERSION=1.0.1-SNAPSHOT
# v2x
MOGO_MODULE_V2X_VERSION=1.0.2-SNAPSHOT
MOGO_MODULE_V2X_VERSION=1.0.3-SNAPSHOT
# 媒体卡片
MOGO_MODULE_MEDIA_VERSION=1.0.1-SNAPSHOT
# 推送

View File

@@ -9,6 +9,7 @@ import android.location.Location;
import android.os.Bundle;
import android.os.SystemClock;
import android.os.Trace;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Interpolator;
@@ -33,6 +34,7 @@ import com.amap.api.navi.AMapNaviViewOptions;
import com.amap.api.navi.enums.AMapNaviViewShowMode;
import com.amap.api.navi.enums.AimLessMode;
import com.amap.api.navi.model.NaviInfo;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.map.IMogoMap;
import com.mogo.map.IMogoMapView;
import com.mogo.map.MogoLatLng;
@@ -93,70 +95,71 @@ public class AMapNaviViewWrapper implements IMogoMapView,
}
private void initMapView() {
if ( mMapView != null ) {
AMapNaviViewOptions options = mMapView.getViewOptions();
if ( options != null ) {
// 设置是否开启自动黑夜模式切换默认为false不自动切换
options.setAutoNaviViewNightMode( false );
// 设置6秒后是否自动锁车
options.setAutoLockCar( false );
// 设置路线上的摄像头气泡是否显示
options.setCameraBubbleShow( true );
// 设置路线相关的配置属性,如:路线的路况颜色,路线上是否显示摄像头气泡等。
// options.setRouteOverlayOptions( MapStyleUtils.getRouteOverlayOptions() );
// 设置自车的图片对象
options.setCarBitmap( BitmapFactory.decodeResource( getContext().getResources(),
R.drawable.ic_amap_navi_cursor ) );
// 设置指南针图标否在导航界面显示默认显示。true显示false隐藏。
options.setCompassEnabled( false );
// 黑夜模式
options.setNaviNight( true );
//设置路况光柱条是否显示(只适用于驾车导航,需要联网)。
options.setTrafficBarEnabled( false );
// 设置[实时交通图层开关按钮]是否显示(只适用于驾车导航,需要联网)。
options.setTrafficLayerEnabled( false );
// 设置导航界面是否显示路线全览按钮。
options.setRouteListButtonShow( false );
// 设置导航状态下屏幕是否一直开启。
options.setScreenAlwaysBright( true );
// 设置交通播报是否打开(只适用于驾车导航,需要联网)。
options.setTrafficInfoUpdateEnabled( true );
// 设置摄像头播报是否打开(只适用于驾车导航)。
options.setCameraInfoUpdateEnabled( true );
// 设置菜单按钮是否在导航界面显示。
options.setSettingMenuEnabled( false );
// 设置是否绘制显示交通路况的线路(彩虹线),拥堵-红色,畅通-绿色,缓慢-黄色,未知-蓝色。默认不绘制彩虹线。
options.setTrafficLine( true );
// 设置是否绘制牵引线(当前位置到目的地的指引线)。默认不绘制牵引线。
options.setLeaderLineEnabled( -1 );
// 设置导航界面UI是否显示。
options.setLayoutVisible( false );
// 设置是否自动画路
options.setAutoDrawRoute( false );
// 设置是否显示路口放大图(实景图)
options.setRealCrossDisplayShow( false );
// 设置是否显示路口放大图(路口模型图)
options.setModeCrossDisplayShow( false );
// 设置是否显示道路信息view
options.setLaneInfoShow( false );
// 设置是否自动改变缩放等级
options.setAutoChangeZoom( true );
// 设置是否自动全览模式,即在算路成功后自动进入全览模式
options.setAutoDisplayOverview( false );
// 设置路线转向箭头隐藏和显示
options.setNaviArrowVisible( false );
// 通过路线是否自动置灰,仅支持驾车导航
options.setAfterRouteAutoGray( true );
options.setZoom( 16 );
options.setPointToCenter( 0.5D, 0.5D );
// 2D模式
options.setTilt( 0 );
mMapView.setViewOptions( options );
}
mMapView.setRouteOverlayVisible( false );
mMapView.setCarOverlayVisible( false );
setUIMode( EnumMapUI.CarUp_2D, null );
if ( mMapView == null ) {
return;
}
AMapNaviViewOptions options = mMapView.getViewOptions();
if ( options != null ) {
// 设置是否开启自动黑夜模式切换默认为false不自动切换
options.setAutoNaviViewNightMode( false );
// 设置6秒后是否自动锁车
options.setAutoLockCar( false );
// 设置路线上的摄像头气泡是否显示
options.setCameraBubbleShow( true );
// 设置路线相关的配置属性,如:路线的路况颜色,路线上是否显示摄像头气泡等。
// options.setRouteOverlayOptions( MapStyleUtils.getRouteOverlayOptions() );
// 设置自车的图片对象
options.setCarBitmap( BitmapFactory.decodeResource( getContext().getResources(),
R.drawable.ic_amap_navi_cursor ) );
// 设置指南针图标否在导航界面显示默认显示。true显示false隐藏。
options.setCompassEnabled( false );
// 黑夜模式
options.setNaviNight( true );
//设置路况光柱条是否显示(只适用于驾车导航,需要联网)。
options.setTrafficBarEnabled( false );
// 设置[实时交通图层开关按钮]是否显示(只适用于驾车导航,需要联网)。
options.setTrafficLayerEnabled( false );
// 设置导航界面是否显示路线全览按钮。
options.setRouteListButtonShow( false );
// 设置导航状态下屏幕是否一直开启。
options.setScreenAlwaysBright( true );
// 设置交通播报是否打开(只适用于驾车导航,需要联网)。
options.setTrafficInfoUpdateEnabled( true );
// 设置摄像头播报是否打开(只适用于驾车导航)。
options.setCameraInfoUpdateEnabled( true );
// 设置菜单按钮是否在导航界面显示。
options.setSettingMenuEnabled( false );
// 设置是否绘制显示交通路况的线路(彩虹线),拥堵-红色,畅通-绿色,缓慢-黄色,未知-蓝色。默认不绘制彩虹线。
options.setTrafficLine( true );
// 设置是否绘制牵引线(当前位置到目的地的指引线)。默认不绘制牵引线。
options.setLeaderLineEnabled( -1 );
// 设置导航界面UI是否显示。
options.setLayoutVisible( false );
// 设置是否自动画路
options.setAutoDrawRoute( false );
// 设置是否显示路口放大图(实景图)
options.setRealCrossDisplayShow( false );
// 设置是否显示路口放大图(路口模型图)
options.setModeCrossDisplayShow( false );
// 设置是否显示道路信息view
options.setLaneInfoShow( false );
// 设置是否自动改变缩放等级
options.setAutoChangeZoom( false );
// 设置是否自动全览模式,即在算路成功后自动进入全览模式
options.setAutoDisplayOverview( false );
// 设置路线转向箭头隐藏和显示
options.setNaviArrowVisible( false );
// 通过路线是否自动置灰,仅支持驾车导航
options.setAfterRouteAutoGray( true );
options.setZoom( 16 );
options.setPointToCenter( 0.5D, 0.5D );
// 2D模式
options.setTilt( 0 );
mMapView.setViewOptions( options );
}
mMapView.setRouteOverlayVisible( false );
mMapView.setCarOverlayVisible( false );
setUIMode( EnumMapUI.CarUp_2D, null );
}
private void initListeners() {
@@ -389,6 +392,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
@Override
public void changeZoom( float zoom ) {
Logger.d( TAG, "changeZoom %s", zoom );
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
getMap().changeZoom( zoom );
}
@@ -429,11 +435,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
case CarUp_2D:
case CarUp_3D:
mMapView.setNaviMode( AMapNaviView.CAR_UP_MODE );
// TODO: 2020-03-16 车头朝上,需要固定车标
break;
case NorthUP_2D:
mMapView.setNaviMode( AMapNaviView.NORTH_UP_MODE );
// TODO: 2020-03-16 北朝上,需要动态改变车头车标
break;
}
if ( options == null ) {
@@ -465,6 +469,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
Logger.e( TAG, "latlng = null or is illegal" );
return;
}
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
loseLockMode();
mMapView.getMap().moveCamera( CameraUpdateFactory.newLatLng( new LatLng( latLng.lat, latLng.lng ) ) );
}
@@ -475,6 +482,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
if ( visible && NaviClient.getInstance( getContext() ).isNaviing() ) {
return;
}
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
if ( checkAMapView() ) {
MyLocationStyle style = mMapView.getMap().getMyLocationStyle();
style.showMyLocation( visible );
@@ -491,6 +501,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
if ( NaviClient.getInstance( getContext() ).isNaviing() ) {
return;
}
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
if ( checkAMapView() ) {
MyLocationStyle style = mMapView.getMap().getMyLocationStyle();
style.showMyLocation( true );
@@ -532,6 +545,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
@Override
public void recoverLockMode() {
if ( checkAMapView() ) {
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
Logger.d( TAG, "锁车" );
mMapView.recoverLockMode();
}
@@ -539,6 +555,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
@Override
public void loseLockMode() {
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
mockTouchEvent();
}
@@ -558,6 +577,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
@Override
public void setLockZoom( int var1 ) {
if ( checkAMapView() ) {
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
Logger.d( TAG, "锁定锁车比例尺" );
mMapView.setLockZoom( var1 );
}
@@ -595,7 +617,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
if ( checkAMapView() ) {
mMapView.setCarOverlayVisible( false );
showMyLocation( true );
NaviClient.getInstance( getContext() ).startAimlessMode( AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED );
NaviClient.getInstance( getContext() ).startAimlessMode();
}
}
@@ -654,6 +676,10 @@ public class AMapNaviViewWrapper implements IMogoMapView,
@Override
public void setPointToCenter( double mapCenterX, double mapCenterY ) {
if ( checkAMapView() ) {
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
Logger.d( TAG, "setPointToCenter(%s, %s)", mapCenterX, mapCenterY );
AMapNaviViewOptions options = mMapView.getViewOptions();
options.setPointToCenter( mapCenterX, mapCenterY );
mMapView.setViewOptions( options );
@@ -729,6 +755,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
return;
}
try {
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
LatLngBounds latLngBounds = MogoMapUtils.getLatLngBounds( carPosition, lonLats, lockCarPosition );
if ( !lockCarPosition ) {
loseLockMode();

View File

@@ -75,7 +75,7 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer {
mMogoMarkerOptions = null;
}
if ( mMarker != null ) {
mMarker.destroy();
mMarker.remove();
mMarker.setObject( null );
mMarker = null;
}

View File

@@ -6,6 +6,7 @@ import android.location.Location;
import com.amap.api.maps.model.Polyline;
import com.amap.api.navi.AMapNavi;
import com.amap.api.navi.enums.AimLessMode;
import com.amap.api.navi.enums.NaviType;
import com.amap.api.navi.model.NaviLatLng;
import com.mogo.map.MogoLatLng;
@@ -263,12 +264,13 @@ public class NaviClient implements IMogoNavi {
}
}
public void startAimlessMode( int cameraAndSpecialroadDetected ) {
mAMapNavi.startAimlessMode( cameraAndSpecialroadDetected );
@Override
public void startAimlessMode() {
mAMapNavi.startAimlessMode( AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED );
}
@Override
public void stopAimlessMode() {
mAMapNavi.stopAimlessMode();
}
}

View File

@@ -93,10 +93,30 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
return;
}
addEndPoints();
showPathsBound( mCalculatePathItems.get( 0 ).getPath().getBoundsForPath() );
showPathsBound( getBounds() );
renderPathOverlay( mCalculatePathItems );
}
private LatLngBounds getBounds(){
if ( mCalculatePathItems == null ) {
return null;
}
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for ( CalculatePathItem calculatePathItem : mCalculatePathItems ) {
if ( calculatePathItem == null ) {
continue;
}
try {
LatLngBounds bounds = calculatePathItem.getPath().getBoundsForPath();
builder.include( bounds.northeast );
builder.include( bounds.southwest );
} catch ( Exception e ) {
e.printStackTrace();
}
}
return builder.build();
}
/**
* 按pathId升序排序
*
@@ -148,6 +168,9 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
* 将规划好的路径显示在视野内
*/
private void showPathsBound( LatLngBounds bounds ) {
if ( bounds == null ) {
return;
}
checkAMapInstance();
mAMap.animateCamera(
CameraUpdateFactory.newLatLngBoundsRect( bounds, mBoundRect.left, mBoundRect.right,

View File

@@ -2,17 +2,22 @@ package com.mogo.map.impl.amap.overlay;
import android.content.Context;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.util.Log;
import com.amap.api.maps.AMap;
import com.amap.api.maps.model.NavigateArrowOptions;
import com.amap.api.maps.model.Polyline;
import com.amap.api.navi.model.AMapNaviLocation;
import com.amap.api.navi.model.AMapNaviPath;
import com.amap.api.navi.model.NaviInfo;
import com.amap.api.navi.model.RouteOverlayOptions;
import com.amap.api.navi.view.RouteOverLay;
import com.mogo.map.impl.amap.utils.MapStyleUtils;
import com.mogo.utils.logger.Logger;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
/**
* @author congtaowang
@@ -36,6 +41,8 @@ public class RouteOverLayWrapper {
private int mEndBitmapResId = 0;
private int mZIndex = 0;
private static RouteOverlayOptions sOptions;
public RouteOverLayWrapper( Context context,
AMap mAMap,
AMapNaviPath mPath ) {
@@ -49,7 +56,10 @@ public class RouteOverLayWrapper {
return;
}
mRouteOverLay = new RouteOverLay( mAMap, mPath, mContextRef.get() );
mRouteOverLay.setRouteOverlayOptions( MapStyleUtils.getRouteOverlayOptions() );
if ( sOptions == null ) {
sOptions = MapStyleUtils.getRouteOverlayOptions();
}
mRouteOverLay.setRouteOverlayOptions( sOptions );
mRouteOverLay.setTrafficLine( true );
mRouteOverLay.setRouteOverlayVisible( true );
mRouteOverLay.setTrafficLightsVisible( true );
@@ -58,6 +68,7 @@ public class RouteOverLayWrapper {
mRouteOverLay.setNaviArrowVisible( true );
mRouteOverLay.setLightsVisible( true );
mRouteOverLay.setTrafficLightsVisible( mIsTrafficLightsVisible );
hookRouteArrow();
if ( mStartBitmapResId != 0 ) {
try {
@@ -166,6 +177,19 @@ public class RouteOverLayWrapper {
}
}
private void hookRouteArrow() {
if ( mRouteOverLay != null && sOptions != null ) {
try {
Field field = mRouteOverLay.getClass().getDeclaredField( "naviArrow" );
field.setAccessible( true );
field.set( mRouteOverLay, mAMap.addNavigateArrow( new NavigateArrowOptions().topColor( sOptions.getArrowColor() ).width( sOptions.getLineWidth() ).sideColor( sOptions.getArrowSideColor() ) ) );
Logger.d( TAG, "hook 成功。" );
} catch ( Exception e ) {
e.printStackTrace();
}
}
}
public Polyline getTrafficColorfulPolyline() {
if ( mRouteOverLay != null ) {
return mRouteOverLay.mTrafficColorfulPolyline;

View File

@@ -60,6 +60,8 @@ public class MapStyleUtils {
options.setPassRoute( colorToBitmap( ColorEnum.light_gray.getColor() ) );
// 设置路线虚线纹理
options.setFairWayRes( colorToBitmap( ColorEnum.route_overlay_line_normal.getColor() ) );
options.setArrowColor( Color.WHITE ); // 高德地图内部配置颜色
options.setArrowSideColor( 1990523135 ); // 高德地图内部配置颜色
return options;
}

View File

@@ -148,4 +148,14 @@ public interface IMogoNavi {
* @param listener
*/
void registerCarLocationChangedListener( IMogoCarLocationChangedListener listener );
/**
* 打开巡航模式
*/
void startAimlessMode();
/**
* 关闭巡航模式
*/
void stopAimlessMode();
}

View File

@@ -180,4 +180,18 @@ public class MogoNavi implements IMogoNavi {
mDelegate.registerCarLocationChangedListener( listener );
}
}
@Override
public void startAimlessMode() {
if ( mDelegate != null ) {
mDelegate.startAimlessMode();
}
}
@Override
public void stopAimlessMode() {
if ( mDelegate != null ) {
mDelegate.stopAimlessMode();
}
}
}

View File

@@ -52,7 +52,7 @@ public class MarkerCarInfo implements Serializable {
this.carLiveInfo = carLiveInfo;
}
class CarLiveInfo implements Serializable {
public static class CarLiveInfo implements Serializable {
//rtmp视频直播地址rtmp://
private String videoUrl;
//直播频道【直播心跳接口参数】C_1

View File

@@ -23,6 +23,8 @@ import com.mogo.service.statusmanager.IMogoMsgCenterListener;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.WorkThreadHandler;
import com.mogo.utils.logger.Logger;
import java.util.ArrayDeque;
@@ -87,7 +89,9 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements
@Override
public void onReceive( Context context, Intent intent ) {
try {
refreshTimeAndDate();
WorkThreadHandler.getInstance().post( () -> {
refreshTimeAndDate();
} );
} catch ( Exception e ) {
Logger.e( TAG, e, "error. " );
}
@@ -164,7 +168,14 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements
String timeStr = getContext().getResources().getString( R.string.module_ext_str_time_format, hour, minute > 9 ? String.valueOf( minute ) : "0" + minute );
String dateStr = getContext().getResources().getString( R.string.module_ext_str_date_format, month + 1, day, mWeeks[week - 1] );
mView.renderTime( dateStr, timeStr );
UiThreadHandler.post( () -> {
try {
mView.renderTime( dateStr, timeStr );
} catch ( Exception e ) {
e.printStackTrace();
}
} );
}
@Override
@@ -208,7 +219,7 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements
changeAutoSwitchVoiceTipsWordsStatus( true );
}
private void changeAutoSwitchVoiceTipsWordsStatus(boolean autoChange){
private void changeAutoSwitchVoiceTipsWordsStatus( boolean autoChange ) {
if ( !mHasTipWords ) {
return;
}

View File

@@ -195,6 +195,8 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mCoverUpLayout = findViewById( R.id.module_main_id_cover_up );
mCardCoverUpBottomLayout = findViewById( R.id.module_main_id_card_cover_up_bottom );
// 避免事件穿透导致地图被滑动
mLeftShadowFrame.setOnClickListener( view -> {} );
WindowViewHandler.init( mFloatingLayout );
}
@@ -281,12 +283,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
if ( size == 0 ) {
showLayout();
} else if ( size == 1 ) {
UiThreadHandler.postDelayed( new Runnable() {
@Override
public void run() {
mMogoMapUIController.setPointToCenter( 0.5, 0.5 );
}
}, 1000 );
hideLayout();
}
} );

View File

@@ -56,8 +56,8 @@ public class HorizentalStackTransformer extends HorizentalBaseTransformer {
page.setTranslationX( -page.getHeight() * position + ( page.getHeight() * 0.5f ) * ( 1 - scale ) + spaceBetweenFirAndSecHeight * position );
}else{
float currentPage;
if(offsetScroll > 0.2f){
currentPage = 0.2f;
if(offsetScroll > 0.1f){
currentPage = 0.1f;
}else{
currentPage = offsetScroll;
}

View File

@@ -2,7 +2,7 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient android:angle="270" android:endColor="#00222222" android:startColor="#99000000" />
<gradient android:angle="270" android:endColor="#00222222" android:startColor="#79000000" />
</shape>
</item>
</selector>

View File

@@ -64,7 +64,7 @@
android:id="@+id/module_main_id_card_cover_up_bottom"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_26"
android:layout_marginTop="@dimen/cards_container_dp_600"
android:layout_marginTop="@dimen/cards_container_shadow_dp_margin_top"
android:layout_marginLeft="@dimen/dp_64"
android:layout_marginRight="@dimen/dp_64"
android:visibility="invisible"

View File

@@ -14,5 +14,6 @@
<dimen name="module_main_card_cover_up_margin">352px</dimen>
<dimen name="cards_container_dp_600">320px</dimen>
<dimen name="cards_container_shadow_dp_margin_top">319px</dimen>
</resources>

View File

@@ -13,5 +13,6 @@
<dimen name="module_main_top_shadow_height">270px</dimen>
<dimen name="module_main_card_cover_up_margin">660px</dimen>
<dimen name="cards_container_dp_600">600px</dimen>
<dimen name="cards_container_shadow_dp_margin_top">599px</dimen>
</resources>

View File

@@ -17,6 +17,7 @@ import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
import com.mogo.map.navi.IMogoNavi;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.module.common.MogoModulePaths;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.intent.IMogoIntentManager;
@@ -82,12 +83,11 @@ public class MapPresenter extends Presenter<MapView> implements
mView.getUIController().changeMapMode(EnumMapUI.CarUp_2D);
} else if (opera_type == 1) {
mView.getUIController().changeMapMode(EnumMapUI.NorthUP_2D);
AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null);
//AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null);
} else if (opera_type == 2) {
mView.getUIController().changeMapMode(EnumMapUI.CarUp_3D);
AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null);
//AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null);
}
}
@@ -156,24 +156,18 @@ public class MapPresenter extends Presenter<MapView> implements
@Override
public void onCreate(@NonNull LifecycleOwner owner) {
super.onCreate(owner);
mMogoMapService = (IMogoMapService) ARouter.getInstance()
.build(MogoServicePaths.PATH_SERVICES_MAP)
.navigation(getContext());
mMogoIntentManager = (IMogoIntentManager) ARouter.getInstance()
.build(MogoServicePaths.PATH_INTENT_MANAGER)
.navigation(getContext());
mSearchManager = (IMogoSearchManager) ARouter.getInstance()
.build(MogoServicePaths.PATH_SEARCH_MANAGER)
.navigation(getContext());
IMogoServiceApis apis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( getContext() );
mMogoMapService = apis.getMapServiceApi();
mMogoIntentManager = apis.getIntentManagerApi();
mSearchManager = apis.getSearchManagerApi();
IMogoNavi mogoNavi = mMogoMapService.getNavi(getContext());
mogoNavi.setCalculatePathDisplayBounds(new Rect(
ResourcesHelper.getDimensionPixelSize(getContext(), R.dimen.dp_730)
+ WindowUtils.dip2px(getContext(), 80),
ResourcesHelper.getDimensionPixelSize(getContext(), R.dimen.dp_120)
+ WindowUtils.dip2px(getContext(), 80),
WindowUtils.dip2px(getContext(), 80),
WindowUtils.dip2px(getContext(), 80)
ResourcesHelper.getDimensionPixelSize(getContext(), R.dimen.module_map_display_overview_left_margin),
ResourcesHelper.getDimensionPixelSize(getContext(), R.dimen.module_map_display_overview_top_margin),
ResourcesHelper.getDimensionPixelSize(getContext(), R.dimen.module_map_display_overview_right_margin),
ResourcesHelper.getDimensionPixelSize(getContext(), R.dimen.module_map_display_overview_bottom_margin)
));
}
@@ -252,7 +246,7 @@ public class MapPresenter extends Presenter<MapView> implements
AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null);
case VoiceConstants.CMD_MAP_NORTH_UP_MODE:
mView.getUIController().changeMapMode(EnumMapUI.NorthUP_2D);
AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null);
//AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null);
break;
case VoiceConstants.CMD_MAP_3D_UN_WAKEUP:

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="module_map_display_overview_left_margin">558px</dimen>
<dimen name="module_map_display_overview_top_margin">174px</dimen>
<dimen name="module_map_display_overview_bottom_margin">32px</dimen>
<dimen name="module_map_display_overview_right_margin">80px</dimen>
</resources>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="module_map_display_overview_left_margin">977px</dimen>
<dimen name="module_map_display_overview_top_margin">249px</dimen>
<dimen name="module_map_display_overview_bottom_margin">61px</dimen>
<dimen name="module_map_display_overview_right_margin">80px</dimen>
</resources>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="module_map_display_overview_left_margin">977px</dimen>
<dimen name="module_map_display_overview_top_margin">249px</dimen>
<dimen name="module_map_display_overview_bottom_margin">61px</dimen>
<dimen name="module_map_display_overview_right_margin">80px</dimen>
</resources>

View File

@@ -45,7 +45,6 @@ dependencies {
annotationProcessor rootProject.ext.dependencies.aroutercompiler
implementation rootProject.ext.dependencies.rxjava
implementation rootProject.ext.dependencies.rxandroid
// implementation rootProject.ext.dependencies.moduleonlinecar
if (Boolean.valueOf(RELEASE)) {
api rootProject.ext.dependencies.mogomap

View File

@@ -12,10 +12,15 @@ import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.service.marker.MapMarkerManager;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.adas.IMogoADASController;
import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.cardmanager.IMogoCardManager;
import com.mogo.service.connection.IMogoSocketManager;
import com.mogo.service.datamanager.IMogoDataManager;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.imageloader.IMogoImageloader;
import com.mogo.service.intent.IMogoIntentManager;
import com.mogo.service.launcher.IMogoLauncher;
import com.mogo.service.map.IMogoMapService;
import com.mogo.service.module.IMogoActionManager;
import com.mogo.service.module.IMogoRegisterCenter;
@@ -45,6 +50,11 @@ public class MarkerServiceHandler {
private static IMogoAnalytics mMogoAnalytics;
private static IMogoRegisterCenter mRegisterCenter;
private static IMogoActionManager mActionManager;
private static IMogoDataManager mDataManager;
private static IMogoIntentManager mIntentManager;
private static IMogoADASController mADASController;
private static IMogoLauncher mLauncher;
private static IMogoFragmentManager mFragmentManager;
private static MapMarkerManager mMapMarkerManager;
@@ -62,6 +72,11 @@ public class MarkerServiceHandler {
mLocationClient = mMapService.getSingletonLocationClient( context );
mRegisterCenter = mApis.getRegisterCenterApi();
mActionManager = mApis.getActionManagerApi();
mDataManager = mApis.getDataManagerApi();
mIntentManager = mApis.getIntentManagerApi();
mADASController = mApis.getAdasControllerApi();
mLauncher = mApis.getLauncherApi();
mFragmentManager = mApis.getFragmentManagerApi();
mMapMarkerManager = MapMarkerManager.getInstance();
mMapMarkerManager.init( context );
@@ -119,6 +134,26 @@ public class MarkerServiceHandler {
return mActionManager;
}
public static IMogoIntentManager getIntentManager() {
return mIntentManager;
}
public static IMogoADASController getADASController() {
return mADASController;
}
public static IMogoLauncher getLauncher() {
return mLauncher;
}
public static IMogoFragmentManager getFragmentManager() {
return mFragmentManager;
}
public static IMogoDataManager getDataManager() {
return mDataManager;
}
//TODO -------------以下方法是临时过度使用的后面统一使用getMapMarkerManager进行调用
/**

View File

@@ -152,6 +152,8 @@ public class MogoServices implements IMogoMapListener,
private IMogoFragmentManager mFragmentManager;
private IMogoNavi mNavi;
private IMogoRegisterCenter mRegisterCenter;
/**
* 地图视图初始化
*/
@@ -272,30 +274,30 @@ public class MogoServices implements IMogoMapListener,
public void init( Context context ) {
mContext = context;
MarkerServiceHandler.init( mContext );
mRefreshModel = new RefreshModel( context );
IMogoServiceApis apis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation();
mMogoMapService = apis.getMapServiceApi();
mMogoMapService = MarkerServiceHandler.getMapService();
mUiController = mMogoMapService.getMapUIController();
mNavi = mMogoMapService.getNavi( context );
mStatusManager = apis.getStatusManagerApi();
mStatusManager = MarkerServiceHandler.getMogoStatusManager();
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.USER_INTERACTED, this );
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.SEARCH_UI, this );
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.ADAS_UI, this );
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.MAIN_PAGE_RESUME, this );
MarkerServiceHandler.init( mContext );
registerMogoReceiver( context );
registerInternalUnWakeupWords();
IMogoRegisterCenter registerCenter = apis.getRegisterCenterApi();
registerCenter.registerMogoLocationListener( ServiceConst.TYPE, this );
registerCenter.registerMogoNaviListener( ServiceConst.TYPE, this );
registerCenter.registerMogoMapListener( ServiceConst.TYPE, this );
registerCenter.registerMogoAimlessModeListener( ServiceConst.TYPE, this );
mRegisterCenter = MarkerServiceHandler.getRegisterCenter();
mRegisterCenter.registerMogoLocationListener( ServiceConst.TYPE, this );
mRegisterCenter.registerMogoNaviListener( ServiceConst.TYPE, this );
mRegisterCenter.registerMogoMapListener( ServiceConst.TYPE, this );
mRegisterCenter.registerMogoAimlessModeListener( ServiceConst.TYPE, this );
mActionManager = apis.getActionManagerApi();
mActionManager = MarkerServiceHandler.getActionManager();
mIntentManager = apis.getIntentManagerApi();
mIntentManager = MarkerServiceHandler.getIntentManager();
mIntentManager.registerIntentListener( MogoReceiver.ACTIION_ADAS, this );
mIntentManager.registerIntentListener( Intent.ACTION_POWER_CONNECTED, this );
mIntentManager.registerIntentListener( Intent.ACTION_POWER_DISCONNECTED, this );
@@ -308,11 +310,12 @@ public class MogoServices implements IMogoMapListener,
mIntentManager.registerIntentListener( MogoReceiver.ACTION_ADAS_STATUS, this );
mIntentManager.registerIntentListener( ServiceConst.COMMAND_OPERATION, this );
mIntentManager.registerIntentListener( MogoReceiver.ACTION_VOICE_READY, this );
mIntentManager.registerIntentListener( MogoReceiver.ACTION_MOCK, this );
mADASController = apis.getAdasControllerApi();
mLauncher = apis.getLauncherApi();
mFragmentManager = apis.getFragmentManagerApi();
mCardManager = apis.getCardManagerApi();
mADASController = MarkerServiceHandler.getADASController();
mLauncher = MarkerServiceHandler.getLauncher();
mFragmentManager = MarkerServiceHandler.getFragmentManager();
mCardManager = MarkerServiceHandler.getMogoCardManager();
mFragmentManager.addMainFragmentStackTransactionListener( this );
initWorkThread();
@@ -372,6 +375,7 @@ public class MogoServices implements IMogoMapListener,
filter.addAction( MogoReceiver.ACTION_VOICE_UI );
filter.addAction( MogoReceiver.ACTION_ADAS_STATUS );
filter.addAction( MogoReceiver.ACTION_VOICE_READY );
filter.addAction( MogoReceiver.ACTION_MOCK );
try {
context.getApplicationContext().registerReceiver( mAIAssistReceiver, filter );
Logger.i( TAG, "register voice receiver." );
@@ -436,6 +440,7 @@ public class MogoServices implements IMogoMapListener,
}
break;
case MotionEvent.ACTION_UP:
mStatusManager.setUserInteractionStatus( TAG, true, true );
break;
}
}
@@ -617,7 +622,7 @@ public class MogoServices implements IMogoMapListener,
@Override
public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) {
Logger.d( TAG, "状态发生改变---descriptor---" + descriptor + "----isTrue---" + isTrue );
//Logger.d( TAG, "状态发生改变---descriptor---" + descriptor + "----isTrue---" + isTrue );
switch ( descriptor ) {
case USER_INTERACTED:
if ( isTrue ) {
@@ -656,14 +661,14 @@ public class MogoServices implements IMogoMapListener,
}
}
private void onAdasOn(){
private void onAdasOn() {
// ADAS 时,不在自动刷新打点策略
stopAutoRefreshStrategy();
// 清除所有的打点信息记录
MarkerServiceHandler.getMapMarkerManager().alreadySmallMarker.clear();
}
private void onAdasClosed(){
private void onAdasClosed() {
refreshStrategy();
// ADAS关闭后打开打点策略
if ( mAutoRefreshCallback != null ) {
@@ -816,6 +821,13 @@ public class MogoServices implements IMogoMapListener,
if ( mStatusManager.isMainPageOnResume() ) {
mUiController.recoverLockMode();
}
} else if ( MogoReceiver.ACTION_MOCK.equals( command ) ) {
final int oper = intent.getIntExtra( "oper", -1 );
switch ( oper ) {
case 1:
mUiController.showMyLocation( true );
break;
}
}
}
@@ -953,9 +965,12 @@ public class MogoServices implements IMogoMapListener,
@Override
public void onTransaction( int size ) {
if ( size == 0 ) {
mUiController.setPointToCenter( 0.66145, 0.661094 );
AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ServiceConst.CMD_BACK );
} else {
AIAssist.getInstance( mContext ).registerUnWakeupCommand( ServiceConst.CMD_BACK, ServiceConst.CMD_BACK_WORDS, this );
mUiController.setPointToCenter( 0.5, 0.5 );
}
}
}

View File

@@ -98,20 +98,26 @@ public class MogoDataHandler implements IMogoDataManager {
}
public void invoke( String tag, Object data ) {
if ( tag == null || mListeners.get( tag ) == null ) {
@Override
public void syncData( String module, Object object ) {
if ( module == null || mListeners.get( module ) == null ) {
return;
}
try {
Iterator< IMogoDataChangedListener > iterator = mListeners.get( tag ).iterator();
Iterator< IMogoDataChangedListener > iterator = mListeners.get( module ).iterator();
while ( iterator.hasNext() ) {
IMogoDataChangedListener listener = iterator.next();
if ( listener != null ) {
listener.onDataSetChanged( data );
listener.onDataSetChanged( object );
}
}
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
@Deprecated
public void invoke( String tag, Object data ) {
syncData( tag, data );
}
}

View File

@@ -36,6 +36,11 @@ public class MogoDataManager implements IMogoDataManager {
MogoDataHandler.getInstance().removeDataFrom( module, object );
}
@Override
public void syncData( String module, Object object ) {
MogoDataHandler.getInstance().syncData( module, object );
}
@Override
public void init( Context context ) {
MogoDataHandler.getInstance().init( context );

View File

@@ -153,8 +153,8 @@ public class MapMarkerInfoView extends MapMarkerBaseView {
break;
case MarkerPoiTypeEnum.FOURS_FOG:
ivIcon.setImageResource(R.drawable.module_service_ic_rc_dark_frog2);
clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_blue_info);
ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_blue);
clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_grey_info);
ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_grey);
break;
case MarkerPoiTypeEnum.FOURS_ICE:
ivIcon.setImageResource(R.drawable.module_service_ic_rc_freeze2);
@@ -163,13 +163,13 @@ public class MapMarkerInfoView extends MapMarkerBaseView {
break;
case MarkerPoiTypeEnum.FOURS_PARKING:
ivIcon.setImageResource(R.drawable.module_service_ic_rc_parking2);
clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_blue_info);
ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_blue);
clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_dark_blue_info);
ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_dark_blue);
break;
case MarkerPoiTypeEnum.FOURS_ACCIDENT:
ivIcon.setImageResource(R.drawable.module_service_ic_rc_accident2);
clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_blue_info);
ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_blue);
clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_red_info);
ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_red);
break;
default:
ivIcon.setImageResource(R.drawable.icon_map_marker_shear_news);

View File

@@ -24,7 +24,6 @@ import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.module.service.ServiceConst;
import com.mogo.module.service.Utils;
import com.mogo.module.service.datamanager.MogoDataHandler;
import com.mogo.module.service.utils.ViewUtils;
import com.mogo.service.cardmanager.IMogoCardChangedListener;
import com.mogo.service.connection.IMogoOnMessageListener;
@@ -697,7 +696,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
}
try {
Logger.d( TAG, "dispatch data to %s", biz );
MogoDataHandler.getInstance().invoke( biz, object );
MarkerServiceHandler.getDataManager().syncData( biz, object );
} catch ( Exception e ) {
e.printStackTrace();
}

View File

@@ -55,6 +55,8 @@ public class MogoReceiver extends BroadcastReceiver {
*/
public static final String ACTION_VOICE_READY = "com.zhidao.auto.AIAssist.ready";
public static final String ACTION_MOCK = "com.mogo.mock";
private IMogoIntentManager mMogoIntentManager;
public MogoReceiver( Context context ) {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<gradient
android:angle="90"
android:endColor="#B5B5B5"
android:startColor="#4D4F64 " />
<corners android:radius="360dp" />
<padding
android:bottom="@dimen/dp_6"
android:left="@dimen/dp_6"
android:right="@dimen/dp_40"
android:top="@dimen/dp_6" />
</shape >

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/shape_id" >
<!-- 倒三角 -->
<rotate
android:fromDegrees="45"
android:pivotX="135%"
android:pivotY="15%"
android:toDegrees="45" >
<shape android:shape="rectangle" >
<size android:width="@dimen/dp_20"
android:height="@dimen/dp_20"/>
<solid android:color="#4D4F64" />
</shape >
</rotate >
</item >
</layer-list >

View File

@@ -55,8 +55,8 @@
<ImageView
android:id="@+id/ivCar"
android:layout_width="@dimen/dp_34"
android:layout_height="@dimen/dp_64"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_map_marker_car_gray"
app:layout_constraintEnd_toEndOf="@+id/ivBg"
app:layout_constraintStart_toStartOf="@+id/ivBg"

View File

@@ -79,8 +79,8 @@
<ImageView
android:id="@+id/ivCar"
android:layout_width="@dimen/dp_34"
android:layout_height="@dimen/dp_64"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_map_marker_car_gray"
android:translationY="-10dp" />
</LinearLayout >

View File

@@ -3,7 +3,11 @@ package com.mogo.module.share;
import android.content.Context;
import android.util.Log;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.module.share.dialog.LaucherShareDialog;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.utils.logger.Logger;
/**
* @author lixiaopeng
@@ -16,8 +20,12 @@ public class ShareControl implements IShareControl {
private Context mContext;
private LaucherShareDialog mShareDialog;
private IMogoServiceApis mogoServiceApis;
private ShareControl(Context context) {
mContext = context;
mogoServiceApis =
(IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context);
}
public static ShareControl getInstance(Context context) {
@@ -34,6 +42,13 @@ public class ShareControl implements IShareControl {
@Override
public void showDialog() {
boolean isAdasShow = mogoServiceApis.getStatusManagerApi().isADASShow();
Logger.d("ShareControl", "showDialog 判断adas是否展示: " + isAdasShow);
if (isAdasShow) {
mogoServiceApis.getAdasControllerApi().closeADAS();
}
mShareDialog = new LaucherShareDialog(mContext);
mShareDialog.setCanceledOnTouchOutside(true);
mShareDialog.show();

View File

@@ -29,7 +29,8 @@
android:id="@+id/btn_block_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/share_module_first_margin_left">
android:layout_marginEnd="@dimen/share_module_margin_left"
android:layout_toLeftOf="@+id/traffic_check_layout">
<ImageView
android:id="@+id/block_up_iv"
@@ -54,6 +55,7 @@
android:id="@+id/oil_price_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_marginLeft="@dimen/share_module_margin_left"
android:layout_toRightOf="@+id/btn_block_layout">
@@ -80,8 +82,7 @@
android:id="@+id/traffic_check_layout"
android:layout_width="@dimen/share_module_image_width_second"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/share_module_margin_left"
android:layout_toRightOf="@+id/oil_price_layout">
android:layout_centerHorizontal="true">
<ImageView
android:id="@+id/traffic_check_iv"
@@ -136,7 +137,7 @@
android:layout_below="@+id/btn_block_layout"
android:layout_marginTop="@dimen/share_module_bottom_margin_top"
android:gravity="center"
android:text="可以对小智说:上报拥堵、分享油价、上报交通检查、上报封路"
android:text="可以对小智说:上报拥堵、上报交通检查、上报封路"
android:textColor="@color/white_40"
android:textSize="@dimen/share_module_bottom_size"
android:textStyle="bold" />

View File

@@ -5,8 +5,8 @@
<dimen name="share_module_height">320px</dimen>
<dimen name="share_module_margin_top">34px</dimen>
<dimen name="share_module_title_margin_top">43px</dimen>
<dimen name="share_module_first_margin_left">80px</dimen>
<dimen name="share_module_margin_left">64px</dimen>
<dimen name="share_module_first_margin_left">100px</dimen>
<dimen name="share_module_margin_left">118px</dimen>
<dimen name="share_module_tv_margin_top">15px</dimen>
<dimen name="share_module_image_width">85px</dimen>
<dimen name="share_module_image_width_second">110px</dimen>

View File

@@ -4,8 +4,8 @@
<dimen name="share_module_height">600px</dimen>
<dimen name="share_module_margin_top">64px</dimen>
<dimen name="share_module_title_margin_top">80px</dimen>
<dimen name="share_module_first_margin_left">150px</dimen>
<dimen name="share_module_margin_left">120px</dimen>
<dimen name="share_module_first_margin_left">200px</dimen>
<dimen name="share_module_margin_left">210px</dimen>
<dimen name="share_module_tv_margin_top">30px</dimen>
<dimen name="share_module_image_width">160px</dimen>
<dimen name="share_module_image_width_second">198px</dimen>

View File

@@ -4,8 +4,8 @@
<dimen name="share_module_height">600px</dimen>
<dimen name="share_module_margin_top">64px</dimen>
<dimen name="share_module_title_margin_top">80px</dimen>
<dimen name="share_module_first_margin_left">150px</dimen>
<dimen name="share_module_margin_left">120px</dimen>
<dimen name="share_module_first_margin_left">200px</dimen>
<dimen name="share_module_margin_left">210px</dimen>
<dimen name="share_module_tv_margin_top">30px</dimen>
<dimen name="share_module_image_width">160px</dimen>
<dimen name="share_module_image_width_second">198px</dimen>

View File

@@ -40,4 +40,12 @@ public interface IMogoDataManager extends IProvider {
* @param object 数据
*/
void removeDataFrom( String module, Object object );
/**
* 向固定模块透传数据
*
* @param module
* @param object
*/
void syncData( String module, Object object );
}

View File

@@ -17,4 +17,6 @@ public interface IMogoRefreshStrategyController extends IProvider {
*/
void restartAutoRefreshAtTime( int delay );
}