From a13f194849ebe3d827a1ce93ed326079fe00bdf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Mon, 15 Jun 2020 18:01:06 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BC=B9=E5=8A=9B?= =?UTF-8?q?=E6=83=85=E6=8A=A5=E6=95=B0=E6=8D=AE=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 2 +- .../module/common/entity/MarkerExploreWayItem.java | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 2dc54c489f..707ee6e613 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerExploreWayItem.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerExploreWayItem.java index efc6a88649..f8ab53ca9d 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerExploreWayItem.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerExploreWayItem.java @@ -6,11 +6,15 @@ import android.text.TextUtils; import java.io.Serializable; +/** + * 道路情报,V2X预警,地图道路事件POI,违章停车POI等 + */ @SuppressWarnings("unused") public class MarkerExploreWayItem implements Serializable { private String thumbnail; private String url; + private String content; public String getThumbnail() { if (TextUtils.isEmpty(thumbnail)) { @@ -34,11 +38,20 @@ public class MarkerExploreWayItem implements Serializable { this.url = url; } + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + @Override public String toString() { return "MarkerExploreWayItem{" + "thumbnail='" + thumbnail + '\'' + ", url='" + url + '\'' + + ", content='" + content + '\'' + '}'; } } From ab07340efc7863852b6adca22c73f7175ce1155f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Mon, 15 Jun 2020 18:25:41 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=AD=97=E6=AE=B5=E7=9A=84=E7=BB=A7=E6=89=BF=E5=85=B3?= =?UTF-8?q?=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/module/common/entity/MarkerCardResult.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCardResult.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCardResult.java index be7c7bbe23..3896ae58c4 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCardResult.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCardResult.java @@ -1,11 +1,13 @@ package com.mogo.module.common.entity; +import com.mogo.commons.data.BaseData; + import java.io.Serializable; import java.util.List; @SuppressWarnings("unused") -public class MarkerCardResult implements Serializable { +public class MarkerCardResult extends BaseData { private List dataType; // 要查询的类型 private List carChat; From 34335e8f919f9928b5944702816e3e60cc88a838 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Tue, 16 Jun 2020 13:46:23 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=85=B7=E6=88=91?= =?UTF-8?q?=E9=9F=B3=E4=B9=90sdk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/mogo-module-media/build.gradle | 1 + .../com/mogo/module/media/MediaWindow2.java | 8 +- .../module/media/presenter/KwPresenter.java | 162 ++++++++++++++++++ 3 files changed, 169 insertions(+), 2 deletions(-) create mode 100644 modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/KwPresenter.java diff --git a/modules/mogo-module-media/build.gradle b/modules/mogo-module-media/build.gradle index fb9eab7108..d734d287e0 100644 --- a/modules/mogo-module-media/build.gradle +++ b/modules/mogo-module-media/build.gradle @@ -46,6 +46,7 @@ dependencies { // 爱趣听sdk上传到了公司的maven,用来规避RELEASE时ClassDefNotFound异常,后续若爱趣听有新的sdk也需要上传maven implementation "com.mogo.tencent.wecarflow:mogo-wecarflow:+@aar" + implementation "com.mogo.kwmusic:mogo-kwmusic:+" if (Boolean.valueOf(RELEASE)) { implementation rootProject.ext.dependencies.mogomap diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaWindow2.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaWindow2.java index 21898f15df..1ba6514075 100644 --- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaWindow2.java +++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaWindow2.java @@ -14,6 +14,8 @@ import com.mogo.commons.voice.IMogoVoiceCmdCallBack; import com.mogo.module.media.constants.MusicConstant; import com.mogo.module.media.listener.NoDoubleClickListener; import com.mogo.module.media.model.MediaInfoData; +import com.mogo.module.media.presenter.BaseMediaPresenter; +import com.mogo.module.media.presenter.KwPresenter; import com.mogo.module.media.presenter.WeCarFlowPresenter; import com.mogo.module.media.utils.Utils; import com.mogo.module.media.view.IMusicView; @@ -35,7 +37,7 @@ public class MediaWindow2 implements IMusicView { public static final String TAG = MediaWindow2.class.getName(); private Context mContext; - private WeCarFlowPresenter mPresenter; + private KwPresenter mPresenter; private MediaInfoData mMediaInfoData = new MediaInfoData(); @@ -54,7 +56,7 @@ public class MediaWindow2 implements IMusicView { public void initMedia(Context context) { mContext = context; - mPresenter = new WeCarFlowPresenter(this); + mPresenter = new KwPresenter(this); mPresenter.init(context); if(DebugConfig.isLauncher()) { @@ -221,6 +223,8 @@ public class MediaWindow2 implements IMusicView { if (mCircleImg != null) { mCircleImg.stopAnim(); } + + } @Override diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/KwPresenter.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/KwPresenter.java new file mode 100644 index 0000000000..8faf72a28a --- /dev/null +++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/KwPresenter.java @@ -0,0 +1,162 @@ +package com.mogo.module.media.presenter; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import com.alibaba.android.arouter.launcher.ARouter; +import com.mogo.module.media.MediaConstants; +import com.mogo.module.media.model.MediaInfoData; +import com.mogo.module.media.view.IMusicView; +import com.mogo.service.IMogoServiceApis; +import com.mogo.service.MogoServicePaths; +import com.mogo.service.statusmanager.IMogoStatusChangedListener; +import com.mogo.service.statusmanager.StatusDescriptor; +import com.mogo.utils.logger.Logger; + +import java.security.PrivilegedAction; + +import cn.kuwo.autosdk.api.KWAPI; +import cn.kuwo.autosdk.api.PlayState; +import cn.kuwo.base.bean.Music; + +/** + * 适配酷我的presenter + * + * @author tongchenfei + */ +public class KwPresenter extends BaseMediaPresenter { + private static final String TAG = "KwPresenter"; + private KWAPI kwapi; + private boolean isBind = false; + + private Music currentMusic; + + public KwPresenter(IMusicView view) { + super(view); + } + + @Override + public void init(Context context) { + kwapi = KWAPI.createKWAPI(context, "auto"); + + kwapi.registerConnectedListener(b -> { + Logger.d(TAG, "onConnected: " + b); + isBind = b; + if (!isBind) { + mView.onMusicStopped(); + } + }); + + kwapi.registerExitListener(() -> { + Logger.d(TAG, "onExit==="); + mView.onMusicStopped(); + }); + + kwapi.registerPlayerStatusListener((playerStatus, music) -> { + currentMusic = music; + MediaInfoData mediaInfoData = new MediaInfoData(); + mediaInfoData.setMediaName(music.name); + mediaInfoData.setMediaImg(music.imageURL); + Logger.d(TAG, + "onPlayerStatusChange: " + mediaInfoData + " playStatus: " + playerStatus); + mView.onMediaInfoChanged(mediaInfoData); + switch (playerStatus) { + case PLAYING: + case BUFFERING: + startTrackTrackProgress(); + mView.onMusicPlaying(); + break; + case PAUSE: + stopTrackTrackProgress(); + mView.onMusicPause(); + break; + case STOP: + stopTrackTrackProgress(); + break; + default: + break; + } + }); + + IMogoServiceApis serviceApis = + (IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context); + + serviceApis.getStatusManagerApi().registerStatusChangedListener(MediaConstants.MODULE_TYPE, StatusDescriptor.MAIN_PAGE_RESUME, new IMogoStatusChangedListener() { + @Override + public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) { + if (isTrue) { + Logger.d(TAG, "onResume, isBind: " + isBind); + // 需要在resume时候判断绑定关系是否正常 + if (!isBind) { + // 未绑定,需要重新绑定,同时第一次绑定初始化也是在此处 + kwapi.bindAutoSdkService(); + } + } + } + }); + + kwapi.bindAutoSdkService(); + } + + @Override + public void play(MediaInfoData mediaInfoData) { + if (kwapi.isKuwoRunning()) { + kwapi.setPlayState(PlayState.STATE_PLAY); + } else { + kwapi.randomPlayMusic(); + } + } + + @Override + public void pause(MediaInfoData mediaInfoData) { + if (kwapi.isKuwoRunning()) { + kwapi.setPlayState(PlayState.STATE_PAUSE); + } + } + + @Override + public void stop(MediaInfoData mediaInfoData) { + + } + + @Override + public void pre() { + if (kwapi.isKuwoRunning()) { + kwapi.setPlayState(PlayState.STATE_PRE); + } + } + + @Override + public void next() { + if (kwapi.isKuwoRunning()) { + kwapi.setPlayState(PlayState.STATE_NEXT); + } + } + + private Handler.Callback callback = new Handler.Callback() { + @Override + public boolean handleMessage(Message msg) { + if (isTrackingProgress) { + mView.onMusicProgress(kwapi.getCurrentMusicDuration(), currentMusic.duration); + msg.getTarget().sendEmptyMessageDelayed(MSG_TRACK_PROGRESS, MSG_TRACK_PROGRESS_DELAY); + } + return false; + } + }; + private Handler handler = new Handler(callback); + private static final int MSG_TRACK_PROGRESS = 1001; + private static final long MSG_TRACK_PROGRESS_DELAY = 1000; + + private boolean isTrackingProgress = false; + + private void startTrackTrackProgress() { + isTrackingProgress = true; + handler.sendEmptyMessageDelayed(MSG_TRACK_PROGRESS, MSG_TRACK_PROGRESS_DELAY); + } + + private void stopTrackTrackProgress() { + isTrackingProgress = false; + handler.removeMessages(MSG_TRACK_PROGRESS); + } +} From 7f9bc2e5928f38e38466d23bd12e81507264ba1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Tue, 16 Jun 2020 14:30:49 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E8=BF=9D?= =?UTF-8?q?=E7=AB=A0=E5=81=9C=E8=BD=A6=E7=9A=84POI=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java index e57e3270fe..c3bb85d757 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java @@ -38,4 +38,6 @@ public interface MarkerPoiTypeEnum { public String FOURS_NEALY = "10014"; //实时路况 public String FOURS_LIVING = "10015"; + //违章停车 + public String ILLEGAL_PARK_LIVING = "10016"; } \ No newline at end of file From bfb31d0e0a22f0bebac46396b13783894aba678e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Tue, 16 Jun 2020 15:09:27 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E8=BF=9D?= =?UTF-8?q?=E7=AB=A0=E5=81=9C=E8=BD=A6=E7=9A=84Marker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/entity/MarkerPoiTypeEnum.java | 32 +++++++++--------- .../service/marker/MapMarkerInfoView.java | 3 ++ .../module/service/marker/MapMarkerView.java | 3 ++ .../module_service_ic_rc_illegal_park.png | Bin 0 -> 1592 bytes ...odule_service_ic_rc_illegal_park_light.png | Bin 0 -> 1110 bytes 5 files changed, 22 insertions(+), 16 deletions(-) create mode 100644 modules/mogo-module-service/src/main/res/drawable/module_service_ic_rc_illegal_park.png create mode 100644 modules/mogo-module-service/src/main/res/drawable/module_service_ic_rc_illegal_park_light.png diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java index c3bb85d757..a0afae8e89 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java @@ -9,35 +9,35 @@ package com.mogo.module.common.entity; */ public interface MarkerPoiTypeEnum { //加油站 - public String GAS_STATION = "10001"; + String GAS_STATION = "10001"; //交通检查 - public String TRAFFIC_CHECK = "10002"; + String TRAFFIC_CHECK = "10002"; //封路 - public String ROAD_CLOSED = "10003"; + String ROAD_CLOSED = "10003"; //商场打折 - public String SHOP_DISCOUNT = "10004"; + String SHOP_DISCOUNT = "10004"; //4S店 - public String FOURS_4S = "10005"; + String FOURS_4S = "10005"; //施工 - public String FOURS_ROAD_WORK = "10006"; + String FOURS_ROAD_WORK = "10006"; //拥堵 - public String FOURS_BLOCK_UP = "10007"; + String FOURS_BLOCK_UP = "10007"; //积水 - public String FOURS_PONDING = "10008"; + String FOURS_PONDING = "10008"; //超市打折 - public String FOURS_SHOP_FREE = "10009"; + String FOURS_SHOP_FREE = "10009"; //浓雾 - public String FOURS_FOG = "10010"; + String FOURS_FOG = "10010"; //结冰 - public String FOURS_ICE = "10011"; + String FOURS_ICE = "10011"; //停车场 - public String FOURS_PARKING = "10012"; + String FOURS_PARKING = "10012"; //事故 - public String FOURS_ACCIDENT = "10013"; + String FOURS_ACCIDENT = "10013"; //身边 - public String FOURS_NEALY = "10014"; + String FOURS_NEALY = "10014"; //实时路况 - public String FOURS_LIVING = "10015"; + String FOURS_LIVING = "10015"; //违章停车 - public String ILLEGAL_PARK_LIVING = "10016"; + String ILLEGAL_PARK_LIVING = "10016"; } \ No newline at end of file diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java index d564a1757d..d5195bf069 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java @@ -135,6 +135,9 @@ public class MapMarkerInfoView extends MapMarkerBaseView { case MarkerPoiTypeEnum.FOURS_LIVING: ivIcon.setImageResource( R.drawable.icon_map_marker_living_light ); break; + case MarkerPoiTypeEnum.ILLEGAL_PARK_LIVING: + ivIcon.setImageResource( R.drawable.module_service_ic_rc_illegal_park_light ); + break; default: ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_up2_light ); break; diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java index 1c83655149..9b7153b574 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java @@ -101,6 +101,9 @@ public class MapMarkerView extends MapMarkerBaseView { case MarkerPoiTypeEnum.FOURS_LIVING: ivIcon.setImageResource( R.drawable.icon_map_marker_living ); break; + case MarkerPoiTypeEnum.ILLEGAL_PARK_LIVING: + ivIcon.setImageResource( R.drawable.module_service_ic_rc_illegal_park ); + break; case MarkerPoiTypeEnum.FOURS_PARKING: default: ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_up2 ); diff --git a/modules/mogo-module-service/src/main/res/drawable/module_service_ic_rc_illegal_park.png b/modules/mogo-module-service/src/main/res/drawable/module_service_ic_rc_illegal_park.png new file mode 100644 index 0000000000000000000000000000000000000000..6e1443d3b42bdd894a8b7a4b0f6f7b21e4bc1f4b GIT binary patch literal 1592 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 literal 0 HcmV?d00001 From 627e5dec677f1f29796fb90ade1adc96d752d4ee Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Tue, 16 Jun 2020 16:28:59 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E9=80=82=E9=85=8D=E9=85=B7=E6=88=91?= =?UTF-8?q?=E9=9F=B3=E4=B9=90=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/module/apps/model/AppEnum.java | 2 + .../mogo/module/apps/model/NavigatorApps.java | 3 +- .../src/main/res/drawable/ic_kuwo.webp | Bin 0 -> 3266 bytes .../res/layout/module_main_activity_main.xml | 13 +-- .../module/media/MediaCardViewProvider.java | 1 + .../media/presenter/BaseMediaPresenter.java | 5 ++ .../module/media/presenter/KwPresenter.java | 84 ++++++++++++------ .../media/presenter/WeCarFlowPresenter.java | 5 ++ .../mogo/module/media/view/IMusicView.java | 2 + .../media/widget/AnimCircleImageView.java | 4 +- .../media/{ => window}/MediaWindow.java | 15 ++-- .../media/{ => window}/MediaWindow2.java | 31 ++++--- 12 files changed, 109 insertions(+), 56 deletions(-) create mode 100644 modules/mogo-module-apps/src/main/res/drawable/ic_kuwo.webp rename modules/mogo-module-media/src/main/java/com/mogo/module/media/{ => window}/MediaWindow.java (98%) rename modules/mogo-module-media/src/main/java/com/mogo/module/media/{ => window}/MediaWindow2.java (93%) diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppEnum.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppEnum.java index 7eadd38ab6..df83f351c0 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppEnum.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppEnum.java @@ -14,6 +14,8 @@ import com.mogo.module.apps.R; * 基础类:均衡器、方控学习、蓝牙、FM、车载设置、AUX */ public enum AppEnum { + // 酷我音乐 + KwMusic("酷我音乐", "cn.kuwo.kwmusiccar", R.drawable.ic_kuwo), // 爱趣听 WeCarFlow("爱趣听","com.tencent.wecarflow", R.drawable.module_apps_ic_we_car_flow ), //"QQ音乐", diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApps.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApps.java index 700564dce6..f1e00886b6 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApps.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApps.java @@ -15,7 +15,8 @@ public class NavigatorApps { private static AppInfo app = new AppInfo( "导航", "com.mogo.launcher.navi.search", "", 0, null, R.drawable.module_apps_ic_navigator_navi, 1 ); private static AppInfo app_ = new AppInfo( "导航", "com.mogo.launcher.navi.search", "", 0, null, R.drawable.module_apps_ic_navigator_navi_disable, 1 ); - private static AppInfo app2 = new AppInfo( "音乐", "com.tencent.wecarflow", "", 0, null, R.drawable.module_apps_ic_navigator_media, 2 ); +// private static AppInfo app2 = new AppInfo( "音乐", "com.tencent.wecarflow", "", 0, null, R.drawable.module_apps_ic_navigator_media, 2 ); + private static AppInfo app2 = new AppInfo( "音乐", "cn.kuwo.kwmusiccar", "", 0, null, R.drawable.module_apps_ic_navigator_media, 2 ); private static AppInfo app3 = new AppInfo( "车聊聊", "com.zhidao.imdemo", "", 0, null, R.drawable.module_apps_ic_navigator_im, 6 ); private static AppInfo app4 = new AppInfo( "全部应用", "com.mogo.launcher.applist", "", 0, null, R.drawable.module_apps_ic_navigator_applist, 4 ); diff --git a/modules/mogo-module-apps/src/main/res/drawable/ic_kuwo.webp b/modules/mogo-module-apps/src/main/res/drawable/ic_kuwo.webp new file mode 100644 index 0000000000000000000000000000000000000000..82330db5faf09fc7fceda04d164cf133d4254818 GIT binary patch literal 3266 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 A$p8QV literal 0 HcmV?d00001 diff --git a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml index 02d9555475..96f61eca7b 100644 --- a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml +++ b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml @@ -9,7 +9,13 @@ + android:layout_height="match_parent" > + + + - - extends Presenter { * 下一首 */ public abstract void next(); + + /** + * 打开对应的应用 + */ + public abstract void openApp(); } diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/KwPresenter.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/KwPresenter.java index 8faf72a28a..75e49e751a 100644 --- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/KwPresenter.java +++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/KwPresenter.java @@ -6,6 +6,7 @@ import android.os.Message; import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.module.media.MediaConstants; +import com.mogo.module.media.constants.MusicConstant; import com.mogo.module.media.model.MediaInfoData; import com.mogo.module.media.view.IMusicView; import com.mogo.service.IMogoServiceApis; @@ -14,10 +15,10 @@ import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.utils.logger.Logger; -import java.security.PrivilegedAction; - import cn.kuwo.autosdk.api.KWAPI; +import cn.kuwo.autosdk.api.OnGetSongImgUrlListener; import cn.kuwo.autosdk.api.PlayState; +import cn.kuwo.autosdk.api.PlayerStatus; import cn.kuwo.base.bean.Music; /** @@ -30,7 +31,7 @@ public class KwPresenter extends BaseMediaPresenter { private KWAPI kwapi; private boolean isBind = false; - private Music currentMusic; + private MediaInfoData currentMedia = new MediaInfoData(); public KwPresenter(IMusicView view) { super(view); @@ -45,35 +46,42 @@ public class KwPresenter extends BaseMediaPresenter { isBind = b; if (!isBind) { mView.onMusicStopped(); + }else{ + PlayerStatus currentState = kwapi.getPlayerStatus(); + Logger.d(TAG, "check current status: " + currentState); + if(currentState == PlayerStatus.BUFFERING||currentState == PlayerStatus.PLAYING){ + currentMedia.setPlayState(MusicConstant.PLAY_STATE_PLAYING); + kwapi.getSongPicUrl(kwapi.getNowPlayingMusic(), onGetSongImgUrlListener); + startTrackTrackProgress(); + mView.onMusicPlaying(); + } } }); kwapi.registerExitListener(() -> { Logger.d(TAG, "onExit==="); - mView.onMusicStopped(); + mView.onAppExit(); }); kwapi.registerPlayerStatusListener((playerStatus, music) -> { - currentMusic = music; - MediaInfoData mediaInfoData = new MediaInfoData(); - mediaInfoData.setMediaName(music.name); - mediaInfoData.setMediaImg(music.imageURL); - Logger.d(TAG, - "onPlayerStatusChange: " + mediaInfoData + " playStatus: " + playerStatus); - mView.onMediaInfoChanged(mediaInfoData); + Logger.d(TAG, "onPlayerStatusListener: " + playerStatus); switch (playerStatus) { - case PLAYING: case BUFFERING: + kwapi.getSongPicUrl(music, onGetSongImgUrlListener); + break; + case PLAYING: + currentMedia.setPlayState(MusicConstant.PLAY_STATE_PLAYING); + kwapi.getSongPicUrl(music, onGetSongImgUrlListener); startTrackTrackProgress(); mView.onMusicPlaying(); break; + case INIT: case PAUSE: + case STOP: + currentMedia.setPlayState(MusicConstant.PLAY_STATE_PAUSE_OR_STOP); stopTrackTrackProgress(); mView.onMusicPause(); break; - case STOP: - stopTrackTrackProgress(); - break; default: break; } @@ -101,11 +109,11 @@ public class KwPresenter extends BaseMediaPresenter { @Override public void play(MediaInfoData mediaInfoData) { - if (kwapi.isKuwoRunning()) { +// if (kwapi.isKuwoRunning()) { kwapi.setPlayState(PlayState.STATE_PLAY); - } else { - kwapi.randomPlayMusic(); - } +// } else { +// kwapi.randomPlayMusic(); +// } } @Override @@ -138,8 +146,9 @@ public class KwPresenter extends BaseMediaPresenter { @Override public boolean handleMessage(Message msg) { if (isTrackingProgress) { - mView.onMusicProgress(kwapi.getCurrentMusicDuration(), currentMusic.duration); - msg.getTarget().sendEmptyMessageDelayed(MSG_TRACK_PROGRESS, MSG_TRACK_PROGRESS_DELAY); + mView.onMusicProgress(kwapi.getCurrentPos(), kwapi.getCurrentMusicDuration()); + msg.getTarget().sendEmptyMessageDelayed(MSG_TRACK_PROGRESS, + MSG_TRACK_PROGRESS_DELAY); } return false; } @@ -151,12 +160,37 @@ public class KwPresenter extends BaseMediaPresenter { private boolean isTrackingProgress = false; private void startTrackTrackProgress() { - isTrackingProgress = true; - handler.sendEmptyMessageDelayed(MSG_TRACK_PROGRESS, MSG_TRACK_PROGRESS_DELAY); + if(!isTrackingProgress) { + isTrackingProgress = true; + handler.sendEmptyMessageDelayed(MSG_TRACK_PROGRESS, MSG_TRACK_PROGRESS_DELAY); + } } private void stopTrackTrackProgress() { - isTrackingProgress = false; - handler.removeMessages(MSG_TRACK_PROGRESS); + if(isTrackingProgress) { + isTrackingProgress = false; + handler.removeMessages(MSG_TRACK_PROGRESS); + } + } + + private OnGetSongImgUrlListener onGetSongImgUrlListener = new OnGetSongImgUrlListener() { + @Override + public void onGetSongImgUrlSucessed(Music music, String s) { + currentMedia.setMediaName(music.name); + currentMedia.setMediaImg(s); + Logger.d(TAG, + "onGetSongImgUrlSucessed: " + currentMedia); + handler.post(() -> mView.onMediaInfoChanged(currentMedia)); + } + + @Override + public void onGetSongImgUrlFailed(Music music, int i) { + Logger.e(TAG, "onGetSongImgUrlFailed: " + i); + } + }; + + @Override + public void openApp(){ + kwapi.startAPP(true); } } diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/WeCarFlowPresenter.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/WeCarFlowPresenter.java index 66ab3efecc..4aa6dd259c 100644 --- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/WeCarFlowPresenter.java +++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/WeCarFlowPresenter.java @@ -195,4 +195,9 @@ public class WeCarFlowPresenter extends BaseMediaPresenter { public void next() { FlowPlayControl.getInstance().doNext(); } + + @Override + public void openApp() { + FlowPlayControl.getInstance().startPlayActivity(context); + } } diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/view/IMusicView.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/view/IMusicView.java index d0379ff238..bf6eee1611 100644 --- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/view/IMusicView.java +++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/view/IMusicView.java @@ -18,4 +18,6 @@ public interface IMusicView extends IView { void onMusicStopped(); void onMusicProgress(long current,long total); + + void onAppExit(); } diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/widget/AnimCircleImageView.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/widget/AnimCircleImageView.java index 280aee83e1..77cee5ce4e 100644 --- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/widget/AnimCircleImageView.java +++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/widget/AnimCircleImageView.java @@ -79,7 +79,9 @@ public class AnimCircleImageView extends ImageView { } public void startAnim() { - if (isRotating == true) return; + if (isRotating){ + return; + } isRotateEnable = true; isRotating = true; currentDegree = savedDegree; diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaWindow.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow.java similarity index 98% rename from modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaWindow.java rename to modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow.java index dfa6be7426..45ea10d832 100644 --- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaWindow.java +++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow.java @@ -1,4 +1,4 @@ -package com.mogo.module.media; +package com.mogo.module.media.window; import android.content.BroadcastReceiver; import android.content.Context; @@ -8,12 +8,14 @@ import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; -import android.widget.LinearLayout; import android.widget.TextView; import com.mogo.map.marker.IMogoMarker; import com.mogo.module.common.entity.MarkerShareMusic; import com.mogo.module.common.entity.MarkerShowEntity; +import com.mogo.module.media.MediaConstants; +import com.mogo.module.media.R; +import com.mogo.module.media.ServiceMediaHandler; import com.mogo.module.media.constants.LeTingFieldConstants; import com.mogo.module.media.constants.QQMusicFieldConstants; import com.mogo.module.media.listener.NoDoubleClickListener; @@ -30,7 +32,6 @@ import com.mogo.module.media.view.MediaView; import com.mogo.module.media.widget.AnimCircleImageView; import com.mogo.module.media.widget.NoScrollSeekBar; import com.mogo.module.media.widget.ScrollingTextView; -import com.mogo.module.service.marker.MapMarkerManager; import com.mogo.utils.ActivityLifecycleManager; import com.mogo.utils.ThreadPoolService; import com.mogo.utils.UiThreadHandler; @@ -65,15 +66,9 @@ public class MediaWindow implements MediaView{ private boolean mTwoChange = false; private boolean isFirstPlay = false; - private Runnable mRunnable = new Runnable() { - @Override - public void run() { - MusicControlBroadCast.sendGetMusicPlayStateBroadcast(); - } - }; + private Runnable mRunnable = MusicControlBroadCast::sendGetMusicPlayStateBroadcast; public void initMedia(Context context){ - mContext = context; mPresenter = new MediaPresenter(this); registerMediaReceiver(); diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaWindow2.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java similarity index 93% rename from modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaWindow2.java rename to modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java index 1ba6514075..818bf5e792 100644 --- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaWindow2.java +++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java @@ -1,7 +1,6 @@ -package com.mogo.module.media; +package com.mogo.module.media.window; import android.content.Context; -import android.content.res.Resources; import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; @@ -11,18 +10,17 @@ import android.widget.TextView; import com.mogo.commons.debug.DebugConfig; import com.mogo.commons.voice.AIAssist; import com.mogo.commons.voice.IMogoVoiceCmdCallBack; +import com.mogo.module.media.R; +import com.mogo.module.media.ServiceMediaHandler; import com.mogo.module.media.constants.MusicConstant; import com.mogo.module.media.listener.NoDoubleClickListener; import com.mogo.module.media.model.MediaInfoData; -import com.mogo.module.media.presenter.BaseMediaPresenter; import com.mogo.module.media.presenter.KwPresenter; -import com.mogo.module.media.presenter.WeCarFlowPresenter; import com.mogo.module.media.utils.Utils; import com.mogo.module.media.view.IMusicView; import com.mogo.module.media.widget.AnimCircleImageView; import com.mogo.module.media.widget.NoScrollSeekBar; import com.mogo.module.media.widget.ScrollingTextView; -import com.mogo.utils.LaunchUtils; import com.mogo.utils.WindowUtils; import com.mogo.utils.glide.GlideApp; import com.mogo.utils.logger.Logger; @@ -110,7 +108,7 @@ public class MediaWindow2 implements IMusicView { mWindowView.setOnClickListener(new NoDoubleClickListener() { @Override public void onClicks(View view) { - openAqtApp(); + mPresenter.openApp(); } }); @@ -125,7 +123,7 @@ public class MediaWindow2 implements IMusicView { mPresenter.pause(mMediaInfoData); } } else { - openAqtApp(); + mPresenter.openApp(); } } }); @@ -171,6 +169,16 @@ public class MediaWindow2 implements IMusicView { if (mWindowCurrTime != null) { mWindowCurrTime.setText(Utils.calculateTime((int) mMediaInfoData.getCurTime())); } + + if( mMediaInfoData.getPlayState() == MusicConstant.PLAY_STATE_PLAYING) { + // kw音乐做的容错 + if (mWindowPlayPause != null) { + mWindowPlayPause.setImageResource(R.drawable.module_media_window_pop_play); + } + if (mCircleImg != null) { + mCircleImg.startAnim(); + } + } } if (mCircleImg != null) { @@ -257,11 +265,8 @@ public class MediaWindow2 implements IMusicView { } } - private void openAqtApp() { - try { - LaunchUtils.launchByPkg(mContext, "com.tencent.wecarflow"); - } catch (Exception e) { - e.printStackTrace(); - } + @Override + public void onAppExit() { + mWindowView.setVisibility(View.GONE); } } From 81a200ec1c638470606a1f125b9055063965b68a Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Tue, 16 Jun 2020 17:06:18 +0800 Subject: [PATCH 07/11] opt --- app/build.gradle | 1 - .../marker/CombineMovingPointOverlay.java | 330 ++++++++++++++++++ .../mogo/module/apps/AppsListActivity.java | 17 +- .../com/mogo/module/apps/AppsPresenter.java | 2 - .../common/map/MapCenterPointStrategy.java | 12 +- .../com/mogo/module/main/MainActivity.java | 4 +- .../com/mogo/module/service/MogoServices.java | 4 + .../java/com/mogo/module/service/Utils.java | 2 +- .../service/marker/MapMarkerManager.java | 24 +- .../service/impl/adas/MogoADASController.java | 15 +- 10 files changed, 383 insertions(+), 28 deletions(-) create mode 100644 libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/CombineMovingPointOverlay.java diff --git a/app/build.gradle b/app/build.gradle index a4be1c2467..9ec67a2001 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -281,4 +281,3 @@ def getGitCommit() { assert !gitCommit.isEmpty() gitCommit } - diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/CombineMovingPointOverlay.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/CombineMovingPointOverlay.java new file mode 100644 index 0000000000..4d7d1fb929 --- /dev/null +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/CombineMovingPointOverlay.java @@ -0,0 +1,330 @@ +package com.mogo.map.impl.amap.marker; + +import com.amap.api.maps.AMap; +import com.amap.api.maps.AMapUtils; +import com.amap.api.maps.model.BasePointOverlay; +import com.amap.api.maps.model.LatLng; +import com.autonavi.amap.mapcore.IPoint; +import com.autonavi.amap.mapcore.MapProjection; +import com.mogo.utils.logger.Logger; + +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.SynchronousQueue; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; + +/** + * @author congtaowang + * @since 2020/6/15 + *

+ */ +class CombineMovingPointOverlay { + + private static final String TAG = "CombineMovingPointOverlay"; + + private AMap mAMap; + private long mDuration = 1_000L; + private long mStepDuration = 20L; + private LinkedList< LatLng > mPoints = new LinkedList<>(); + private LinkedList< Double > mEachDistance = new LinkedList<>(); + + private double mTotalDistance = 0.0D; + private double mRemainDistance = 0.0D; + private ExecutorService mThreadPools; + private Object mLock = new Object(); + private BasePointOverlay mBaseOverlay = null; + private int mIndex = 0; + private boolean mUseDefaultDescriptor = false; + AtomicBoolean mExitFlag = new AtomicBoolean( false ); + private MoveListener mMoveListener; + private Status mStatus; + private long mPauseMillis; + private long mAnimationBeginTime; + + public CombineMovingPointOverlay( AMap amap, BasePointOverlay baseOverlay ) { + mStatus = Status.Status1; + mAnimationBeginTime = System.currentTimeMillis(); + if ( amap != null && baseOverlay != null ) { + this.mAMap = amap; + this.mBaseOverlay = baseOverlay; + mThreadPools = new ThreadPoolExecutor( 1, 2, 5L, TimeUnit.SECONDS, new SynchronousQueue(), new ThreadFactoryImpl() ); + } + } + + public void setMoveListener( MoveListener moveListener ) { + this.mMoveListener = moveListener; + } + + public void setPoints( List< LatLng > list ) { + synchronized ( mLock ) { + if ( list != null && list.size() >= 2 ) { + stopMove(); + if ( mPoints != null ) { + mPoints.clear(); + } + Iterator< LatLng > iterator = list.listIterator(); + while ( iterator.hasNext() ) { + LatLng latLng = iterator.next(); + if ( latLng != null ) { + mPoints.add( latLng ); + } + } + + mEachDistance.clear(); + mTotalDistance = 0.0D; + + for ( int i = 0; i < mPoints.size(); i++ ) { + double distance = AMapUtils.calculateLineDistance( mPoints.get( i ), mPoints.get( i + 1 ) ); + mEachDistance.add( distance ); + mTotalDistance += distance; + } + + mRemainDistance = mTotalDistance; + mBaseOverlay.setPosition( mPoints.get( 0 ) ); + reset(); + } + } + } + + + public int getIndex() { + return mIndex; + } + + public BasePointOverlay getBaseOverlay() { + return mBaseOverlay; + } + + public void destroy() { + try { + removeMarker(); + mThreadPools.shutdown(); + synchronized ( mLock ) { + mPoints.clear(); + mEachDistance.clear(); + ; + } + } catch ( Exception e ) { + + } + } + + public void removeMarker() { + try { + reset(); + if ( mBaseOverlay != null ) { + mBaseOverlay.remove(); + mBaseOverlay = null; + } + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + + public void stopMove() { + if ( mStatus == Status.Status3 ) { + mStatus = Status.Status4; + mPauseMillis = System.currentTimeMillis(); + } + } + + private void reset() { + if ( mStatus == Status.Status3 || mStatus == Status.Status4 ) { + mExitFlag.set( true ); + try { + mThreadPools.awaitTermination( mStepDuration + 20L, TimeUnit.MICROSECONDS ); + mBaseOverlay.setAnimation( null ); + mStatus = Status.Status1; + } catch ( InterruptedException e ) { + Logger.e( TAG, e, "error." ); + } + } + } + + public void resetIndex() { + mIndex = 0; + } + + + public void setTotalDuration( int seconds ) { + mDuration = seconds * 1_000L; + } + + public void startSmoothMove() { + if ( mStatus == Status.Status4 ) { + mStatus = Status.Status3; + long interval = System.currentTimeMillis() - mPauseMillis; + mAnimationBeginTime += interval; + } else { + if ( mStatus == Status.Status1 || mStatus == Status.Status5 ) { + if ( mPoints.size() <= 0 ) { + return; + } + mIndex = 0; + mThreadPools.execute( new MarkerMovingRunnable() ); + } + } + } + + public void setVisible( boolean visible ) { + if ( mBaseOverlay != null ) { + try { + mBaseOverlay.setVisible( visible ); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + + private class MarkerMovingRunnable implements Runnable { + + @Override + public void run() { + mAnimationBeginTime = System.currentTimeMillis(); + mStatus = Status.Status2; + mExitFlag.set( false ); + + try { + for ( ; !mExitFlag.get() && mIndex <= mPoints.size() - 1; Thread.sleep( mStepDuration ) ) { + synchronized ( mLock ) { + if ( mExitFlag.get() ) { + return; + } + if ( mStatus == Status.Status4 ) { + long interval = System.currentTimeMillis() - mAnimationBeginTime; + IPoint point = getCurPosition( interval ); + mBaseOverlay.setGeoPoint( point ); + mStatus = Status.Status3; + } + } + } + mStatus = Status.Status5; + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + + private IPoint getCurPosition( long interval ) { + if ( interval > mDuration ) { + mExitFlag.set( true ); + IPoint point = new IPoint(); + mIndex = mPoints.size() - 1; + LatLng latLng = mPoints.get( mIndex ); + --mIndex; + mIndex = Math.max( mIndex, 0 ); + mRemainDistance = 0.0D; + MapProjection.lonlat2Geo( latLng.longitude, latLng.latitude, point ); + if ( mMoveListener != null ) { + mMoveListener.move( mRemainDistance ); + } + return point; + } else { + double step = interval * mTotalDistance / mDuration; + mRemainDistance = mTotalDistance - step; + int targetIndex = 0; + double val = 1.0D; + + for ( int i = 0; i < mEachDistance.size(); i++ ) { + double distance = mEachDistance.get( i ); + if ( step <= distance ) { + if ( distance > 0.0D ) { + val = step / distance; + } + targetIndex = i; + break; + } + step -= distance; + } + + if ( targetIndex != mIndex && mMoveListener != null ) { + mMoveListener.move( mRemainDistance ); + } + + mIndex = targetIndex; + LatLng latLng = mPoints.get( mIndex ); + LatLng latLng1 = mPoints.get( mIndex + 1 ); + IPoint point = new IPoint(); + MapProjection.lonlat2Geo( latLng.longitude, latLng.latitude, point ); + IPoint point1 = new IPoint(); + MapProjection.lonlat2Geo( latLng1.longitude, latLng1.latitude, point1 ); + + int xDelta = point1.x - point.x; + int yDelta = point1.y - point.y; + + if ( AMapUtils.calculateLineDistance( latLng, latLng1 ) > 1.0F ) { + float rotate = getRotate( point, point1 ); + setRotate( rotate ); + } + return new IPoint( ( ( int ) ( point.x + ( ( double ) xDelta ) * val ) ), ( ( int ) ( point.y + ( ( double ) yDelta ) * val ) ) ); + } + } + + private float getRotate( IPoint point, IPoint point1 ) { + if ( point != null && point1 != null ) { + double py1 = ( double ) point1.y; + double py = ( double ) point.y; + double px = ( double ) point.x; + return ( float ) ( Math.atan2( ( double ) point1.x - px, py - py1 ) / 3.141592653589793D * 180.0D ); + } else { + return 0.0F; + } + } + + public void setPoint( LatLng latLng ) { + if ( mBaseOverlay != null ) { + try { + mBaseOverlay.setPosition( latLng ); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + + public void setRotate( float rotate ) { + if ( mBaseOverlay == null ) { + return; + } + if ( mAMap == null ) { + return; + } + if ( mAMap.getCameraPosition() == null ) { + return; + } + mBaseOverlay.setRotateAngle( 360.0F - rotate + mAMap.getCameraPosition().bearing ); + } + + public LatLng getPosition() { + if ( mBaseOverlay != null ) { + return mBaseOverlay.getPosition(); + } + return null; + } + + private enum Status { + Status1, + Status2, + Status3, + Status4, + Status5 + } + + public interface MoveListener { + void move( double val ); + } + + private static class ThreadFactoryImpl implements ThreadFactory { + + private static int mCounter = 1; + + @Override + public Thread newThread( Runnable r ) { + return new Thread( r, "MoveSmoothThread - " + mCounter++ ); + } + } +} diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListActivity.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListActivity.java index cc9250b150..631ac5de16 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListActivity.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListActivity.java @@ -27,6 +27,8 @@ import com.mogo.service.fragmentmanager.IMogoFragmentManager; */ public class AppsListActivity extends MvpActivity< AppsListView, AppsListPresenter > implements AppsListView, FragmentStackTransactionListener { + private static final String TAG = "AppsListActivity"; + private BottomSheetBehavior mBottomSheetBehavior; private IMogoFragmentManager mMogoFragmentManager; @@ -38,12 +40,13 @@ public class AppsListActivity extends MvpActivity< AppsListView, AppsListPresent @Override protected void onCreate( @Nullable Bundle savedInstanceState ) { - overridePendingTransition( R.anim.module_apps_anim_enter, 0); - getWindow().addFlags( WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + overridePendingTransition( R.anim.module_apps_anim_enter, 0 ); + getWindow().addFlags( WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS ); if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ) { getWindow().setStatusBarColor( Color.BLACK ); } super.onCreate( savedInstanceState ); + AppServiceHandler.getApis().getStatusManagerApi().setAppListUIShow( TAG, true ); } @Override @@ -53,8 +56,9 @@ public class AppsListActivity extends MvpActivity< AppsListView, AppsListPresent @Override protected void initViews() { + getSupportFragmentManager().beginTransaction() - .add( R.id.module_apps_id_container, new AppsFragment() ) + .replace( R.id.module_apps_id_container, new AppsFragment() ) .commitAllowingStateLoss(); mBottomSheetBehavior = BottomSheetBehavior.from( findViewById( R.id.module_apps_id_container ) ); @@ -74,14 +78,14 @@ public class AppsListActivity extends MvpActivity< AppsListView, AppsListPresent } ); mBottomSheetBehavior.setState( BottomSheetBehavior.STATE_EXPANDED ); - mMogoFragmentManager = ( IMogoFragmentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_FRAGMENT_MANAGER ).navigation( this ); + mMogoFragmentManager = AppServiceHandler.getApis().getFragmentManagerApi(); mMogoFragmentManager.addMainFragmentStackTransactionListener( this ); } @NonNull @Override protected AppsListPresenter createPresenter() { - return new AppsListPresenter(this); + return new AppsListPresenter( this ); } @Override @@ -100,12 +104,13 @@ public class AppsListActivity extends MvpActivity< AppsListView, AppsListPresent @Override public void closeAppsPanel() { finish(); - overridePendingTransition( R.anim.module_apps_anim_enter, R.anim.module_apps_anim_exit); + overridePendingTransition( R.anim.module_apps_anim_enter, R.anim.module_apps_anim_exit ); } @Override protected void onDestroy() { super.onDestroy(); + AppServiceHandler.getApis().getStatusManagerApi().setAppListUIShow( TAG, false ); mMogoFragmentManager.removeMainFragmentStackTransactionListener( this ); mMogoFragmentManager = null; mBottomSheetBehavior = null; diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java index d7705da71e..942568fc7f 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java @@ -72,7 +72,6 @@ public class AppsPresenter extends Presenter< AppsView > { mAnalytics = mApis.getAnalyticsApi(); mMogoStatusManager = mApis.getStatusManagerApi(); - mMogoStatusManager.setAppListUIShow( TAG, true ); } private void renderAppsList() { @@ -202,7 +201,6 @@ public class AppsPresenter extends Presenter< AppsView > { @Override public void onDestroy( @NonNull LifecycleOwner owner ) { super.onDestroy( owner ); - mMogoStatusManager.setAppListUIShow( TAG, false ); AppsListChangedLiveData.getInstance().release(); mView = null; mLauncher.destroy(); diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java index daec2f73d1..42426edf27 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java @@ -56,9 +56,9 @@ public class MapCenterPointStrategy { { // 导航场景 vs 道路事件展示场景,定位视图右下角偏下 Map< Integer, MapCenterPoint > naviWithRoadEvent = new HashMap<>(); - naviWithRoadEvent.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.669444444444444, 0.68333333333D ) ); - naviWithRoadEvent.put( CarSeries.CAR_SERIES_E84X, new MapCenterPoint( 0.734375D, 0.68333333333D ) ); - naviWithRoadEvent.put( CarSeries.CAR_SERIES_E84XCD, new MapCenterPoint( 0.734375D, 0.68333333333D ) ); + naviWithRoadEvent.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.669444444444444, 0.73936170212766D ) ); + naviWithRoadEvent.put( CarSeries.CAR_SERIES_E84X, new MapCenterPoint( 0.734375D, 0.73936170212766D ) ); + naviWithRoadEvent.put( CarSeries.CAR_SERIES_E84XCD, new MapCenterPoint( 0.734375D, 0.73936170212766D ) ); naviWithRoadEvent.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.705208333D, 0.683333333333D ) ); sStrategies.put( Scene.NAVI_WITH_ROAD_EVENT, naviWithRoadEvent ); } @@ -76,9 +76,9 @@ public class MapCenterPointStrategy { { // 巡航场景 vs 道路事件展示场景 Map< Integer, MapCenterPoint > aimlessWithRoadEvent = new HashMap<>(); - aimlessWithRoadEvent.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.669444444444444, 0.585 ) ); - aimlessWithRoadEvent.put( CarSeries.CAR_SERIES_E84X, new MapCenterPoint( 0.734375D, 0.585 ) ); - aimlessWithRoadEvent.put( CarSeries.CAR_SERIES_E84XCD, new MapCenterPoint( 0.734375D, 0.585 ) ); + aimlessWithRoadEvent.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.669444444444444, 0.68617 ) ); + aimlessWithRoadEvent.put( CarSeries.CAR_SERIES_E84X, new MapCenterPoint( 0.734375D, 0.68617 ) ); + aimlessWithRoadEvent.put( CarSeries.CAR_SERIES_E84XCD, new MapCenterPoint( 0.734375D, 0.68617 ) ); aimlessWithRoadEvent.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.705208333D, 0.599074074D ) ); sStrategies.put( Scene.AIMLESS_WITH_ROAD_EVENT, aimlessWithRoadEvent ); } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java index 73e215fa53..5553aeab37 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java @@ -147,6 +147,8 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme // 启动一些基本的服务:定位等 startBaseService(); + + Log.i( "timer", "cost " + ( System.currentTimeMillis() - start ) + "ms" ); } ); MogoModulesManager.getInstance().loadMapModule( R.id.module_main_id_map_fragment_container ); @@ -159,8 +161,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme hideLayout(); } } ); - - Log.i( "timer", "cost " + ( System.currentTimeMillis() - start ) + "ms" ); } private void startBaseService() { diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index 8a7f1e1c06..9837155cae 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -647,6 +647,10 @@ public class MogoServices implements IMogoMapListener, return; } + if ( !mStatusManager.isMainPageOnResume() ) { + return; + } + if ( mStatusManager.isSearchUIShow() ) { return; } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/Utils.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/Utils.java index ef4534ac61..9978faf668 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/Utils.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/Utils.java @@ -66,7 +66,7 @@ public class Utils { } public static void main( String[] args ) { - double calculateLineDistance = calculateLineDistance( new MogoLatLng( 39.955533, 116.423262 ), new MogoLatLng( 39.955385, 116.414604 ) ); + double calculateLineDistance = calculateLineDistance( new MogoLatLng( 39.968598, 116.411121 ), new MogoLatLng( 39.968598, 116.411121 ) ); System.out.println( "距离点 calculateLineDistance:" + calculateLineDistance ); } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index e292dd6a94..b37af341fb 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -120,7 +120,11 @@ public class MapMarkerManager implements IMogoMarkerClickListener, Map< String, Object > properties = new HashMap<>(); if ( marker.getObject() instanceof MarkerShowEntity ) { - properties.put( "sn", getCarSnFromMarker( marker ) ); + final String sn = getCarSnFromEntity( marker ); + if ( TextUtils.isEmpty( sn ) ) { + return false; + } + properties.put( "sn", sn ); if ( ( ( MarkerShowEntity ) marker.getObject() ).getBindObj() instanceof MarkerExploreWay ) { MarkerExploreWay exploreWay = ( MarkerExploreWay ) ( ( MarkerShowEntity ) marker.getObject() ).getBindObj(); properties.put( "dbid", exploreWay.getInfoId() ); @@ -482,7 +486,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } else if ( entity instanceof MarkerNoveltyInfo ) { return ( ( MarkerNoveltyInfo ) entity ).getSn(); } else if ( entity instanceof MarkerExploreWay ) { - return ( ( MarkerExploreWay ) entity ).getInfoId(); + return ( ( MarkerExploreWay ) entity ).getUserInfo().getSn(); } } catch ( Exception e ) { @@ -844,6 +848,10 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } List< MogoLatLng > points = new ArrayList<>(); + + double lastLat = 0.0d; + double lastLon = 0.0d; + for ( int j = 0; j < poiList.size(); j++ ) { MarkerCarPois poi = poiList.get( j ); if ( poi == null || poi.getCoordinates() == null && poi.getCoordinates().size() != 2 ) { @@ -852,6 +860,14 @@ public class MapMarkerManager implements IMogoMarkerClickListener, try { double lat = Double.valueOf( poi.getCoordinates().get( 1 ) + "" ); double lng = Double.valueOf( poi.getCoordinates().get( 0 ) + "" ); + + float distance = Utils.calculateLineDistance( lastLon, lastLat, lng, lat ); + lastLon = lng; + lastLat = lat; + if ( distance < 0.5f ) {// 距离过短,认为静止不动 + continue; + } + points.add( new MogoLatLng( lat, lng ) ); } catch ( Exception e ) { } @@ -859,6 +875,8 @@ public class MapMarkerManager implements IMogoMarkerClickListener, if ( points.size() >= 1 ) { points.add( new MogoLatLng( markerLocation.getLat(), markerLocation.getLon() ) ); iMogoMarker.startSmooth( points, SMOOTH_DURATION ); + } else { + Logger.d( TAG, "静止小车,但是有相同的连续坐标" ); } } @@ -892,7 +910,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, return MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() || MarkerServiceHandler.getMogoStatusManager().isV2XShow() || !MarkerServiceHandler.getMogoStatusManager().isMainPageLaunched() - || !MarkerServiceHandler.getMogoStatusManager().isMainPageLaunched(); + || !MarkerServiceHandler.getMogoStatusManager().isMainPageOnResume(); } private void runOnTargetThread( Runnable runnable ) { diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java index 8e1839fde8..f877ac186b 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java @@ -74,16 +74,17 @@ public class MogoADASController implements IMogoADASController { init( AbsMogoApplication.getApp() ); } - if ( mStatusManager.isSearchUIShow() ) { - return; - } - if ( !mStatusManager.isMainPageOnResume() ) { - return; - } - int delay = CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X ? 0 : 100; UiThreadHandler.postDelayed( () -> { + + if ( mStatusManager.isSearchUIShow() ) { + return; + } + if ( !mStatusManager.isMainPageOnResume() ) { + return; + } + try { AutopilotServiceManage.getInstance().showAdas(); } catch ( Exception e ) { From 9f47dd17c4902e3c66b5d703cb83d4e2afd354d0 Mon Sep 17 00:00:00 2001 From: liujing Date: Tue, 16 Jun 2020 19:31:22 +0800 Subject: [PATCH 08/11] no message --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 2be089adf2..697b89654d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -71,7 +71,7 @@ MOGO_MODULE_GUIDESHOW_PROVIDER_VERSION=1.0.2-SNAPSHOT # 在线车辆F MOGO_MODULE_ONLINECAR_VERSION=1.0.3.2 # v2x -MOGO_MODULE_V2X_VERSION=1.1.13 +MOGO_MODULE_V2X_VERSION=1.1.14 # 推送 MOGO_MODULE_PUSH_VERSION=1.0.1 # 广告资源位 From 6da4e6095f3a96ee9cbbd3793340273df5934bab Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Tue, 16 Jun 2020 19:42:02 +0800 Subject: [PATCH 09/11] opt --- .../main/res/layout/module_main_activity_main.xml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml index 96f61eca7b..fdc64aa4e9 100644 --- a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml +++ b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml @@ -9,13 +9,7 @@ - - - + android:layout_height="match_parent" /> - + + + \ No newline at end of file From f71008c3507d7998755456887989c64f3c19e96e Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Wed, 17 Jun 2020 11:39:05 +0800 Subject: [PATCH 10/11] UI opt & bugfix --- .idea/misc.xml | 2 +- .../com/mogo/commons/AbsMogoApplication.java | 4 ++-- .../src/main/res/values-xhdpi/dimens.xml | 4 ++-- .../src/main/res/values/dimens.xml | 4 ++-- .../extensions/utils/TopViewAnimHelper.java | 4 ++-- .../res/layout/module_main_activity_main.xml | 13 +++++------ .../service/marker/MapMarkerManager.java | 2 +- .../module/service/marker/MapMarkerView.java | 3 --- .../drawable-xhdpi/module_service_ic_call.png | Bin 8990 -> 7971 bytes .../res/drawable/module_service_ic_call.png | Bin 3738 -> 3115 bytes .../layout/view_map_data_user_info_window.xml | 21 +++++++++--------- .../src/main/res/layout/view_map_marker.xml | 14 ++++-------- .../main/res/layout/view_map_marker_info.xml | 6 ++--- .../src/main/res/values-xhdpi/dimens.xml | 10 ++++++++- .../src/main/res/values/dimens.xml | 12 ++++++++-- 15 files changed, 52 insertions(+), 47 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 707ee6e613..2dc54c489f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java index b1e7afd023..53d2b568cc 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java @@ -133,9 +133,9 @@ public class AbsMogoApplication extends Application { } ); } - private static void getTicket(TicketInfoCallback callback){ + private static void getTicket( TicketInfoCallback callback ) { if ( DebugConfig.isLauncher() ) { - AccountClientManager.getTicket(callback); + AccountClientManager.getTicket( callback ); } else { AccountClientManager.getAppTicket( callback ); } diff --git a/modules/mogo-module-apps/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-apps/src/main/res/values-xhdpi/dimens.xml index e4753b0f9d..a9ba5a2fef 100644 --- a/modules/mogo-module-apps/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-apps/src/main/res/values-xhdpi/dimens.xml @@ -24,6 +24,6 @@ 140px 140px 30px - 110px - 110px + 100px + 100px \ No newline at end of file diff --git a/modules/mogo-module-apps/src/main/res/values/dimens.xml b/modules/mogo-module-apps/src/main/res/values/dimens.xml index c9efac23e8..679816b821 100644 --- a/modules/mogo-module-apps/src/main/res/values/dimens.xml +++ b/modules/mogo-module-apps/src/main/res/values/dimens.xml @@ -24,6 +24,6 @@ 78px 78px 17px - 70px - 70px + 60px + 60px \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java index 0b6ebc03de..f52b467232 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java @@ -473,9 +473,9 @@ public class TopViewAnimHelper { arriveTimeGroup.setVisibility(View.GONE); int scene = 0; if (isTopViewOut) { - scene = Scene.AIMLESS_WITH_ROAD_EVENT; - } else { scene = Scene.AIMLESS; + } else { + scene = Scene.AIMLESS_WITH_ROAD_EVENT; } Logger.d(TAG, "hide navi setMapCenterPointByScene: " + scene); MapCenterPointStrategy.setMapCenterPointByScene(mogoMapUIController, scene); diff --git a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml index 96f61eca7b..25994bb014 100644 --- a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml +++ b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml @@ -9,13 +9,7 @@ - - - + android:layout_height="match_parent"/> + + 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 ReD4LgdG*$nvdhjf{|Dx=532wG diff --git a/modules/mogo-module-service/src/main/res/drawable/module_service_ic_call.png b/modules/mogo-module-service/src/main/res/drawable/module_service_ic_call.png index 3f90fd4af55cd683fbc5da1d339ecdee40fccdd8..a66ed29d09f3e05c3ebdd24fe5a2c0a4b3c9a08b 100644 GIT binary patch literal 3115 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 Ef{)K}$N&HU diff --git a/modules/mogo-module-service/src/main/res/layout/view_map_data_user_info_window.xml b/modules/mogo-module-service/src/main/res/layout/view_map_data_user_info_window.xml index 5028bcbe89..0967298a46 100644 --- a/modules/mogo-module-service/src/main/res/layout/view_map_data_user_info_window.xml +++ b/modules/mogo-module-service/src/main/res/layout/view_map_data_user_info_window.xml @@ -7,14 +7,12 @@ android:background="@android:color/transparent" android:gravity="center" android:orientation="vertical" - android:paddingStart="@dimen/dp_5" - android:paddingEnd="@dimen/dp_5" tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"> - - + android:layout_marginBottom="@dimen/module_service_marker_bubble_icon_marginBottom" + tools:src="@drawable/icon_map_marker_road_block_up" /> diff --git a/modules/mogo-module-service/src/main/res/layout/view_map_marker_info.xml b/modules/mogo-module-service/src/main/res/layout/view_map_marker_info.xml index 1917bf59ae..028892962e 100644 --- a/modules/mogo-module-service/src/main/res/layout/view_map_marker_info.xml +++ b/modules/mogo-module-service/src/main/res/layout/view_map_marker_info.xml @@ -7,8 +7,6 @@ android:gravity="center" android:orientation="vertical" android:padding="1px" - android:paddingStart="@dimen/dp_5" - android:paddingEnd="@dimen/dp_5" tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"> 117px 50px 50px - 24px + 8px 1000px 390px 200px 200px + 10px + 10px + 100px + 80px + 80px + 24px + 20px + 120px \ No newline at end of file diff --git a/modules/mogo-module-service/src/main/res/values/dimens.xml b/modules/mogo-module-service/src/main/res/values/dimens.xml index 451d9a661b..03b1e6650a 100644 --- a/modules/mogo-module-service/src/main/res/values/dimens.xml +++ b/modules/mogo-module-service/src/main/res/values/dimens.xml @@ -1,15 +1,23 @@ 16dp - 8dp + 4dp 56px 65px 27px 27px - 14px + 4px 550px 208px 100px 100px + 100px + 10px + 54px + 44px + 44px + 14px + 12px + 64px \ No newline at end of file From c5c3e56fa6fea20647fc10586b075233884c1230 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Wed, 17 Jun 2020 12:20:38 +0800 Subject: [PATCH 11/11] opt --- .../mogo/module/main/EventDispatchCenter.java | 30 ------------------- .../service/marker/MapMarkerManager.java | 2 +- 2 files changed, 1 insertion(+), 31 deletions(-) diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java index 48a0812257..937548ba6e 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java @@ -2,7 +2,6 @@ package com.mogo.module.main; import android.content.Intent; import android.location.Location; -import android.text.TextUtils; import android.view.MotionEvent; import com.mogo.map.MogoLatLng; @@ -21,20 +20,14 @@ import com.mogo.map.navi.MogoCongestionInfo; import com.mogo.map.navi.MogoNaviInfo; import com.mogo.map.navi.MogoTraffic; import com.mogo.map.uicontroller.EnumMapUI; -import com.mogo.module.common.entity.MarkerNoveltyInfo; -import com.mogo.module.common.entity.MarkerShareMusic; -import com.mogo.module.common.entity.MarkerShowEntity; import com.mogo.module.main.registercenter.MogoRegisterCenterHandler; -import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.service.receiver.MogoReceiver; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.intent.IMogoIntentManager; import com.mogo.service.module.IMogoModuleLifecycle; import com.mogo.utils.logger.Logger; -import java.util.HashMap; import java.util.Iterator; -import java.util.Map; /** * @author congtaowang @@ -83,7 +76,6 @@ public class EventDispatchCenter implements IMogoMarkerClickListener listener = MogoRegisterCenterHandler.getInstance().getMarkerListener( marker.getOwner() ); if ( listener != null ) { try { - trackMarkerClickEvent( marker ); return listener.onMarkerClicked( marker ); } catch ( Exception e ) { Logger.e( TAG, e, "error." ); @@ -92,28 +84,6 @@ public class EventDispatchCenter implements return false; } - /** - * marker 点击埋点 - * - * @param marker - */ - private void trackMarkerClickEvent( IMogoMarker marker ) { - if ( marker == null || TextUtils.isEmpty( marker.getOwner() ) ) { - return; - } - // 数据统计代码 - final Map< String, Object > properties = new HashMap<>(); - properties.put( "poitype", marker.getOwner() ); - MarkerShowEntity showEntity = ( MarkerShowEntity ) marker.getObject(); - Object bindObj = showEntity.getBindObj(); - if ( bindObj instanceof MarkerNoveltyInfo ) { - properties.put( "contenttype", ( ( MarkerNoveltyInfo ) bindObj ).getPoiType() ); - } else if ( bindObj instanceof MarkerShareMusic ) { - properties.put( "contenttype", ( ( MarkerShareMusic ) bindObj ).getShareType() + "" ); - } - MarkerServiceHandler.getMogoAnalytics().track( "Launcher_Icon_Click", properties ); - } - @Override public void onUpdateTraffic2( MogoTraffic traffic ) { Iterator< IMogoAimlessModeListener > iterator = MogoRegisterCenterHandler.getInstance().getAimlessModeListeners(); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index 559d7c301f..064551593a 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -120,7 +120,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, Map< String, Object > properties = new HashMap<>(); if ( marker.getObject() instanceof MarkerShowEntity ) { - final String sn = getCarSnFromEntity( marker ); + final String sn = getCarSnFromMarker( marker ); if ( TextUtils.isEmpty( sn ) ) { return false; }