From d0c86fd9882dbe51ed6687c8a8449d16176fd831 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期二, 14 一月 2020 17:57:16 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/endian11/DriveJudge

---
 app/src/main/java/safeluck/drive/evaluation/Constant.java                      |    4 
 app/src/main/java/safeluck/drive/evaluation/app.java                           |   10 +
 app/src/main/java/safeluck/drive/evaluation/MainActivity.java                  |    9 -
 app/src/main/res/values/strings.xml                                            |    3 
 app/src/main/res/layout/layout_net_train.xml                                   |    4 
 app/src/main/res/layout/profile_layout.xml                                     |    3 
 app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java        |   45 +++++-
 app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java |   37 ++++++
 app/src/main/java/safeluck/drive/evaluation/bean/RealTimeCarPos.java           |  139 +++++++++++++++++++++++
 app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java          |   82 +++++++++++--
 10 files changed, 299 insertions(+), 37 deletions(-)

diff --git a/app/src/main/java/safeluck/drive/evaluation/Constant.java b/app/src/main/java/safeluck/drive/evaluation/Constant.java
index bf21ef0..cccb7d0 100644
--- a/app/src/main/java/safeluck/drive/evaluation/Constant.java
+++ b/app/src/main/java/safeluck/drive/evaluation/Constant.java
@@ -63,5 +63,9 @@
 
     public static final int ENTER_OR_EXIT_ITEM = 0x000D;
     public static final int HAS_BEEN_START_EXAM = 1;
+    public static final int REAL_TIME_CAR_POS = 0x000E;
+    public static final String REAL_TIME_POS_CAR_TOPIC = "real_time_car_pos_topic";
+    public static final String BIND_SPEED_TOPIC = "BIND_SPEED_TOPIC";
+    public static final int PASSING_SCORE = 80;
     public static String exam_enter_exitdata="exam_enter_exitdata";
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java
index cea004a..4584285 100644
--- a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java
+++ b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java
@@ -163,15 +163,6 @@
 
 
         MyLog.i(TAG, "onCreate");
