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

# Conflicts:
#	app/src/main/java/com/mogo/launcher/MogoApplication.java
#	config.gradle
#	gradle.properties
This commit is contained in:
lidongxiu
2020-02-10 09:50:18 +08:00
37 changed files with 553 additions and 174 deletions

View File

@@ -108,6 +108,13 @@ public class AppsFragment extends MvpFragment< AppsView, AppsPresenter > impleme
mLoadingView.setVisibility( View.GONE );
}
@Override
public void exit() {
if ( mExit != null ) {
mExit.performClick();
}
}
@Override
public Animation onCreateAnimation( int transit, boolean enter, int nextAnim ) {
TranslateAnimation animation = null;

View File

@@ -1,19 +1,19 @@
package com.mogo.module.apps;
import android.content.Intent;
import androidx.annotation.NonNull;
import androidx.lifecycle.LifecycleOwner;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.mvp.Presenter;
import com.mogo.module.apps.applaunch.AppLaunchFilter;
import com.mogo.module.apps.applaunch.AppLauncher;
import com.mogo.module.apps.applaunch.CardAppLauncher;
import com.mogo.module.apps.model.AppInfo;
import com.mogo.module.apps.model.AppsModel;
import com.mogo.module.apps.utils.LaunchUtils;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.cardmanager.IMogoCardManager;
import com.mogo.utils.ThreadPoolService;
import com.mogo.utils.TipToast;
import com.mogo.utils.UiThreadHandler;
import java.util.HashMap;
@@ -30,9 +30,16 @@ public class AppsPresenter extends Presenter< AppsView > {
private static final String TAG = "AppsPresenter";
private IMogoAnalytics mAnalytics;
private AppLaunchFilter mLauncher;
private IMogoCardManager mCardManager;
public AppsPresenter( AppsView view ) {
super( view );
mCardManager = ( IMogoCardManager ) ARouter.getInstance().build( MogoServicePaths.PATH_CARD_MANAGER ).navigation( getContext() );
CardAppLauncher cardAppLauncher = new CardAppLauncher( this, mCardManager );
cardAppLauncher.setNext( new AppLauncher() );
mLauncher = cardAppLauncher;
}
@Override
@@ -68,9 +75,9 @@ public class AppsPresenter extends Presenter< AppsView > {
trackAppClicked( appInfo );
try {
LaunchUtils.launchByPkg( getContext(), appInfo.getPackageName() );
mLauncher.launch( getContext(), appInfo );
} catch ( Exception e ) {
TipToast.shortTip( R.string.module_apps_str_no_app );
}
}
@@ -92,5 +99,12 @@ public class AppsPresenter extends Presenter< AppsView > {
super.onDestroy( owner );
AppsListChangedLiveData.getInstance().release();
mView = null;
mLauncher.destroy();
}
public void exit() {
if ( mView != null ) {
mView.exit();
}
}
}

View File

@@ -20,4 +20,9 @@ public interface AppsView extends IView {
* @param appInfos
*/
void renderApps( Map< Integer, List< AppInfo > > appInfos );
/**
* 退出列表页面
*/
void exit();
}

View File

@@ -0,0 +1,18 @@
package com.mogo.module.apps.applaunch;
import android.content.Context;
import com.mogo.module.apps.model.AppInfo;
/**
* @author congtaowang
* @since 2020-02-09
* <p>
* 按指定方式启动指定的app
*/
public interface AppLaunchFilter {
void launch( Context context, AppInfo appInfo );
void destroy();
}

View File

@@ -0,0 +1,38 @@
package com.mogo.module.apps.applaunch;
import android.content.Context;
import com.mogo.module.apps.R;
import com.mogo.module.apps.model.AppInfo;
import com.mogo.module.apps.utils.LaunchUtils;
import com.mogo.utils.TipToast;
import com.mogo.utils.logger.Logger;
/**
* @author congtaowang
* @since 2020-02-09
* <p>
* 描述
*/
public class AppLauncher extends BaseAppLauncher {
private static final String TAG = "AppLauncher";
@Override
public void launch( Context context, AppInfo appInfo ) {
try {
LaunchUtils.launchByPkg( context, appInfo.getPackageName() );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
TipToast.shortTip( R.string.module_apps_str_no_app );
}
}
@Override
public void destroy() {
if ( getNext() != null ) {
getNext().destroy();
setNext( null );
}
}
}

View File

@@ -0,0 +1,20 @@
package com.mogo.module.apps.applaunch;
/**
* @author congtaowang
* @since 2020-02-09
* <p>
* 描述
*/
public abstract class BaseAppLauncher implements AppLaunchFilter {
private AppLaunchFilter mNext;
public AppLaunchFilter getNext() {
return mNext;
}
public void setNext( AppLaunchFilter next ) {
this.mNext = next;
}
}

View File

@@ -0,0 +1,57 @@
package com.mogo.module.apps.applaunch;
import android.content.Context;
import com.mogo.module.apps.AppsPresenter;
import com.mogo.module.apps.model.AppInfo;
import com.mogo.service.cardmanager.IMogoCardManager;
import java.util.HashMap;
import java.util.Map;
/**
* @author congtaowang
* @since 2020-02-09
* <p>
* 描述
*/
public class CardAppLauncher extends BaseAppLauncher {
private static Map< String, String > sCardApps = new HashMap<>();
static {
sCardApps.put( "com.zhidao.roadcondition.split", "CARD_TYPE_ROAD_CONDITION" );
sCardApps.put( "com.zhidao.roadcondition", "CARD_TYPE_ROAD_CONDITION" );
sCardApps.put( "com.zhidao.imdemo", "CARD_TYPE_CARS_CHATTING" );
}
private AppsPresenter mAppsPresenter;
private IMogoCardManager mCardManager;
public CardAppLauncher( AppsPresenter mAppsPresenter, IMogoCardManager mCardManager ) {
this.mAppsPresenter = mAppsPresenter;
this.mCardManager = mCardManager;
}
@Override
public void launch( Context context, AppInfo appInfo ) {
if ( sCardApps.containsKey( appInfo.getPackageName() ) ) {
mCardManager.switch2( sCardApps.get( appInfo.getPackageName() ) );
mAppsPresenter.exit();
} else {
if ( getNext() != null ) {
getNext().launch( context, appInfo );
}
}
}
@Override
public void destroy() {
mAppsPresenter = null;
mCardManager = null;
if ( getNext() != null ) {
getNext().destroy();
setNext( null );
}
}
}

View File

@@ -0,0 +1,17 @@
package com.mogo.module.apps.model;
/**
* @author congtaowang
* @since 2020-02-09
* <p>
* 描述
*/
public class CardAppInfo extends AppInfo {
private String mCardType;
public CardAppInfo( AppInfo app, String cardType ) {
super( app.getName(), app.getPackageName(), app.getVersionName(), app.getVersionCode(), app.getIcon() );
this.mCardType = cardType;
}
}

View File

@@ -6,6 +6,7 @@ package com.mogo.module.common.entity;
*/
public class MarkerNoveltyInfo {
private String type;
private String sn;
private MarkerLocation location;
/**
* @see MarkerPoiTypeEnum
@@ -45,6 +46,13 @@ public class MarkerNoveltyInfo {
this.type = type;
}
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public class ContentData {
private String content;
@@ -53,6 +61,7 @@ public class MarkerNoveltyInfo {
private String infoId;
private long likeNum;
private String title;
private String gasPrices;
private boolean displayNavigation;
private String styleType;
@@ -120,6 +129,14 @@ public class MarkerNoveltyInfo {
this.styleType = styleType;
}
public String getGasPrices() {
return gasPrices;
}
public void setGasPrices(String gasPrices) {
this.gasPrices = gasPrices;
}
@Override
public String toString() {
return "ContentData{" +
@@ -129,6 +146,7 @@ public class MarkerNoveltyInfo {
", infoId='" + infoId + '\'' +
", likeNum=" + likeNum +
", title='" + title + '\'' +
", gasPrices='" + gasPrices + '\'' +
", displayNavigation=" + displayNavigation +
", styleType='" + styleType + '\'' +
'}';
@@ -139,6 +157,7 @@ public class MarkerNoveltyInfo {
public String toString() {
return "MarkerNoveltyInfo{" +
"type='" + type + '\'' +
", sn='" + sn + '\'' +
", location=" + location +
", poiType='" + poiType + '\'' +
", contentData=" + contentData +

View File

@@ -123,8 +123,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
mUploadRoadCondition = findViewById( R.id.module_entrance_id_upload_road_condition );
mUploadRoadCondition.setOnClickListener( view -> {
ShareControl shareControl = new ShareControl();
shareControl.showDialog( getActivity() );
ShareControl.getInstance(getActivity()).showDialog();
} );
mVRMode = findViewById( R.id.module_entrance_id_vr_mode );

View File

@@ -1,6 +1,7 @@
package com.mogo.module.main;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.FrameLayout;
@@ -234,7 +235,7 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
// 加载地图,触发地图加载完毕回调,在初始化其他卡片模块,保证卡片模块可以正确获取地图相关服务。
mMogoModuleHandler.loadModules();
loadContainerModules();
loadCardModules();
new Handler().postDelayed(() -> loadCardModules(), 5000);
// 显示左边遮罩
mLeftShadowFrame.setVisibility(View.VISIBLE);

View File

@@ -45,7 +45,6 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener {
override fun onCalculateSuccess() {
var calculatedStrategies = SearchServiceHolder.getNavi()
.calculatedStrategies
if (calculatedStrategies != null && calculatedStrategies.size > 0) {
mAdapter.setDatas(calculatedStrategies)
mAdapter.selectTag = calculatedStrategies[0].tagId

View File

@@ -406,6 +406,8 @@ public class MogoServiceProvider implements IMogoModuleProvider,
// 部分非用户操作导致地图视图变化:绘线、圈点等不触发用户刷新
// 消费状态
if ( mStatusManager.isUserInteracted() ) {
mLastCustomRefreshCenterLocation = latLng;
mLastZoomLevel = zoom;
return;
}

View File

@@ -15,7 +15,7 @@ public interface IShareControl {
* 显示对话框
*/
@Keep
void showDialog(Context context);
void showDialog(/*Context context*/);
/**
* 对话框消失

View File

@@ -1,6 +1,9 @@
package com.mogo.module.share;
import android.content.Context;
import com.mogo.map.MogoNavi;
import com.mogo.map.impl.amap.navi.NaviClient;
import com.mogo.module.share.dialog.LaucherShareDialog;
/**
@@ -9,15 +12,36 @@ import com.mogo.module.share.dialog.LaucherShareDialog;
* @since 2020-01-10
*/
public class ShareControl implements IShareControl {
private static volatile ShareControl sInstance;
private Context mContext;
private ShareControl(Context context) {
mContext = context;
}
public static ShareControl getInstance(Context context) {
if (sInstance == null) {
synchronized (ShareControl.class) {
if (sInstance == null) {
sInstance = new ShareControl(context);
}
}
}
return sInstance;
}
@Override
public void showDialog(Context context) {
LaucherShareDialog shareDialog = new LaucherShareDialog(context);
public void showDialog() {
LaucherShareDialog shareDialog = new LaucherShareDialog(mContext);
shareDialog.setCanceledOnTouchOutside(true);
shareDialog.show();
}
@Override
public void dismissDialog() {
LaucherShareDialog shareDialog = new LaucherShareDialog(mContext);
shareDialog.dismiss();
}
}

View File

@@ -329,7 +329,6 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
@Override
public void onStartNavi() { //开始导航
Logger.d(TAG, "onStartNavi -------> ");
initModelData();
getNavigationData();
}
@@ -441,6 +440,7 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
sendShareReceiver("1");
Logger.d(TAG, "mogoIntentListener 上报路况 ----> ");
traceTypeData("1");
ShareControl.getInstance(getActivity()).dismissDialog();
} else if (intentStr.equals(TanluConstants.SHARE_ROAD_CLOSURE)) { //分享封路(封路了) --ok
traceData("2");
sendShareReceiver("3");
@@ -452,8 +452,7 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
Logger.d(TAG, "mogoIntentListener 分享交通检查 ----> ");
traceTypeData("3");
} else if (intentStr.equals(TanluConstants.GO_TO_SHARE)) { //我要分享 --ok
ShareControl shareControl = new ShareControl();
shareControl.showDialog(getActivity());
ShareControl.getInstance(getActivity()).showDialog();
Logger.d(TAG, "mogoIntentListener 我要分享 ----> ");
}
}
@@ -906,7 +905,7 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
/**
* 上报分享信息 TODO
* 上报分享信息
*/
private void uploadShareInfo(String poiType, String poiImgUrl, String nickname, String headImgUrl) {
double lat = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLatitude();
@@ -951,7 +950,7 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
/**
* 导航路线数据事件 TODO
* 导航路线数据事件
*/
public void getNavigationData() {
// Double lat = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLatitude();
@@ -969,11 +968,16 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
// }
// });
mTanluModelData.getNaviInformation(new NaviCallback() {
mTanluModelData.getNaviInformation(mMogoMapService.getNavi(getContext()).getCalculatedPathPos(),
new NaviCallback() {
@Override
public void onSuccess(NaviResult data) {
Log.d(TAG, "getNavigationData onSuccess ----->");
List<Information> informationList = data.getResult().getInformations();
Log.d(TAG, "getNavigationData onSuccess informationList =" + informationList);
if (informationList == null || (informationList != null && informationList.size() == 0)) {
return;
}
//清除探路之前的数据
mMarkerManager.removeMarkers(TanluConstants.MODEL_NAME);
@@ -999,7 +1003,6 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
.longitude(informationList.get(i).lon);
optionList.add(options);
Log.d(TAG, "lat =" + informationList.get(i).lat + ">>>lon =" + informationList.get(i).lon);
}
Logger.d(TAG, "getNavigationData optionList.size() = " + optionList.size());
mMarkerManager.addMarkers(TanluConstants.MODEL_NAME, optionList, true);
@@ -1117,6 +1120,11 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
speakSuccessVoice(o.getResult().getInformations(), discription == null ? "" : discription);
List<Information> informationList = o.getResult().getInformations();
Log.d(TAG, "getVoiceControlRoadData onSuccess informationList =" + informationList);
if (informationList == null || (informationList != null && informationList.size() == 0)) {
return;
}
//清除探路之前的数据
mMarkerManager.removeMarkers(TanluConstants.MODEL_NAME);
//添加埋点数据

View File

@@ -8,10 +8,10 @@ import java.util.List;
* @since 2020-02-03
*/
public class NaviRoadRequest {
public List<Double> coordinates;
public List<String> coordinates;
public int limit;
public NaviRoadRequest(List<Double> coordinates, int limit) {
public NaviRoadRequest(List<String> coordinates, int limit) {
this.coordinates = coordinates;
this.limit = limit;
}

View File

@@ -10,6 +10,7 @@ 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.tanlu.callback.AlongTheWayCallback;
import com.mogo.module.tanlu.callback.NaviCallback;
import com.mogo.module.tanlu.callback.RoadLineCallback;
@@ -287,14 +288,34 @@ public class TanluModelData {
}
/**
* 获取导航沿途情报 TODO
* 组装需要的请求list
*
* @return
*/
public void getNaviInformation(final NaviCallback callback) {
Gson gson = new Gson();
private List<String> getLatLngRequest(List<MogoLatLng> latLnglist) {
List<String> resultList = new ArrayList<>();
for (int i = 0; i < latLnglist.size(); i++) {
resultList.add(latLnglist.get(i).lng + "," + latLnglist.get(i).lat);
}
return resultList;
}
/**
* 获取导航沿途情报
*/
public void getNaviInformation(List<MogoLatLng> mogoLatLnglist, final NaviCallback callback) {
Gson gson = new Gson();
if (mogoLatLnglist == null) {
return;
}
NaviRoadRequest naviRoadRequest = new NaviRoadRequest(getLatLngRequest(mogoLatLnglist), 10);
String naviStr = gson.toJson(naviRoadRequest);
Log.d(TAG, "getNaviInformation naviStr = " + naviStr);
final Map<String, Object> params = new ParamsProvider.Builder(mContext)
.append("sn", Utils.getSn())
// .append("data", uploadShareStr)
.append("data", naviStr)
.build();
mTanluApiService.getNaviInformation(params)

View File

@@ -2,6 +2,7 @@ package com.mogo.module.tanlu.video
import android.content.Context
import android.util.AttributeSet
import android.util.Log
import android.view.Surface
import android.view.View
import android.widget.ImageView
@@ -77,6 +78,33 @@ class SimpleCoverVideoPlayer : StandardGSYVideoPlayer {
override fun changeUiToCompleteShow() {
super.changeUiToCompleteShow()
// setViewShowState(mBottomContainer, View.INVISIBLE)
Log.d("liyz", "changeUiToCompleteShow ------------>")
}
override fun hideAllWidget() {
super.hideAllWidget()
Log.d("liyz", "hideAllWidget ------------>")
mBottomContainer.visibility = View.VISIBLE
}
override fun changeUiToPrepareingClear() {
super.changeUiToPrepareingClear()
mBottomContainer.visibility = View.VISIBLE
}
override fun changeUiToPlayingBufferingClear() {
super.changeUiToPlayingBufferingClear()
mBottomContainer.visibility = View.VISIBLE
}
override fun changeUiToClear() {
super.changeUiToClear()
mBottomContainer.visibility = View.VISIBLE
}
override fun changeUiToCompleteClear() {
super.changeUiToCompleteClear()
mBottomContainer.visibility = View.INVISIBLE
}
override fun onAutoCompletion() {

View File

@@ -66,7 +66,8 @@
android:layout_below="@+id/layout_top_view"
android:layout_marginLeft="@dimen/tanlu_module_card_margin_left"
android:layout_marginRight="@dimen/tanlu_module_card_margin_left"
android:background="@drawable/shape_bg_222533_9px">
>
<!-- android:background="@drawable/shape_bg_222533_9px"-->
<com.mogo.module.tanlu.video.SimpleCoverVideoPlayer
android:id="@+id/video_player_main"

View File

@@ -14,7 +14,7 @@
<dimen name="tanlu_module_full_loading_height">96px</dimen>
<dimen name="tanlu_module_full_bottom_height">90px</dimen>
<dimen name="tanlu_module_full_bottom_width">700px</dimen>
<dimen name="tanlu_module_full_bottom_margin">10px</dimen>
<dimen name="tanlu_module_full_bottom_margin">5px</dimen>
<dimen name="tanlu_module_full_top_height">72px</dimen>
<dimen name="tanlu_module_full_back_width">25px</dimen>

View File

@@ -15,7 +15,7 @@
<dimen name="tanlu_module_full_loading_height">96px</dimen>
<dimen name="tanlu_module_full_bottom_height">100px</dimen>
<dimen name="tanlu_module_full_bottom_width">700px</dimen>
<dimen name="tanlu_module_full_bottom_margin">10px</dimen>
<dimen name="tanlu_module_full_bottom_margin">5px</dimen>
<dimen name="tanlu_module_full_top_height">135px</dimen>
<dimen name="tanlu_module_full_back_width">50px</dimen>

View File

@@ -15,7 +15,7 @@
<dimen name="tanlu_module_full_loading_height">96px</dimen>
<dimen name="tanlu_module_full_bottom_height">144px</dimen>
<dimen name="tanlu_module_full_bottom_width">760px</dimen>
<dimen name="tanlu_module_full_bottom_margin">10px</dimen>
<dimen name="tanlu_module_full_bottom_margin">5px</dimen>
<dimen name="tanlu_module_full_top_height">135px</dimen>
<dimen name="tanlu_module_full_back_width">50px</dimen>