From 5d6e8fd673c8f65c82d4205de07cb76c35a487be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Fri, 18 Dec 2020 19:03:18 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B0=8F=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E7=9A=84=E6=8F=8F=E8=BE=B9=E5=84=BF=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=B5=8B=E8=AF=95=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../drawable/bg_module_small_map_view_border.xml | 14 ++++++-------- .../src/main/res/raw/scenario_road_event_data.json | 8 ++++---- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/modules/mogo-module-smp/src/main/res/drawable/bg_module_small_map_view_border.xml b/modules/mogo-module-smp/src/main/res/drawable/bg_module_small_map_view_border.xml index 46982d07c3..1537b40512 100644 --- a/modules/mogo-module-smp/src/main/res/drawable/bg_module_small_map_view_border.xml +++ b/modules/mogo-module-smp/src/main/res/drawable/bg_module_small_map_view_border.xml @@ -2,25 +2,23 @@ - + - + android:angle="315" + android:endColor="#284190" + android:startColor="#7997ff" + android:type="linear" /> - + diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_road_event_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_road_event_data.json index cf4d9e9c07..ce7f84f44f 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_road_event_data.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_road_event_data.json @@ -5,8 +5,8 @@ "location":{ "address":"北三环环球贸易中心", "angle":270, - "lat":39.966668, - "lon":116.411211 + "lat":39.969088, + "lon":116.41808 }, "noveltyInfo":{ "addr":"北三环环球贸易中心", @@ -27,8 +27,8 @@ "location":{ "address":"北三环环球贸易中心", "angle":270, - "lat":39.966668, - "lon":116.411211 + "lat":39.969088, + "lon":116.41808 }, "poiType":"10003", "type":"CARD_TYPE_ROAD_CONDITION", From b22505ddbb2cc35b42d3ebad9805854e8d87d17e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Fri, 18 Dec 2020 19:13:38 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/raw/scenario_fatigue_driving_data.json | 8 ++++---- .../main/res/raw/scenario_push_animation_event_data.json | 4 ++-- .../src/main/res/raw/scenario_push_cross_crash.json | 4 ++-- .../src/main/res/raw/scenario_push_event_data.json | 8 ++++---- .../src/main/res/raw/scenario_push_live_event_data.json | 8 ++++---- .../src/main/res/raw/scenario_push_vr_barrier_data.json | 4 ++-- .../res/raw/scenario_push_vr_behind_danger_car_data.json | 4 ++-- .../src/main/res/raw/scenario_push_vr_car_break_data.json | 4 ++-- .../res/raw/scenario_push_vr_event_data_shuangshan.json | 4 ++-- .../main/res/raw/scenario_push_vr_event_data_yongdu.json | 4 ++-- .../main/res/raw/scenario_push_vr_hehind_vip_data.json | 4 ++-- .../main/res/raw/scenario_push_vr_reverse_car_data.json | 4 ++-- .../res/raw/scenario_push_vr_vip_light_change_data.json | 4 ++-- .../res/raw/scenario_push_vr_xingren_yujing_data.json | 4 ++-- .../src/main/res/raw/scenario_seek_help.json | 4 ++-- 15 files changed, 36 insertions(+), 36 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_fatigue_driving_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_fatigue_driving_data.json index f101b621e1..e6612d5f41 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_fatigue_driving_data.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_fatigue_driving_data.json @@ -14,11 +14,11 @@ "zoom": true, "zoomScale": 15, "location": { - "lat":39.966668, - "lon":116.411211 + "lat":39.969088, + "lon":116.41808 }, - "lat":39.966668, - "lon":116.411211, + "lat":39.969088, + "lon":116.41808, "userHead": "https://yycp-static-1255510688.cos.ap-beijing.myqcloud.com/defaultUserHeadImg/5.png", "msgImgUrl": "https://upload.jianshu.io/users/upload_avatars/7663825/7c28763e-002b-4e89-8dea-5b8da210ef2c.jpg" } \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_animation_event_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_animation_event_data.json index 4181815172..fda51992cb 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_animation_event_data.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_animation_event_data.json @@ -13,8 +13,8 @@ "zoom": true, "zoomScale": 15, "location": { - "lat": 39.9754100000, - "lon": 116.4178276100 + "lat":39.969088, + "lon":116.41808 }, "userHead": "https://yycp-static-1255510688.cos.ap-beijing.myqcloud.com/defaultUserHeadImg/5.png", "msgImgUrl": "https://upload.jianshu.io/users/upload_avatars/7663825/7c28763e-002b-4e89-8dea-5b8da210ef2c.jpg" diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_cross_crash.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_cross_crash.json index 180b9688a1..57942107bb 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_cross_crash.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_cross_crash.json @@ -13,8 +13,8 @@ "zoom": true, "zoomScale": 15, "location": { - "lat": 39.9754100000, - "lon": 116.4178276100 + "lat":39.969088, + "lon":116.41808 }, "userHead": "https://yycp-static-1255510688.cos.ap-beijing.myqcloud.com/defaultUserHeadImg/5.png", "msgImgUrl": "https://upload.jianshu.io/users/upload_avatars/7663825/7c28763e-002b-4e89-8dea-5b8da210ef2c.jpg" diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_event_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_event_data.json index c166e32a62..602c35d0a1 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_event_data.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_event_data.json @@ -13,11 +13,11 @@ "zoom": true, "zoomScale": 15, "location": { - "lat": 39.971417, - "lon": 116.415853 + "lat":39.969088, + "lon":116.41808 }, - "lat": 39.968678, - "lon": 116.405467, + "lat":39.969088, + "lon":116.41808, "userHead": "tUserHeadImg/5.png", "msgImgUrl": "https://upload.jianshu.io/users/upload_avatars/7663825/7c28763e-002b-4e89-8dea-5b8da210ef2c.jpg" } \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_live_event_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_live_event_data.json index fc870468e2..a08db2ad3d 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_live_event_data.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_live_event_data.json @@ -13,11 +13,11 @@ "zoom": true, "zoomScale": 15, "location": { - "lat": 39.971417, - "lon": 116.415853 + "lat":39.969088, + "lon":116.41808 }, - "lat": 39.968678, - "lon": 116.405467, + "lat":39.969088, + "lon":116.41808, "headImgUrl": "https://yycp-static-1255510688.cos.ap-beijing.myqcloud.com/defaultUserHeadImg/5.png", "msgImgUrl": "https://upload.jianshu.io/users/upload_avatars/7663825/7c28763e-002b-4e89-8dea-5b8da210ef2c.jpg" } \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_barrier_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_barrier_data.json index 485117a72d..d1fd466bcf 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_barrier_data.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_barrier_data.json @@ -11,8 +11,8 @@ "tts": "前方发现障碍物注意避让", "zoom": false, "zoomScale": 15, - "lat": 40.196512, - "lon": 116.736461, + "lat":39.969088, + "lon":116.41808, "userHead": "", "msgImgUrl": "", "polyline": [ diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_behind_danger_car_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_behind_danger_car_data.json index 649a659c18..af1fb347f7 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_behind_danger_car_data.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_behind_danger_car_data.json @@ -11,8 +11,8 @@ "tts": "发现后方车辆超速,注意保持车道", "zoom": false, "zoomScale": 15, - "lat": 40.196512, - "lon": 116.736461, + "lat":39.969088, + "lon":116.41808, "userHead": "", "msgImgUrl": "", "polyline": [ diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_car_break_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_car_break_data.json index 139b16390e..78e259ec25 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_car_break_data.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_car_break_data.json @@ -11,8 +11,8 @@ "tts": "前车急刹注意减速", "zoom": false, "zoomScale": 15, - "lat": 40.195206, - "lon": 116.727433, + "lat":39.969088, + "lon":116.41808, "userHead": "", "msgImgUrl": "", "polyline": [ diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_event_data_shuangshan.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_event_data_shuangshan.json index 90519ff610..58209f8d88 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_event_data_shuangshan.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_event_data_shuangshan.json @@ -14,8 +14,8 @@ "zoomScale": 15, "userHead": "", "msgImgUrl": "", - "lat": 40.196512, - "lon": 116.736461, + "lat":39.969088, + "lon":116.41808, "polyline": [ [ 116.725091, diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_event_data_yongdu.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_event_data_yongdu.json index a4707406c6..58209f8d88 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_event_data_yongdu.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_event_data_yongdu.json @@ -14,8 +14,8 @@ "zoomScale": 15, "userHead": "", "msgImgUrl": "", - "lat": 40.195571, - "lon": 116.729344, + "lat":39.969088, + "lon":116.41808, "polyline": [ [ 116.725091, diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_hehind_vip_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_hehind_vip_data.json index 9a770eda3f..dc6471c258 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_hehind_vip_data.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_hehind_vip_data.json @@ -11,8 +11,8 @@ "tts": "发现后方VIP车辆,注意避让", "zoom": false, "zoomScale": 15, - "lat": 40.196512, - "lon": 116.736461, + "lat":39.969088, + "lon":116.41808, "userHead": "", "msgImgUrl": "", "polyline": [ diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_reverse_car_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_reverse_car_data.json index f0ffa82850..3a8732358c 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_reverse_car_data.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_reverse_car_data.json @@ -11,8 +11,8 @@ "tts": "对向来车注意减速", "zoom": false, "zoomScale": 15, - "lat": 40.196175, - "lon": 116.731011, + "lat":39.969088, + "lon":116.41808, "userHead": "", "msgImgUrl": "", "polyline": [ diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_vip_light_change_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_vip_light_change_data.json index c3d10b092f..2e80f28202 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_vip_light_change_data.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_vip_light_change_data.json @@ -11,8 +11,8 @@ "tts": "已为您变灯,可优先通行", "zoom": false, "zoomScale": 15, - "lat": 40.196512, - "lon": 116.736461, + "lat":39.969088, + "lon":116.41808, "userHead": "", "msgImgUrl": "", "polyline": [ diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_xingren_yujing_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_xingren_yujing_data.json index d2c7eaa55a..5c9ac8e5da 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_xingren_yujing_data.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_xingren_yujing_data.json @@ -11,8 +11,8 @@ "tts": "检测到路口行人穿行注意避让", "zoom": false, "zoomScale": 15, - "lat": 40.196512, - "lon": 116.736461, + "lat":39.969088, + "lon":116.41808, "userHead": "", "msgImgUrl": "", "polyline": [ diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_seek_help.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_seek_help.json index 2f6a9823ac..58853e2a6f 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_seek_help.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_seek_help.json @@ -3,8 +3,8 @@ { "createTime":1593678359872, "distance":1100, - "lat":39.866668, - "lon":116.411211, + "lat":39.969088, + "lon":116.41808, "sn":"ZD801B1932L00041", "targetId":20007, "targetName":"故障车", From 85aa9e3b804dbb280aa139e4b486904bb9f080c4 Mon Sep 17 00:00:00 2001 From: liujing Date: Fri, 18 Dec 2020 19:21:49 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E8=B4=9D=E5=A1=9E=E5=B0=94=E6=9B=B2?= =?UTF-8?q?=E7=BA=BF=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 | 110 ++++++++++-------- .../common/animation/BezierEvaluator.java | 50 ++++---- 2 files changed, 94 insertions(+), 66 deletions(-) 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 index 85ad93badb..2bed0dae80 100644 --- 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 @@ -8,6 +8,7 @@ import android.animation.ValueAnimator; import android.content.Context; import android.graphics.PointF; import android.graphics.drawable.Drawable; +import android.os.Handler; import android.util.AttributeSet; import android.util.Log; import android.view.View; @@ -27,11 +28,14 @@ public class BezierAnimationView extends RelativeLayout implements View.OnClickL 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_pondingl2, R.drawable.icon_map_marker_living}; private Random random = new Random(); - private int width = 500, height = 210; + private int width = 180, height = 140; private int drawableWidth, drawableHeight; + private int resource = 0; + private Handler handler = new Handler(); + private Runnable runnable; public BezierAnimationView(Context context) { this(context, null); @@ -54,13 +58,24 @@ public class BezierAnimationView extends RelativeLayout implements View.OnClickL @Override public void onClick(View view) { - Log.d("执行点赞动画", "ppp"); - bezierAnimation(); + runnable = new Runnable() { + @Override + public void run() { + try { + Log.d("点赞--", ""); + bezierAnimation(resource); + handler.postDelayed(this, 500); + } catch (Exception e) { + e.printStackTrace(); + } + } + }; + runnable.run(); } - private void bezierAnimation() { + private void bezierAnimation(int resource) { final ImageView imageView = new ImageView(context); - imageView.setBackgroundResource(animation_drawable[random.nextInt(animation_drawable.length - 1)]); + imageView.setBackgroundResource(animation_drawable[resource]); RelativeLayout.LayoutParams params = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); params.addRule(ALIGN_BOTTOM); params.addRule(CENTER_HORIZONTAL); @@ -79,63 +94,66 @@ public class BezierAnimationView extends RelativeLayout implements View.OnClickL } }); animatorSet.start(); + Log.d(TAG, "动画执行到--" + String.valueOf(resource)); } private AnimatorSet getAnimatorSet(ImageView imageView) { AnimatorSet enter = new AnimatorSet(); - /* - * 缩放动画 - * */ + + //1、缩放动画 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); + ObjectAnimator alpha = ObjectAnimator.ofFloat(imageView, "alpha", 0.3f, 1f); + ObjectAnimator scaleX = ObjectAnimator.ofFloat(imageView, "scaleX", 0.3f, 1f); + ObjectAnimator scaleY = ObjectAnimator.ofFloat(imageView, "scaleY", 0.3f, 1f); + scaleAnimator.setDuration(1000); scaleAnimator.playTogether(alpha, scaleX, scaleY); - /* - * 贝塞尔动画 - * */ - ValueAnimator bezierAnimator = getBezierValueAnimator(imageView); - /* - * 两个动画按顺序播放 - * */ + //2、贝塞尔动画 + ValueAnimator bezierAnimator = getBezierAnimator(imageView); + + //3、两个动画按顺序播放 enter.playSequentially(scaleAnimator, bezierAnimator); return enter; } /** - * 获取贝塞尔曲线动画 + * 贝塞尔动画 * - * @param target * @return */ - private ValueAnimator getBezierValueAnimator(View target) { + private ValueAnimator getBezierAnimator(final ImageView imageView) { - //初始化一个BezierEvaluator - BezierEvaluator evaluator = new BezierEvaluator(getPointF(1), getPointF(1)); + //1、构建贝塞尔曲线的四个点 + PointF point0 = new PointF((width - drawableWidth) / 2, height - drawableHeight); + PointF point1 = new PointF(random.nextInt(width), random.nextInt(height / 2)); + PointF point2 = new PointF(random.nextInt(width), random.nextInt(height / 2) + height / 2); + PointF point3 = new PointF(random.nextInt(width - drawableWidth), 0); - // 起点固定,终点随机 - 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; + //2、创建贝塞尔属性动画 + BezierEvaluator evaluator = new BezierEvaluator(point0, point1); + final ValueAnimator valueAnimator = ObjectAnimator.ofObject(evaluator, point2, point3); + valueAnimator.setInterpolator(new LinearInterpolator()); + valueAnimator.setDuration(1000); + //3、监听贝塞尔曲线估值器返回值 + valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + //4、获取BezierEvaluator中evaluate()返回的运行轨迹坐标点,设置点赞图片路线 + PointF pointF = (PointF) animation.getAnimatedValue(); + imageView.setX(pointF.x); + imageView.setY(pointF.y); + //6、获取BezierEvaluator中evaluate()返回的参数t,设置消失动画 + float t = animation.getAnimatedFraction(); + imageView.setAlpha(1 - t + 0.2f); + } + }); + if (resource >= 3) { + handler.removeCallbacks(runnable); + return null; + } else { + resource += 1; + } + return valueAnimator; } - /** - * 获取一条路径的两个控制点 - * - * @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 index 6effc925b1..b7be514fa9 100644 --- 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 @@ -11,34 +11,44 @@ import android.graphics.PointF; */ public class BezierEvaluator implements TypeEvaluator { - private PointF pointF1; - private PointF pointF2; + private PointF point1; + private PointF point2; public BezierEvaluator(PointF point1, PointF point2) { - this.pointF1 = point1; - this.pointF2 = point2; + this.point1 = point1; + this.point2 = point2; } @Override - public PointF evaluate(float time, PointF startValue, PointF endValue) { - float timeLeft = 1.0f - time; - - //结果 + public PointF evaluate(float t, PointF point0, PointF point3) { PointF point = new PointF(); + //t 取值为 [0,1] - PointF point0 = (PointF)startValue;//起点 - PointF point3 = (PointF)endValue;//终点 + /** + * 三阶贝塞尔公式 + * + * B(t)=(1 - t)^3 P0 + * + 3 t (1 - t)^2 P1 + * + 3 t^2 (1 - t) P2 + * + t^3 P3 + */ + point.x = point0.x * (1 - t) * (1 - t) * (1 - t) + + 3 * point1.x * t * (1 - t) * (1 - t) + + 3 * point2.x * t * t * (1 - t) + + point3.x * t * t * t; - // 贝塞尔公式 - 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); + /** + * 三阶贝塞尔公式 + * + * B(t)=(1 - t)^3 P0 + * + 3 t (1 - t)^2 P1 + * + 3 t^2 (1 - t) P2 + * + t^3 P3 + */ + point.y = point0.y * (1 - t) * (1 - t) * (1 - t) + + 3 * point1.y * t * (1 - t) * (1 - t) + + 3 * point2.y * t * t * (1 - t) + + point3.y * t * t * t; return point; } From 3188d585d558095102a6d0192d7c71435e0a7c49 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Sun, 20 Dec 2020 11:22:50 +0800 Subject: [PATCH 4/4] =?UTF-8?q?500ms=E4=B8=8A=E6=8A=A5=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0cityCode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/base/websocket/WebSocketData.java | 10 ++++++++++ .../java/com/mogo/base/websocket/WebSocketManager.java | 8 +++++++- .../mogo/module/extensions/utils/DelayCheckUtil.java | 9 +++++++-- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketData.java b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketData.java index 1b6ba190f9..3335fa340d 100644 --- a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketData.java +++ b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketData.java @@ -16,6 +16,8 @@ public class WebSocketData implements Serializable { private long upUtcTime; + private String cityCode; + public long getSeq() { return seq; } @@ -63,4 +65,12 @@ public class WebSocketData implements Serializable { public void setUpUtcTime(long upUtcTime) { this.upUtcTime = upUtcTime; } + + public String getCityCode() { + return cityCode; + } + + public void setCityCode(String cityCode) { + this.cityCode = cityCode; + } } diff --git a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java index 9b7a498373..f80e249d3e 100644 --- a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java +++ b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java @@ -8,6 +8,7 @@ import androidx.annotation.Keep; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.mogo.commons.network.Utils; +import com.mogo.map.location.MogoLocation; import com.mogo.module.common.MogoApisHandler; import com.mogo.service.connection.IMogoMsgAckListener; import com.mogo.service.connection.IMogoOnWebSocketMessageListener; @@ -140,15 +141,20 @@ public class WebSocketManager implements IMogoWebSocketManager, ISocketMsgSettin webSocketData.setMsgType(listener.getUpLinkType().getMsgType()); webSocketData.setSn(Utils.getSn()); webSocketData.setData(GsonUtil.jsonFromObject(body)); + MogoLocation lastKnown = MogoApisHandler.getInstance().getApis().getMapServiceApi().getSingletonLocationClient(context).getLastKnowLocation(); + if (lastKnown != null) { + webSocketData.setCityCode(lastKnown.getCityCode()); + } String msg = GsonUtil.jsonFromObject(webSocketData); Logger.d(TAG,"sendMsg : " + msg); handlerThread.sendMsg(msg); } } + private Context context; @Override public void init(Context context) { - + this.context = context; } @Override 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 index d4dc6cebf2..174f722de9 100644 --- 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 @@ -28,12 +28,13 @@ 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 FIRST_CHECK_NET_CONNECT_STATUS_DELAY = 10 * 60 * 1000; 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; + private final Context context; public DelayCheckUtil(Context context) { this.context = context; @@ -43,7 +44,7 @@ public class DelayCheckUtil implements Handler.Callback { * 每5s检查一下网络状态,网络状态为连接状态时,开始空接口请求以及后续的参数上报 */ public void waitingForCheck() { - handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY); + handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, FIRST_CHECK_NET_CONNECT_STATUS_DELAY); } private long requestTime, netDelay; @@ -85,11 +86,13 @@ public class DelayCheckUtil implements Handler.Callback { @Override public void onError(Throwable e) { super.onError(e); + handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY); } @Override public void onError(String message, int code) { super.onError(message, code); + handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY); } }); } @@ -110,11 +113,13 @@ public class DelayCheckUtil implements Handler.Callback { @Override public void onError(String message, int code) { super.onError(message, code); + handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY); } @Override public void onError(Throwable e) { super.onError(e); + handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY); } }); }