-        MainViewModel mainViewModel = ViewModelProviders.of(this).get(MainViewModel.class);
-        mainViewModel.getJson().observe(this, new Observer<String>() {
-            @Override
-            public void onChanged(@Nullable String json) {
-                Toast.makeText(MainActivity.this, json, Toast.LENGTH_SHORT).show();
-                MyLog.i(TAG, "json==========" + json + " ThreadName:" + Thread.currentThread().getName());
-
-            }
-        });
 
         //鍔犺浇鏍笷ragment
         if (findFragment(HomeFragment.class) == null) {
diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java
index 5e570ba..4d44a33 100644
--- a/app/src/main/java/safeluck/drive/evaluation/app.java
+++ b/app/src/main/java/safeluck/drive/evaluation/app.java
@@ -206,6 +206,16 @@
                 OneTimeWorkRequest examStatusWorker = new OneTimeWorkRequest.Builder(ExamStatusWoker.class).setInputData(exam_enter_exitdata).build();
                 WorkManager.getInstance(getApplicationContext()).enqueue(examStatusWorker);
                 break;
+            case Constant.REAL_TIME_CAR_POS:
+                try {
+                    JSONObject jsSpeed = new JSONObject(json);
+                    double speed = jsSpeed.getDouble("speed");
+                    CEventCenter.dispatchEvent(Constant.BIND_SPEED_TOPIC,cmd,0,speed);
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+                CEventCenter.dispatchEvent(Constant.REAL_TIME_POS_CAR_TOPIC,cmd,0,json);
+                break;
 
         }
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/RealTimeCarPos.java b/app/src/main/java/safeluck/drive/evaluation/bean/RealTimeCarPos.java
new file mode 100644
index 0000000..cf82f07
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/RealTimeCarPos.java
@@ -0,0 +1,139 @@
+package safeluck.drive.evaluation.bean;
+
+import java.util.List;
+
+public class RealTimeCarPos {
+    /**
+     * utc : 20200114035518.40
+     * qf : 2
+     * map_id : -1
+     * move : -1
+     * speed : 0.21068459839297035
+     * heading : 0.0
+     * main_ant : [8.278,-0.533]
+     * axial : [0,3]
+     * left_front_tire : [1,0]
+     * right_front_tire : [5,0]
+     * left_rear_tire : [2,3]
+     * right_rear_tire : [4,3]
+     * point : [8.278,1.467,7.2780000000000005,1.467,7.2780000000000005,-1.533,8.278,-1.533,9.278,-1.5330000000000004,9.277999999999999,1.467000000000001]
+     */
+
+    private String utc;
+    private int qf;
+    private int map_id;
+    private int move;
+    private double speed;
+    private double heading;
+    private List<Double> main_ant;
+    private List<Integer> axial;
+    private List<Integer> left_front_tire;
+    private List<Integer> right_front_tire;
+    private List<Integer> left_rear_tire;
+    private List<Integer> right_rear_tire;
+    private List<Double> point;
+
+    public String getUtc() {
+        return utc;
+    }
+
+    public void setUtc(String utc) {
+        this.utc = utc;
+    }
+
+    public int getQf() {
+        return qf;
+    }
+
+    public void setQf(int qf) {
+        this.qf = qf;
+    }
+
+    public int getMap_id() {
+        return map_id;
+    }
+
+    public void setMap_id(int map_id) {
+        this.map_id = map_id;
+    }
+
+    public int getMove() {
+        return move;
+    }
+
+    public void setMove(int move) {
+        this.move = move;
+    }
+
+    public double getSpeed() {
+        return speed;
+    }
+
+    public void setSpeed(double speed) {
+        this.speed = speed;
+    }
+
+    public double getHeading() {
+        return heading;
+    }
+
+    public void setHeading(double heading) {
+        this.heading = heading;
+    }
+
+    public List<Double> getMain_ant() {
+        return main_ant;
+    }
+
+    public void setMain_ant(List<Double> main_ant) {
+        this.main_ant = main_ant;
+    }
+
+    public List<Integer> getAxial() {
+        return axial;
+    }
+
+    public void setAxial(List<Integer> axial) {
+        this.axial = axial;
+    }
+
+    public List<Integer> getLeft_front_tire() {
+        return left_front_tire;
+    }
+
+    public void setLeft_front_tire(List<Integer> left_front_tire) {
+        this.left_front_tire = left_front_tire;
+    }
+
+    public List<Integer> getRight_front_tire() {
+        return right_front_tire;
+    }
+
+    public void setRight_front_tire(List<Integer> right_front_tire) {
+        this.right_front_tire = right_front_tire;
+    }
+
+    public List<Integer> getLeft_rear_tire() {
+        return left_rear_tire;
+    }
+
+    public void setLeft_rear_tire(List<Integer> left_rear_tire) {
+        this.left_rear_tire = left_rear_tire;
+    }
+
+    public List<Integer> getRight_rear_tire() {
+        return right_rear_tire;
+    }
+
+    public void setRight_rear_tire(List<Integer> right_rear_tire) {
+        this.right_rear_tire = right_rear_tire;
+    }
+
+    public List<Double> getPoint() {
+        return point;
+    }
+
+    public void setPoint(List<Double> point) {
+        this.point = point;
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
index 986f967..a4c77f5 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
@@ -1,5 +1,6 @@
 package safeluck.drive.evaluation.fragment;
 
+import android.content.Context;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Color;
@@ -14,14 +15,26 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
+import android.widget.Toast;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.appcompat.widget.Toolbar;
 
 
+import com.anyun.exam.lib.MyLog;
+import com.google.gson.Gson;
+
+
+import java.util.List;
+
 import me.yokeyword.fragmentation.SupportFragment;
+import safeluck.drive.evaluation.Constant;
 import safeluck.drive.evaluation.R;
+import safeluck.drive.evaluation.bean.RealTimeCarPos;
+import safeluck.drive.evaluation.cEventCenter.CEventCenter;
+import safeluck.drive.evaluation.cEventCenter.ICEventListener;
+import safeluck.drive.evaluation.util.CThreadPoolExecutor;
 
 
 /**
@@ -30,18 +43,19 @@
  * 閭锛�632393724@qq.com
  * All Rights Saved! Chongqing AnYun Tech co. LTD
  */
-public class MapFragment extends SupportFragment{
+public class MapFragment extends SupportFragment {
     private boolean isDrawing = false;
 
-    public static SupportFragment newInstance(){
+    public static SupportFragment newInstance() {
         return new MapFragment();
     }
+
     private SurfaceView mSurfaceView;
     private static final String TAG = "MapFragment";
     private SurfaceHolder holder;
     Path path = new Path();
     private Canvas canvas;
-    private int x=-1;
+    private int x = -1;
     private int y = -1;
     private Toolbar toolbar;
 
@@ -52,15 +66,18 @@
     private String osd = null;
     private String osd2 = null;
     private String osd3 = null;
-
-
+    double map[][] = {{1, 1}, {10, 1}, {10, 10}, {1, 10}};
+    double car[][] = {{8.278, 1.467}, {7.2780000000000009, 1.467}, {7.2780000000000009, -1.533}, {8.278, -1.533}
+            , {9.278, -1.5330000000000004}, {9.277999999999999, 1.467000000000001}};
+    Gson gson;
     private LinearLayout linearLayout;//surfaceview鐨勭埗瀹瑰櫒锛屼负浜嗙Щ鍔╯urfaceview鑰屼娇鐢紝鍥犱负scrollto涓嶈兘绉诲姩view锛�
 
 
     @Nullable
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-        View view = inflater.inflate(R.layout.layout_mapfragment,container,false);
+        View view = inflater.inflate(R.layout.layout_mapfragment, container, false);
+        gson = new Gson();
         initView(view);
         return view;
     }
@@ -108,7 +125,7 @@
                     holder.unlockCanvasAndPost(canvas);
                 }
 
-                new Thread(new NeedForSpeed()).start();
+//                new Thread(new NeedForSpeed(car, map)).start();
             }
 
             @Override
@@ -125,16 +142,21 @@
 
 
     class NeedForSpeed implements Runnable {
+        public NeedForSpeed(double[][] car, double[][] map) {
+            DrawMap(map, car);
+        }
+
         @Override
         public void run() {
-            double map[][] = {{1,1}, {10,1}, {10,10}, {1,10}};
-            double car[][] = {{3,3}, {8,3}, {8,8}, {3,8}};
+
+//            double car[][] = {{3,3}, {8,3}, {8,8}, {3,8}};
+
 
             DrawMap(map, car);
         }
     }
 
-    public void DrawMap(final double [][]map, final double [][]car) {
+    public void DrawMap(final double[][] map, final double[][] car) {
         if (canvas2 == null || bmp == null) {
             return;
         }
@@ -205,10 +227,10 @@
                 Path path = new Path();
 
                 if (map.length != 9) {
-                    Log.d(TAG, "DrawMap X = " + String.format("%f", (float) (base_x + (map[0][0] - min_x) * scale_x)) + " Y = " +  String.format("%f", (float) (base_y + (map[0][1] - min_y) * scale_y)));
+                    Log.d(TAG, "DrawMap X = " + String.format("%f", (float) (base_x + (map[0][0] - min_x) * scale_x)) + " Y = " + String.format("%f", (float) (base_y + (map[0][1] - min_y) * scale_y)));
                     path.moveTo((float) (base_x + (map[0][0] - min_x) * scale_x), (float) (base_y + (map[0][1] - min_y) * scale_y));
                     for (int i = 1; i < map.length; i++) {
-                        Log.d(TAG, "DrawMap to X = " + (float) (base_x + (map[i][0] - min_x) * scale_x) + " Y = "+ (float) (base_y + (map[i][1] - min_y) * scale_y));
+                        Log.d(TAG, "DrawMap to X = " + (float) (base_x + (map[i][0] - min_x) * scale_x) + " Y = " + (float) (base_y + (map[i][1] - min_y) * scale_y));
                         path.lineTo((float) (base_x + (map[i][0] - min_x) * scale_x), (float) (base_y + (map[i][1] - min_y) * scale_y));
                     }
                     path.close();
@@ -230,9 +252,9 @@
                 }
                 canvas2.drawPath(path, paint);
 
-                path.moveTo((float) (base_x + (car[0][0] - min_x) * scale_x), (float) (base_y + (car[0][1] - min_y)*scale_y));
+                path.moveTo((float) (base_x + (car[0][0] - min_x) * scale_x), (float) (base_y + (car[0][1] - min_y) * scale_y));
                 for (int i = 1; i < car.length; i++)
-                    path.lineTo((float) (base_x + (car[i][0] - min_x) * scale_x), (float) (base_y + (car[i][1] - min_y)*scale_y));
+                    path.lineTo((float) (base_x + (car[i][0] - min_x) * scale_x), (float) (base_y + (car[i][1] - min_y) * scale_y));
                 path.close();
                 canvas2.drawPath(path, paint);
 
@@ -289,7 +311,39 @@
         });
     }
 
+    int line = 0;
+    private ICEventListener icEventListener = new ICEventListener() {
+        @Override
+        public void onCEvent(String topic, int msgCode, int resultCode, Object obj) {
+            MyLog.i(TAG, (String) obj);
+            RealTimeCarPos timeCarPos = gson.fromJson((String) obj, RealTimeCarPos.class);
+            List<Double> points = timeCarPos.getPoint();
+            line = 0;
 
+            for (int i = 0; i < points.size(); i++) {
+                if ((i % 2) == 0) {
+                    car[line][0] = points.get(i);
+                } else {
+                    double value = 0 - points.get(i);
+                    Log.i(TAG, "onCEvent: 鏂板��=" + value + " 浣嶇疆锛�" + i);
+                    car[line][1] = value;
+                    line++;
+                }
 
+            }
+            CThreadPoolExecutor.runInBackground(new NeedForSpeed(car,map));
+        }
+    };
 
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        CEventCenter.onBindEvent(true, icEventListener, Constant.REAL_TIME_POS_CAR_TOPIC);
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+        CEventCenter.onBindEvent(false, icEventListener, Constant.REAL_TIME_POS_CAR_TOPIC);
+    }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
index bcb7af0..6813dec 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
@@ -1,5 +1,6 @@
 package safeluck.drive.evaluation.fragment;
 
+import android.content.Context;
 import android.os.Bundle;
 
 import android.os.Handler;
@@ -40,6 +41,8 @@
 import safeluck.drive.evaluation.adapter.ScoreAdapter;
 import safeluck.drive.evaluation.DB.exam_status.ExamStatus;
 import safeluck.drive.evaluation.bean.ScoreBean;
+import safeluck.drive.evaluation.cEventCenter.CEventCenter;
+import safeluck.drive.evaluation.cEventCenter.ICEventListener;
 import safeluck.drive.evaluation.customview.ArrowView;
 import safeluck.drive.evaluation.customview.HouseView;
 
@@ -65,8 +68,12 @@
     private int item_id;//鎵e垎鍒嗘暟鎬诲拰
     private ExamStatusViewModel examStatusViewModel;
     private static final int ADD_DATA = 1;
+    private TextView tv_speed,tv_total_score;
+    private double speed=0.0;
 
+    private int currTotalScore = 100;
     private List<ScoreBean> mArrayList = new ArrayList<>();
+    private static final int SPEED_DATA = 2;
 
     public static SupportFragment newInstance() {
         return new NetWorkTrainFragment();
@@ -76,11 +83,15 @@
         @Override
         public boolean handleMessage(Message msg) {
             if (msg.what == ADD_DATA){
+                tv_total_score.setText(getResources().getString(R.string.total_score,currTotalScore));
                 houseView.setColor(whatPaintColor(examStatusList.get(0)));
                 av_podao.setColor(whatPaintColor(examStatusList.get(1)));
                 av_park.setColor(whatPaintColor(examStatusList.get(2)));
                 av_curve.setColor(whatPaintColor(examStatusList.get(3)));
                 av_zhijiao.setColor(whatPaintColor(examStatusList.get(4)));
+            }
+            if (msg.what == SPEED_DATA){
+                tv_speed.setText(getResources().getString(R.string.speed,speed));
             }
             return false;
         }
@@ -109,7 +120,10 @@
                         item_conents.add(f.getItem_content());
                         mScoreAdapter.addDatas(mArrayList);
                     }
-
+                    currTotalScore -=item_id;
+                    if (currTotalScore < Constant.PASSING_SCORE){
+                        MyLog.i(TAG,"浣庝簬80锛屼笉鍚堟牸");
+                    }
                     MyLog.i(TAG,"鐩戞祴鍒版湁澶辫触椤圭洰鍔犲叆锛岄�氱煡UI鏇存柊棰滆壊");
                     mHandler.obtainMessage(ADD_DATA).sendToTarget();
                 }
