Merge branch 'feature/v1.0.0' of http://gitlab.zhidaoauto.com/ecos/yycp-service/Launcher into feature/v1.0.0

This commit is contained in:
unknown
2020-02-11 18:52:01 +08:00
93 changed files with 602 additions and 340 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="JDK" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
</project>

View File

@@ -20,6 +20,8 @@ import com.mogo.module.tanlu.constant.TanluConstants;
import com.mogo.module.v2x.V2XConst;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.connection.IMogoSocketManager;
import com.mogo.utils.logger.LogLevel;
import com.mogo.utils.logger.Logger;
//import com.mogo.module.onlinecar.OnLineCarConstants;
@@ -40,6 +42,8 @@ public class MogoApplication extends AbsMogoApplication {
//设置debug模式日志不上传
crashSystem.setDebug(BuildConfig.DEBUG);
Logger.init( BuildConfig.DEBUG ? LogLevel.DEBUG : LogLevel.OFF );
// MogoModulePaths.addModule( new MogoModule( DemoConstants.TAG, "CARD_DEMO" ) );
// MogoModulePaths.addModule( new MogoModule( Demo2Constants.TAG, "CARD_DEMO2" ) );
DebugConfig.setNetMode(BuildConfig.NET_ENV);

View File

@@ -5,6 +5,8 @@ import android.content.SharedPreferences;
import androidx.annotation.NonNull;
import java.util.Set;
public class SharedPrefsMgr {
private static final String File_Name = "app_shared_pref";
@@ -128,4 +130,17 @@ public class SharedPrefsMgr {
}
}
public void putStringSet( String key, Set< String > values ) {
try {
SharedPreferences.Editor editor = sSharedPrefs.edit();
editor.putStringSet( key, values );
editor.apply();
} catch ( Exception e ) {
}
}
public Set<String> getStringSet( String key ) {
return sSharedPrefs.getStringSet( key, null );
}
}

View File

@@ -118,7 +118,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
// 设置是否显示道路信息view
options.setLaneInfoShow( false );
// 设置是否自动改变缩放等级
options.setAutoChangeZoom( false );
options.setAutoChangeZoom( true );
// 设置是否自动全览模式,即在算路成功后自动进入全览模式
options.setAutoDisplayOverview( false );
// 设置路线转向箭头隐藏和显示

View File

