Merge branch 'feature/v1.0.2' into feature/v1.0.3
This commit is contained in:
@@ -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())
|
||||
|
||||
@@ -5,7 +5,7 @@ ext {
|
||||
buildToolsVersion: "29.0.2",
|
||||
minSdkVersion : 19,
|
||||
targetSdkVersion : 22,
|
||||
versionCode : 2,
|
||||
versionCode : 3,
|
||||
versionName : "1.0.2",
|
||||
]
|
||||
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
# 推送
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -75,7 +75,7 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer {
|
||||
mMogoMarkerOptions = null;
|
||||
}
|
||||
if ( mMarker != null ) {
|
||||
mMarker.destroy();
|
||||
mMarker.remove();
|
||||
mMarker.setObject( null );
|
||||
mMarker = null;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -148,4 +148,14 @@ public interface IMogoNavi {
|
||||
* @param listener
|
||||
*/
|
||||
void registerCarLocationChangedListener( IMogoCarLocationChangedListener listener );
|
||||
|
||||
/**
|
||||
* 打开巡航模式
|
||||
*/
|
||||
void startAimlessMode();
|
||||
|
||||
/**
|
||||
* 关闭巡航模式
|
||||
*/
|
||||
void stopAimlessMode();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
} );
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
@@ -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"
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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:
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
7
modules/mogo-module-map/src/main/res/values/dimens.xml
Normal file
7
modules/mogo-module-map/src/main/res/values/dimens.xml
Normal 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>
|
||||
@@ -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
|
||||
|
||||
@@ -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进行调用
|
||||
|
||||
/**
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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 ) {
|
||||
|
||||
BIN
modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_car_gray.png
Executable file → Normal file
BIN
modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_car_gray.png
Executable file → Normal file
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 |
@@ -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 >
|
||||
@@ -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 >
|
||||
@@ -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"
|
||||
|
||||
@@ -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 >
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
|
||||
@@ -17,4 +17,6 @@ public interface IMogoRefreshStrategyController extends IProvider {
|
||||
*/
|
||||
void restartAutoRefreshAtTime( int delay );
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user