@@ -202,6 +216,10 @@
         av_zhijiao = view.findViewById(R.id.av4);
         houseView = view.findViewById(R.id.hv);
 
+        tv_speed = view.findViewById(R.id.tv_speed);
+        tv_total_score = view.findViewById(R.id.tv_total_score);
+        tv_speed.setText(getResources().getString(R.string.speed,speed));
+
         view.findViewById(R.id.btn_return).setOnClickListener(this);
         mListView = view.findViewById(R.id.lv);
         mListView.setFocusable(false);
@@ -260,5 +278,22 @@
         }
     }
 
+    private ICEventListener icEventListener = new ICEventListener() {
+        @Override
+        public void onCEvent(String topic, int msgCode, int resultCode, Object obj) {
+            speed  = (double)obj;
+            mHandler.obtainMessage(SPEED_DATA).sendToTarget();
+        }
+    };
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        CEventCenter.onBindEvent(true,icEventListener,Constant.BIND_SPEED_TOPIC);
+    }
 
+    @Override
+    public void onDetach() {
+        super.onDetach();
+        CEventCenter.onBindEvent(false,icEventListener,Constant.BIND_SPEED_TOPIC);
+    }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
index 8c3dc88..e3e6f0c 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -18,6 +18,7 @@
 import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.ListView;