@@ -14,64 +14,77 @@ public class MarkerUserInfo implements Serializable {
private String userName;//用户昵称
private String userHead;//用户头像
private String gender;//gender": "男也可以012根据实际库存返回即可
private int age;// 年龄段,可以为空,与车聊聊一致
private Integer age;// 年龄段,可以为空,与车聊聊一致
public void setAge(int age) {
public void setAge(Integer age) {
this.age = age;
}
public int getAgeNumber() {
return age;
if (age != null) {
return age;
}
return -1;
}
public String getAge() {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
try {
if (getAgeNumber() >= 0) {
//2020-30=1990
double ageDiffer = year - age;
String ageStr = "" + ageDiffer;
char[] ageChars = ageStr.toCharArray();
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
//1990
char ageChar = ageChars[2];
//2020-30=1990
double ageDiffer = year - getAgeNumber();
String ageStr = "" + ageDiffer;
char[] ageChars = ageStr.toCharArray();
String ageString = "未设置";
//1990
char ageChar = ageChars[2];
switch (ageChar) {
case '0':
ageString = "00后";
break;
case '1':
ageString = "10后";
break;
case '2':
ageString = "20后";
break;
case '3':
ageString = "30后";
break;
case '4':
ageString = "40后";
break;
case '5':
ageString = "50后";
break;
case '6':
ageString = "60后";
break;
case '7':
ageString = "70后";
break;
case '8':
ageString = "80后";
break;
case '9':
ageString = "90后";
break;
String ageString = "未设置";
switch (ageChar) {
case '0':
ageString = "00后";
break;
case '1':
ageString = "10后";
break;
case '2':
ageString = "20后";
break;
case '3':
ageString = "30后";
break;
case '4':
ageString = "40后";
break;
case '5':
ageString = "50后";
break;
case '6':
ageString = "60后";
break;
case '7':
ageString = "70后";
break;
case '8':
ageString = "80后";
break;
case '9':
ageString = "90后";
break;
}
return ageString;
} else {
return "";
}
} catch (Exception e) {
e.printStackTrace();
return "";
}
return ageString;
}
public int getGenderValue() {

View File

@@ -18,6 +18,7 @@ import com.mogo.service.MogoServicePaths;
import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.logger.Logger;
/**
* @author congtaowang
@@ -27,8 +28,10 @@ import com.mogo.utils.UiThreadHandler;
*/
public class ExtensionsFragment extends MvpFragment< ExtensionsView, ExtensionsPresenter > implements ExtensionsView {
private static final String TAG = "ExtensionsFragment";
private JSurfaceView mVoiceIcon;
private View mVoiceMsg;
private TextView mVoiceMsg;
private TextView mTime;
private TextView mDate;
@@ -141,4 +144,12 @@ public class ExtensionsFragment extends MvpFragment< ExtensionsView, ExtensionsP
mMsgContainer.setVisibility( hasMsg ? View.VISIBLE : View.GONE );
mMsgCounter.setText( amount > 99 ? getString( R.string.module_ext_str_dots ) : String.valueOf( amount ) );
}
@Override
public void renderAITipWords( String word ) {
if ( !TextUtils.isEmpty( word ) ) {
Logger.d( TAG, "current word: %s", word );
mVoiceMsg.setText( word );
}
}
}

View File

@@ -4,6 +4,9 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import androidx.annotation.NonNull;
import androidx.lifecycle.LifecycleOwner;
@@ -19,7 +22,16 @@ import com.mogo.service.statusmanager.IMogoMsgCenter;
import com.mogo.service.statusmanager.IMogoMsgCenterListener;
import com.mogo.utils.logger.Logger;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.Random;
import java.util.Set;
/**
@@ -36,6 +48,31 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements
private WeatherModel mWeatherModel;
public static final int MSG_SWITCH_AI_TIP_WORDS = 4000;
public static final long INTERVAL_TIME = 8_000L;
private String[] mAITipWords;
private int mCurrentIndex = 0;
private Handler mHandler = new Handler( Looper.getMainLooper() ) {
@Override
public void handleMessage( Message msg ) {
super.handleMessage( msg );
if ( msg.what == MSG_SWITCH_AI_TIP_WORDS ) {
if ( mView != null ) {
if ( mCurrentIndex < mAITipWords.length ) {
mView.renderAITipWords( mAITipWords[mCurrentIndex++] );
} else {
mCurrentIndex = 0;
mHasTipWords = generateTipWordsSequence();
}
}
if ( mHasTipWords ) {
mHandler.sendEmptyMessageDelayed( MSG_SWITCH_AI_TIP_WORDS, INTERVAL_TIME );
}
}
}
};
private boolean mHasTipWords = false;
/**
* 接收时间变化的广播
*/
@@ -52,10 +89,30 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements
private IMogoMsgCenter mMsgCenter;
private boolean generateTipWordsSequence() {
if ( mAITipWords != null && mAITipWords.length > 0 ) {
Random random = new Random( System.currentTimeMillis() );
int loop = mAITipWords.length / 2;
int bound = mAITipWords.length;
for ( int i = 0; i < loop; i++ ) {
int target = random.nextInt( bound );
int sweepTarget = random.nextInt( bound );
if ( target != sweepTarget ) {
String targetStr = mAITipWords[target];
mAITipWords[target] = mAITipWords[sweepTarget];
mAITipWords[sweepTarget] = targetStr;
}
}
Logger.d( TAG, "next generate sequence: " + mAITipWords );
return true;
}
return false;
}
public ExtensionsPresenter( ExtensionsView view ) {
super( view );
mWeeks = getContext().getResources().getStringArray( R.array.module_ext_str_arr_week );
mAITipWords = getContext().getResources().getStringArray( R.array.module_ext_str_arr_ai_tips );
mWeatherModel = new WeatherModel( getContext() );
}
@@ -68,6 +125,7 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements
refreshTimeAndDate();
mMsgCenter = ( IMogoMsgCenter ) ARouter.getInstance().build( MogoServicePaths.PATH_MSG_CENTER ).navigation();
mMsgCenter.registerMsgCenterListener( this );
mHasTipWords = generateTipWordsSequence();
}
/**
@@ -115,6 +173,22 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements
}
}
@Override
public void onResume( @NonNull LifecycleOwner owner ) {
super.onResume( owner );
if ( mHasTipWords ) {
mHandler.sendEmptyMessageDelayed( MSG_SWITCH_AI_TIP_WORDS, INTERVAL_TIME );
}
}
@Override
public void onPause( @NonNull LifecycleOwner owner ) {
super.onPause( owner );
if ( mHasTipWords ) {
mHandler.removeMessages( MSG_SWITCH_AI_TIP_WORDS );
}
}
@Override
public void onDestroy( @NonNull LifecycleOwner owner ) {
super.onDestroy( owner );

View File

@@ -35,4 +35,11 @@ public interface ExtensionsView extends IView {
* @param amount 消息数量
*/
void renderMsgInfo( boolean hasMsg, int amount );
/**
* 更换小智语音提示词
*
* @param word
*/
void renderAITipWords( String word );
}

View File

@@ -39,6 +39,8 @@ public class JSurfaceView extends SurfaceView implements Runnable, SurfaceHolder
*/
private int[] mFrames;
private Thread mThread;
// 使用 BitmapFactory.Option.inBitmap 属性复用 bitmap 对象
private Bitmap mContainerBitmap = null;
@@ -78,12 +80,19 @@ public class JSurfaceView extends SurfaceView implements Runnable, SurfaceHolder
if ( bRunning ) {
return;
}
ThreadPoolService.execute( this );
bRunning = true;
mThread = new Thread( this );
mThread.start();
}
public void stop() {
bRunning = false;
try {
mThread.interrupt();
mThread = null;
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Override

View File

@@ -20,4 +20,26 @@
<string name="module_ext_str_exit_navi">退出导航</string>
<string name="module_ext_str_continue_navi">继续导航</string>
<string name="module_ext_str_exit_path">退出全览</string>
<string-array name="module_ext_str_arr_ai_tips">
<item>你好小智,播放音乐</item>
<item>你好小智,我要听音乐</item>
<item>你好小智,播放赵磊的歌</item>
<item>你好小智,我想听成都</item>
<item>你好小智,打开导航</item>
<item>你好小智,我要去拉萨</item>
<item>你好小智,我要去加油站</item>
<item>你好小智,导航去西单商场</item>
<item>你好小智,打开行车记录仪</item>
<item>你好小智,打开收音机</item>
<item>你好小智调频到97.4</item>
<item>你好小智调频到103.9</item>
<item>你好小智,今天天气怎么样</item>
<item>你好小智,北京明天天气怎么样</item>
<item>你好小智,打开车聊聊</item>
<item>你好小智,我想聊天</item>
<item>你好小智,中关村堵不堵</item>
<item>你好小智,打开探路</item>
<item>你好小智,附近路况</item>
</string-array>
</resources>

View File

@@ -5,8 +5,8 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.text.TextUtils;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.TextView;
import androidx.fragment.app.Fragment;
@@ -36,6 +36,11 @@ import com.mogo.service.module.IMogoModuleProvider;
import com.mogo.service.module.ModuleType;
import com.mogo.utils.ResourcesHelper;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
import com.mogo.utils.storage.SharedPrefsMgr;
import org.json.JSONArray;
import org.json.JSONException;
import java.util.ArrayList;
import java.util.HashMap;
@@ -50,15 +55,15 @@ import java.util.Map;
* 卡片加载
*/
public class MogoModulesManager implements MogoModulesHandler,
IMogoMapListener,
IMogoNaviListener,
IMogoLocationListener {
IMogoMapListener,
IMogoNaviListener,
IMogoLocationListener {
private static final String TAG = "MogoModulesManager";
private MainActivity mActivity;
private Map<MogoModule, IMogoModuleProvider> mModuleProviders = new HashMap<>();
private Map< MogoModule, IMogoModuleProvider > mModuleProviders = new HashMap<>();
private IMogoAnalytics mTrackManager;
private IMogoMapService mapService;
@@ -67,17 +72,20 @@ public class MogoModulesManager implements MogoModulesHandler,
private BroadcastReceiver mReceiver;
public MogoModulesManager(MainActivity activity) {
if (activity == null) {
throw new NullPointerException("activity can't be null.");
public static final String KEY_SORTED_CARD_MODULES = "sortedCards";
private List< String > mSortedCards = new ArrayList<>();
public MogoModulesManager( MainActivity activity ) {
if ( activity == null ) {
throw new NullPointerException( "activity can't be null." );
}
this.mActivity = activity;
mTrackManager = (IMogoAnalytics) ARouter.getInstance()
.build(MogoServicePaths.PATH_UTILS_ANALYTICS)
.navigation();
mTrackManager = ( IMogoAnalytics ) ARouter.getInstance()
.build( MogoServicePaths.PATH_UTILS_ANALYTICS )
.navigation();
mapService = (IMogoMapService) ARouter.getInstance().build(
MogoServicePaths.PATH_SERVICES_MAP
mapService = ( IMogoMapService ) ARouter.getInstance().build(
MogoServicePaths.PATH_SERVICES_MAP
).navigation();
registerReceiver();
@@ -93,264 +101,310 @@ public class MogoModulesManager implements MogoModulesHandler,
@Override
public void loadModules() {
final List<MogoModule> modules = MogoModulePaths.getModules();
if (modules != null && !modules.isEmpty()) {
for (MogoModule module : modules) {
IMogoModuleProvider provider = load(module.getPath());
if (provider != null) {
mModuleProviders.put(module, provider);
final List< MogoModule > modules = MogoModulePaths.getModules();
if ( modules != null && !modules.isEmpty() ) {
for ( MogoModule module : modules ) {
IMogoModuleProvider provider = load( module.getPath() );
if ( provider != null ) {
mModuleProviders.put( module, provider );
}
}
}
}
@Override
public void setMapLoadedCallback(Runnable callback) {
public void setMapLoadedCallback( Runnable callback ) {
mMapLoadedCallback = callback;
}
@Override
public List<IMogoModuleProvider> loadCardsModule() {
final List<MogoModule> modules = MogoModulePaths.getModules();
final ArrayList<IMogoModuleProvider> providers = new ArrayList<>();
for (MogoModule module : modules) {
IMogoModuleProvider provider = mModuleProviders.get(module);
if (provider.getType() == ModuleType.TYPE_CARD_FRAGMENT) {
if (mEnableModuleName == null) {
public List< IMogoModuleProvider > loadCardsModule() {
String sortedJson = SharedPrefsMgr.getInstance( getContext() ).getString( KEY_SORTED_CARD_MODULES );
try {
JSONArray array = new JSONArray( sortedJson );
mSortedCards = new ArrayList<>( array.length() );
for ( int i = 0; i < array.length(); i++ ) {
mSortedCards.add( array.getString( i ) );
}
Logger.d( TAG, "Last cache card: %s", mSortedCards );
} catch ( JSONException e ) {
e.printStackTrace();
}
final List< MogoModule > modules = MogoModulePaths.getModules();
final ArrayList< IMogoModuleProvider > providers = new ArrayList<>();
for ( MogoModule module : modules ) {
IMogoModuleProvider provider = mModuleProviders.get( module );
if ( provider.getType() == ModuleType.TYPE_CARD_FRAGMENT ) {
if ( mEnableModuleName == null ) {
mEnableModuleName = provider.getModuleName();
}
providers.add(provider);
providers.add( provider );
}
}
return providers;
return sort( providers );
}
private List< IMogoModuleProvider > sort( List< IMogoModuleProvider > modules ) {
if ( modules == null || modules.size() == 0 ) {
return modules;
}
if ( mSortedCards == null ) {
mSortedCards = new ArrayList<>();
}
List< IMogoModuleProvider > sortedList = new ArrayList<>( modules.size() );
for ( String sortedCard : mSortedCards ) {
for ( IMogoModuleProvider module : modules ) {
if ( TextUtils.equals( module.getModuleName(), sortedCard ) ) {
sortedList.add( module );
Logger.d( TAG, "%s sorted.", sortedCard );
break;
}
}
}
for ( IMogoModuleProvider module : modules ) {
if ( !sortedList.contains( module ) ) {
sortedList.add( module );
}
}
mSortedCards.clear();
for ( IMogoModuleProvider provider : sortedList ) {
mSortedCards.add( provider.getModuleName() );
}
return sortedList;
}
@Override
public void loadMapModule(int containerId) {
IMogoModuleProvider provider = (IMogoModuleProvider) ARouter.getInstance()
.build(MogoModulePaths.PATH_MODULE_MAP)
.navigation(getContext());
addFragment(provider, containerId);
public void loadMapModule( int containerId ) {
IMogoModuleProvider provider = ( IMogoModuleProvider ) ARouter.getInstance()
.build( MogoModulePaths.PATH_MODULE_MAP )
.navigation( getContext() );
addFragment( provider, containerId );
}
@Override
public void loadAppsListModule(int containerId) {
IMogoModuleProvider provider = (IMogoModuleProvider) ARouter.getInstance()
.build(MogoModulePaths.PATH_MODULE_APPS)
.navigation(getContext());
addFragment(provider, containerId);
public void loadAppsListModule( int containerId ) {
IMogoModuleProvider provider = ( IMogoModuleProvider ) ARouter.getInstance()
.build( MogoModulePaths.PATH_MODULE_APPS )
.navigation( getContext() );
addFragment( provider, containerId );
}
@Override
public void loadExtensionsModule(int containerId) {
IMogoModuleProvider provider = (IMogoModuleProvider) ARouter.getInstance()
.build(ExtensionsModuleConst.PATH_EXTENSION)
.navigation(getContext());
addFragment(provider, containerId);
public void loadExtensionsModule( int containerId ) {
IMogoModuleProvider provider = ( IMogoModuleProvider ) ARouter.getInstance()
.build( ExtensionsModuleConst.PATH_EXTENSION )
.navigation( getContext() );
addFragment( provider, containerId );
}
@Override
public void loadEntrancesModule(int containerId) {
IMogoModuleProvider provider = (IMogoModuleProvider) ARouter.getInstance()
.build(ExtensionsModuleConst.PATH_ENTRANCE)
.navigation(getContext());
addFragment(provider, containerId);
public void loadEntrancesModule( int containerId ) {
IMogoModuleProvider provider = ( IMogoModuleProvider ) ARouter.getInstance()
.build( ExtensionsModuleConst.PATH_ENTRANCE )
.navigation( getContext() );
addFragment( provider, containerId );
}
private IMogoModuleProvider load(String path) {
return (IMogoModuleProvider) ARouter.getInstance().build(path).navigation(getContext());
private IMogoModuleProvider load( String path ) {
return ( IMogoModuleProvider ) ARouter.getInstance().build( path ).navigation( getContext() );
}
private void addFragment(IMogoModuleProvider provider, int containerId) {
if (provider == null) {
Logger.e(TAG, "add fragment fail cause provider == null, container is %s",
ResourcesHelper.getResNameById(getApplicationContext(), containerId));
private void addFragment( IMogoModuleProvider provider, int containerId ) {
if ( provider == null ) {
Logger.e( TAG, "add fragment fail cause provider == null, container is %s",
ResourcesHelper.getResNameById( getApplicationContext(), containerId ) );
return;
}
final Fragment fragment = provider.createFragment(getContext(), null);
if (fragment == null) {
Logger.e(TAG, "add fragment fail cause fragment == null, container is %s",
ResourcesHelper.getResNameById(getApplicationContext(), containerId));
final Fragment fragment = provider.createFragment( getContext(), null );
if ( fragment == null ) {
Logger.e( TAG, "add fragment fail cause fragment == null, container is %s",
ResourcesHelper.getResNameById( getApplicationContext(), containerId ) );
return;
}
mActivity.getSupportFragmentManager().beginTransaction()
.add(containerId, fragment, provider.getModuleName())
.commitAllowingStateLoss();
.add( containerId, fragment, provider.getModuleName() )
.commitAllowingStateLoss();
}
@Override
public void setModuleEnable(String module) {
public void setModuleEnable( String module ) {
// 仅操作上一个模块和当前模块
Iterator<IMogoModuleProvider> iterator = mModuleProviders.values().iterator();
Iterator< IMogoModuleProvider > iterator = mModuleProviders.values().iterator();
int counter = 0;
while (iterator.hasNext()) {
while ( iterator.hasNext() ) {
IMogoModuleProvider provider = iterator.next();
if (provider == null) {
if ( provider == null ) {
continue;
}
if (provider.getType() != ModuleType.TYPE_CARD_FRAGMENT) {
if ( provider.getType() != ModuleType.TYPE_CARD_FRAGMENT ) {
continue;
}
if (TextUtils.equals(mEnableModuleName, provider.getModuleName())) {
if ( TextUtils.equals( mEnableModuleName, provider.getModuleName() ) ) {
final IMogoModuleLifecycle lifecycle =
MogoRegisterCenterHandler.getInstance().getLifecycleListener(mEnableModuleName);
if (lifecycle != null) {
MogoRegisterCenterHandler.getInstance().getLifecycleListener( mEnableModuleName );
if ( lifecycle != null ) {
try {
final long start = System.currentTimeMillis();
lifecycle.onDisable();
Logger.i(TAG,
"set %s module disable event cost " + (System.currentTimeMillis()
- start) + "ms", mEnableModuleName);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
Logger.i( TAG,
"set %s module disable event cost " + ( System.currentTimeMillis()
- start ) + "ms", mEnableModuleName );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
counter++;
continue;
}
if (TextUtils.equals(module, provider.getModuleName())) {
if ( TextUtils.equals( module, provider.getModuleName() ) ) {
final IMogoModuleLifecycle lifecycle =
MogoRegisterCenterHandler.getInstance().getLifecycleListener(module);
if (lifecycle != null) {
MogoRegisterCenterHandler.getInstance().getLifecycleListener( module );
if ( lifecycle != null ) {
try {
final long start = System.currentTimeMillis();
lifecycle.onPerform();
Logger.i(TAG,
"set %s module perform event cost " + (System.currentTimeMillis()
- start) + "ms", module);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
Logger.i( TAG,
"set %s module perform event cost " + ( System.currentTimeMillis()
- start ) + "ms", module );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
counter++;
continue;
}
if (counter == 2) {
if ( counter == 2 ) {
break;
}
}
mEnableModuleName = module;
mSortedCards.remove( mEnableModuleName );
mSortedCards.add( 0, mEnableModuleName );
SharedPrefsMgr.getInstance( getContext() ).putString( KEY_SORTED_CARD_MODULES, GsonUtil.jsonFromObject( mSortedCards ) );
}
@Override
public void onMapLoaded() {
if (mMapLoadedCallback != null) {
if ( mMapLoadedCallback != null ) {
mMapLoadedCallback.run();
mMapLoadedCallback = null;
}
}
@Override
public void onTouch(MotionEvent motionEvent) {
Iterator<IMogoMapListener> iterator =
MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
public void onTouch( MotionEvent motionEvent ) {
Iterator< IMogoMapListener > iterator =
MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while (iterator.hasNext()) {
while ( iterator.hasNext() ) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
if ( listener != null ) {
try {
listener.onTouch(motionEvent);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
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) {
public void onPOIClick( MogoPoi poi ) {
Iterator< IMogoMapListener > iterator =
MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while (iterator.hasNext()) {
while ( iterator.hasNext() ) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
if ( listener != null ) {
try {
listener.onPOIClick(poi);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
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) {
public void onMapClick( MogoLatLng latLng ) {
Iterator< IMogoMapListener > iterator =
MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while (iterator.hasNext()) {
while ( iterator.hasNext() ) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
if ( listener != null ) {
try {
listener.onMapClick(latLng);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
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) {
public void onLockMap( boolean isLock ) {
Iterator< IMogoMapListener > iterator =
MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while (iterator.hasNext()) {
while ( iterator.hasNext() ) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
if ( listener != null ) {
try {
listener.onLockMap(isLock);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
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) {
public void onMapModeChanged( EnumMapUI ui ) {
Iterator< IMogoMapListener > iterator =
MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while (iterator.hasNext()) {
while ( iterator.hasNext() ) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
if ( listener != null ) {
try {
listener.onMapModeChanged(ui);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
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) {
public void onMapChanged( MogoLatLng location, float zoom, float tilt, float bearing ) {
Iterator< IMogoMapListener > iterator =
MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while (iterator.hasNext()) {
while ( iterator.hasNext() ) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
if ( listener != null ) {
try {
listener.onMapChanged(location, zoom, tilt, bearing);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
listener.onMapChanged( location, zoom, tilt, bearing );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
@@ -358,18 +412,18 @@ public class MogoModulesManager implements MogoModulesHandler,
@Override
public void onInitNaviFailure() {
Iterator<IMogoNaviListener> iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
if (iterator == null) {
Iterator< IMogoNaviListener > iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while (iterator.hasNext()) {
while ( iterator.hasNext() ) {
IMogoNaviListener listener = iterator.next();
if (listener != null) {
if ( listener != null ) {
try {
listener.onInitNaviFailure();
} catch (Exception e) {
Logger.e(TAG, e, "error.");
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
@@ -377,39 +431,39 @@ public class MogoModulesManager implements MogoModulesHandler,
@Override
public void onInitNaviSuccess() {
Iterator<IMogoNaviListener> iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
if (iterator == null) {
Iterator< IMogoNaviListener > iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while (iterator.hasNext()) {
while ( iterator.hasNext() ) {
IMogoNaviListener listener = iterator.next();
if (listener != null) {
if ( listener != null ) {
try {
listener.onInitNaviSuccess();
} catch (Exception e) {
Logger.e(TAG, e, "error.");
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onNaviInfoUpdate(MogoNaviInfo naviinfo) {
MapBroadCastHelper.getInstance(getApplicationContext()).notifyXiaozhi(naviinfo);
Iterator<IMogoNaviListener> iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
public void onNaviInfoUpdate( MogoNaviInfo naviinfo ) {
MapBroadCastHelper.getInstance( getApplicationContext() ).notifyXiaozhi( naviinfo );
Iterator< IMogoNaviListener > iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
if (iterator == null) {
if ( iterator == null ) {
return;
}
while (iterator.hasNext()) {
while ( iterator.hasNext() ) {
IMogoNaviListener listener = iterator.next();
if (listener != null) {
if ( listener != null ) {
try {
listener.onNaviInfoUpdate(naviinfo);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
listener.onNaviInfoUpdate( naviinfo );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
@@ -417,21 +471,21 @@ public class MogoModulesManager implements MogoModulesHandler,
@Override
public void onStartNavi() {
Iterator<IMogoNaviListener> iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
mTrackManager.track("Navigation_begin", new HashMap<>());
Iterator< IMogoNaviListener > iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
mTrackManager.track( "Navigation_begin", new HashMap<>() );
MapBroadCastHelper.getInstance(getApplicationContext()).startNavi();
if (iterator == null) {
MapBroadCastHelper.getInstance( getApplicationContext() ).startNavi();
if ( iterator == null ) {
return;
}
while (iterator.hasNext()) {
while ( iterator.hasNext() ) {
IMogoNaviListener listener = iterator.next();
if (listener != null) {
if ( listener != null ) {
try {
listener.onStartNavi();
} catch (Exception e) {
Logger.e(TAG, e, "error.");
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
@@ -439,20 +493,20 @@ public class MogoModulesManager implements MogoModulesHandler,
@Override
public void onStopNavi() {
mTrackManager.track("Navigation_end", new HashMap<>());
MapBroadCastHelper.getInstance(getApplicationContext()).stopNavi();
Iterator<IMogoNaviListener> iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
if (iterator == null) {
mTrackManager.track( "Navigation_end", new HashMap<>() );
MapBroadCastHelper.getInstance( getApplicationContext() ).stopNavi();
Iterator< IMogoNaviListener > iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while (iterator.hasNext()) {
while ( iterator.hasNext() ) {
IMogoNaviListener listener = iterator.next();
if (listener != null) {
if ( listener != null ) {
try {
listener.onStopNavi();
} catch (Exception e) {
Logger.e(TAG, e, "error.");
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
@@ -460,18 +514,18 @@ public class MogoModulesManager implements MogoModulesHandler,
@Override
public void onCalculateSuccess() {
Iterator<IMogoNaviListener> iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
if (iterator == null) {
Iterator< IMogoNaviListener > iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while (iterator.hasNext()) {
while ( iterator.hasNext() ) {
IMogoNaviListener listener = iterator.next();
if (listener != null) {
if ( listener != null ) {
try {
listener.onCalculateSuccess();
} catch (Exception e) {
Logger.e(TAG, e, "error.");
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
@@ -479,56 +533,56 @@ public class MogoModulesManager implements MogoModulesHandler,
@Override
public void onoCalculateFailed() {
Iterator<IMogoNaviListener> iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
if (iterator == null) {
Iterator< IMogoNaviListener > iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while (iterator.hasNext()) {
while ( iterator.hasNext() ) {
IMogoNaviListener listener = iterator.next();
if (listener != null) {
if ( listener != null ) {
try {
listener.onoCalculateFailed();
} catch (Exception e) {
Logger.e(TAG, e, "error.");
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onUpdateTraffic(MogoTraffic traffic) {
Iterator<IMogoNaviListener> iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
if (iterator == null) {
public void onUpdateTraffic( MogoTraffic traffic ) {
Iterator< IMogoNaviListener > iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while (iterator.hasNext()) {
while ( iterator.hasNext() ) {
IMogoNaviListener listener = iterator.next();
if (listener != null) {
if ( listener != null ) {
try {
listener.onUpdateTraffic(traffic);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
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) {
public void onLocationChanged( MogoLocation location ) {
Iterator< IMogoLocationListener > iterator =
MogoRegisterCenterHandler.getInstance().getLocationListeners();
if ( iterator == null ) {
return;
}
while (iterator.hasNext()) {
while ( iterator.hasNext() ) {
IMogoLocationListener listener = iterator.next();
if (listener != null) {
if ( listener != null ) {
try {
listener.onLocationChanged(location);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
listener.onLocationChanged( location );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
@@ -537,37 +591,37 @@ public class MogoModulesManager implements MogoModulesHandler,
public void registerReceiver() {
mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
public void onReceive( Context context, Intent intent ) {
final String action = intent.getAction();
if (TextUtils.equals(action, Intent.ACTION_POWER_CONNECTED)) {
Iterator<IMogoModuleLifecycle> iterator =
MogoRegisterCenterHandler.getInstance().getLifecycleListeners();
if (iterator.hasNext()) {
if ( TextUtils.equals( action, Intent.ACTION_POWER_CONNECTED ) ) {
Iterator< IMogoModuleLifecycle > iterator =
MogoRegisterCenterHandler.getInstance().getLifecycleListeners();
if ( iterator.hasNext() ) {
iterator.next().accOn();
}
} else if (TextUtils.equals(action, Intent.ACTION_POWER_DISCONNECTED)) {
} else if ( TextUtils.equals( action, Intent.ACTION_POWER_DISCONNECTED ) ) {
}
}
};
IntentFilter inputFilter = new IntentFilter();
inputFilter.addAction(Intent.ACTION_POWER_CONNECTED);
inputFilter.addAction(Intent.ACTION_POWER_DISCONNECTED);
getApplicationContext().registerReceiver(mReceiver, inputFilter);
inputFilter.addAction( Intent.ACTION_POWER_CONNECTED );
inputFilter.addAction( Intent.ACTION_POWER_DISCONNECTED );
getApplicationContext().registerReceiver( mReceiver, inputFilter );
}
@Override
public void destroy() {
if (mReceiver != null) {
if ( mReceiver != null ) {
try {
getApplicationContext().unregisterReceiver(mReceiver);
} catch (Exception e) {
getApplicationContext().unregisterReceiver( mReceiver );
} catch ( Exception e ) {
e.printStackTrace();
}
}
mReceiver = null;
mActivity = null;
if (mModuleProviders != null) {
if ( mModuleProviders != null ) {
mModuleProviders.clear();
}
mModuleProviders = null;
@@ -576,14 +630,14 @@ public class MogoModulesManager implements MogoModulesHandler,
}
@Override
public boolean onMarkerClicked(IMogoMarker marker) {
public boolean onMarkerClicked( IMogoMarker marker ) {
IMogoMarkerClickListener listener =
MogoRegisterCenterHandler.getInstance().getMarkerListener(marker.getOwner());
if (listener != null) {
MogoRegisterCenterHandler.getInstance().getMarkerListener( marker.getOwner() );
if ( listener != null ) {
try {
return listener.onMarkerClicked(marker);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
return listener.onMarkerClicked( marker );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
return false;

View File

@@ -118,8 +118,13 @@ public class MogoServiceProvider implements IMogoModuleProvider,
super.handleMessage( msg );
switch ( msg.what ) {
case ServiceConst.MSG_TYPE_REFRESH_DECREASE:
if ( mStatusManager.isSearchUIShow() ) {
stopAutoRefreshStrategy();
return;
}
mRefreshRemainingTime -= ServiceConst.DECREASE_INTERVAL;
if ( mRefreshRemainingTime == 0 ) {
Logger.d( TAG, "move to center and refresh data." );
mStatusManager.setUserInteractionStatus(ServiceConst.TYPE, true, false );
mUiController.moveToCenter(mLastAutoRefreshLocation);
notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback );
@@ -366,6 +371,7 @@ public class MogoServiceProvider implements IMogoModuleProvider,
}
private void stopAutoRefreshStrategy() {
Logger.d( TAG, "stop auto refresh strategy" );
mHandler.removeMessages( ServiceConst.MSG_TYPE_REFRESH_DECREASE );
}
@@ -517,6 +523,7 @@ public class MogoServiceProvider implements IMogoModuleProvider,
@Override
public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) {
Logger.d(TAG, "状态发生改变---descriptor---" + descriptor + "----isTrue---" + isTrue);
switch ( descriptor ) {
case USER_INTERACTED:
if ( isTrue && !mRefreshRemainingTimeStatus ) {
@@ -526,7 +533,6 @@ public class MogoServiceProvider implements IMogoModuleProvider,
}
break;
case SEARCH_UI:
case V2X_UI:
if ( isTrue ) {
// 搜索时,不在自动刷新打点策略
stopAutoRefreshStrategy();
@@ -537,9 +543,33 @@ public class MogoServiceProvider implements IMogoModuleProvider,
}
}
break;
case V2X_UI:
try {
if ( isTrue ) {
// V2X_UI时不在自动刷新打点策略
stopAutoRefreshStrategy();
} else {
// 主动刷新
refreshStrategy();
// V2X_UI后打开打点策略
if ( mAutoRefreshCallback != null ) {
mAutoRefreshCallback.onSuccess();
}
}
} catch (Exception e) {
e.printStackTrace();
}
break;
}
}
public void refreshStrategy(){
Logger.d( TAG, "move to center and refresh data." );
mStatusManager.setUserInteractionStatus(ServiceConst.TYPE, true, false );
mUiController.moveToCenter(mLastAutoRefreshLocation);
notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback );
}
@Override
public void onCalculateSuccess() {

View File

@@ -46,6 +46,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
private static final String TAG = "MarkerManager";
// 第一次请求到地图的Marker数据
private boolean isFirstMarker = true;
private boolean isOnLineCard = false;
private Context mContext;
private static IMogoMarker lastMarker;
private static MapMarkerManager mMarkerManager;
@@ -81,6 +82,12 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
public void onSwitched(int position, String moduleName) {
Logger.e(TAG, "======moduleName" + moduleName);
highlightedMarker(moduleName);
if (moduleName.equals(ServiceConst.CARD_TYPE_USER_DATA)) {
isOnLineCard = true;
} else {
isOnLineCard = false;
}
}
});
}
@@ -176,7 +183,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
// 对指定类型高亮处理
public static void highlightedMarker(String typeTag) {
public synchronized static void highlightedMarker(String typeTag) {
try {
Map<String, List<IMogoMarker>> allMarker = MarkerServiceHandler.getMarkerManager().getAllMarkers();
for (Map.Entry<String, List<IMogoMarker>> entry : allMarker.entrySet()) {
@@ -203,7 +210,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
*
* @param marker 要关闭的Marker
*/
public void closeMarkerSelect(IMogoMarker marker) {
public synchronized void closeMarkerSelect(IMogoMarker marker) {
// 将上次选中 Marker 设置为未选中状态
if (marker != null) {
Logger.i(TAG, "closeMarkerSelect 将出Marker详情关闭" + marker);
@@ -223,7 +230,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
/**
* 绘制Marker
*/
public void drawMapMarker(MarkerResponse response) {
public synchronized void drawMapMarker(MarkerResponse response) {
lastMarker = null;
JSONArray array = new JSONArray();
@@ -251,20 +258,20 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
List<MarkerShareMusic> shareMusicList = markerCardResult.getShareMusic();
List<MarkerNoveltyInfo> noveltyInfoList = markerCardResult.getNoveltyInfo();
if (carChatList != null) {
for (MarkerCarChat markerCarChat : carChatList) {
MarkerLocation markerLocation = markerCarChat.getLocation();
MarkerShowEntity markerShowEntity = new MarkerShowEntity();
markerShowEntity.setBindObj(markerCarChat);
markerShowEntity.setMarkerLocation(markerLocation);
markerShowEntity.setMarkerType(markerCarChat.getType());
markerShowEntity.setTextContent(markerCarChat.getUserInfo().getUserName());
markerShowEntity.setIconUrl(markerCarChat.getUserInfo().getUserHead());
drawMapMarker(markerShowEntity);
}
}
// if (carChatList != null) {
// for (MarkerCarChat markerCarChat : carChatList) {
// MarkerLocation markerLocation = markerCarChat.getLocation();
//
// MarkerShowEntity markerShowEntity = new MarkerShowEntity();
// markerShowEntity.setBindObj(markerCarChat);
// markerShowEntity.setMarkerLocation(markerLocation);
// markerShowEntity.setMarkerType(markerCarChat.getType());
// markerShowEntity.setTextContent(markerCarChat.getUserInfo().getUserName());
// markerShowEntity.setIconUrl(markerCarChat.getUserInfo().getUserHead());
//
// drawMapMarker(markerShowEntity);
// }
// }
if (onlineCarList != null) {
IMogoMarker nearlyMogoMarker = null;
@@ -303,7 +310,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
try {
// 在ACC on 之后第一次获取到了在线车辆数据选中最近的一个Marker
if (isFirstMarker) {
if (isFirstMarker && isOnLineCard) {
if (nearlyMogoMarker != null) {
// getMogoCardManager().switch2(ServiceConst.CARD_TYPE_USER_DATA);
// MarkerShowEntity markerShowEntity = (MarkerShowEntity) nearlyMogoMarker.getObject();
@@ -401,7 +408,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
/**
* 统计埋点
*/
private static void fillNumberTrackEventBody(JSONArray arr, int type, int size) {
private synchronized static void fillNumberTrackEventBody(JSONArray arr, int type, int size) {
JSONObject object = new JSONObject();
try {
object.put("type", type);
@@ -419,7 +426,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
*
* @param array 埋点数据
*/
private static void analyticData(JSONArray array) {
private synchronized static void analyticData(JSONArray array) {
try {
if (array == null || array.length() == 0) {
return;
@@ -438,7 +445,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
* @param markerShowEntity marker 绘制数据实体
* @return 绘制的Marker
*/
public IMogoMarker drawMapMarker(MarkerShowEntity markerShowEntity) {
public synchronized IMogoMarker drawMapMarker(MarkerShowEntity markerShowEntity) {
//Logger.i(TAG, "绘制Marker====drawMapMarker" + markerShowEntity);
try {
if (markerShowEntity.getMarkerLocation() != null) {

View File

@@ -12,7 +12,6 @@
android:layout_width="@dimen/dp_34"
android:layout_height="@dimen/dp_64"
android:src="@drawable/icon_map_marker_car_gray"
android:translationY="-10dp"
app:layout_constraintEnd_toEndOf="@+id/ivBg"
app:layout_constraintStart_toStartOf="@+id/ivBg"
app:layout_constraintTop_toBottomOf="@+id/ivBg" />

View File

@@ -13,7 +13,6 @@
android:layout_width="@dimen/dp_34"
android:layout_height="@dimen/dp_64"
android:src="@drawable/icon_map_marker_car_gray"
android:translationY="-10dp"
app:layout_constraintEnd_toEndOf="@+id/ivReverseTriangle"
app:layout_constraintStart_toStartOf="@+id/ivReverseTriangle"
app:layout_constraintTop_toBottomOf="@+id/ivReverseTriangle" />

View File

@@ -51,16 +51,16 @@ dependencies {
implementation rootProject.ext.dependencies.mogoutils
implementation rootProject.ext.dependencies.mogocommons
implementation rootProject.ext.dependencies.mogoserviceapi
implementation rootProject.ext.dependencies.modulecommon
implementation rootProject.ext.dependencies.moduleservice
compileOnly rootProject.ext.dependencies.modulecommon
compileOnly rootProject.ext.dependencies.moduleservice
implementation rootProject.ext.dependencies.moduleshare
} else {
implementation project(":libraries:mogo-map")
implementation project(":foudations:mogo-utils")
api project(":foudations:mogo-commons")
implementation project(':services:mogo-service-api')
implementation project(':modules:mogo-module-common')
implementation project(':modules:mogo-module-service')
compileOnly project(':modules:mogo-module-common')
compileOnly project(':modules:mogo-module-service')
implementation project(':modules:mogo-module-share')
}

View File

@@ -71,6 +71,7 @@ import com.mogo.module.tanlu.model.event.MarkerInfo;
import com.mogo.module.tanlu.model.event.PushTypeInfo;
import com.mogo.module.tanlu.model.event.SharedialogEvent;
import com.mogo.module.tanlu.util.Utils;
import com.mogo.module.tanlu.video.FullMediaActivity;
import com.mogo.module.tanlu.video.SimpleCoverVideoPlayer;
import com.mogo.module.tanlu.view.AutoZoomInImageView;
import com.mogo.service.MogoServicePaths;
@@ -195,9 +196,7 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
// @Override
// public void onClick(View view) {
// Logger.d(TAG, "simpleCoverVideoPlayer onClick -------> ");
// gsyVideoOptionBuilder.setUrl(mVideoUrl).setCacheWithPlay(false).setPlayTag(TAG)
// .build(simpleCoverVideoPlayer);
//// simpleCoverVideoPlayer.getStartButton().performClick();
// FullMediaActivity.Companion.launch(getActivity(), mVideoUrl, mImageUrl, "东城区环球贸易中心", 1300000300);
// }
// });
}
@@ -473,11 +472,12 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
public void onCmdSelected(String cmd) {
Log.d(TAG, "mogoVoiceListener cmd = " + cmd);
if (cmd.equals(TanluConstants.PLAY_VIDEO)) { //播放路况 --ok
AIAssist.getInstance(getContext()).speakTTSVoice(getString(R.string.tanlu_prepare_play), null);
//语音会中断播放
// AIAssist.getInstance(getContext()).speakTTSVoice(getString(R.string.tanlu_prepare_play), null);
gsyVideoOptionBuilder.setUrl(mVideoUrl).setCacheWithPlay(false).setPlayTag(TAG)
.build(simpleCoverVideoPlayer);
simpleCoverVideoPlayer.getStartButton().performClick();
traceVideoPlayStatusData("1");
traceVideoPlayStatusData();
}
}
@@ -669,7 +669,7 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
gsyVideoOptionBuilder.setUrl(videoUrl).setCacheWithPlay(false).setPlayTag(TAG)
.build(simpleCoverVideoPlayer);
simpleCoverVideoPlayer.getStartButton().performClick();
traceVideoPlayStatusData("2");
traceVideoPlayStatusData();
if (mImageUrl == null) {
return;
@@ -678,15 +678,10 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
/**
* 上传播放
* @param type
* type=1 主动触发播放
*
* type=2 自动播放
*/
private void traceVideoPlayStatusData(String type) {
Map<String, Object> properties = new HashMap<>();
properties.put("type", type);
mAnalytics.track(TanluConstants.CARNET_USER_VIDEO_PLAY, properties);
private void traceVideoPlayStatusData() {
mAnalytics.track(TanluConstants.CARNET_USER_VIDEO_PLAY, null);
}
@@ -895,8 +890,10 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
} else if (event.type.equals("3")) { //封路 10003
poiType = "10003";
mMarkerIcon = BitmapFactory.decodeResource(getResources(), R.drawable.tanlu_marker_road_closure);
} else {
mMarkerIcon = BitmapFactory.decodeResource(getResources(), R.drawable.tanlu_marker_block_up);
}
else {
poiType = "-1";
// mMarkerIcon = BitmapFactory.decodeResource(getResources(), R.drawable.tanlu_marker_block_up);
}
double lat = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLatitude();
@@ -926,7 +923,7 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
/**
* 上报分享信息
*/
private void uploadShareInfo(String poiType, String poiImgUrl, String nickname, String headImgUrl) {
private void uploadShareInfo(final String poiType, String poiImgUrl, String nickname, String headImgUrl) {
double lat = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLatitude();
double lon = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLongitude();
String addressStr = TanluServiceHandler.getLocationClient().getLastKnowLocation().getAddress();
@@ -935,14 +932,18 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
new UploadShareCallback() {
@Override
public void onSuccess(BaseData data) {
Log.d(TAG, "uploadShareInfo onSuccess ----->");
AIAssist.getInstance(getContext()).speakTTSVoice(getString(R.string.tanlu_share_success), null);
Log.d(TAG, "uploadShareInfo onSuccess -----> poiType = " + poiType);
if (!poiType.equals("-1")) {
AIAssist.getInstance(getContext()).speakTTSVoice(getString(R.string.tanlu_share_success), null);
}
}
@Override
public void onFail(String message, int code) {
Log.e(TAG, "uploadShareInfo onFail ----->");
AIAssist.getInstance(getContext()).speakTTSVoice(getString(R.string.tanlu_share_failed), null);
Log.e(TAG, "uploadShareInfo onFail -----> poiType = " + poiType);
if (!poiType.equals("-1")) {
AIAssist.getInstance(getContext()).speakTTSVoice(getString(R.string.tanlu_share_failed), null);
}
}
});
}
@@ -1280,7 +1281,7 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
private void speakSuccessVoice(List<Information> informations, String
trafficStatus) {
Log.d(TAG, "informations.size() = " + informations.size());
Log.d(TAG, "speakSuccessVoice informations.size() = " + informations.size());
switch (informations.size()) {
case 0:
Logger.d(TAG, "speakSuccessVoice --0----> " + random.nextInt(3));
@@ -1292,6 +1293,7 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
trackVoiceSearch(1);
AIAssist.getInstance(getContext()).speakTTSVoice((
String.format(voiceGetInfoMationTts, "1") + trafficStatus), null);
break;
case 2:
trackVoiceSearch(1);
@@ -1301,7 +1303,7 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
voiceGetInfoMationTts,
"2"
) + trafficStatus), null);
break;
case 3:
Logger.d(TAG, "speakSuccessVoice ---3---> ");
trackVoiceSearch(1);
@@ -1310,6 +1312,7 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
voiceGetInfoMationTts,
"3"
) + trafficStatus), null);
break;
default:
Logger.d(TAG, "speakSuccessVoice ---default-> ");

View File

@@ -10,10 +10,10 @@ import java.io.Serializable;
public class MarkerInfo implements Serializable {
public String type; //封路,还是上报
public String imageUrl; //上传完cos图片
public Long lon; //经度
public Long lat; //纬度
public double lon; //经度
public double lat; //纬度
public MarkerInfo(String type, String imageUrl, Long lon, Long lat) {
public MarkerInfo(String type, String imageUrl, double lon, double lat) {
this.type = type;
this.imageUrl = imageUrl;
this.lon = lon;

View File

@@ -15,8 +15,8 @@ class MarkerInfoReceiver : BroadcastReceiver() {
if (intent.action == "com.zhidao.roadcondition.marker.info"){
var type = intent.getStringExtra("type")
var imageUrl = intent.getStringExtra("imageUrl")
var lat = intent.getLongExtra("lat",0)
var lon = intent.getLongExtra("lon",0) //经度
var lat = intent.getDoubleExtra("lat",0.0)
var lon = intent.getDoubleExtra("lon",0.0) //经度
Log.d("MarkerInfoReceiver", "type =" + type + "---->lat =" + lat + "----lon =" + lon + "---imageUrl =" + imageUrl)
EventBus.getDefault().post(MarkerInfo(type, imageUrl,lon, lat))
}

View File

@@ -52,6 +52,7 @@ class SimpleCoverVideoPlayer : StandardGSYVideoPlayer {
totalTime: Int
) {
super.setProgressAndTime(progress, secProgress, currentTime, totalTime)
Log.e("liyz", "setProgressAndTime progress = $progress --->currentTime = $currentTime --->totalTime = $totalTime")
if (progress != 0) {
mProgressBar.progress = progress
}
@@ -125,8 +126,17 @@ class SimpleCoverVideoPlayer : StandardGSYVideoPlayer {
override fun onClick(v: View?) {
super.onClick(v)
}
v?.let {
when (v) {
start -> {
}
else -> {
}
}
}
}
override fun onPrepared() {
super.onPrepared()

View File

@@ -15,7 +15,12 @@
<item android:id="@android:id/progress">
<clip>
<shape>
<solid android:color="#66FFFFFF"/>
<!-- <solid android:color="#66FFFFFF"/>-->
<corners android:radius="5dp" />
<!--在gradient这里设置不同的颜色就会产生渐变的效果-->
<gradient
android:startColor="#1AFFFFFF"
android:endColor="#CCFFFFFF"/>
</shape>
</clip>
</item>

View File

@@ -37,7 +37,6 @@
android:layout_width="match_parent"
android:layout_height="@dimen/tanlu_module_full_bottom_height"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/tanlu_module_full_bottom_margin"
android:orientation="horizontal">

View File

@@ -26,7 +26,7 @@
<dimen name="tanlu_module_card_width">352px</dimen>
<dimen name="tanlu_module_card_margin_left">12px</dimen>
<dimen name="tanlu_module_card_address_margin_top">32px</dimen>
<dimen name="tanlu_module_card_address_margin_top">31px</dimen>
<dimen name="tanlu_module_card_distance_margin_bottom">4px</dimen>
<dimen name="tanlu_module_card_distance_margin_top">1px</dimen>
<dimen name="tanlu_module_card_video_width">327px</dimen>

View File

@@ -27,7 +27,7 @@
<dimen name="tanlu_module_card_width">660px</dimen>
<dimen name="tanlu_module_card_margin_left">24px</dimen>
<dimen name="tanlu_module_card_address_margin_top">58px</dimen>
<dimen name="tanlu_module_card_address_margin_top">56px</dimen>
<dimen name="tanlu_module_card_distance_margin_bottom">8px</dimen>
<dimen name="tanlu_module_card_distance_margin_top">2px</dimen>
<dimen name="tanlu_module_card_video_width">613px</dimen>

View File

@@ -17,3 +17,4 @@
./gradlew :modules:mogo-module-extensions:clean :modules:mogo-module-extensions:uploadArchives
./gradlew :modules:mogo-module-search:clean :modules:mogo-module-search:uploadArchives
./gradlew :modules:mogo-module-main:clean :modules:mogo-module-main:uploadArchives
./gradlew :modules:mogo-module-back:clean :modules:mogo-module-back:uploadArchives