From b4cd08c766b828dad8718bed3360915bec2f0de9 Mon Sep 17 00:00:00 2001 From: liujing Date: Thu, 17 Dec 2020 16:46:23 +0800 Subject: [PATCH 1/5] =?UTF-8?q?[add]=20=E8=B4=9D=E5=A1=9E=E5=B0=94?= =?UTF-8?q?=E5=8A=A8=E7=94=BB=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/animation/BezierAnimationView.java | 141 ++++++++++++++++++ .../common/animation/BezierEvaluator.java | 45 ++++++ .../common/animation/BezierListener.java | 24 +++ .../icon_common_heart_animation_vr00.png | Bin 0 -> 4386 bytes .../icon_common_heart_animation_vr01.png | Bin 0 -> 4386 bytes .../icon_common_heart_animation_vr02.png | Bin 0 -> 4386 bytes 6 files changed, 210 insertions(+) create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierAnimationView.java create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierEvaluator.java create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierListener.java create mode 100644 modules/mogo-module-common/src/main/res/drawable-xhdpi/icon_common_heart_animation_vr00.png create mode 100644 modules/mogo-module-common/src/main/res/drawable-xhdpi/icon_common_heart_animation_vr01.png create mode 100644 modules/mogo-module-common/src/main/res/drawable-xhdpi/icon_common_heart_animation_vr02.png diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierAnimationView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierAnimationView.java new file mode 100644 index 0000000000..85ad93badb --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierAnimationView.java @@ -0,0 +1,141 @@ +package com.mogo.module.common.animation; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; +import android.animation.ValueAnimator; +import android.content.Context; +import android.graphics.PointF; +import android.graphics.drawable.Drawable; +import android.util.AttributeSet; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; +import android.view.animation.LinearInterpolator; +import android.widget.ImageView; +import android.widget.RelativeLayout; + +import androidx.core.content.ContextCompat; + +import com.mogo.module.common.R; + +import java.util.Random; + +public class BezierAnimationView extends RelativeLayout implements View.OnClickListener { + private String TAG = "BezierAnimationView"; + private Context context; + private int[] animation_drawable = { + R.drawable.icon_common_heart_animation_vr00, + R.drawable.icon_heart_unchoose_other, + R.drawable.icon_map_marker_living}; + private Random random = new Random(); + private int width = 500, height = 210; + private int drawableWidth, drawableHeight; + + public BezierAnimationView(Context context) { + this(context, null); + } + + public BezierAnimationView(Context context, AttributeSet attributes) { + this(context, attributes, 0); + } + + public BezierAnimationView(Context context, AttributeSet attributes, int defStyleAttr) { + super(context, attributes, defStyleAttr); + this.context = context; + //3、设置点击事件 + setOnClickListener(this); + //4、获取点赞图片的宽高 + Drawable drawable = ContextCompat.getDrawable(context, R.drawable.icon_common_heart_animation_vr02); + drawableWidth = drawable.getIntrinsicWidth(); + drawableHeight = drawable.getIntrinsicHeight(); + } + + @Override + public void onClick(View view) { + Log.d("执行点赞动画", "ppp"); + bezierAnimation(); + } + + private void bezierAnimation() { + final ImageView imageView = new ImageView(context); + imageView.setBackgroundResource(animation_drawable[random.nextInt(animation_drawable.length - 1)]); + RelativeLayout.LayoutParams params = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); + params.addRule(ALIGN_BOTTOM); + params.addRule(CENTER_HORIZONTAL); + imageView.setLayoutParams(params); + addView(imageView); + + /* + * 开始执行点赞效果 + * */ + AnimatorSet animatorSet = getAnimatorSet(imageView); + animatorSet.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + //3、动画执行后移除View + removeView(imageView); + } + }); + animatorSet.start(); + } + + private AnimatorSet getAnimatorSet(ImageView imageView) { + AnimatorSet enter = new AnimatorSet(); + /* + * 缩放动画 + * */ + AnimatorSet scaleAnimator = new AnimatorSet(); + ObjectAnimator alpha = ObjectAnimator.ofFloat(imageView, "alpha", 0.8f, 1f); + ObjectAnimator scaleX = ObjectAnimator.ofFloat(imageView, "scaleX", 0.8f, 1f); + ObjectAnimator scaleY = ObjectAnimator.ofFloat(imageView, "scaleY", 0.8f, 1f); + scaleAnimator.setDuration(500); + scaleAnimator.playTogether(alpha, scaleX, scaleY); + + /* + * 贝塞尔动画 + * */ + ValueAnimator bezierAnimator = getBezierValueAnimator(imageView); + /* + * 两个动画按顺序播放 + * */ + enter.playSequentially(scaleAnimator, bezierAnimator); + return enter; + } + + /** + * 获取贝塞尔曲线动画 + * + * @param target + * @return + */ + private ValueAnimator getBezierValueAnimator(View target) { + + //初始化一个BezierEvaluator + BezierEvaluator evaluator = new BezierEvaluator(getPointF(1), getPointF(1)); + + // 起点固定,终点随机 + ValueAnimator animator = ValueAnimator.ofObject(evaluator, new PointF((width - 40) / 2, height - 80), + new PointF(random.nextInt(getWidth()), 0)); + animator.addUpdateListener(new BezierListener(target)); + animator.setTarget(target); + animator.setDuration(3000); + return animator; + } + + /** + * 获取一条路径的两个控制点 + * + * @param scale + */ + private PointF getPointF(int scale) { + + PointF pointF = new PointF(); + //减去100 是为了控制 x轴活动范围 + pointF.x = random.nextInt((width)); + //再Y轴上 为了确保第二个控制点 在第一个点之上,我把Y分成了上下两半 + pointF.y = random.nextInt((height)) / scale; + return pointF; + } +} diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierEvaluator.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierEvaluator.java new file mode 100644 index 0000000000..6effc925b1 --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierEvaluator.java @@ -0,0 +1,45 @@ +package com.mogo.module.common.animation; + +import android.animation.TypeEvaluator; +import android.graphics.PointF; + +/** + * 贝塞尔曲线估值器:计算动画的执行轨迹 + * + * @params 传入贝塞尔曲线需要的四个点 + * @return 通过计算返回贝塞尔曲线的坐标 + */ +public class BezierEvaluator implements TypeEvaluator { + + private PointF pointF1; + private PointF pointF2; + + public BezierEvaluator(PointF point1, PointF point2) { + this.pointF1 = point1; + this.pointF2 = point2; + } + + @Override + public PointF evaluate(float time, PointF startValue, PointF endValue) { + float timeLeft = 1.0f - time; + + //结果 + PointF point = new PointF(); + + PointF point0 = (PointF)startValue;//起点 + PointF point3 = (PointF)endValue;//终点 + + // 贝塞尔公式 + point.x = timeLeft * timeLeft * timeLeft * (point0.x) + + 3 * timeLeft * timeLeft * time * (pointF1.x) + + 3 * timeLeft * time * time * (pointF2.x) + + time * time * time * (point3.x); + + point.y = timeLeft * timeLeft * timeLeft * (point0.y) + + 3 * timeLeft * timeLeft * time * (pointF1.y) + + 3 * timeLeft * time * time * (pointF2.y) + + time * time * time * (point3.y); + + return point; + } +} \ No newline at end of file diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierListener.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierListener.java new file mode 100644 index 0000000000..04ab1129c2 --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierListener.java @@ -0,0 +1,24 @@ +package com.mogo.module.common.animation; + +import android.animation.ValueAnimator; +import android.graphics.PointF; +import android.view.View; + +public class BezierListener implements ValueAnimator.AnimatorUpdateListener { + + private View target; + + public BezierListener(View target) { + this.target = target; + } + + @Override + public void onAnimationUpdate(ValueAnimator animation) { + //这里获取到贝塞尔曲线计算出来的的x y值 赋值给view 这样就能让爱心随着曲线走啦 + PointF pointF = (PointF) animation.getAnimatedValue(); + target.setX(pointF.x); + target.setY(pointF.y); + // 这里偷个懒,顺便做一个alpha动画,这样alpha渐变也完成啦 + target.setAlpha(1 - animation.getAnimatedFraction()); + } +} \ No newline at end of file diff --git a/modules/mogo-module-common/src/main/res/drawable-xhdpi/icon_common_heart_animation_vr00.png b/modules/mogo-module-common/src/main/res/drawable-xhdpi/icon_common_heart_animation_vr00.png new file mode 100644 index 0000000000000000000000000000000000000000..5246d61ccc4779122340b8b2557aad23029f86c6 GIT binary patch literal 4386 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 Date: Thu, 17 Dec 2020 17:03:53 +0800 Subject: [PATCH 2/5] =?UTF-8?q?[v2x]=20vr=E4=B8=8B=E6=B7=BB=E5=8A=A0marker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manager/impl/MoGoV2XMarkerManager.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java index 21e184ed1f..9e3b9b2ad7 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java @@ -4,14 +4,17 @@ import android.content.Context; import android.graphics.Bitmap; import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.commons.AbsMogoApplication; import com.mogo.map.MogoLatLng; import com.mogo.map.location.MogoLocation; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.map.uicontroller.EnumMapUI; +import com.mogo.module.common.drawer.MarkerDrawer; import com.mogo.module.common.drawer.marker.IMarkerView; import com.mogo.module.common.drawer.marker.MapMarkerAdapter; +import com.mogo.module.common.drawer.marker.RoadConditionInfoWindow3DAdapter; import com.mogo.module.common.entity.MarkerCardResult; import com.mogo.module.common.entity.MarkerExploreWay; import com.mogo.module.common.entity.MarkerLocation; @@ -532,6 +535,13 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager { .longitude(roadEventEntity.getLocation().getLon()); optionsRipple.anchor(0.5f, 0.5f); + MarkerShowEntity markerShowEntity = new MarkerShowEntity(); + MarkerExploreWay markerExploreWay = roadEventEntity.getNoveltyInfo(); + markerShowEntity.setBindObj(markerExploreWay); + markerShowEntity.setMarkerLocation(markerExploreWay.getLocation()); + markerShowEntity.setMarkerType(markerExploreWay.getPoiType()); + markerShowEntity.setTextContent(markerExploreWay.getPoiType()); + // 由于性能问题,D车机不使用事件扩散动画 if (!CarSeries.isF8xxSeries()) { optionsRipple.icon(V2XMarkerAdapter.getV2XRoadEventViewPng(context, roadEventEntity)); @@ -539,8 +549,13 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager { optionsRipple.icons(V2XMarkerAdapter.getV2XRoadEventViewGif(context, roadEventEntity)); optionsRipple.period(1); } - - mAlarmInfoMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_EVENT_ALARM_POI, optionsRipple); + if (V2XServiceManager.getMoGoStatusManager().isVrMode()) { + mAlarmInfoMarker = MarkerDrawer.getInstance().drawMapMarkerImpl(markerShowEntity, MarkerDrawer.MARKER_Z_INDEX_HIGH, clickListener); + mAlarmInfoMarker.setInfoWindowAdapter(new RoadConditionInfoWindow3DAdapter(markerShowEntity, AbsMogoApplication.getApp(), mAlarmInfoMarker.getMogoMarkerOptions())); + mAlarmInfoMarker.showInfoWindow(); + } else { + mAlarmInfoMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_EVENT_ALARM_POI, optionsRipple); + } // 当前Marker设置为最上面 mAlarmInfoMarker.setToTop(); // 绘制连接线 From 9b4607b37adc684b553cc9b1cb2d9c5061c38a4d Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Thu, 17 Dec 2020 15:36:26 +0800 Subject: [PATCH 3/5] opt --- .../res/layout/modudle_camera_layout_info.xml | 4 --- .../utils/CameraLiveNoticeHelper.java | 28 +++++++++++------- .../src/main/res/drawable-ldpi/icon_space.png | Bin 0 -> 163 bytes .../src/main/res/drawable-mdpi/icon_space.png | Bin 0 -> 163 bytes .../main/res/drawable-xhdpi/icon_space.png | Bin 0 -> 163 bytes .../media/widget/CircleNumberProgress.java | 14 +++++++-- .../module/media/window/MediaWindow2.java | 9 +----- ...le_media_music_window_alert_layout_new.xml | 2 ++ .../src/main/res/values/colors.xml | 2 +- .../service/location/MogoRTKLocation.java | 5 ++++ 10 files changed, 38 insertions(+), 26 deletions(-) create mode 100644 modules/mogo-module-extensions/src/main/res/drawable-ldpi/icon_space.png create mode 100644 modules/mogo-module-extensions/src/main/res/drawable-mdpi/icon_space.png create mode 100644 modules/mogo-module-extensions/src/main/res/drawable-xhdpi/icon_space.png diff --git a/modules/mogo-module-common/src/main/res/layout/modudle_camera_layout_info.xml b/modules/mogo-module-common/src/main/res/layout/modudle_camera_layout_info.xml index 360fbb6d4a..39535e2391 100644 --- a/modules/mogo-module-common/src/main/res/layout/modudle_camera_layout_info.xml +++ b/modules/mogo-module-common/src/main/res/layout/modudle_camera_layout_info.xml @@ -15,8 +15,4 @@ android:layout_height="wrap_content" android:src="@drawable/module_camera_real_time_traffic" /> - - \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java index cecf99c144..9413d2bcc6 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java @@ -34,7 +34,7 @@ public class CameraLiveNoticeHelper implements IMogoOnWebSocketMessageListener { - mCloudRoadData = new CloudRoadData(); - mCloudRoadData.setRtmpUrl("rtmp://58.200.131.2:1935/livetv/hunantv"); + if (!isFirst) { + isFirst = true; + UiThreadHandler.postDelayed(() -> { + mCloudRoadData = new CloudRoadData(); + mCloudRoadData.setRtmpUrl("rtmp://58.200.131.2:1935/livetv/hunantv"); mCloudRoadData.setLat(40.200353); mCloudRoadData.setLon(116.745467); + +// mCloudRoadData.setLat(40.200481); +// mCloudRoadData.setLon(116.738473); + // CameraLiveManager.getInstance().init(mCloudRoadData); - addCameraMarker(mCloudRoadData); - }, 2_000); + addCameraMarker(mCloudRoadData); + }, 2_000); + } } @@ -90,15 +97,14 @@ public class CameraLiveNoticeHelper implements IMogoOnWebSocketMessageListener?T zfNTy1#`a7G7LXDkmI7i12Id8f49q~95hS*N2`lFz;gC(9 dV0`8t7X#C5#)1#A%8Nk?JYD@<);T3K0RVV#8oU4i literal 0 HcmV?d00001 diff --git a/modules/mogo-module-extensions/src/main/res/drawable-mdpi/icon_space.png b/modules/mogo-module-extensions/src/main/res/drawable-mdpi/icon_space.png new file mode 100644 index 0000000000000000000000000000000000000000..a2350b85a83e3be89d63ea1461878407f940a1ee GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}K#X;^)4C~IxyaaMwQX@Rme0>?T zfNTy1#`a7G7LXDkmI7i12Id8f49q~95hS*N2`lFz;gC(9 dV0`8t7X#C5#)1#A%8Nk?JYD@<);T3K0RVV#8oU4i literal 0 HcmV?d00001 diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/icon_space.png b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/icon_space.png new file mode 100644 index 0000000000000000000000000000000000000000..a2350b85a83e3be89d63ea1461878407f940a1ee GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}K#X;^)4C~IxyaaMwQX@Rme0>?T zfNTy1#`a7G7LXDkmI7i12Id8f49q~95hS*N2`lFz;gC(9 dV0`8t7X#C5#)1#A%8Nk?JYD@<);T3K0RVV#8oU4i literal 0 HcmV?d00001 diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/widget/CircleNumberProgress.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/widget/CircleNumberProgress.java index 1334310de3..ecd1fa5405 100644 --- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/widget/CircleNumberProgress.java +++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/widget/CircleNumberProgress.java @@ -1,6 +1,7 @@ package com.mogo.module.media.widget; import android.content.Context; +import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; @@ -9,6 +10,7 @@ import android.graphics.RectF; import android.util.AttributeSet; import android.view.View; +import com.mogo.module.media.R; import com.mogo.module.media.utils.Utils; /** @@ -24,10 +26,12 @@ public class CircleNumberProgress extends View { private int paintTextSize = 20; /** 未完成进度条的颜色 */ - private int paintUndoneColor = 0xffaaaaaa; +// private int paintUndoneColor = 0xffaaaaaa; + private int paintUndoneColor; /** 已完成进度条的颜色 */ - private int paintDoneColor = 0xff67aae4; +// private int paintDoneColor = 0xff67aae4; + private int paintDoneColor; /** 百分比文字的颜色 */ private int paintTextColor = 0xffff0077; @@ -70,6 +74,12 @@ public class CircleNumberProgress extends View { public CircleNumberProgress(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; + TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.PercentageRing); + //中间圆的背景颜色 默认为浅紫色 + paintUndoneColor = typedArray.getColor(R.styleable.PercentageRing_circleBackground, 0xffafb4db); + //外圆环的颜色 默认为深紫色 + paintDoneColor = typedArray.getColor(R.styleable.PercentageRing_ringColor, 0xff6950a1); + // 构造器中初始化数据 initData(); } diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java index d30717caea..6acb0415ac 100644 --- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java +++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java @@ -314,16 +314,9 @@ public class MediaWindow2 implements IMusicView , IMogoStatusChangedListener { // GlideApp.with(mContext).applyDefaultRequestOptions(options).load(mMediaInfoData.getMediaImg()).into(new SkinAbleBitmapTarget(mCircleImg, options)); }else{ Logger.e(TAG, "mMediaInfoData == null "); -// mAnimCircleImageView.setImageResource(R.drawable.module_media_default_music_img); - int size = - mContext.getResources().getDimensionPixelSize(R.dimen.module_media_pop_window_anim_img_size_new); - com.bumptech.glide.request.RequestOptions options = - new com.bumptech.glide.request.RequestOptions() - .placeholder(R.drawable.module_media_default_music_img).error(R.drawable.module_media_default_music_img).override(size, size); - GlideApp.with(mContext).asBitmap().apply(options).load("").into(new SkinAbleBitmapTarget(mAnimCircleImageView, options)); + mAnimCircleImageView.setImageResource(R.drawable.module_media_default_music_img); } } - } else { if (mScrollText != null) { mScrollText.setText(mMediaInfoData.getMediaName()); diff --git a/modules/mogo-module-media/src/main/res/layout/module_media_music_window_alert_layout_new.xml b/modules/mogo-module-media/src/main/res/layout/module_media_music_window_alert_layout_new.xml index 8c0e5dbe4d..d36414c4b7 100644 --- a/modules/mogo-module-media/src/main/res/layout/module_media_music_window_alert_layout_new.xml +++ b/modules/mogo-module-media/src/main/res/layout/module_media_music_window_alert_layout_new.xml @@ -11,6 +11,8 @@ app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintRight_toRightOf="parent" + app:circleBackground="@color/modules_media_music_bg_color" + app:ringColor="@color/modules_media_music_circle_color" android:layout_width="match_parent" android:layout_height="match_parent" /> diff --git a/modules/mogo-module-media/src/main/res/values/colors.xml b/modules/mogo-module-media/src/main/res/values/colors.xml index b0944c76eb..b6ca26aca2 100644 --- a/modules/mogo-module-media/src/main/res/values/colors.xml +++ b/modules/mogo-module-media/src/main/res/values/colors.xml @@ -3,5 +3,5 @@ #fff #7affffff #444E6E - #B63737 + #80ffffff diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/location/MogoRTKLocation.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/location/MogoRTKLocation.java index 9ab2c99113..3234b62ae7 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/location/MogoRTKLocation.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/location/MogoRTKLocation.java @@ -11,6 +11,7 @@ import android.location.LocationManager; import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.util.Log; import com.mogo.commons.AbsMogoApplication; import com.mogo.module.common.entity.CloudLocationInfo; @@ -121,7 +122,11 @@ public class MogoRTKLocation { cloudLocationInfo.setSpeed(location.getSpeed()); cloudLocationInfo.setSatelliteTime(location.getTime()); cloudLocationInfo.setSystemTime(System.currentTimeMillis()); + + Log.e("liyz", "lat = " + location.getLatitude() + ">>>>long = " + location.getLongitude()); cacheList.add(cloudLocationInfo); + } else { + Log.e("liyz", "location == null"); } } From 6673da5adfc24d376b85d6aa864d550a63553dbe Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Thu, 17 Dec 2020 17:28:47 +0800 Subject: [PATCH 4/5] opt --- .../drawer/marker/MapCameraInfoView.java | 1 + .../live/CameraLiveGSYVideoView.java | 2 +- .../utils/CameraLiveNoticeHelper.java | 39 +++++++++---------- .../service/location/MogoRTKLocation.java | 4 +- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapCameraInfoView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapCameraInfoView.java index d6f3990014..9d88d0b644 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapCameraInfoView.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapCameraInfoView.java @@ -3,6 +3,7 @@ package com.mogo.module.common.drawer.marker; import android.content.Context; import android.text.TextUtils; import android.util.AttributeSet; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/live/CameraLiveGSYVideoView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/live/CameraLiveGSYVideoView.java index 19c37173f7..2f39286ae9 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/live/CameraLiveGSYVideoView.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/live/CameraLiveGSYVideoView.java @@ -113,7 +113,7 @@ public class CameraLiveGSYVideoView extends LiveRoundLayout implements IMogoSkin private void playLiveVideo(String liveUrl) { try { if (mLivePlayer != null) { - mLivePlayer.startPlay(liveUrl, TXLivePlayer.PLAY_TYPE_LIVE_RTMP); + mLivePlayer.startPlay(liveUrl, TXLivePlayer.PLAY_TYPE_LIVE_FLV); mLivePlayer.setPlayListener(new ITXLivePlayListener() { @Override public void onPlayEvent(int event, Bundle bundle) { diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java index 9413d2bcc6..d796926105 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java @@ -60,27 +60,28 @@ public class CameraLiveNoticeHelper implements IMogoOnWebSocketMessageListener { - mCloudRoadData = new CloudRoadData(); - mCloudRoadData.setRtmpUrl("rtmp://58.200.131.2:1935/livetv/hunantv"); - mCloudRoadData.setLat(40.200353); - mCloudRoadData.setLon(116.745467); - -// mCloudRoadData.setLat(40.200481); -// mCloudRoadData.setLon(116.738473); - -// CameraLiveManager.getInstance().init(mCloudRoadData); - addCameraMarker(mCloudRoadData); - }, 2_000); - } +// if (!isFirst) { +// isFirst = true; +// UiThreadHandler.postDelayed(() -> { +// mCloudRoadData = new CloudRoadData(); +//// mCloudRoadData.setRtmpUrl("rtmp://58.200.131.2:1935/livetv/hunantv"); +// mCloudRoadData.setRtmpUrl("http://video.zhidaozhixing.com/live/rec_12_22.flv"); +// +// mCloudRoadData.setLat(39.969089); +// mCloudRoadData.setLon(116.418009); +// +//// CameraLiveManager.getInstance().init(mCloudRoadData); +// addCameraMarker(mCloudRoadData); +// }, 2_000); +// } } public void exitVrMode() { Logger.d(TAG, "退出vr模式==="); +// removeCameraMarker(); +// isFirst = false; MogoApisHandler.getInstance().getApis().getWebSocketManagerApi(mContext).unregisterOnWebSocketMessageListener(this); } @@ -97,8 +98,7 @@ public class CameraLiveNoticeHelper implements IMogoOnWebSocketMessageListener>>>long = " + location.getLongitude()); +// Log.e("liyz", "lat = " + location.getLatitude() + ">>>>long = " + location.getLongitude()); cacheList.add(cloudLocationInfo); } else { - Log.e("liyz", "location == null"); + Logger.e(TAG, "location == null"); } } From 7848be8ea6dbda6478540f382823af3237272d08 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Thu, 17 Dec 2020 20:04:00 +0800 Subject: [PATCH 5/5] opt traffic light panel --- app/src/main/AndroidManifest.xml | 1 + .../java/com/mogo/utils/NetworkUtils.java | 17 +++ .../extensions/net/DelayCheckApiServices.java | 26 ++++ .../extensions/utils/DelayCheckUtil.java | 121 ++++++++++++++++++ .../main/res/layout/include_debug_panel.xml | 1 - .../src/main/res/values/dimens.xml | 4 +- .../com/mogo/module/main/MainActivity.java | 3 + 7 files changed, 170 insertions(+), 3 deletions(-) create mode 100644 modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/net/DelayCheckApiServices.java create mode 100644 modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/DelayCheckUtil.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bb9630b495..5121884a7f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,6 +4,7 @@ package="com.mogo.launcher"> + emptyInterface(); + + @POST("/") + @FormUrlEncoded + Observable uploadDelayCheckData(@FieldMap Map params); +} diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/DelayCheckUtil.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/DelayCheckUtil.java new file mode 100644 index 0000000000..d4dc6cebf2 --- /dev/null +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/DelayCheckUtil.java @@ -0,0 +1,121 @@ +package com.mogo.module.extensions.utils; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; +import android.os.SystemClock; + +import com.mogo.commons.data.BaseData; +import com.mogo.commons.network.SubscribeImpl; +import com.mogo.module.common.MogoApisHandler; +import com.mogo.module.extensions.net.DelayCheckApiServices; +import com.mogo.module.extensions.net.DztHttpConstant; +import com.mogo.utils.NetworkUtils; +import com.mogo.utils.network.RequestOptions; + +import java.util.HashMap; +import java.util.Map; + +import io.reactivex.schedulers.Schedulers; + +/** + * 延时验证工具类 + * + * @author tongchenfei + */ +public class DelayCheckUtil implements Handler.Callback { + + private final Handler handler = new Handler(this); + + private static final int MSG_CHECK_NET_CONNECT_STATUS = 1001; + private static final long CHECK_NET_CONNECT_STATUS_DELAY = 5000L; + + private static final int MSG_START_DELAY_CHECK = 1002; + private static final long DELAY_CHECK_DELAY = 10 * 60 * 1000; + + private Context context; + + public DelayCheckUtil(Context context) { + this.context = context; + } + + /** + * 每5s检查一下网络状态,网络状态为连接状态时,开始空接口请求以及后续的参数上报 + */ + public void waitingForCheck() { + handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY); + } + + private long requestTime, netDelay; + + @Override + public boolean handleMessage(Message msg) { + switch (msg.what) { + case MSG_CHECK_NET_CONNECT_STATUS: + if (NetworkUtils.isConnected(context)) { + handler.sendEmptyMessage(MSG_START_DELAY_CHECK); + } else { + handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY); + } + return true; + case MSG_START_DELAY_CHECK: + // 请求空接口 + startEmptyRequest(); + return true; + default: + return false; + } + } + + private void startEmptyRequest() { + requestTime = SystemClock.elapsedRealtime(); + MogoApisHandler.getInstance().getApis().getNetworkApi() + .create(DelayCheckApiServices.class, DztHttpConstant.getBaseUrl()) + .emptyInterface().subscribeOn(Schedulers.io()).observeOn(Schedulers.io()) + .subscribe(new SubscribeImpl(RequestOptions.create(context)) { + @Override + public void onSuccess(BaseData o) { + super.onSuccess(o); + netDelay = SystemClock.elapsedRealtime() - requestTime; + + startUpload(); + + } + + @Override + public void onError(Throwable e) { + super.onError(e); + } + + @Override + public void onError(String message, int code) { + super.onError(message, code); + } + }); + } + + private void startUpload(){ + Map params = new HashMap<>(); + MogoApisHandler.getInstance().getApis().getNetworkApi() + .create(DelayCheckApiServices.class, DztHttpConstant.getBaseUrl()) + .uploadDelayCheckData(params).observeOn(Schedulers.io()).subscribeOn(Schedulers.io()) + .subscribe(new SubscribeImpl(RequestOptions.create(context)) { + @Override + public void onSuccess(BaseData o) { + super.onSuccess(o); + + handler.sendEmptyMessageDelayed(MSG_START_DELAY_CHECK, DELAY_CHECK_DELAY); + } + + @Override + public void onError(String message, int code) { + super.onError(message, code); + } + + @Override + public void onError(Throwable e) { + super.onError(e); + } + }); + } +} diff --git a/modules/mogo-module-extensions/src/main/res/layout/include_debug_panel.xml b/modules/mogo-module-extensions/src/main/res/layout/include_debug_panel.xml index 560df074ee..4242b5b5e6 100644 --- a/modules/mogo-module-extensions/src/main/res/layout/include_debug_panel.xml +++ b/modules/mogo-module-extensions/src/main/res/layout/include_debug_panel.xml @@ -135,6 +135,5 @@ android:layout_height="wrap_content" android:id="@+id/groupDebugPanel" android:visibility="gone" - tools:visibility="visible" app:constraint_referenced_ids="btnCloseLog,btnOpenLog,btnOpenV2xPanel,tvObuSetTitle,tvLogSetTitle,tvV2xSetTitle,rgObuSet,ibDebugPanelClose,debugPanelBg" /> \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/values/dimens.xml b/modules/mogo-module-extensions/src/main/res/values/dimens.xml index 30d6518fb6..ea9ab4a5eb 100644 --- a/modules/mogo-module-extensions/src/main/res/values/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values/dimens.xml @@ -214,8 +214,8 @@ 464px 304px - 20px - 8px + 40px + 28px 100px 60px 48px 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 664c95a6ef..e23dc28f2f 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 @@ -34,6 +34,7 @@ import com.mogo.service.fragmentmanager.IMogoFragmentManager; import com.mogo.service.module.IMogoModuleProvider; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.skin.support.SkinMode; +import com.mogo.utils.NetworkUtils; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.logger.Logger; import com.zhidao.adasconfig.api.AdasConfigApiController; @@ -140,6 +141,8 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme super.onCreate( savedInstanceState ); ContextHolderUtil.holdContext(this); mPresenter.postLoadModuleMsg(); + + NetworkUtils.listenNetStrength(this); } private void init() {