+import android.widget.TextView;
 import android.widget.Toast;
 
 import com.anyun.exam.lib.AYSdk;
@@ -68,35 +69,33 @@
 
     private ExamStatusViewModel examStatusViewModel;
     private static final int ADD_DATA = 1;
+    private static final int SPEED_DATA = 2;
 
     private List<ScoreBean> mArrayList = new ArrayList<>();
     private View tv_stop;
-
+    private TextView tv_speed,tv_total_score;
+    private int currTotalScore = 100;
+    private double speed=0.0;
 
     private Handler mHandler = new Handler(new Handler.Callback() {
         @Override
         public boolean handleMessage(Message msg) {
             if (msg.what == ADD_DATA){
+                tv_total_score.setText(getResources().getString(R.string.total_score,currTotalScore));
                 houseView.setColor(whatPaintColor(examStatusList.get(0)));
                 av_podao.setColor(whatPaintColor(examStatusList.get(1)));
                 av_park.setColor(whatPaintColor(examStatusList.get(2)));
                 av_curve.setColor(whatPaintColor(examStatusList.get(3)));
                 av_zhijiao.setColor(whatPaintColor(examStatusList.get(4)));
             }
+            if (msg.what == SPEED_DATA){
+                tv_speed.setText(getResources().getString(R.string.speed,speed));
+            }
             return false;
         }
     });
 
 
