Merge remote-tracking branch 'origin/feature/v1.0.0' into feature/v1.0.0

This commit is contained in:
zhangyuanzhen
2020-01-16 20:46:31 +08:00
128 changed files with 2121 additions and 542 deletions

2
.idea/misc.xml generated
View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
</project>

View File

@@ -4,7 +4,7 @@ apply plugin: 'com.android.application'
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
// buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion
@@ -39,11 +39,13 @@ android {
debug {
signingConfig signingConfigs.release
debuggable = true
buildConfigField 'int', 'NET_ENV', '2'
}
release {
minifyEnabled false
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
buildConfigField 'int', 'NET_ENV', '3'
}
}
compileOptions {

View File

@@ -30,7 +30,7 @@ public class MogoApplication extends AbsMogoApplication {
super.onCreate();
// MogoModulePaths.addModule( new MogoModule( DemoConstants.TAG, "CARD_DEMO" ) );
// MogoModulePaths.addModule( new MogoModule( Demo2Constants.TAG, "CARD_DEMO2" ) );
DebugConfig.setNetMode( DebugConfig.NET_MODE_QA );
DebugConfig.setNetMode( BuildConfig.NET_ENV );
MogoModulePaths.addModule( new MogoModule( OnLineCarConstants.TAG, OnLineCarConstants.MODULE_NAME ) );
MogoModulePaths.addModule( new MogoModule( TanluConstants.TAG, TanluConstants.MODEL_NAME ) );
MogoModulePaths.addModule( new MogoModule( CallChatConstant.PROVIDER, CallChatConstant.MODULE_NAME ) );

View File

@@ -1,7 +1,7 @@
ext {
android = [
applicationId : "com.mogo.launcher",
compileSdkVersion: 29,
compileSdkVersion: 28,
buildToolsVersion: "29.0.2",
minSdkVersion : 19,
targetSdkVersion : 22,

View File

@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
// buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion

View File

@@ -75,6 +75,8 @@ public class ParamsUtil {
public static Map< String, Object > getAnalyticsCustomParams() {
Map< String, Object > map = new ArrayMap<>();
map.put( "debug", DebugConfig.isDebug() ? 1 : 0 );
map.put( "systemversion", Utils.getFotaVersion() );
map.put( "sn", Utils.getSn() );
return map;
}

View File

@@ -55,15 +55,24 @@ public class Utils {
public static final String GET = "get";
public static final String GSM_SERIAL = "gsm.serial";
public static final String FOTA_VERSION = "ro.fota.version";
public static final String PROPERTIES = "android.os.SystemProperties";
public static String getSn() {
String serial = "";
return getSystemProperties( GSM_SERIAL );
}
public static String getFotaVersion() {
return getSystemProperties( FOTA_VERSION );
}
public static String getSystemProperties( String name ) {
String value = "";
try {
Class< ? > c = Class.forName( PROPERTIES );
Method get = c.getMethod( GET, String.class );
serial = ( String ) get.invoke( c, GSM_SERIAL );
value = ( String ) get.invoke( c, GSM_SERIAL );
} catch ( ClassNotFoundException var3 ) {
var3.printStackTrace();
} catch ( NoSuchMethodException var4 ) {
@@ -73,7 +82,6 @@ public class Utils {
} catch ( IllegalAccessException var6 ) {
var6.printStackTrace();
}
return serial;
return value;
}
}

View File

@@ -3,7 +3,7 @@ apply plugin: 'com.alibaba.arouter'
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
// buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion

View File

@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
// buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion

View File

@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
// buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion

View File

@@ -129,6 +129,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
options.setNaviArrowVisible( false );
// 通过路线是否自动置灰,仅支持驾车导航
options.setAfterRouteAutoGray( true );
options.setZoom( 16 );
options.setPointToCenter( 0.5D, 0.5D );
// 2D模式
options.setTilt( 0 );
@@ -456,6 +457,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
public void onNaviStarted() {
if ( checkAMapView() ) {
mMapView.setCarOverlayVisible( true );
showMyLocation( false );
}
}
@@ -463,6 +465,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
public void onNaviStopped() {
if ( checkAMapView() ) {
mMapView.setCarOverlayVisible( false );
showMyLocation( true );
}
}

View File

@@ -15,6 +15,7 @@ import com.amap.api.navi.model.AimLessModeCongestionInfo;
import com.amap.api.navi.model.AimLessModeStat;
import com.amap.api.navi.model.NaviInfo;
import com.autonavi.tbt.TrafficFacilityInfo;
import com.mogo.utils.logger.Logger;
/**
* @author congtaowang
@@ -24,6 +25,8 @@ import com.autonavi.tbt.TrafficFacilityInfo;
*/
public abstract class AMapNaviListenerAdapter implements AMapNaviListener {
private static final String TAG = "AMapNaviListenerAdapter";
@Override
public void onInitNaviFailure() {
@@ -111,9 +114,15 @@ public abstract class AMapNaviListenerAdapter implements AMapNaviListener {
@Override
public void updateIntervalCameraInfo( AMapNaviCameraInfo aMapNaviCameraInfo, AMapNaviCameraInfo aMapNaviCameraInfo1, int i ) {
if ( aMapNaviCameraInfo != null ) {
Logger.i( TAG, "current camera speed: %d, status = %d", aMapNaviCameraInfo.getCameraSpeed(), i );
}
if ( aMapNaviCameraInfo1 != null ) {
Logger.i( TAG, "current camera speed: %d, status = %d", aMapNaviCameraInfo1.getCameraSpeed(), i );
}
}
@Override
public void onServiceAreaUpdate( AMapServiceAreaInfo[] aMapServiceAreaInfos ) {
@@ -179,11 +188,23 @@ public abstract class AMapNaviListenerAdapter implements AMapNaviListener {
}
/**
* 巡航回调
* 连续5个点速度大于15km/h后触发 updateAimlessModeStatistics 回调,通过 AimLessModeStat 对象可获取巡航的连续行驶距离和连续启用时间
*
* @param aimLessModeStat
*/
@Override
public void updateAimlessModeStatistics( AimLessModeStat aimLessModeStat ) {
}
/**
* 巡航回调
* 出现拥堵长度大于500米且拥堵时间大于5分钟时会进到 updateAimlessModeCongestionInfo 回调中,通过 AimLessModeCongestionInfo 对象,可获取到道路拥堵信息(如:导致拥堵的事件类型、拥堵的状态等)
*
* @param aimLessModeCongestionInfo
*/
@Override
public void updateAimlessModeCongestionInfo( AimLessModeCongestionInfo aimLessModeCongestionInfo ) {

View File

@@ -0,0 +1,204 @@
package com.mogo.map.impl.amap.navi;
import com.amap.api.navi.AimlessModeListener;
import com.amap.api.navi.model.AMapNaviTrafficFacilityInfo;
import com.amap.api.navi.model.AimLessModeCongestionInfo;
import com.amap.api.navi.model.AimLessModeStat;
import com.mogo.map.navi.MogoNaviListenerHandler;
import com.mogo.map.navi.MogoTraffic;
/**
* @author congtaowang
* @since 2020-01-16
* <p>
* 巡航监听
*/
public class AimlessModeListenerAdapter implements AimlessModeListener {
@Override
public void onUpdateTrafficFacility( AMapNaviTrafficFacilityInfo[] aMapNaviTrafficFacilityInfos ) {
if ( aMapNaviTrafficFacilityInfos == null || aMapNaviTrafficFacilityInfos.length == 0 ) {
return;
}
int speedLimit = 0;
for ( AMapNaviTrafficFacilityInfo aMapNaviTrafficFacilityInfo : aMapNaviTrafficFacilityInfos ) {
if ( aMapNaviTrafficFacilityInfo == null ) {
continue;
}
speedLimit = aMapNaviTrafficFacilityInfo.getLimitSpeed();
if ( aMapNaviTrafficFacilityInfo.getBroadcastType() == 4 && aMapNaviTrafficFacilityInfo.getLimitSpeed() > 0 ) {
MogoTraffic traffic = new MogoTraffic( MogoTraffic.TYPE_AIM );
traffic.setDistance( aMapNaviTrafficFacilityInfo.getDistance() );
traffic.setSpeedLimit( aMapNaviTrafficFacilityInfo.getLimitSpeed() );
traffic.setDesc( "测速摄像头、测速雷达" );
MogoNaviListenerHandler.getInstance().onUpdateTraffic( traffic );
}
}
if ( speedLimit <= 0 ) {
MogoTraffic traffic = new MogoTraffic( MogoTraffic.TYPE_AIM );
traffic.setDistance( 0 );
traffic.setSpeedLimit( 0 );
traffic.setDesc( "测速摄像头、测速雷达" );
MogoNaviListenerHandler.getInstance().onUpdateTraffic( traffic );
}
// MogoTraffic traffic = new MogoTraffic( MogoTraffic.TYPE_AIM );
// traffic.setDistance( aMapNaviTrafficFacilityInfos[0].getDistance() );
// traffic.setSpeedLimit( aMapNaviTrafficFacilityInfos[0].getLimitSpeed() );
// switch ( aMapNaviTrafficFacilityInfos[0].getBroadcastType() ) {
// case 0:
// traffic.setDesc( "未知道路设施" );
// break;
// case 4:
// traffic.setDesc( "测速摄像头、测速雷达" );
// break;
// case 5:
// traffic.setDesc( "违章摄像头" );
// break;
// case 10:
// traffic.setDesc( "请谨慎驾驶" );
// break;
// case 11:
// traffic.setDesc( "有连续拍照" );
// break;
// case 12:
// traffic.setDesc( "铁路道口" );
// break;
// case 13:
// traffic.setDesc( "注意落石(左侧)" );
// break;
// case 14:
// traffic.setDesc( "事故易发地段" );
// break;
// case 15:
// traffic.setDesc( "易滑" );
// break;
// case 16:
// traffic.setDesc( "村庄" );
// break;
// case 18:
// traffic.setDesc( "前方学校" );
// break;
// case 19:
// traffic.setDesc( "有人看管的铁路道口" );
// break;
// case 20:
// traffic.setDesc( "无人看管的铁路道口" );
// break;
// case 21:
// traffic.setDesc( "两侧变窄" );
// break;
// case 22:
// traffic.setDesc( "向左急弯路" );
// break;
// case 23:
// traffic.setDesc( "向右急弯路" );
// break;
// case 24:
// traffic.setDesc( "反向弯路" );
// break;
// case 25:
// traffic.setDesc( "连续弯路" );
// break;
// case 26:
// traffic.setDesc( "左侧合流标识牌" );
// break;
// case 27:
// traffic.setDesc( "右侧合流标识牌" );
// break;
// case 28:
// traffic.setDesc( "监控摄像头" );
// break;
// case 29:
// traffic.setDesc( "专用道摄像头" );
// break;
// case 31:
// traffic.setDesc( "禁止超车" );
// break;
// case 36:
// traffic.setDesc( "右侧变窄" );
// break;
// case 37:
// traffic.setDesc( "左侧变窄" );
// break;
// case 38:
// traffic.setDesc( "窄桥" );
// break;
// case 39:
// traffic.setDesc( "左右绕行" );
// break;
// case 40:
// traffic.setDesc( "左侧绕行" );
// break;
// case 41:
// traffic.setDesc( "右侧绕行" );
// break;
// case 42:
// traffic.setDesc( "注意落石(右侧)" );
// break;
// case 43:
// traffic.setDesc( "傍山险路(左侧)" );
// break;
// case 44:
// traffic.setDesc( "傍山险路(右侧)" );
// break;
// case 47:
// traffic.setDesc( "上陡坡" );
// break;
// case 48:
// traffic.setDesc( "下陡坡" );
// break;
// case 49:
// traffic.setDesc( "过水路面" );
// break;
// case 50:
// traffic.setDesc( "路面不平" );
// break;
// case 52:
// traffic.setDesc( "慢行" );
// break;
// case 53:
// traffic.setDesc( "注意危险" );
// break;
// case 58:
// traffic.setDesc( "隧道" );
// break;
// case 59:
// traffic.setDesc( "渡口" );
// break;
// case 92:
// traffic.setDesc( "闯红灯" );
// break;
// case 93:
// traffic.setDesc( "应急车道" );
// break;
// case 94:
// traffic.setDesc( "非机动车道" );
// break;
// case 100:
// traffic.setDesc( "不绑定电子眼高发地" );
// break;
// case 101:
// traffic.setDesc( "车道违章" );
// break;
// case 102:
// traffic.setDesc( "超速违章" );
// break;
// }
}
@Override
public void onUpdateAimlessModeElecCameraInfo( AMapNaviTrafficFacilityInfo[] aMapNaviTrafficFacilityInfos ) {
}
@Override
public void updateAimlessModeStatistics( AimLessModeStat aimLessModeStat ) {
}
@Override
public void updateAimlessModeCongestionInfo( AimLessModeCongestionInfo aimLessModeCongestionInfo ) {
}
}

View File

@@ -5,6 +5,7 @@ import android.graphics.Rect;
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;
@@ -32,6 +33,9 @@ public class NaviClient implements IMogoNavi {
private AMapNavi mAMapNavi;
private final NaviListenerAdapter mAMapNaviListener;
private final AimlessModeListenerAdapter mAimlessModeListener;
/**
* 导航策略配置
*/
@@ -45,7 +49,10 @@ public class NaviClient implements IMogoNavi {
mAMapNavi.setEmulatorNaviSpeed( 120 );
mAMapNavi.setUseInnerVoice( true );
mAMapNaviListener = new NaviListenerAdapter( context, mAMapNavi, this );
mAimlessModeListener = new AimlessModeListenerAdapter() {
};
mAMapNavi.addAMapNaviListener( mAMapNaviListener );
mAMapNavi.addAimlessModeListener( mAimlessModeListener );
}
public static NaviClient getInstance( Context context ) {
@@ -123,6 +130,8 @@ public class NaviClient implements IMogoNavi {
if ( mAMapNaviListener != null ) {
mAMapNaviListener.stopNavi();
}
// 开启巡航 巡航时返回电子眼和特殊道路设施信息
mAMapNavi.startAimlessMode( AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED );
}
@@ -131,6 +140,8 @@ public class NaviClient implements IMogoNavi {
if ( mAMapNaviListener.isStopped() ) {
return;
}
// 关闭巡航
mAMapNavi.stopAimlessMode();
mIsRealNavi = isRealNavi;
mAMapNavi.startNavi( isRealNavi ? NaviType.GPS : NaviType.EMULATOR );
}
@@ -176,16 +187,18 @@ public class NaviClient implements IMogoNavi {
@Override
public void setCalculatePathDisplayBounds( Rect bounds ) {
if ( mAMapNaviListener != null ) {
mAMapNaviListener.setCalculatePathDisplayBounds(bounds);
mAMapNaviListener.setCalculatePathDisplayBounds( bounds );
}
}
@Override public MogoNaviConfig getNaviConfig() {
@Override
public MogoNaviConfig getNaviConfig() {
return mMogoNaviConfig;
}
@Override public boolean setBroadcastMode(int mode) {
return mAMapNavi.setBroadcastMode(mode);
@Override
public boolean setBroadcastMode( int mode ) {
return mAMapNavi.setBroadcastMode( mode );
}
// -- end

View File

@@ -5,8 +5,13 @@ import android.graphics.Rect;
import com.amap.api.maps.model.Polyline;
import com.amap.api.navi.AMapNavi;
import com.amap.api.navi.AimlessModeListener;
import com.amap.api.navi.enums.AimLessMode;
import com.amap.api.navi.enums.CameraType;
import com.amap.api.navi.enums.CarEnterCameraStatus;
import com.amap.api.navi.enums.NaviType;
import com.amap.api.navi.model.AMapCalcRouteResult;
import com.amap.api.navi.model.AMapNaviCameraInfo;
import com.amap.api.navi.model.AMapNaviInfo;
import com.amap.api.navi.model.AMapNaviLocation;
import com.amap.api.navi.model.NaviInfo;
@@ -15,6 +20,7 @@ import com.mogo.map.impl.amap.message.AMapMessageManager;
import com.mogo.map.impl.amap.utils.ObjectUtils;
import com.mogo.map.navi.MogoCalculatePath;
import com.mogo.map.navi.MogoNaviListenerHandler;
import com.mogo.map.navi.MogoTraffic;
import com.mogo.map.navi.OnCalculatePathItemClickInteraction;
import com.mogo.utils.logger.Logger;
@@ -86,14 +92,77 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter {
}
@Override
public void onStartNavi( int i ) {
setStopped( false );
setNaviing( true );
if ( mAMapNavi != null ) {
mAMapNavi.startSpeak();
public void updateCameraInfo( AMapNaviCameraInfo[] aMapNaviCameraInfos ) {
super.updateCameraInfo( aMapNaviCameraInfos );
if ( aMapNaviCameraInfos == null || aMapNaviCameraInfos.length == 0 ) {
return;
}
int limitSpeed = 0;
for ( AMapNaviCameraInfo aMapNaviCameraInfo : aMapNaviCameraInfos ) {
if ( aMapNaviCameraInfo == null ) {
continue;
}
limitSpeed = aMapNaviCameraInfo.getCameraSpeed();
if ( limitSpeed > 0 && aMapNaviCameraInfo.getCameraType() == CameraType.SPEED ) {
MogoTraffic traffic = new MogoTraffic( MogoTraffic.TYPE_NAVI );
traffic.setDistance( aMapNaviCameraInfo.getCameraDistance() );
traffic.setSpeedLimit( aMapNaviCameraInfo.getCameraSpeed() );
traffic.setDesc( "测速摄像" );
MogoNaviListenerHandler.getInstance().onUpdateTraffic( traffic );
}
// switch ( aMapNaviCameraInfo.getCameraType() ) {
// case CameraType.SPEED:
//
// break;
// case CameraType.SURVEILLANCE:
// traffic.setDesc( "监控摄像" );
// break;
// case CameraType.TRAFFICLIGHT:
// traffic.setDesc( "闯红灯拍照" );
// break;
// case CameraType.BREAKRULE:
// traffic.setDesc( "违章拍照" );
// break;
// case CameraType.BUSWAY:
// traffic.setDesc( "公交专用道摄像头" );
// break;
// case CameraType.EMERGENCY:
// traffic.setDesc( "应急车道拍照" );
// break;
// case CameraType.BICYCLE:
// traffic.setDesc( "非机动车道" );
// break;
// case CameraType.INTERVALVELOCITYSTART:
// traffic.setDesc( "区间测速起始" );
// break;
// case CameraType.INTERVALVELOCITYEND:
// traffic.setDesc( "区间测速解除" );
// break;
// }
}
if ( limitSpeed <= 0 ) {
MogoTraffic traffic = new MogoTraffic( MogoTraffic.TYPE_NAVI );
traffic.setDistance( 0 );
traffic.setSpeedLimit( 0 );
traffic.setDesc( "测速摄像" );
MogoNaviListenerHandler.getInstance().onUpdateTraffic( traffic );
}
}
@Override
public void onStartNavi( int type ) {
// 巡航
if ( type != NaviType.CRUISE ) {
setStopped( false );
setNaviing( true );
if ( mAMapNavi != null ) {
mAMapNavi.startSpeak();
}
MogoNaviListenerHandler.getInstance().onStartNavi();
AMapMessageManager.getInstance().postNaviStarted();
}
MogoNaviListenerHandler.getInstance().onStartNavi();
AMapMessageManager.getInstance().postNaviStarted();
}
@Override
@@ -148,10 +217,10 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter {
if ( mNaviOverlayHelper != null ) {
mNaviOverlayHelper.handleClickedPolyline( polyline, isNaviing() );
mAMapNavi.selectRouteId( mNaviOverlayHelper.getSelectedPathId() );
if ( isNaviing() ) {
mAMapNavi.stopNavi();
mAMapNavi.startNavi( mClient.isRealNavi() ? NaviType.GPS : NaviType.EMULATOR );
}
// if ( isNaviing() ) {
// mAMapNavi.stopNavi();
// mAMapNavi.startNavi( mClient.isRealNavi() ? NaviType.GPS : NaviType.EMULATOR );
// }
}
}
@@ -175,15 +244,15 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter {
}
}
public void clearCalculatePaths(){
public void clearCalculatePaths() {
if ( mNaviOverlayHelper != null ) {
mNaviOverlayHelper.clearCalculatedOverlay();
}
}
public void setCalculatePathDisplayBounds( Rect bounds ){
public void setCalculatePathDisplayBounds( Rect bounds ) {
if ( mNaviOverlayHelper != null ) {
mNaviOverlayHelper.setCalculatePathDisplayBounds(bounds);
mNaviOverlayHelper.setCalculatePathDisplayBounds( bounds );
}
}
}

View File

@@ -636,6 +636,7 @@ public class ObjectUtils {
mogoNaviInfo.setNextRoadName( naviInfo.getNextRoadName() );
mogoNaviInfo.setPathRetainDistance( naviInfo.getPathRetainDistance() );
mogoNaviInfo.setPathRetainTime( naviInfo.getPathRetainTime() );
mogoNaviInfo.setCurrentSpeed( naviInfo.getLimitSpeed() );
return mogoNaviInfo;
}
}

View File

@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
// buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion

View File

@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
// buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion

View File

@@ -63,7 +63,8 @@ public interface IMogoNavi {
*
* @param isRealNavi true - 实时导航 false - 模拟导航
*/
void startNavi( boolean isRealNavi );
void
startNavi( boolean isRealNavi );
/**
* 是否正在导航

View File

@@ -44,4 +44,9 @@ public interface IMogoNaviListener {
* 路径规划失败
*/
void onoCalculateFailed();
/**
* 巡航信息发生改变
*/
void onUpdateTraffic(MogoTraffic traffic);
}

View File

@@ -54,6 +54,11 @@ public class MogoNaviInfo implements Parcelable {
*/
private int pathRetainDistance;
/**
* 当前限速
*/
private float currentLimitSpeed;
public String getCurrentRoadName() {
return currentRoadName;
}
@@ -118,6 +123,14 @@ public class MogoNaviInfo implements Parcelable {
this.pathRetainDistance = pathRetainDistance;
}
public float getCurrentLimitSpeed() {
return currentLimitSpeed;
}
public void setCurrentLimitSpeed( float currentLimitSpeed ) {
this.currentLimitSpeed = currentLimitSpeed;
}
@Override
public int describeContents() {
return 0;
@@ -133,6 +146,7 @@ public class MogoNaviInfo implements Parcelable {
dest.writeString( this.nextRoadName );
dest.writeInt( this.pathRetainTime );
dest.writeInt( this.pathRetainDistance );
dest.writeFloat( this.currentLimitSpeed );
}
public MogoNaviInfo() {
@@ -147,9 +161,10 @@ public class MogoNaviInfo implements Parcelable {
this.nextRoadName = in.readString();
this.pathRetainTime = in.readInt();
this.pathRetainDistance = in.readInt();
this.currentLimitSpeed = in.readFloat();
}
public static final Parcelable.Creator< MogoNaviInfo > CREATOR = new Parcelable.Creator< MogoNaviInfo >() {
public static final Creator< MogoNaviInfo > CREATOR = new Creator< MogoNaviInfo >() {
@Override
public MogoNaviInfo createFromParcel( Parcel source ) {
return new MogoNaviInfo( source );

View File

@@ -91,4 +91,11 @@ public class MogoNaviListenerHandler implements IMogoNaviListener, IMogoNaviList
mDelegateListener.onoCalculateFailed();
}
}
@Override
public void onUpdateTraffic( MogoTraffic traffic ) {
if ( mDelegateListener != null ) {
mDelegateListener.onUpdateTraffic( traffic );
}
}
}

View File

@@ -0,0 +1,76 @@
package com.mogo.map.navi;
/**
* @author congtaowang
* @since 2020-01-16
* <p>
* 巡航信息、导航信息
*/
public class MogoTraffic {
/**
* 导航
*/
public static final int TYPE_NAVI = 1;
/**
* 巡航
*/
public static final int TYPE_AIM = 2;
/**
* 导航 or 巡航
*/
private int mFromType;
/**
* 距离
*/
private int mDistance;
/**
* 限速
*/
private int mSpeedLimit;
/**
* 描述
*/
private String mDesc;
public MogoTraffic( int fromType ) {
mFromType = fromType;
}
public int getFromType() {
return mFromType;
}
public void setFromType( int fromType ) {
this.mFromType = fromType;
}
public int getDistance() {
return mDistance;
}
public void setDistance( int distance ) {
this.mDistance = distance;
}
public int getSpeedLimit() {
return mSpeedLimit;
}
public void setSpeedLimit( int speedLimit ) {
this.mSpeedLimit = speedLimit;
}
public String getDesc() {
return mDesc;
}
public void setDesc( String desc ) {
this.mDesc = desc;
}
}

View File

@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
// buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion

View File

@@ -3,7 +3,7 @@ apply plugin: 'com.alibaba.arouter'
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
// buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 469 B

View File

@@ -19,11 +19,11 @@
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/module_apps_id_apps_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0C0C0C"
app:behavior_hideable="false"
android:id="@+id/module_apps_id_apps_container"
app:behavior_peekHeight="0dp"
app:layout_behavior="@string/bottom_sheet_behavior">
@@ -38,7 +38,7 @@
android:id="@+id/module_apps_id_apps_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_210"
android:layout_marginTop="@dimen/module_apps_pager_marginTop"
android:overScrollMode="never" />
<com.mogo.module.apps.view.LinePageIndicator
@@ -46,10 +46,10 @@
android:layout_width="match_parent"
android:layout_height="@dimen/dp_2"
android:layout_gravity="bottom|center_horizontal"
android:layout_marginBottom="@dimen/dp_100"
app:lineWidth="@dimen/dp_30"
android:layout_marginBottom="@dimen/module_apps_indicator_marginBottom"
app:lineWidth="@dimen/module_apps_indicator_width"
app:selectedColor="#ffffffff"
app:strokeWidth="@dimen/dp_5"
app:strokeWidth="@dimen/module_apps_indicator_heigt"
app:unselectedColor="#33ffffff" />
<ProgressBar

View File

@@ -4,32 +4,32 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="bottom"
android:paddingBottom="@dimen/dp_61">
android:paddingBottom="@dimen/module_apps_navigation_icon_paddingBottom">
<ImageView
android:id="@+id/module_apps_id_navigation"
android:layout_width="@dimen/dp_119"
android:layout_height="@dimen/dp_119"
android:layout_width="@dimen/module_apps_navigation_icon_width"
android:layout_height="@dimen/module_apps_navigation_icon_height"
android:src="@drawable/module_apps_ic_navigation" />
<ImageView
android:id="@+id/module_apps_ic_media_center"
android:layout_width="@dimen/dp_119"
android:layout_height="@dimen/dp_119"
android:layout_marginLeft="@dimen/dp_61"
android:layout_width="@dimen/module_apps_navigation_icon_width"
android:layout_height="@dimen/module_apps_navigation_icon_height"
android:layout_marginLeft="@dimen/module_apps_navigation_icon_marginLeft"
android:src="@drawable/module_apps_ic_media_center" />
<ImageView
android:id="@+id/module_apps_ic_car_settings"
android:layout_width="@dimen/dp_119"
android:layout_height="@dimen/dp_119"
android:layout_marginLeft="@dimen/dp_61"
android:layout_width="@dimen/module_apps_navigation_icon_width"
android:layout_height="@dimen/module_apps_navigation_icon_height"
android:layout_marginLeft="@dimen/module_apps_navigation_icon_marginLeft"
android:src="@drawable/module_apps_ic_car_settings" />
<ImageView
android:id="@+id/module_apps_id_apps"
android:layout_width="@dimen/dp_119"
android:layout_height="@dimen/dp_119"
android:layout_marginLeft="@dimen/dp_61"
android:layout_width="@dimen/module_apps_navigation_icon_width"
android:layout_height="@dimen/module_apps_navigation_icon_height"
android:layout_marginLeft="@dimen/module_apps_navigation_icon_marginLeft"
android:src="@drawable/module_apps_ic_apps" />
</LinearLayout>

View File

@@ -8,16 +8,16 @@
<ImageView
android:id="@+id/module_apps_id_app_icon"
android:layout_width="@dimen/dp_120"
android:layout_height="@dimen/dp_120" />
android:layout_width="@dimen/module_apps_navigation_icon_width"
android:layout_height="@dimen/module_apps_navigation_icon_height" />
<TextView
android:id="@+id/module_apps_id_app_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_32"
android:layout_marginTop="@dimen/module_apps_app_name_marginTop"
android:gravity="center"
android:maxLines="2"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_32" />
android:textSize="@dimen/module_apps_app_name_textSize" />
</LinearLayout>

View File

@@ -5,8 +5,8 @@
android:layout_height="match_parent"
android:numColumns="6"
android:orientation="vertical"
android:paddingLeft="@dimen/dp_220"
android:paddingRight="@dimen/dp_220"
android:verticalSpacing="@dimen/dp_154">
android:paddingLeft="@dimen/module_apps_page_paddingLeft"
android:paddingRight="@dimen/module_apps_page_paddingRight"
android:verticalSpacing="@dimen/module_apps_page_item_verticalSpacing">
</GridView>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="module_apps_pager_marginTop">117px</dimen>
<dimen name="module_apps_indicator_heigt">2.7px</dimen>
<dimen name="module_apps_indicator_width">16px</dimen>
<dimen name="module_apps_indicator_marginBottom">54.9px</dimen>
<dimen name="module_apps_navigation_icon_width">64px</dimen>
<dimen name="module_apps_navigation_icon_height">64px</dimen>
<dimen name="module_apps_navigation_icon_marginLeft">31.6px</dimen>
<dimen name="module_apps_navigation_icon_paddingBottom">33px</dimen>
<dimen name="module_apps_app_name_marginTop">24px</dimen>
<dimen name="module_apps_app_name_textSize">18px</dimen>
<dimen name="module_apps_page_paddingLeft">112px</dimen>
<dimen name="module_apps_page_paddingRight">112px</dimen>
<dimen name="module_apps_page_item_verticalSpacing">89px</dimen>
</resources>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="module_apps_pager_marginTop">260px</dimen>
<dimen name="module_apps_indicator_heigt">5px</dimen>
<dimen name="module_apps_indicator_width">30px</dimen>
<dimen name="module_apps_indicator_marginBottom">103px</dimen>
<dimen name="module_apps_navigation_icon_width">120px</dimen>
<dimen name="module_apps_navigation_icon_height">120px</dimen>
<dimen name="module_apps_navigation_icon_marginLeft">61px</dimen>
<dimen name="module_apps_navigation_icon_paddingBottom">60px</dimen>
<dimen name="module_apps_app_name_marginTop">32px</dimen>
<dimen name="module_apps_app_name_textSize">32px</dimen>
<dimen name="module_apps_page_paddingLeft">220px</dimen>
<dimen name="module_apps_page_paddingRight">220px</dimen>
<dimen name="module_apps_page_item_verticalSpacing">154px</dimen>
</resources>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="module_apps_pager_marginTop">260px</dimen>
<dimen name="module_apps_indicator_heigt">5px</dimen>
<dimen name="module_apps_indicator_width">30px</dimen>
<dimen name="module_apps_indicator_marginBottom">103px</dimen>
<dimen name="module_apps_navigation_icon_width">120px</dimen>
<dimen name="module_apps_navigation_icon_height">120px</dimen>
<dimen name="module_apps_navigation_icon_marginLeft">61px</dimen>
<dimen name="module_apps_navigation_icon_paddingBottom">60px</dimen>
<dimen name="module_apps_app_name_marginTop">32px</dimen>
<dimen name="module_apps_app_name_textSize">32px</dimen>
<dimen name="module_apps_page_paddingLeft">220px</dimen>
<dimen name="module_apps_page_paddingRight">220px</dimen>
<dimen name="module_apps_page_item_verticalSpacing">154px</dimen>
</resources>

View File

@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
// buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion

View File

@@ -2,15 +2,20 @@
package com.mogo.module.common.entity;
import android.text.TextUtils;
import java.io.Serializable;
@SuppressWarnings("unused")
public class MarkerActivitiesScope implements Serializable {
private String content;
private int isCheck;
private boolean isCheck;
public String getContent() {
if (TextUtils.isEmpty(content)) {
return "未知";
}
return content;
}
@@ -18,11 +23,11 @@ public class MarkerActivitiesScope implements Serializable {
this.content = content;
}
public int getIsCheck() {
public boolean getIsCheck() {
return isCheck;
}
public void setIsCheck(int isCheck) {
public void setIsCheck(boolean isCheck) {
this.isCheck = isCheck;
}

View File

@@ -8,44 +8,159 @@ import java.io.Serializable;
@SuppressWarnings("unused")
public class MarkerDynamicData implements Serializable {
//QQ音乐懒人听书乐听头条 2 为书籍听书3 为新闻,1 为qq音乐
private int type;
private String mediaId;//qq音乐id书的bookId
//qq音乐url 懒人听书为“”
private String mediaUrl;
//歌曲名 ,当前播放书名,新闻标题内容
private String mediaName;
//演唱歌手,当前章节,新闻来源
private String mediaSinger;
//歌曲封面,书籍封面,新闻预览图
private String mediaImg;
//音乐类别,类似经典 流行只有qq特有
private String mediaType;
private int maxTime;//音频总时长
private String bookInfo;//懒人听书json串
//当前播放时长,可以不加,播放进度单独独立出来
private int curTime;
//是否是本地音频只有qq音乐
private boolean isLocalMedia;//本地
//播放模式,顺序,单曲循环,随机
private int mediaPlayMode;
//1 播放 2 缓冲 0 暂停/停止 -1 播放错误
private int playState;
private double id;
private String name;
private double type;
public double getId() {
return id;
public String getMediaId() {
return mediaId;
}
public void setId(double id) {
this.id = id;
public void setMediaId(String mediaId) {
this.mediaId = mediaId;
}
public String getName() {
if (TextUtils.isEmpty(name)) {
return "未知";
}
return name;
public String getMediaUrl() {
return mediaUrl;
}
public void setName(String name) {
this.name = name;
public void setMediaUrl(String mediaUrl) {
this.mediaUrl = mediaUrl;
}
public double getType() {
public int getType() {
return type;
}
public void setType(double type) {
public void setType(int type) {
this.type = type;
}
public int getPlayState() {
return playState;
}
public void setPlayState(int playState) {
this.playState = playState;
}
public String getMediaName() {
if (TextUtils.isEmpty(mediaName)) {
return "未知";
}
return mediaName;
}
public void setMediaName(String mediaName) {
this.mediaName = mediaName;
}
public String getMediaSinger() {
if (TextUtils.isEmpty(mediaSinger)) {
return "";
}
return mediaSinger;
}
public void setMediaSinger(String mediaSinger) {
this.mediaSinger = mediaSinger;
}
public String getMediaImg() {
return mediaImg;
}
public void setMediaImg(String mediaImg) {
this.mediaImg = mediaImg;
}
public long getMaxTime() {
return maxTime;
}
public void setMaxTime(int maxTime) {
this.maxTime = maxTime;
}
public long getCurTime() {
return curTime;
}
public void setCurTime(int curTime) {
this.curTime = curTime;
}
public String getMediaType() {
if (TextUtils.isEmpty(mediaType)) {
return "";
}
return mediaType;
}
public void setMediaType(String mediaType) {
this.mediaType = mediaType;
}
public boolean isLocalMedia() {
return isLocalMedia;
}
public void setLocalMedia(boolean localMedia) {
isLocalMedia = localMedia;
}
public int getMediaPlayMode() {
return mediaPlayMode;
}
public void setMediaPlayMode(int mediaPlayMode) {
this.mediaPlayMode = mediaPlayMode;
}
public String getBookInfo() {
return bookInfo;
}
public void setBookInfo(String bookInfo) {
this.bookInfo = bookInfo;
}
@Override
public String toString() {
return "MarkerDynamicData{" +
"id=" + id +
", name='" + name + '\'' +
", type=" + type +
"type=" + type +
", mediaId='" + mediaId + '\'' +
", mediaUrl='" + mediaUrl + '\'' +
", mediaName='" + mediaName + '\'' +
", mediaSinger='" + mediaSinger + '\'' +
", mediaImg='" + mediaImg + '\'' +
", mediaType='" + mediaType + '\'' +
", maxTime=" + maxTime +
", bookInfo='" + bookInfo + '\'' +
", curTime=" + curTime +
", isLocalMedia=" + isLocalMedia +
", mediaPlayMode=" + mediaPlayMode +
", playState=" + playState +
'}';
}
}

View File

@@ -1,42 +1,71 @@
package com.mogo.module.common.entity;
import android.text.TextUtils;
import java.io.Serializable;
import java.util.List;
@SuppressWarnings("unused")
/**
* author : donghongyu
* e-mail : 1358506549@qq.com
* date : 2020-01-1615:12
* desc : 爱好
* version: 1.0
*/
public class MarkerHobbyDatum implements Serializable {
private List<MarkerOnlineTag> singerTop2; // 最喜欢的两位歌手
private List<MarkerOnlineTag> songTypeTop2; // 最喜欢的两种音乐类型
private List<MarkerOnlineTag> newsType; // 最喜欢的资讯类型
private List<MarkerOnlineTag> listenBookTop2; // 最喜欢听的两本书
private List<MarkerOnlineTag> ifSociety; // 是否喜爱社交
private String content;
private int isCheck;
public String getContent() {
if (TextUtils.isEmpty(content)) {
return "未知";
}
return content;
public List<MarkerOnlineTag> getSingerTop2() {
return singerTop2;
}
public void setContent(String content) {
this.content = content;
public void setSingerTop2(List<MarkerOnlineTag> singerTop2) {
this.singerTop2 = singerTop2;
}
public int getIsCheck() {
return isCheck;
public List<MarkerOnlineTag> getSongTypeTop2() {
return songTypeTop2;
}
public void setIsCheck(int isCheck) {
this.isCheck = isCheck;
public void setSongTypeTop2(List<MarkerOnlineTag> songTypeTop2) {
this.songTypeTop2 = songTypeTop2;
}
public List<MarkerOnlineTag> getNewsType() {
return newsType;
}
public void setNewsType(List<MarkerOnlineTag> newsType) {
this.newsType = newsType;
}
public List<MarkerOnlineTag> getListenBookTop2() {
return listenBookTop2;
}
public void setListenBookTop2(List<MarkerOnlineTag> listenBookTop2) {
this.listenBookTop2 = listenBookTop2;
}
public List<MarkerOnlineTag> getIfSociety() {
return ifSociety;
}
public void setIfSociety(List<MarkerOnlineTag> ifSociety) {
this.ifSociety = ifSociety;
}
@Override
public String toString() {
return "MarkerHobbyDatum{" +
"content='" + content + '\'' +
", isCheck=" + isCheck +
"singerTop2=" + singerTop2 +
", songTypeTop2=" + songTypeTop2 +
", newsType=" + newsType +
", listenBookTop2=" + listenBookTop2 +
", ifSociety=" + ifSociety +
'}';
}
}

View File

@@ -13,7 +13,7 @@ public class MarkerOnlineCar implements Serializable {
private MarkerUserInfo userInfo;//用户数据
private MarkerCarInfo carInfo;//车辆数据
private MarkerDynamicData dynamicData;//动态数据
private List<MarkerHobbyDatum> hobbyData;//爱好数据集合
private MarkerHobbyDatum hobbyData;//爱好数据集合
private List<MarkerActivitiesScope> activitiesScope;//活动范围数据集合
private double compatibility;
@@ -49,11 +49,11 @@ public class MarkerOnlineCar implements Serializable {
this.dynamicData = dynamicData;
}
public List<MarkerHobbyDatum> getHobbyData() {
public MarkerHobbyDatum getHobbyData() {
return hobbyData;
}
public void setHobbyData(List<MarkerHobbyDatum> hobbyData) {
public void setHobbyData(MarkerHobbyDatum hobbyData) {
this.hobbyData = hobbyData;
}

View File

@@ -0,0 +1,41 @@
package com.mogo.module.common.entity;
import android.text.TextUtils;
import java.io.Serializable;
@SuppressWarnings("unused")
public class MarkerOnlineTag implements Serializable {
private String content;
private boolean isCheck;
public String getContent() {
if (TextUtils.isEmpty(content)) {
return "未知";
}
return content;
}
public void setContent(String content) {
this.content = content;
}
public boolean getIsCheck() {
return isCheck;
}
public void setIsCheck(boolean isCheck) {
this.isCheck = isCheck;
}
@Override
public String toString() {
return "MarkerHobbyDatum{" +
"content='" + content + '\'' +
", isCheck=" + isCheck +
'}';
}
}

View File

@@ -3,7 +3,7 @@ apply plugin: 'com.alibaba.arouter'
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
// buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion

View File

@@ -15,9 +15,16 @@ import android.view.SurfaceHolder;
import android.view.SurfaceView;
import com.mogo.utils.ThreadPoolService;
import com.mogo.utils.logger.Logger;
import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.Map;
public class JSurfaceView extends SurfaceView implements Runnable, SurfaceHolder.Callback {
private static final String TAG = "JSurfaceView";
private SurfaceHolder mHolder;
/**
@@ -33,6 +40,15 @@ public class JSurfaceView extends SurfaceView implements Runnable, SurfaceHolder
*/
private int[] mFrames;
// 使用 BitmapFactory.Option.inBitmap 属性复用 bitmap 对象
private Bitmap mContainerBitmap = null;
// mContainerBitmap 是否生效
private boolean mContainerBitmapStatus = true;
// mContainerBitmapStatus 为 false 时,使用该缓存方案
private Map< Integer, WeakReference< Bitmap > > mBitmapRefMap = new HashMap<>();
public JSurfaceView( Context context ) {
super( context );
init();
@@ -87,28 +103,60 @@ public class JSurfaceView extends SurfaceView implements Runnable, SurfaceHolder
private void drawBitmap() {
//获取画布并锁定
Canvas mCanvas = mHolder.lockCanvas();
if ( mCanvas == null ) {
Canvas canvas = mHolder.lockCanvas();
if ( canvas == null ) {
return;
}
//绘制透明色
mCanvas.drawColor( Color.TRANSPARENT, PorterDuff.Mode.CLEAR );
Bitmap mBitmap = BitmapFactory.decodeResource( getResources(), mFrames[mCurrentPos % mFrames.length] );
canvas.drawColor( Color.TRANSPARENT, PorterDuff.Mode.CLEAR );
int factPosition = mCurrentPos % mFrames.length;
if ( mContainerBitmapStatus ) {
if ( mContainerBitmap == null ) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inMutable = true;
mContainerBitmap = BitmapFactory.decodeResource( getResources(), mFrames[factPosition], options );
} else {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inMutable = true;
options.inBitmap = mContainerBitmap;
try {
BitmapFactory.decodeResource( getResources(), mFrames[factPosition], options );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
mContainerBitmapStatus = false;
mContainerBitmap = null;
}
}
}
if ( !mContainerBitmapStatus ) {
WeakReference< Bitmap > ref = mBitmapRefMap.get( factPosition );
if ( ref != null && ref.get() != null && !ref.get().isRecycled() ) {
mContainerBitmap = ref.get();
} else {
mContainerBitmap = BitmapFactory.decodeResource( getResources(), mFrames[factPosition] );
mBitmapRefMap.put( factPosition, new WeakReference<>( mContainerBitmap ) );
}
}
if ( mContainerBitmap == null || mContainerBitmap.isRecycled() ) {
return;
}
Paint paint = new Paint();
Rect mSrcRect = new Rect( 0,
0,
mBitmap.getWidth(),
mBitmap.getHeight() ); // 图片绘制
mContainerBitmap.getWidth(),
mContainerBitmap.getHeight() ); // 图片绘制
Rect mDestRect = new Rect( 0,
0,
getWidth(),
getHeight() );// 图片绘制位置
mCanvas.drawBitmap( mBitmap, mSrcRect, mDestRect, paint );
canvas.drawBitmap( mContainerBitmap, mSrcRect, mDestRect, paint );
//解锁画布并展示bitmap到surface
mHolder.unlockCanvasAndPost( mCanvas );
mBitmap.recycle();
mHolder.unlockCanvasAndPost( canvas );
}
@Override

View File

@@ -23,6 +23,7 @@ import com.mogo.map.model.MogoPoi;
import com.mogo.map.navi.IMogoNavi;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.map.navi.MogoNaviInfo;
import com.mogo.map.navi.MogoTraffic;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.common.MogoModulePaths;
@@ -41,6 +42,7 @@ import com.mogo.service.module.IMogoModuleProvider;
import com.mogo.service.module.IMogoRegisterCenter;
import com.mogo.service.windowview.IMogoWindowManager;
import com.mogo.utils.TipToast;
import java.util.HashMap;
/**
@@ -67,6 +69,10 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
private NaviInfoView mNaviInfo;
private TextView mExitNavi;
private View mSpeedLimit;
private TextView mSpeedLimitValue;
private View mSpeedLimitUnit;
private IMogoMapService mService;
private IMogoMapUIController mMApUIController;
private IMogoLocationClient mMogoLocationClient;
@@ -91,7 +97,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
@Override
protected void initViews() {
mMogoFragmentManager = ( IMogoFragmentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_FRAGMENT_MANAGER ).navigation();
mMogoAddressManager = (IMogoAddressManager) ARouter.getInstance().build( MogoServicePaths.PATH_ADDRESS_MANAGER ).navigation();
mMogoAddressManager = ( IMogoAddressManager ) ARouter.getInstance().build( MogoServicePaths.PATH_ADDRESS_MANAGER ).navigation();
mCommonAddress = findViewById( R.id.module_entrance_id_common_address );
mSearch = findViewById( R.id.module_entrance_id_search );
@@ -135,7 +141,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
mExitNavi.setOnClickListener( view -> {
if ( mMogoNavi != null ) {
if ( mIsLock ) {
NaviNoticeDialog naviNoticeDialog = new NaviNoticeDialog(getContext());
NaviNoticeDialog naviNoticeDialog = new NaviNoticeDialog( getContext() );
naviNoticeDialog.show();
} else {
mMApUIController.recoverLockMode();
@@ -143,6 +149,10 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
}
} );
mSpeedLimit = findViewById( R.id.module_entrance_id_speed_limit_container );
mSpeedLimitValue = findViewById( R.id.module_entrance_id_speed_limit_value );
mSpeedLimitUnit = findViewById( R.id.module_entrance_id_speed_limit_unit );
}
@NonNull
@@ -188,9 +198,9 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
mCommonAddress.setVisibility( View.GONE );
mNaviInfo.setVisibility( View.VISIBLE );
mExitNavi.setVisibility( View.VISIBLE );
AnalyticsUtils.track("Navigation_guide_type", new HashMap<>());
AnalyticsUtils.track( "Navigation_guide_type", new HashMap<>() );
mMApUIController.setPointToCenter(0.675926, 0.77552);
mMApUIController.setPointToCenter( 0.675926, 0.77552 );
}
@Override
@@ -198,9 +208,10 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
mCommonAddress.setVisibility( View.VISIBLE );
mNaviInfo.setVisibility( View.GONE );
mExitNavi.setVisibility( View.GONE );
AnalyticsUtils.track("Navigation_guide_type", new HashMap<>());
mSpeedLimit.setVisibility( View.GONE );
AnalyticsUtils.track( "Navigation_guide_type", new HashMap<>() );
mMApUIController.setPointToCenter(0.66145, 0.590688);
mMApUIController.setPointToCenter( 0.66145, 0.590688 );
}
@@ -212,6 +223,20 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
public void onoCalculateFailed() {
}
@Override
public void onUpdateTraffic( MogoTraffic traffic ) {
if ( traffic == null ) {
return;
}
if ( traffic.getSpeedLimit() <= 0 ) {
mSpeedLimit.setVisibility( View.INVISIBLE );
mSpeedLimitValue.setText( "--" );
} else {
mSpeedLimit.setVisibility( View.VISIBLE );
mSpeedLimitValue.setText( String.valueOf( traffic.getSpeedLimit() ) );
}
}
@Override
public void onMapLoaded() {

Binary file not shown.

After

Width:  |  Height:  |  Size: 510 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 479 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 516 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 541 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 712 B

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<corners android:radius="90dp" />
<stroke android:width="@dimen/dp_6" android:color="#B92F49" />/>
</shape>
</item>
</selector>

View File

@@ -1,24 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/module_entrance_id_search"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_90"
android:layout_marginLeft="@dimen/dp_32"
android:layout_marginTop="@dimen/dp_2"
android:layout_height="@dimen/module_ext_search_height"
android:layout_marginLeft="@dimen/module_ext_search_marginLeft"
android:layout_marginTop="@dimen/module_ext_search_marginTop"
android:background="@drawable/module_ext_dw_common_corner_bkg"
android:drawableLeft="@drawable/module_map_ic_search"
android:drawablePadding="@dimen/dp_16"
android:drawablePadding="@dimen/module_ext_search_drawablePadding"
android:gravity="center_vertical"
android:paddingLeft="@dimen/dp_26"
android:paddingRight="@dimen/dp_26"
android:paddingLeft="@dimen/module_ext_search_paddingLeft"
android:paddingRight="@dimen/module_ext_search_paddingRight"
android:text="@string/module_map_str_search_hint"
android:textColor="#99FFFFFF"
android:textSize="@dimen/dp_32"
android:textSize="@dimen/module_ext_search_textSize"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -26,9 +27,9 @@
<LinearLayout
android:id="@+id/module_entrance_id_common_address"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_90"
android:layout_marginLeft="@dimen/dp_32"
android:layout_marginTop="@dimen/dp_2"
android:layout_height="@dimen/module_ext_common_address_height"
android:layout_marginLeft="@dimen/module_ext_common_address_marginLeft"
android:layout_marginTop="@dimen/module_ext_common_address_marginTop"
android:background="@drawable/module_ext_dw_common_corner_bkg"
android:gravity="center_vertical"
app:layout_constraintLeft_toRightOf="@+id/module_entrance_id_search"
@@ -36,8 +37,8 @@
<RelativeLayout
android:id="@+id/module_entrance_id_home"
android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_90"
android:layout_width="@dimen/module_ext_common_address_home_width"
android:layout_height="@dimen/module_ext_common_address_home_height"
android:background="@drawable/module_ext_dw_left_corner_bkg">
<ImageView
@@ -47,8 +48,8 @@
android:src="@drawable/module_map_ic_home" />
<View
android:layout_width="@dimen/dp_2"
android:layout_height="@dimen/dp_54"
android:layout_width="@dimen/module_ext_common_address_divider_width"
android:layout_height="@dimen/module_ext_common_address_divider_height"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="#1ED8D8D8" />
@@ -57,8 +58,8 @@
<LinearLayout
android:id="@+id/module_entrance_id_company"
android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_90"
android:layout_width="@dimen/module_ext_common_address_company_width"
android:layout_height="@dimen/module_ext_common_address_company_height"
android:background="@drawable/module_ext_dw_right_corner_bkg"
android:gravity="center">
@@ -71,22 +72,52 @@
</LinearLayout>
<LinearLayout
android:id="@+id/module_entrance_id_speed_limit_container"
android:layout_width="@dimen/module_ext_speed_limit_width"
android:layout_height="@dimen/module_ext_speed_limit_height"
android:layout_marginTop="@dimen/module_ext_speed_limit_marginTop"
android:layout_marginRight="@dimen/module_ext_speed_limit_marginRight"
android:background="@drawable/module_ext_dw_speed_limit_bkg"
android:gravity="center"
android:visibility="invisible"
android:orientation="vertical"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/module_entrance_id_speed_limit_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFF"
android:textSize="@dimen/module_ext_speed_limit_value_textSize"
tools:text="100" />
<TextView
android:id="@+id/module_entrance_id_speed_limit_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="km/h"
android:textColor="#CCFFFFFF"
android:textSize="@dimen/module_ext_speed_limit_unit_textSize" />
</LinearLayout>
<com.mogo.module.extensions.navi.NaviInfoView
android:id="@+id/module_entrance_id_navi_info_panel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_32"
android:layout_marginTop="@dimen/dp_2"
android:layout_marginLeft="@dimen/module_ext_navi_panel_marginLeft"
android:layout_marginTop="@dimen/module_ext_navi_panel_marginTop"
android:visibility="gone"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:id="@+id/module_entrance_id_operation_panel"
android:layout_width="@dimen/dp_90"
android:layout_width="@dimen/module_ext_operation_panel_width"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/dp_32"
android:layout_marginBottom="@dimen/dp_60"
android:layout_marginRight="@dimen/module_ext_operation_panel_marginRight"
android:layout_marginBottom="@dimen/module_ext_operation_panel_marginBottom"
android:gravity="center"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
@@ -95,7 +126,7 @@
<RelativeLayout
android:id="@+id/module_entrance_id_vr_mode"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_92"
android:layout_height="@dimen/module_ext_operation_panel_vr_height"
android:background="@drawable/module_ext_dw_top_corner_bkg"
android:orientation="vertical"
android:visibility="gone">
@@ -107,11 +138,11 @@
android:src="@drawable/module_map_ic_move2_current_location"
android:text="实景"
android:textColor="#CCFFFFFF"
android:textSize="@dimen/dp_24" />
android:textSize="@dimen/module_ext_operation_panel_vr_textSize" />
<View
android:layout_width="@dimen/dp_48"
android:layout_height="@dimen/dp_2"
android:layout_width="@dimen/module_ext_operation_panel_divider_width"
android:layout_height="@dimen/module_ext_operation_panel_divider_height"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="#1ED8D8D8" />
@@ -120,7 +151,7 @@
<LinearLayout
android:id="@+id/module_entrance_id_move2_current_location"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_90"
android:layout_height="@dimen/module_ext_operation_panel_move2_height"
android:background="@drawable/module_ext_dw_common_corner_bkg"
android:gravity="center">
@@ -133,30 +164,30 @@
<TextView
android:id="@+id/module_entrance_id_upload_road_condition"
android:layout_width="@dimen/dp_90"
android:layout_height="@dimen/dp_90"
android:layout_marginBottom="@dimen/dp_40"
android:layout_width="@dimen/module_ext_operation_panel_share_width"
android:layout_height="@dimen/module_ext_operation_panel_share_height"
android:layout_marginBottom="@dimen/module_ext_operation_panel_share_marginBottom"
android:background="@drawable/module_ext_dw_upload_road_condition_bkg"
android:gravity="center"
android:text="@string/module_map_str_upload_road_condition"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_24"
android:textSize="@dimen/module_ext_operation_panel_share_textSize"
app:layout_constraintBottom_toTopOf="@+id/module_entrance_id_operation_panel"
app:layout_constraintRight_toRightOf="@+id/module_entrance_id_operation_panel"
app:layout_goneMarginBottom="@dimen/dp_32"
app:layout_goneMarginRight="@dimen/dp_32" />
app:layout_goneMarginBottom="@dimen/module_ext_operation_panel_share_goneMarginBottom"
app:layout_goneMarginRight="@dimen/module_ext_operation_panel_share_goneMarginRight" />
<TextView
android:id="@+id/module_entrance_id_exit_navi"
android:layout_width="@dimen/dp_200"
android:layout_height="@dimen/dp_90"
android:layout_marginLeft="@dimen/dp_32"
android:layout_marginBottom="@dimen/dp_60"
android:layout_width="@dimen/module_ext_navi_exit_width"
android:layout_height="@dimen/module_ext_navi_exit_height"
android:layout_marginLeft="@dimen/module_ext_navi_exit_marginLeft"
android:layout_marginBottom="@dimen/module_ext_navi_exit_marginBottom"
android:background="@drawable/module_ext_dw_common_corner_bkg"
android:gravity="center"
android:text="退出导航"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_32"
android:textSize="@dimen/module_ext_navi_exit_textSize"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" />

View File

@@ -3,16 +3,16 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_120"
android:layout_height="@dimen/module_ext_height"
android:background="@drawable/module_ext_dw_shadow_frame_bkg"
android:orientation="vertical"
android:paddingLeft="@dimen/dp_70"
android:paddingRight="@dimen/dp_70">
android:paddingLeft="@dimen/module_ext_paddingLeft"
android:paddingRight="@dimen/module_ext_paddingRight">
<com.mogo.module.extensions.anim.JSurfaceView
android:id="@+id/module_ext_id_voice"
android:layout_width="@dimen/dp_120"
android:layout_height="@dimen/dp_120"
android:layout_width="@dimen/module_ext_voice_icon_width"
android:layout_height="@dimen/module_ext_voice_icon_height"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -24,7 +24,7 @@
android:gravity="center_vertical"
android:text="@string/module_ext_str_voice_msg"
android:textColor="@color/module_ext_color_voice_text"
android:textSize="@dimen/dp_32"
android:textSize="@dimen/module_ext_voice_textSize"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@+id/module_ext_id_voice"
app:layout_constraintTop_toTopOf="parent" />
@@ -35,7 +35,7 @@
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_48"
android:textSize="@dimen/module_ext_time_textSize"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
@@ -45,10 +45,10 @@
android:id="@+id/module_ext_id_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/dp_80"
android:layout_marginRight="@dimen/module_ext_date_marginRight"
android:gravity="center_vertical"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_28"
android:textSize="@dimen/module_ext_date_textSize"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@+id/module_ext_id_time"
app:layout_constraintTop_toTopOf="parent"
@@ -58,8 +58,8 @@
android:id="@+id/module_ext_id_weather_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/dp_26"
android:gravity="center"
android:layout_marginRight="@dimen/module_ext_weather_marginRight"
android:gravity="bottom"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@+id/module_ext_id_date"
@@ -67,25 +67,25 @@
<ImageView
android:id="@+id/module_ext_id_weather_icon"
android:layout_width="@dimen/dp_44"
android:layout_height="@dimen/dp_44" />
android:layout_width="@dimen/module_ext_weather_icon_width"
android:layout_height="@dimen/module_ext_weather_icon_height" />
<TextView
android:id="@+id/module_ext_id_weather_temp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/dp_18"
android:layout_marginRight="@dimen/module_ext_weather_temp_marginRight"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_34"
android:textSize="@dimen/module_ext_weather_temp_textSize"
tools:text="28°" />
<TextView
android:id="@+id/module_ext_id_weather_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/dp_26"
android:layout_marginRight="@dimen/module_ext_weather_temp_desc_marginRight"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_28"
android:textSize="@dimen/module_ext_weather_temp_desc_textSize"
tools:text="晴转多云" />
@@ -100,7 +100,7 @@
android:id="@+id/module_ext_id_msg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/dp_28"
android:layout_marginRight="@dimen/module_ext_msg_marginRight"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@+id/module_ext_id_weather_container"
@@ -113,13 +113,13 @@
<TextView
android:id="@+id/module_ext_id_msg_counter"
android:layout_width="@dimen/dp_30"
android:layout_height="@dimen/dp_30"
android:layout_width="@dimen/module_ext_msg_counter_width"
android:layout_height="@dimen/module_ext_msg_counter_height"
android:layout_gravity="right"
android:background="@drawable/module_ext_drawable_msg_bkg"
android:gravity="center"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_20"
android:textSize="@dimen/module_ext_msg_counter_textSize"
tools:text="···" />
</FrameLayout>

View File

@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="@dimen/dp_458"
android:layout_height="@dimen/dp_318"
android:layout_width="@dimen/module_ext_navi_info_panel_width"
android:layout_height="@dimen/module_ext_navi_info_panel_height"
android:background="@drawable/module_ext_dw_navi_info_panel_bkg"
android:orientation="vertical">
<ImageView
android:id="@+id/module_map_id_navi_next_info_road_turn_icon"
android:layout_width="@dimen/dp_159"
android:layout_height="@dimen/dp_159"
android:layout_marginLeft="@dimen/dp_24"
android:layout_marginTop="@dimen/dp_24"
android:layout_width="@dimen/module_ext_navi_info_panel_turn_icon_width"
android:layout_height="@dimen/module_ext_navi_info_panel_turn_icon_height"
android:layout_marginLeft="@dimen/module_ext_navi_info_panel_turn_icon_marginLeft"
android:layout_marginTop="@dimen/module_ext_navi_info_panel_turn_icon_marginTop"
android:scaleType="fitCenter"
tools:src="@drawable/ic_11" />
@@ -20,10 +20,10 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/module_map_id_navi_next_info_road_turn_icon"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginTop="@dimen/module_ext_navi_info_panel_next_info_distance_marginTop"
android:layout_toRightOf="@+id/module_map_id_navi_next_info_road_turn_icon"
android:textColor="#282828"
android:textSize="@dimen/dp_60"
android:textSize="@dimen/module_ext_navi_info_panel_next_info_distance_textSize"
tools:text="53" />
<TextView
@@ -31,11 +31,11 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/module_map_id_navi_next_info_distance"
android:layout_marginLeft="@dimen/dp_12"
android:layout_marginBottom="@dimen/dp_16"
android:layout_marginLeft="@dimen/module_ext_navi_info_panel_next_info_distance_unit_marginLeft"
android:layout_marginBottom="@dimen/module_ext_navi_info_panel_next_info_distance_unit_marginBottom"
android:layout_toRightOf="@+id/module_map_id_navi_next_info_distance"
android:textColor="#282828"
android:textSize="@dimen/dp_28"
android:textSize="@dimen/module_ext_navi_info_panel_next_info_distance_unit_textSize"
tools:text="米" />
<TextView
@@ -47,7 +47,7 @@
android:ellipsize="end"
android:maxLines="2"
android:textColor="#282828"
android:textSize="@dimen/dp_28"
android:textSize="@dimen/module_ext_navi_info_panel_next_info_road_textSize"
tools:text="北三环东路辅路" />
<TextView
@@ -56,11 +56,11 @@
android:layout_height="wrap_content"
android:layout_below="@+id/module_map_id_navi_next_info_road_turn_icon"
android:layout_alignParentBottom="true"
android:layout_marginTop="@dimen/dp_24"
android:layout_marginTop="@dimen/module_ext_navi_info_panel__arrive_destination_estimate_info_marginTop"
android:background="@drawable/module_ext_dw_navi_info_extras_bkg"
android:gravity="center"
android:maxLines="2"
android:textColor="#282828"
android:textSize="@dimen/dp_28"
android:textSize="@dimen/module_ext_navi_info_panel__arrive_destination_estimate_info_textSize"
tools:text="剩余2000.8公里 1000小时59分钟59秒 \n1天后达到达到达到达到" />
</RelativeLayout>

View File

@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- module_ext_layout_entrance.xml-->
<dimen name="module_ext_search_height">58px</dimen>
<dimen name="module_ext_search_marginLeft">18px</dimen>
<dimen name="module_ext_search_marginTop">8px</dimen>
<dimen name="module_ext_search_drawablePadding">11.2px</dimen>
<dimen name="module_ext_search_paddingLeft">10.8px</dimen>
<dimen name="module_ext_search_paddingRight">17px</dimen>
<dimen name="module_ext_search_textSize">20px</dimen>
<dimen name="module_ext_common_address_height">58px</dimen>
<dimen name="module_ext_common_address_marginLeft">19px</dimen>
<dimen name="module_ext_common_address_marginTop">8px</dimen>
<dimen name="module_ext_common_address_home_width">64.2px</dimen>
<dimen name="module_ext_common_address_home_height">58px</dimen>
<dimen name="module_ext_common_address_divider_width">1px</dimen>
<dimen name="module_ext_common_address_divider_height">33.4px</dimen>
<dimen name="module_ext_common_address_company_width">64.2px</dimen>
<dimen name="module_ext_common_address_company_height">58px</dimen>
<dimen name="module_ext_speed_limit_width">96px</dimen>
<dimen name="module_ext_speed_limit_height">96px</dimen>
<dimen name="module_ext_speed_limit_marginTop">8px</dimen>
<dimen name="module_ext_speed_limit_marginRight">32px</dimen>
<dimen name="module_ext_speed_limit_value_textSize">32px</dimen>
<dimen name="module_ext_speed_limit_unit_textSize">15px</dimen>
<dimen name="module_ext_navi_panel_marginLeft">20px</dimen>
<dimen name="module_ext_navi_panel_marginTop">8px</dimen>
<dimen name="module_ext_operation_panel_width">58px</dimen>
<dimen name="module_ext_operation_panel_marginRight">20px</dimen>
<dimen name="module_ext_operation_panel_marginBottom">34.5px</dimen>
<dimen name="module_ext_operation_panel_vr_height">58px</dimen>
<dimen name="module_ext_operation_panel_vr_textSize">17px</dimen>
<dimen name="module_ext_operation_panel_divider_width">31.4px</dimen>
<dimen name="module_ext_operation_panel_divider_height">1.2px</dimen>
<dimen name="module_ext_operation_panel_move2_height">58px</dimen>
<dimen name="module_ext_operation_panel_share_width">58px</dimen>
<dimen name="module_ext_operation_panel_share_height">58px</dimen>
<dimen name="module_ext_operation_panel_share_marginBottom">21px</dimen>
<dimen name="module_ext_operation_panel_share_textSize">14px</dimen>
<dimen name="module_ext_operation_panel_share_goneMarginBottom">34.5px</dimen>
<dimen name="module_ext_operation_panel_share_goneMarginRight">20px</dimen>
<dimen name="module_ext_navi_exit_width">130px</dimen>
<dimen name="module_ext_navi_exit_height">58px</dimen>
<dimen name="module_ext_navi_exit_marginLeft">20px</dimen>
<dimen name="module_ext_navi_exit_marginBottom">32px</dimen>
<dimen name="module_ext_navi_exit_textSize">22px</dimen>
<!-- module_ext_layout_extensions.xml-->
<dimen name="module_ext_height">640px</dimen>
<dimen name="module_ext_paddingRight">32px</dimen>
<dimen name="module_ext_paddingLeft">32px</dimen>
<dimen name="module_ext_voice_icon_width">64px</dimen>
<dimen name="module_ext_voice_icon_height">64px</dimen>
<dimen name="module_ext_voice_textSize">22px</dimen>
<dimen name="module_ext_time_textSize">28px</dimen>
<dimen name="module_ext_date_marginRight">22px</dimen>
<dimen name="module_ext_date_textSize">22px</dimen>
<dimen name="module_ext_weather_marginRight">16px</dimen>
<dimen name="module_ext_weather_icon_width">24px</dimen>
<dimen name="module_ext_weather_icon_height">24px</dimen>
<dimen name="module_ext_weather_temp_marginRight">18px</dimen>
<dimen name="module_ext_weather_temp_textSize">18.48px</dimen>
<dimen name="module_ext_weather_temp_desc_marginRight">16px</dimen>
<dimen name="module_ext_weather_temp_desc_textSize">22px</dimen>
<dimen name="module_ext_msg_marginRight">28px</dimen>
<dimen name="module_ext_msg_counter_width">15px</dimen>
<dimen name="module_ext_msg_counter_height">15px</dimen>
<dimen name="module_ext_msg_counter_textSize">11.73px</dimen>
<!-- module_map_layout_navi_info_panel.xml-->
<dimen name="module_ext_navi_info_panel_width">244px</dimen>
<dimen name="module_ext_navi_info_panel_height">170px</dimen>
<dimen name="module_ext_navi_info_panel_turn_icon_width">85px</dimen>
<dimen name="module_ext_navi_info_panel_turn_icon_height">85px</dimen>
<dimen name="module_ext_navi_info_panel_turn_icon_marginLeft">13px</dimen>
<dimen name="module_ext_navi_info_panel_turn_icon_marginTop">13px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_marginTop">20px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_textSize">32px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_unit_marginLeft">7px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_unit_marginBottom">8px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_unit_textSize">16px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_road_textSize">15px</dimen>
<dimen name="module_ext_navi_info_panel__arrive_destination_estimate_info_marginTop">24px
</dimen>
<dimen name="module_ext_navi_info_panel__arrive_destination_estimate_info_textSize">15px</dimen>
</resources>

View File

@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- module_ext_layout_entrance.xml-->
<dimen name="module_ext_search_height">90px</dimen>
<dimen name="module_ext_search_marginLeft">32px</dimen>
<dimen name="module_ext_search_marginTop">2px</dimen>
<dimen name="module_ext_search_drawablePadding">16px</dimen>
<dimen name="module_ext_search_paddingLeft">26px</dimen>
<dimen name="module_ext_search_paddingRight">26px</dimen>
<dimen name="module_ext_search_textSize">32px</dimen>
<dimen name="module_ext_common_address_height">90px</dimen>
<dimen name="module_ext_common_address_marginLeft">32px</dimen>
<dimen name="module_ext_common_address_marginTop">2px</dimen>
<dimen name="module_ext_common_address_home_width">100px</dimen>
<dimen name="module_ext_common_address_home_height">90px</dimen>
<dimen name="module_ext_common_address_divider_width">2px</dimen>
<dimen name="module_ext_common_address_divider_height">54px</dimen>
<dimen name="module_ext_common_address_company_width">100px</dimen>
<dimen name="module_ext_common_address_company_height">90px</dimen>
<dimen name="module_ext_speed_limit_width">180px</dimen>
<dimen name="module_ext_speed_limit_height">180px</dimen>
<dimen name="module_ext_speed_limit_marginTop">2px</dimen>
<dimen name="module_ext_speed_limit_marginRight">60px</dimen>
<dimen name="module_ext_speed_limit_value_textSize">60px</dimen>
<dimen name="module_ext_speed_limit_unit_textSize">28px</dimen>
<dimen name="module_ext_navi_panel_marginLeft">32px</dimen>
<dimen name="module_ext_navi_panel_marginTop">2px</dimen>
<dimen name="module_ext_operation_panel_width">90px</dimen>
<dimen name="module_ext_operation_panel_marginRight">32px</dimen>
<dimen name="module_ext_operation_panel_marginBottom">60px</dimen>
<dimen name="module_ext_operation_panel_vr_height">92px</dimen>
<dimen name="module_ext_operation_panel_vr_textSize">24px</dimen>
<dimen name="module_ext_operation_panel_divider_width">48px</dimen>
<dimen name="module_ext_operation_panel_divider_height">2px</dimen>
<dimen name="module_ext_operation_panel_move2_height">90px</dimen>
<dimen name="module_ext_operation_panel_share_width">90px</dimen>
<dimen name="module_ext_operation_panel_share_height">90px</dimen>
<dimen name="module_ext_operation_panel_share_marginBottom">40px</dimen>
<dimen name="module_ext_operation_panel_share_textSize">24px</dimen>
<dimen name="module_ext_operation_panel_share_goneMarginBottom">32px</dimen>
<dimen name="module_ext_operation_panel_share_goneMarginRight">32px</dimen>
<dimen name="module_ext_navi_exit_width">200px</dimen>
<dimen name="module_ext_navi_exit_height">90px</dimen>
<dimen name="module_ext_navi_exit_marginLeft">32px</dimen>
<dimen name="module_ext_navi_exit_marginBottom">60px</dimen>
<dimen name="module_ext_navi_exit_textSize">32px</dimen>
<!-- module_ext_layout_extensions.xml-->
<dimen name="module_ext_height">120px</dimen>
<dimen name="module_ext_paddingRight">60px</dimen>
<dimen name="module_ext_paddingLeft">60px</dimen>
<dimen name="module_ext_voice_icon_width">120px</dimen>
<dimen name="module_ext_voice_icon_height">120px</dimen>
<dimen name="module_ext_voice_textSize">32px</dimen>
<dimen name="module_ext_time_textSize">48px</dimen>
<dimen name="module_ext_date_marginRight">80px</dimen>
<dimen name="module_ext_date_textSize">28px</dimen>
<dimen name="module_ext_weather_marginRight">26px</dimen>
<dimen name="module_ext_weather_icon_width">44px</dimen>
<dimen name="module_ext_weather_icon_height">44px</dimen>
<dimen name="module_ext_weather_temp_marginRight">18px</dimen>
<dimen name="module_ext_weather_temp_textSize">34px</dimen>
<dimen name="module_ext_weather_temp_desc_marginRight">26px</dimen>
<dimen name="module_ext_weather_temp_desc_textSize">28px</dimen>
<dimen name="module_ext_msg_marginRight">28px</dimen>
<dimen name="module_ext_msg_counter_width">30px</dimen>
<dimen name="module_ext_msg_counter_height">30px</dimen>
<dimen name="module_ext_msg_counter_textSize">20px</dimen>
<!-- module_map_layout_navi_info_panel.xml-->
<dimen name="module_ext_navi_info_panel_width">458px</dimen>
<dimen name="module_ext_navi_info_panel_height">318px</dimen>
<dimen name="module_ext_navi_info_panel_turn_icon_width">159px</dimen>
<dimen name="module_ext_navi_info_panel_turn_icon_height">159px</dimen>
<dimen name="module_ext_navi_info_panel_turn_icon_marginLeft">24px</dimen>
<dimen name="module_ext_navi_info_panel_turn_icon_marginTop">24px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_marginTop">10px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_textSize">60px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_unit_marginLeft">12px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_unit_marginBottom">16px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_unit_textSize">28px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_road_textSize">28px</dimen>
<dimen name="module_ext_navi_info_panel__arrive_destination_estimate_info_marginTop">24px</dimen>
<dimen name="module_ext_navi_info_panel__arrive_destination_estimate_info_textSize">28px</dimen>
</resources>

View File

@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- module_ext_layout_entrance.xml-->
<dimen name="module_ext_search_height">90px</dimen>
<dimen name="module_ext_search_marginLeft">32px</dimen>
<dimen name="module_ext_search_marginTop">2px</dimen>
<dimen name="module_ext_search_drawablePadding">16px</dimen>
<dimen name="module_ext_search_paddingLeft">26px</dimen>
<dimen name="module_ext_search_paddingRight">26px</dimen>
<dimen name="module_ext_search_textSize">32px</dimen>
<dimen name="module_ext_common_address_height">90px</dimen>
<dimen name="module_ext_common_address_marginLeft">32px</dimen>
<dimen name="module_ext_common_address_marginTop">2px</dimen>
<dimen name="module_ext_common_address_home_width">100px</dimen>
<dimen name="module_ext_common_address_home_height">90px</dimen>
<dimen name="module_ext_common_address_divider_width">2px</dimen>
<dimen name="module_ext_common_address_divider_height">54px</dimen>
<dimen name="module_ext_common_address_company_width">100px</dimen>
<dimen name="module_ext_common_address_company_height">90px</dimen>
<dimen name="module_ext_speed_limit_width">180px</dimen>
<dimen name="module_ext_speed_limit_height">180px</dimen>
<dimen name="module_ext_speed_limit_marginTop">2px</dimen>
<dimen name="module_ext_speed_limit_marginRight">60px</dimen>
<dimen name="module_ext_speed_limit_value_textSize">60px</dimen>
<dimen name="module_ext_speed_limit_unit_textSize">28px</dimen>
<dimen name="module_ext_navi_panel_marginLeft">32px</dimen>
<dimen name="module_ext_navi_panel_marginTop">2px</dimen>
<dimen name="module_ext_operation_panel_width">90px</dimen>
<dimen name="module_ext_operation_panel_marginRight">32px</dimen>
<dimen name="module_ext_operation_panel_marginBottom">60px</dimen>
<dimen name="module_ext_operation_panel_vr_height">92px</dimen>
<dimen name="module_ext_operation_panel_vr_textSize">24px</dimen>
<dimen name="module_ext_operation_panel_divider_width">48px</dimen>
<dimen name="module_ext_operation_panel_divider_height">2px</dimen>
<dimen name="module_ext_operation_panel_move2_height">90px</dimen>
<dimen name="module_ext_operation_panel_share_width">90px</dimen>
<dimen name="module_ext_operation_panel_share_height">90px</dimen>
<dimen name="module_ext_operation_panel_share_marginBottom">40px</dimen>
<dimen name="module_ext_operation_panel_share_textSize">24px</dimen>
<dimen name="module_ext_operation_panel_share_goneMarginBottom">32px</dimen>
<dimen name="module_ext_operation_panel_share_goneMarginRight">32px</dimen>
<dimen name="module_ext_navi_exit_width">200px</dimen>
<dimen name="module_ext_navi_exit_height">90px</dimen>
<dimen name="module_ext_navi_exit_marginLeft">32px</dimen>
<dimen name="module_ext_navi_exit_marginBottom">60px</dimen>
<dimen name="module_ext_navi_exit_textSize">32px</dimen>
<!-- module_ext_layout_extensions.xml-->
<dimen name="module_ext_height">120px</dimen>
<dimen name="module_ext_paddingRight">60px</dimen>
<dimen name="module_ext_paddingLeft">60px</dimen>
<dimen name="module_ext_voice_icon_width">120px</dimen>
<dimen name="module_ext_voice_icon_height">120px</dimen>
<dimen name="module_ext_voice_textSize">32px</dimen>
<dimen name="module_ext_time_textSize">48px</dimen>
<dimen name="module_ext_date_marginRight">80px</dimen>
<dimen name="module_ext_date_textSize">28px</dimen>
<dimen name="module_ext_weather_marginRight">26px</dimen>
<dimen name="module_ext_weather_icon_width">44px</dimen>
<dimen name="module_ext_weather_icon_height">44px</dimen>
<dimen name="module_ext_weather_temp_marginRight">18px</dimen>
<dimen name="module_ext_weather_temp_textSize">34px</dimen>
<dimen name="module_ext_weather_temp_desc_marginRight">26px</dimen>
<dimen name="module_ext_weather_temp_desc_textSize">28px</dimen>
<dimen name="module_ext_msg_marginRight">28px</dimen>
<dimen name="module_ext_msg_counter_width">30px</dimen>
<dimen name="module_ext_msg_counter_height">30px</dimen>
<dimen name="module_ext_msg_counter_textSize">20px</dimen>
<!-- module_map_layout_navi_info_panel.xml-->
<dimen name="module_ext_navi_info_panel_width">458px</dimen>
<dimen name="module_ext_navi_info_panel_height">318px</dimen>
<dimen name="module_ext_navi_info_panel_turn_icon_width">159px</dimen>
<dimen name="module_ext_navi_info_panel_turn_icon_height">159px</dimen>
<dimen name="module_ext_navi_info_panel_turn_icon_marginLeft">24px</dimen>
<dimen name="module_ext_navi_info_panel_turn_icon_marginTop">24px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_marginTop">10px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_textSize">60px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_unit_marginLeft">12px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_unit_marginBottom">16px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_unit_textSize">28px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_road_textSize">28px</dimen>
<dimen name="module_ext_navi_info_panel__arrive_destination_estimate_info_marginTop">24px</dimen>
<dimen name="module_ext_navi_info_panel__arrive_destination_estimate_info_textSize">28px</dimen>
</resources>

View File

@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
// buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion

View File

@@ -5,7 +5,7 @@
<activity
android:name=".MainActivity"
android:clearTaskOnLaunch="true"
android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|mcc|mnc|keyboard|navigation"
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
android:enabled="true"
android:launchMode="singleInstance"
android:resizeableActivity="true"

View File

@@ -1,7 +1,6 @@
package com.mogo.module.main;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.widget.FrameLayout;
@@ -100,23 +99,20 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
@Override
public void onPageSelected( int position ) {
try {
IMogoModuleProvider provider = mCardModulesAdapter.getProvider( mCurrentPosition );
trackLastCardShowEvent( provider );
mCurrentPosition = position;
final IMogoModuleProvider provider = mCardModulesAdapter.getProvider( position );
provider = mCardModulesAdapter.getProvider( mCurrentPosition );
mMogoModuleHandler.setEnable( provider.getModuleName() );
if ( !isClickMarker ) {
mMogoCardManager.invoke( position, mMogoModuleHandler.getCurrentModuleName() );
}
trackCardSelectedEvent( provider );
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Override
public void onPageScrolled( int position, float positionOffset, int positionOffsetPixels ) {
super.onPageScrolled( position, positionOffset, positionOffsetPixels );
}
@Override
public void onPageScrollStateChanged( int state ) {
super.onPageScrollStateChanged( state );
@@ -135,7 +131,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
* 卡片展示时长埋点
* @param provider
*/
private void trackCardSelectedEvent( IMogoModuleProvider provider ) {
private void trackLastCardShowEvent( IMogoModuleProvider provider ) {
if ( provider == null ) {
return;
}
@@ -143,6 +139,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
properties.put( "appname", provider.getAppName() );
properties.put( "packagename", provider.getAppPackage() );
properties.put( "activeTime", System.currentTimeMillis() - mCardStartShowTime );
properties.put( "type", provider.getModuleName() );
mAnalytics.track( "Launcher_Card_Show", properties );
mCardStartShowTime = System.currentTimeMillis();
}
@@ -157,6 +154,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
Map< String, Object > properties = new HashMap<>();
properties.put( "appname", provider.getAppName() );
properties.put( "packagename", provider.getAppPackage() );
properties.put( "type", provider.getModuleName() );
mAnalytics.track( "Launcher_Card_Slide", properties );
}
} );

View File

@@ -19,6 +19,7 @@ import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.model.MogoPoi;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.map.navi.MogoNaviInfo;
import com.mogo.map.navi.MogoTraffic;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.module.common.MogoModule;
import com.mogo.module.common.MogoModulePaths;
@@ -212,96 +213,216 @@ public class MogoModulesManager implements MogoModulesHandler,
mMapLoadedCallback = null;
}
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onMapLoaded();
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onMapLoaded();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onTouch( MotionEvent motionEvent ) {
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onTouch( motionEvent );
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onTouch( motionEvent );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onPOIClick( MogoPoi poi ) {
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onPOIClick( poi );
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onPOIClick( poi );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onMapClick( MogoLatLng latLng ) {
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onMapClick( latLng );
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onMapClick( latLng );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onLockMap( boolean isLock ) {
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onLockMap( isLock );
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onLockMap( isLock );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onMapModeChanged( EnumMapUI ui ) {
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onMapModeChanged( ui );
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onMapModeChanged( ui );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onMapChanged( MogoLatLng location, float zoom, float tilt, float bearing ) {
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onMapChanged( location, zoom, tilt, bearing );
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onMapChanged( location, zoom, tilt, bearing );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onInitNaviFailure() {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onInitNaviFailure();
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onInitNaviFailure();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onInitNaviSuccess() {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onInitNaviSuccess();
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onInitNaviSuccess();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onNaviInfoUpdate( MogoNaviInfo naviinfo ) {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onNaviInfoUpdate( naviinfo );
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onNaviInfoUpdate( naviinfo );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onStartNavi() {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onStartNavi();
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onStartNavi();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onStopNavi() {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onStopNavi();
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onStopNavi();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@@ -309,24 +430,72 @@ public class MogoModulesManager implements MogoModulesHandler,
@Override
public void onCalculateSuccess() {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onCalculateSuccess();
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onCalculateSuccess();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onoCalculateFailed() {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onoCalculateFailed();
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onoCalculateFailed();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onUpdateTraffic( MogoTraffic traffic ) {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onUpdateTraffic(traffic);
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onLocationChanged( MogoLocation location ) {
Iterator< IMogoLocationListener > iterator = MogoRegisterCenterHandler.getInstance().getLocationListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onLocationChanged( location );
IMogoLocationListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onLocationChanged( location );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@@ -375,7 +544,11 @@ public class MogoModulesManager implements MogoModulesHandler,
public void onMarkerReceive( IMogoMarker marker ) {
IMogoMarkerClickListener listener = MogoRegisterCenterHandler.getInstance().getMarkerListener( marker.getOwner() );
if ( listener != null ) {
listener.onMarkerClicked( marker );
try {
listener.onMarkerClicked( marker );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}

View File

@@ -1,40 +0,0 @@
package com.mogo.module.main.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.text.TextUtils;
/**
* @author congtaowang
* @since 2020-01-02
* <p>
* 广播接收者
* <p>
* {@link Intent#ACTION_POWER_CONNECTED}
* {@link Intent#ACTION_POWER_DISCONNECTED}
*/
public class MogoReceiver extends BroadcastReceiver {
public static void register( Context context ) {
if ( context == null ) {
return;
}
IntentFilter inputFilter = new IntentFilter();
inputFilter.addAction( Intent.ACTION_POWER_CONNECTED );
inputFilter.addAction( Intent.ACTION_POWER_DISCONNECTED );
context.getApplicationContext().registerReceiver( new MogoReceiver(), inputFilter );
}
@Override
public void onReceive( Context context, Intent intent ) {
final String action = intent.getAction();
if ( TextUtils.equals( action, Intent.ACTION_POWER_CONNECTED ) ) {
}
if ( TextUtils.equals( action, Intent.ACTION_POWER_DISCONNECTED ) ) {
}
}
}

View File

@@ -15,7 +15,7 @@
<FrameLayout
android:id="@+id/module_main_id_map_shadow_frame"
android:layout_width="@dimen/dp_720"
android:layout_width="@dimen/module_main_map_shadow_frame_width"
android:layout_height="match_parent"
android:background="@drawable/module_main_dw_left_frame_bkg"
android:visibility="invisible" />
@@ -36,21 +36,21 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_10">
android:layout_marginTop="@dimen/module_main_card_container_marginTop">
<!-- 卡片-->
<FrameLayout
android:layout_width="@dimen/dp_660"
android:layout_width="@dimen/module_main_card_container_width"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/dp_70">
android:layout_marginLeft="@dimen/module_main_card_container_marginLeft">
<com.mogo.module.main.cards.OrientedViewPager
android:id="@+id/module_main_id_cards_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="@dimen/dp_211"
android:layout_marginBottom="@dimen/module_main_card_container_marginBottom"
android:clipToPadding="false"
android:overScrollMode="never"
android:paddingBottom="@dimen/dp_20" />
android:paddingBottom="@dimen/module_main_card_container_paddingBottom" />
<!-- 应用入口-->
<FrameLayout
android:id="@+id/module_main_id_apps_fragment_container"

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- module_main_activity_main.xml-->
<dimen name="module_main_map_shadow_frame_width">720px</dimen>
<dimen name="module_main_card_container_marginTop">10px</dimen>
<dimen name="module_main_card_container_width">660px</dimen>
<dimen name="module_main_card_container_marginLeft">60px</dimen>
<dimen name="module_main_card_container_marginBottom">211px</dimen>
<dimen name="module_main_card_container_paddingBottom">20px</dimen>
</resources>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- module_main_activity_main.xml-->
<dimen name="module_main_map_shadow_frame_width">720px</dimen>
<dimen name="module_main_card_container_marginTop">10px</dimen>
<dimen name="module_main_card_container_width">660px</dimen>
<dimen name="module_main_card_container_marginLeft">60px</dimen>
<dimen name="module_main_card_container_marginBottom">211px</dimen>
<dimen name="module_main_card_container_paddingBottom">20px</dimen>
</resources>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- module_main_activity_main.xml-->
<dimen name="module_main_map_shadow_frame_width">384px</dimen>
<dimen name="module_main_card_container_marginTop">8px</dimen>
<dimen name="module_main_card_container_width">352px</dimen>
<dimen name="module_main_card_container_marginLeft">32px</dimen>
<dimen name="module_main_card_container_marginBottom">140.5px</dimen>
<dimen name="module_main_card_container_paddingBottom">20px</dimen>
</resources>

View File

@@ -3,7 +3,7 @@ apply plugin: 'com.alibaba.arouter'
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
// buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion

View File

@@ -4,7 +4,7 @@ apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
// buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion

View File

@@ -8,6 +8,7 @@ import com.mogo.map.MogoLatLng
import com.mogo.map.navi.IMogoNaviListener
import com.mogo.map.navi.MogoCalculatePath
import com.mogo.map.navi.MogoNaviInfo
import com.mogo.map.navi.MogoTraffic
import com.mogo.map.search.inputtips.MogoTip
import com.mogo.module.common.MogoModulePaths
import com.mogo.module.navi.R
@@ -53,7 +54,10 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener {
override fun onoCalculateFailed() {
}
private lateinit var mAdapter: CalculatePathAdapter
override fun onUpdateTraffic(traffic: MogoTraffic?) {
}
private lateinit var mAdapter: CalculatePathAdapter
override fun getLayoutId(): Int {
return R.layout.fragment_search_category
}

View File

@@ -3,7 +3,7 @@ apply plugin: 'com.alibaba.arouter'
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
// buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion

View File

@@ -32,6 +32,10 @@ import com.mogo.service.map.IMogoMapService;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.utils.logger.Logger;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -263,6 +267,8 @@ public class MarkerServiceHandler {
lastMarker = null;
getMarkerManager().removeMarkers();
JSONArray array = new JSONArray();
// 解析不同的Marker类型然后对应的进行绘制
if (response != null && response.getResult() != null) {
MarkerCardResult markerCardResult = response.getResult();
@@ -301,7 +307,7 @@ public class MarkerServiceHandler {
drawMapMarker(markerShowEntity);
}
analyticData(3, onlineCarList.size());
fillNumberTrackEventBody(array, 3, onlineCarList.size());
}
if (exploreWayList != null) {
@@ -318,7 +324,7 @@ public class MarkerServiceHandler {
drawMapMarker(markerShowEntity);
}
}
analyticData(1, exploreWayList.size());
fillNumberTrackEventBody(array, 1, exploreWayList.size());
}
if (shareMusicList != null) {
@@ -334,7 +340,7 @@ public class MarkerServiceHandler {
drawMapMarker(markerShowEntity);
}
analyticData(4, shareMusicList.size());
fillNumberTrackEventBody(array, 4, shareMusicList.size());
}
if (noveltyInfoList != null) {
@@ -373,27 +379,42 @@ public class MarkerServiceHandler {
break;
}
}
analyticData(2, num_gas_station);
analyticData(6, num_road_closed);
analyticData(5, num_traffic_check);
analyticData(7, num_shop_discount);
analyticData(8, num_fours_shop);
fillNumberTrackEventBody(array,2, num_gas_station);
fillNumberTrackEventBody(array,6, num_road_closed);
fillNumberTrackEventBody(array,5, num_traffic_check);
fillNumberTrackEventBody(array,7, num_shop_discount);
fillNumberTrackEventBody(array,8, num_fours_shop);
}
analyticData(array);
}
}
private static void fillNumberTrackEventBody(JSONArray arr, int type, int size){
JSONObject object = new JSONObject( );
try {
object.put( "type", type );
object.put( "num", size);
if ( arr != null ) {
arr.put( object );
}
} catch ( JSONException e ) {
e.printStackTrace();
}
getMapUIController().changeZoom(12);
}
/**
* 统计地图内数据获取
*
* @param type 类型
* @param num marker数量
* @param array 埋点数据
*/
private static void analyticData(int type, int num) {
private static void analyticData(JSONArray array) {
try {
if ( array == null || array.length() == 0 ) {
return;
}
final Map<String, Object> properties = new HashMap<>();
properties.put("type", type);
properties.put("num", num);
properties.put("data", array.toString());
getMogoAnalytics().track("Launcher_Data_Get", properties);
} catch (Exception e) {
e.printStackTrace();
@@ -411,14 +432,14 @@ public class MarkerServiceHandler {
MogoMarkerOptions options = new MogoMarkerOptions()
.owner(markerShowEntity.getMarkerType())
.alpha( 0.7f )
.object( markerShowEntity )
.latitude(markerShowEntity.getMarkerLocation().getLat())
.longitude(markerShowEntity.getMarkerLocation().getLon());
options.icon(markerView);
IMogoMarker marker = getMarkerManager().addMarker(markerShowEntity.getMarkerType(), options);
marker.setOnMarkerClickListener(mogoMarkerClickListener);
marker.setObject(markerShowEntity);
marker.setAlpha(0.7f);
return marker;
} else {
Logger.e(TAG, "Location 必须进行初始化!!!!!");

View File

@@ -26,6 +26,7 @@ import com.mogo.map.marker.IMogoMarkerManager;
import com.mogo.map.model.MogoPoi;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.map.navi.MogoNaviInfo;
import com.mogo.map.navi.MogoTraffic;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.common.MogoModule;
@@ -46,8 +47,6 @@ import com.mogo.service.module.ModuleType;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.service.voice.IMogoVoiceListener;
import com.mogo.service.voice.IMogoVoiceManager;
import com.mogo.utils.logger.Logger;
import java.util.List;
@@ -116,7 +115,7 @@ public class MogoServiceProvider implements IMogoModuleProvider,
case ServiceConst.MSG_TYPE_REFRESH_DECREASE:
mRefreshRemainingTime -= ServiceConst.DECREASE_INTERVAL;
if ( mRefreshRemainingTime == 0 ) {
notifyRefreshData( mLastAutoRefreshLocation, 2_000, mAutoRefreshCallback );
notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback );
} else {
mHandler.sendEmptyMessageDelayed( msg.what, ServiceConst.DECREASE_INTERVAL );
}
@@ -239,8 +238,10 @@ public class MogoServiceProvider implements IMogoModuleProvider,
registerCenter.registerMogoMapListener( getModuleName(), this );
mIntentManager = ( IMogoIntentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_INTENT_MANAGER ).navigation( context );
mIntentManager.registerIntentListener( MogoReceiver.ADAS_ACTION, this );
mIntentManager.registerIntentListener( MogoReceiver.ACTIION_ADAS, this );
mIntentManager.registerIntentListener( Intent.ACTION_POWER_CONNECTED, this );
mIntentManager.registerIntentListener( Intent.ACTION_POWER_DISCONNECTED, this );
mIntentManager.registerIntentListener( MogoReceiver.ACTION_NWD_ACC, this );
}
private void registerAIReceiver( Context context ) {
@@ -262,7 +263,11 @@ public class MogoServiceProvider implements IMogoModuleProvider,
}
}
filter.addAction( MogoReceiver.VOICE_ACTION );
filter.addAction( MogoReceiver.ADAS_ACTION );
filter.addAction( MogoReceiver.ACTIION_ADAS );
filter.addAction( MogoReceiver.ACTION_NWD_ACC );
// acc On
filter.addAction( Intent.ACTION_POWER_CONNECTED );
filter.addAction( Intent.ACTION_POWER_DISCONNECTED );
try {
context.getApplicationContext().registerReceiver( mAIAssistReceiver, filter );
Logger.i( TAG, "register voice receiver." );
@@ -297,7 +302,11 @@ public class MogoServiceProvider implements IMogoModuleProvider,
* @return
*/
private float getMapCameraFactWidth() {
return Utils.calculateLineDistance( mCameraNorthEastPosition, new MogoLatLng( mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng ) );
try {
return Utils.calculateLineDistance( mCameraNorthEastPosition, new MogoLatLng( mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng ) );
} catch ( Exception e ) {
return 1000f;
}
}
/**
@@ -306,7 +315,11 @@ public class MogoServiceProvider implements IMogoModuleProvider,
* @return
*/
private float getMapCameraFactHeight() {
return Utils.calculateLineDistance( mCameraSouthWestPosition, new MogoLatLng( mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng ) );
try {
return Utils.calculateLineDistance( mCameraSouthWestPosition, new MogoLatLng( mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng ) );
} catch ( Exception e ) {
return 1000f;
}
}
/**
@@ -368,7 +381,6 @@ public class MogoServiceProvider implements IMogoModuleProvider,
@Override
public void onMapChanged( MogoLatLng latLng, float zoom, float tilt, float bearing ) {
if ( mIsCameraInited ) {
mLastCustomRefreshCenterLocation = latLng;
mIsCameraInited = false;
@@ -385,14 +397,15 @@ public class MogoServiceProvider implements IMogoModuleProvider,
notifyRefreshData( latLng, getQueryRadius(), mCustomRefreshCallback );
mLastCustomRefreshCenterLocation = latLng;
mLastZoomLevel = zoom;
} else if ( mLastZoomLevel - zoom < 0 ) {
mLastZoomLevel = zoom;
} else if ( mLastZoomLevel == zoom ) {
// 手动平移
if ( invokeRefreshWhenTranslationByUser( latLng ) ) {
notifyRefreshData( latLng, getQueryRadius(), mCustomRefreshCallback );
mLastCustomRefreshCenterLocation = latLng;
}
} else {
mLastZoomLevel = zoom;
}
}
@@ -435,11 +448,11 @@ public class MogoServiceProvider implements IMogoModuleProvider,
// 自动刷新触发
if ( mLastAutoRefreshLocation == null ) {
mLastAutoRefreshLocation = new MogoLatLng( location.getLatitude(), location.getLongitude() );
notifyRefreshData( mLastAutoRefreshLocation, 2_000, mAutoRefreshCallback );
notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback );
} else {
float distance = Utils.calculateLineDistance( mLastAutoRefreshLocation, new MogoLatLng( location.getLatitude(), location.getLongitude() ) );
if ( distance > mAutoRefreshStrategy.getDistance() ) {
notifyRefreshData( mLastAutoRefreshLocation, 2_000, mAutoRefreshCallback );
notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback );
}
}
}
@@ -452,6 +465,7 @@ public class MogoServiceProvider implements IMogoModuleProvider,
return;
}
Logger.d( TAG, mAutoRefreshCallback == callback ? "触发自动刷新" : "触发手动刷新" );
Logger.i( TAG, "刷新半径 = %d, 点 = %s", radius, latLng );
mRefreshModel.refreshData( latLng, radius, callback );
}
@@ -467,7 +481,6 @@ public class MogoServiceProvider implements IMogoModuleProvider,
@Override
public void onNaviInfoUpdate( MogoNaviInfo naviinfo ) {
}
@Override
@@ -511,18 +524,37 @@ public class MogoServiceProvider implements IMogoModuleProvider,
}
@Override
public void onUpdateTraffic( MogoTraffic traffic ) {
if ( traffic != null ) {
Logger.i( TAG, "speed = %d, desc = %s", traffic.getSpeedLimit(), traffic.getDesc() );
// 发送当前限速到 adas
Intent intent = new Intent( "com.mogo.launcher.adas" );
intent.putExtra( "adas_speed_limit", traffic.getSpeedLimit() );
mContext.sendBroadcast( intent );
}
}
public IMogoMarkerClickListener getMarkerClickListener() {
return null;
}
@Override
public void onIntentReceived( String command, Intent intent ) {
if ( MogoReceiver.ADAS_ACTION.equals( command ) ) {
if ( MogoReceiver.ACTIION_ADAS.equals( command ) ) {
if ( intent == null ) {
return;
}
int status = intent.getIntExtra( MogoReceiver.PARAM_ADAS_STATUS, 0 );
mStatusManager.setADASUIShow( getModuleName(), status == 1 );
} else if ( Intent.ACTION_POWER_CONNECTED.equals( command ) ) {
mStatusManager.setAccStatus( getModuleName(), true );
} else if ( Intent.ACTION_POWER_DISCONNECTED.equals( command ) ) {
mStatusManager.setAccStatus( getModuleName(), false );
} else if ( MogoReceiver.ACTION_NWD_ACC.equals( command ) ) {
int state = intent.getByteExtra( MogoReceiver.PARAM_ACC_STATUS, ( byte ) 0 );
mStatusManager.setAccStatus( getModuleName(), state == 1 );
}
}

View File

@@ -11,17 +11,20 @@ import java.util.List;
*/
public class RefreshBody {
public List< String > dataType = new ArrayList<>();
public int limit = 50;// 请求数量
public int radius = 2_000; // 地理围栏半径(米)
public LatLon location;
public List<String> dataType = new ArrayList<>(); // 要查询的类型
public int limit = 50; // 请求数量
public int radius = 2_000; // 地理围栏半径(米)
public LatLon location; // 坐标
public boolean onlyFocus; // 是否仅查询已关注的好友
public boolean onlySameCity; // 是否仅查询注册城市相同的同城用户
public static class LatLon {
private double lat;
private double lon;
public LatLon( double lat, double lon ) {
public LatLon(double lat, double lon) {
this.lat = lat;
this.lon = lon;
}

View File

@@ -7,14 +7,13 @@ import com.mogo.commons.data.BaseData;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.network.ParamsProvider;
import com.mogo.commons.network.SubscribeImpl;
import com.mogo.commons.network.Utils;
import com.mogo.map.MogoLatLng;
import com.mogo.module.service.ServiceConst;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.network.IMogoNetwork;
import com.mogo.utils.network.RequestOptions;
import com.mogo.utils.network.utils.GsonUtil;
import java.util.HashMap;
import java.util.Map;
import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -36,14 +35,14 @@ public class RefreshModel {
private final Context mContext;
private RefreshApiService mRefreshApiService;
public RefreshModel( Context context ) {
public RefreshModel(Context context) {
this.mContext = context;
IMogoNetwork network = ( IMogoNetwork ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_NETWORK ).navigation( context );
this.mRefreshApiService = network.create( RefreshApiService.class, getNetHost() );
IMogoNetwork network = (IMogoNetwork) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICES_NETWORK).navigation(context);
this.mRefreshApiService = network.create(RefreshApiService.class, getNetHost());
}
private String getNetHost() {
switch ( DebugConfig.getNetMode() ) {
switch (DebugConfig.getNetMode()) {
case DebugConfig.NET_MODE_DEV:
return HOST_DEV;
case DebugConfig.NET_MODE_QA:
@@ -53,34 +52,82 @@ public class RefreshModel {
}
}
public void refreshData( MogoLatLng latLng, int radius, final RefreshCallback callback ) {
if ( mRefreshApiService != null ) {
final Map< String, Object > query = new ParamsProvider.Builder( mContext ).build();
public void refreshData(MogoLatLng latLng, int radius, final RefreshCallback callback) {
if (mRefreshApiService != null) {
final Map<String, Object> query = new ParamsProvider.Builder(mContext).build();
final RefreshBody refreshBody = new RefreshBody();
refreshBody.limit = 5;
refreshBody.location = new RefreshBody.LatLon( latLng.lat, latLng.lng );
refreshBody.location = new RefreshBody.LatLon(latLng.lat, latLng.lng);
refreshBody.radius = radius;
query.put( "data", GsonUtil.jsonFromObject( refreshBody ) );
mRefreshApiService.refreshData( query )
.subscribeOn( Schedulers.io() )
.observeOn( AndroidSchedulers.mainThread() )
.subscribe( new SubscribeImpl< BaseData >( RequestOptions.create( mContext ) ) {
query.put("data", GsonUtil.jsonFromObject(refreshBody));
mRefreshApiService.refreshData(query)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(mContext)) {
@Override
public void onSuccess( BaseData o ) {
super.onSuccess( o );
if ( callback != null ) {
public void onSuccess(BaseData o) {
super.onSuccess(o);
if (callback != null) {
callback.onSuccess();
}
}
@Override
public void onError( String message, int code ) {
super.onError( message, code );
if ( callback != null ) {
public void onError(String message, int code) {
super.onError(message, code);
if (callback != null) {
callback.onFail();
}
}
} );
});
}
}
/**
* 查询在线车辆
*
* @param latLng 经纬度
* @param radius 半径
* @param onlyFocus 是否仅查询已关注的好友
* @param onlySameCity 是否仅查询注册城市相同的同城用户
* @param callback
*/
public void queryOnLineCar(MogoLatLng latLng,
int radius,
boolean onlyFocus,
boolean onlySameCity,
final RefreshCallback callback) {
if (mRefreshApiService != null) {
final Map<String, Object> query = new ParamsProvider.Builder(mContext).build();
final RefreshBody refreshBody = new RefreshBody();
refreshBody.limit = 100;
refreshBody.location = new RefreshBody.LatLon(latLng.lat, latLng.lng);
refreshBody.radius = radius;
refreshBody.onlyFocus = onlyFocus;
refreshBody.onlySameCity = onlySameCity;
refreshBody.dataType.add(ServiceConst.CARD_TYPE_USER_DATA);
query.put("data", GsonUtil.jsonFromObject(refreshBody));
mRefreshApiService.refreshData(query)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(mContext)) {
@Override
public void onSuccess(BaseData o) {
super.onSuccess(o);
if (callback != null) {
callback.onSuccess();
}
}
@Override
public void onError(String message, int code) {
super.onError(message, code);
if (callback != null) {
callback.onFail();
}
}
});
}
}
}

View File

@@ -30,10 +30,16 @@ public class MogoReceiver extends BroadcastReceiver {
/**
* ADAS
*/
public static final String ADAS_ACTION = "com.mogo.launcher.adas";
public static final String ACTIION_ADAS = "com.zhidao.autopilot.adas";
// ADAS 状态 0 - 关闭 1 - 打开
public static final String PARAM_ADAS_STATUS = "adas_drawer_status";
// 诺威达 acc 状态
public static final String ACTION_NWD_ACC = "com.nwd.action.ACTION_MCU_STATE_CHANGE";
// 诺威达 acc 状态
public static final String PARAM_ACC_STATUS = "extra_mcu_state";
private IMogoIntentManager mMogoIntentManager;
public MogoReceiver( Context context ) {

Some files were not shown because too many files have changed in this diff Show More