-    @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-    }
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-    }
 
     public static SupportFragment newInstance(){
         return new TrainFragment();
@@ -126,6 +125,10 @@
                         mArrayList.add(new ScoreBean(f.getScore_deducting(), f.getItem_content(), f.getDeducting_reason()));
                         item_conents.add(f.getItem_content());
                         mScoreAdapter.addDatas(mArrayList);
+                    }
+                    currTotalScore -=item_id;
+                    if (currTotalScore < Constant.PASSING_SCORE){
+                        MyLog.i(TAG,"浣庝簬80锛屼笉鍚堟牸");
                     }
 
                     MyLog.i(TAG,"鐩戞祴鍒版湁澶辫触椤圭洰鍔犲叆锛岄�氱煡UI鏇存柊棰滆壊");
@@ -172,6 +175,9 @@
         av_zhijiao = view.findViewById(R.id.av4);
         houseView = view.findViewById(R.id.hv);
 
+        tv_speed = view.findViewById(R.id.tv_speed);
+        tv_total_score = view.findViewById(R.id.tv_total_score);
+        tv_speed.setText(getResources().getString(R.string.speed,speed));
         view.findViewById(R.id.btn_return).setOnClickListener(this);
         mListView = view.findViewById(R.id.lv);
         tv_stop = view.findViewById(R.id.tv_stop);
@@ -279,4 +285,23 @@
                 break;
         }
     }
+
+    private ICEventListener icEventListener = new ICEventListener() {
+        @Override
+        public void onCEvent(String topic, int msgCode, int resultCode, Object obj) {
+            speed  = (double)obj;
+            mHandler.obtainMessage(SPEED_DATA).sendToTarget();
+        }
+    };
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        CEventCenter.onBindEvent(true,icEventListener,Constant.BIND_SPEED_TOPIC);
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+        CEventCenter.onBindEvent(false,icEventListener,Constant.BIND_SPEED_TOPIC);
+    }
 }
diff --git a/app/src/main/res/layout/layout_net_train.xml b/app/src/main/res/layout/layout_net_train.xml
index 0488238..152bb34 100644
--- a/app/src/main/res/layout/layout_net_train.xml
+++ b/app/src/main/res/layout/layout_net_train.xml
@@ -29,7 +29,7 @@
             android:gravity="center"
             android:padding="10dp"
             android:id="@+id/tv_speed"
-            android:text="杞﹂�燂細"/>
+            android:text="@string/speed"/>
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
@@ -37,7 +37,7 @@
             android:id="@+id/tv_pos"
             android:padding="10dp"
             android:gravity="center"
-            android:text="宸茶椹讹細45km"/>
+            android:text="@string/licheng"/>
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/profile_layout.xml b/app/src/main/res/layout/profile_layout.xml
index 9bc183f..3a91a49 100644
--- a/app/src/main/res/layout/profile_layout.xml
+++ b/app/src/main/res/layout/profile_layout.xml
@@ -146,7 +146,8 @@
             android:textColor="@android:color/white"
             android:background="@android:color/holo_green_dark"
             android:padding="5dp"
-            android:text="100" />
+            android:id="@+id/tv_total_score"
+            android:text="@string/total_score" />
 
         <TextView
             android:layout_width="wrap_content"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 55e1578..ae4c702 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -24,4 +24,7 @@
     <string name="rtk_config_sn">SN:%1$s</string>
     <string name="rtk_connect_status">RTK杩炴帴鐘舵�侊細%1$d</string>
     <string name="rtk_config_login">RTK鐧诲綍缁撴灉锛�%1$d</string>
+    <string name="speed">杞﹂��:%1$.2fkm/h</string>
+    <string name="licheng">宸茶椹�:451km</string>
+    <string name="total_score">%1$d</string>
 </resources>

--
Gitblit v1.8.0