From 82e853c976f0d268df2b493b2db89671748f35a6 Mon Sep 17 00:00:00 2001
From: lizhanwei <Dana_Lee1016@126.com>
Date: 星期四, 02 四月 2020 11:02:58 +0800
Subject: [PATCH] 实现从"https://trainsim-api.aaej.cn/"获取map和car模型的http接口

---
 app/src/main/java/safeluck/drive/evaluation/app.java                                   |   22 ++--
 app/src/main/java/safeluck/drive/evaluation/httpmodule/GsonConverterFactory.java       |   44 ++++++++
 app/src/main/java/safeluck/drive/evaluation/httpmodule/MyGsonRequestBodyConverter.java |   45 +++++++++
 app/src/main/java/safeluck/drive/evaluation/httpmodule/RetrofitCreator.kt              |   17 +++
 build.gradle                                                                           |    3 
 app/src/main/java/safeluck/drive/evaluation/httpmodule/AYApiService.java               |   22 ++++
 app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java                |    7 
 app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java                  |   78 +++++++++++----
 app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpRequetBean.kt               |    3 
 app/build.gradle                                                                       |    5 +
 10 files changed, 209 insertions(+), 37 deletions(-)

diff --git a/app/build.gradle b/app/build.gradle
index 2f7d9fa..7a6e630 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
         versionName "1.0"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
+    compileOptions {
+        sourceCompatibility 1.8
+        targetCompatibility 1.8
+    }
     buildTypes {
         release {
             minifyEnabled false
@@ -64,6 +68,7 @@
     implementation "androidx.core:core-ktx:+"
     implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.1.0"
     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+    implementation "com.squareup.retrofit2:retrofit:$rootProject.retrofit_version"
 }
 repositories {
     mavenCentral()
diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java
index 54f88f9..abba3b8 100644
--- a/app/src/main/java/safeluck/drive/evaluation/app.java
+++ b/app/src/main/java/safeluck/drive/evaluation/app.java
@@ -3,6 +3,7 @@
 import android.app.Application;
 import android.content.Context;
 import android.os.Environment;
+import android.os.Looper;
 import android.text.TextUtils;
 import android.util.Log;
 import android.widget.Toast;
@@ -34,9 +35,15 @@
 import org.json.JSONException;
 import org.json.JSONObject;
 
+import java.io.File;
+import java.io.IOException;
 import java.util.Date;
 import java.util.Random;
 
+import okhttp3.ResponseBody;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
 import safeluck.drive.evaluation.DB.WorkRoomDataBase;
 import safeluck.drive.evaluation.DB.appstatusdb.AppStatusWorker;
 import safeluck.drive.evaluation.DB.criterias.CriteriaForI;
@@ -56,6 +63,8 @@
 import safeluck.drive.evaluation.bean.ExamPlatformData;
 import safeluck.drive.evaluation.cEventCenter.CEvent;
 import safeluck.drive.evaluation.cEventCenter.CEventCenter;
+import safeluck.drive.evaluation.httpmodule.HttpRequetBean;
+import safeluck.drive.evaluation.httpmodule.RetrofitCreator;
 import safeluck.drive.evaluation.im.IMSClientBootstrap;
 import safeluck.drive.evaluation.im.IMSConnectStatusListener;
 import safeluck.drive.evaluation.im.MessageProcessor;
@@ -84,7 +93,6 @@
     private static final String TAG = "app";
     private Gson gson;
     RTKConfig rtkConfig;
-    FailedProjRepository failedProjRepository;//澶辫触椤圭洰琛ㄦ暟鎹簱
     Random random = new Random();
     private static Context appContext=null;
     @Override
@@ -114,16 +122,8 @@
             //鏁版嵁搴撴搷浣�
             MyLog.i(TAG, "onCreate111");
             FileUtil.createdirs(getApplicationContext());
-            failedProjRepository = new FailedProjRepository(this);
-            MyLog.i(TAG,"鎷疯礉assert鐩綍涓嬬殑map" +
-                    "鍜寁echile json鍒板寘鐩綍涓�");
-            new Thread(new Runnable() {
-                @Override
-                public void run() {
-                    FileUtil.copyAssertFileToSD(getApplicationContext(),Constant.MAP);
-                    FileUtil.copyAssertFileToSD(getApplicationContext(),Constant.VEHICLE);
-                }
-            }).start();
+           //1.鍏堟鏌d鍗″寘鍚嶇殑鐩綍涓嬶紝鏄惁瀛樺湪鍦板浘鏂囦欢鍜岃溅杈嗘ā鍨嬫枃浠�
+            //2. 濡傛灉涓嶈兘鍐嶅氨鍘讳笅杞�
 
 
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
index 6564fe4..99a1fbc 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
@@ -5,6 +5,7 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
+import android.os.Looper;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -12,6 +13,7 @@
 import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.TextView;
+import android.widget.Toast;
 
 import androidx.appcompat.widget.AppCompatEditText;
 import androidx.lifecycle.Observer;
@@ -22,6 +24,7 @@
 import com.google.android.material.textfield.TextInputEditText;
 import com.safeluck.aykj.utils.BytesUtils;
 
+import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.util.Date;
 import java.util.concurrent.Executors;
@@ -29,10 +32,18 @@
 import java.util.concurrent.TimeUnit;
 
 import me.yokeyword.fragmentation.SupportFragment;
+import okhttp3.ResponseBody;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+import retrofit2.Retrofit;
 import safeluck.drive.evaluation.DB.criterias.CriteriaForI;
 import safeluck.drive.evaluation.DB.criterias.viewmodel.CriteriaIViewModel;
 import safeluck.drive.evaluation.R;
 import safeluck.drive.evaluation.bean.ExamPlatformData;
+import safeluck.drive.evaluation.httpmodule.AYApiService;
+import safeluck.drive.evaluation.httpmodule.HttpRequetBean;
+import safeluck.drive.evaluation.httpmodule.RetrofitCreator;
 import safeluck.drive.evaluation.im.MessageProcessor;
 import safeluck.drive.evaluation.platformMessage.AttachInfo;
 import safeluck.drive.evaluation.platformMessage.JKMessage0001;
@@ -45,6 +56,7 @@
 import safeluck.drive.evaluation.platformMessage.JKMessage0204;
 import safeluck.drive.evaluation.im.IMSClientBootstrap;
 import safeluck.drive.evaluation.platformMessage.JKMessage0206;
+import safeluck.drive.evaluation.util.CThreadPoolExecutor;
 import safeluck.drive.evaluation.util.SPUtils;
 
 import static safeluck.drive.evaluation.util.Utils.utc2NetWorkTime;
@@ -132,31 +144,53 @@
                 /**======================娴嬭瘯鏁版嵁搴撶粨鏉�==================*/
 
 
-                Speaker speaker = new Speaker(getActivity(),null);
-                speaker.speak("涓浗鍔犳补锛岄噸搴嗗姞娌�");
+//                Speaker speaker = new Speaker(getActivity(),null);
+//                speaker.speak("涓浗鍔犳补锛岄噸搴嗗姞娌�");
+//
+//                String userId = "100002";
+//                String token = "token_" + userId;
+////                String hosts = "[{\"host\":\"47.93.80.84\", \"port\":12125}]";
+//                String hosts = "[{\"host\":\"47.93.157.103\", \"port\":2020}]";
+////                String hosts = "[{\"host\":\"192.168.31.77\", \"port\":12125}]";
+//
+//                IMSClientBootstrap.getInstance().init(userId, token, hosts, 1, new IMSConnectStatusCallback() {
+//                    @Override
+//                    public void onConnecting() {
+//
+//                    }
+//
+//                    @Override
+//                    public void onConnected() {
+//
+//                    }
+//
+//                    @Override
+//                    public void onConnectFailed() {
+//
+//                    }
+//                });
 
-                String userId = "100002";
-                String token = "token_" + userId;
-//                String hosts = "[{\"host\":\"47.93.80.84\", \"port\":12125}]";
-                String hosts = "[{\"host\":\"47.93.157.103\", \"port\":2020}]";
-//                String hosts = "[{\"host\":\"192.168.31.77\", \"port\":12125}]";
+                        RetrofitCreator.Companion.getRestService().getMapsAndVehicleModel(new HttpRequetBean("0314200100000004","place")).enqueue(new Callback<ResponseBody>() {
+                            @Override
+                            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
+                                String str = null;
+                                try {
+                                    str = response.body().string();
+                                } catch (IOException e) {
+                                    e.printStackTrace();
+                                }
+                                Log.i(TAG,"鏈嶅姟鍣ㄨ繑鍥炵殑body="+str);
+                                if (Looper.myLooper()==Looper.getMainLooper()){
+                                    Toast.makeText(_mActivity, "涓荤嚎绋�", Toast.LENGTH_SHORT).show();
+                                }
+                            }
 
-                IMSClientBootstrap.getInstance().init(userId, token, hosts, 1, new IMSConnectStatusCallback() {
-                    @Override
-                    public void onConnecting() {
+                            @Override
+                            public void onFailure(Call<ResponseBody> call, Throwable t) {
+                                Log.i(TAG,t.getLocalizedMessage());
+                            }
+                        });
 
-                    }
-
-                    @Override
-                    public void onConnected() {
-
-                    }
-
-                    @Override
-                    public void onConnectFailed() {
-
-                    }
-                });
                 break;
             case R.id.btn_send:
 //                if (connectThread != null){
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 63545e0..4ce4f3b 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -304,7 +304,7 @@
                             if (examStatus.getResult() ==1){
                                 MyLog.i(String.format("宸茬粡鎾斁杩�%s鍚堟牸",ss));
                             }else{
-                                ExamPlatformData.getInstance().getTTS().speak(String.format("%s鍚堟牸",ss));
+//                                ExamPlatformData.getInstance().getTTS().speak(String.format("%s鍚堟牸",ss));
                                 examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id());
                             }
 
@@ -447,9 +447,11 @@
                     if (examStatus.get(0).getStartExam() != Constant.NONE_BEEN_START_EXAM){
                         btn_start_exam.setEnabled(false);
                         tv_stop.setEnabled(true);
+                        iv_head.getDrawable().setLevel(1);
                     }else{
                         btn_start_exam.setEnabled(true);
                         tv_stop.setEnabled(false);
+                        iv_head.getDrawable().setLevel(0);
                     }
                     exam_type = examStatus.get(0).getStartExam();
                 }
@@ -606,7 +608,6 @@
                     public void changKao() {
 
                         exam_type = 2;
-                        iv_head.getDrawable().setLevel(1);
                         ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.TRAINING_MODE);
                         ExamPlatformData.getInstance().setExamType(exam_type);
                         examStatusViewModel.updateStartExam(exam_type);
@@ -703,7 +704,7 @@
         failedProjViewModel.deleteAll();
 
         tv_total_score.setText(String.valueOf(currTotalScore));
-        iv_head.getDrawable().setLevel(0);
+
 
         ExamPlatformData.getInstance().getTTS().speak("缁撴潫璁粌");
         examStatusViewModel.updateStartExam(Constant.NONE_BEEN_START_EXAM);
diff --git a/app/src/main/java/safeluck/drive/evaluation/httpmodule/AYApiService.java b/app/src/main/java/safeluck/drive/evaluation/httpmodule/AYApiService.java
new file mode 100644
index 0000000..68eda9e
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/httpmodule/AYApiService.java
@@ -0,0 +1,22 @@
+package safeluck.drive.evaluation.httpmodule;
+
+import okhttp3.ResponseBody;
+import retrofit2.Call;
+import retrofit2.http.Body;
+import retrofit2.http.HEAD;
+import retrofit2.http.Headers;
+import retrofit2.http.POST;
+
+public interface AYApiService {
+
+//    鍦板潃锛歨ttps://trainsim-api.aaej.cn/api/get/area
+//    鍙傛暟锛�
+//    {
+//        sn:"0314200100000002",
+//                area_type:"place"
+//    }
+//    璇存槑锛歅OST璇锋眰锛屽満鍦癮rea_type浼爌lace,杞︽ā鍨媋rea_type浼燾ar
+
+    @POST("api/get/area")
+    Call<ResponseBody> getMapsAndVehicleModel(@Body HttpRequetBean httpRequetBean);
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/httpmodule/GsonConverterFactory.java b/app/src/main/java/safeluck/drive/evaluation/httpmodule/GsonConverterFactory.java
new file mode 100644
index 0000000..25dbe90
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/httpmodule/GsonConverterFactory.java
@@ -0,0 +1,44 @@
+package safeluck.drive.evaluation.httpmodule;
+
+import com.google.gson.Gson;
+import com.google.gson.TypeAdapter;
+import com.google.gson.reflect.TypeToken;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+
+import javax.annotation.Nullable;
+
+import okhttp3.RequestBody;
+import retrofit2.Converter;
+import retrofit2.Retrofit;
+
+public class GsonConverterFactory extends Converter.Factory {
+
+
+    @NotNull
+    public static Converter.Factory create() {
+        return create(new Gson());
+    }
+
+    private static Converter.Factory create(Gson gson) {
+        return new GsonConverterFactory(gson);
+    }
+
+    private final Gson gson;
+    private GsonConverterFactory(Gson gson){
+        if (gson == null){
+            throw new NullPointerException("gson == null");
+        }
+        this.gson = gson;
+    }
+
+    @Nullable
+    @Override
+    public Converter<?, RequestBody> requestBodyConverter(Type type, Annotation[] parameterAnnotations, Annotation[] methodAnnotations, Retrofit retrofit) {
+        TypeAdapter<?> adapter = gson.getAdapter(TypeToken.get(type));
+        return new MyGsonRequestBodyConverter<>(gson,adapter);
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpRequetBean.kt b/app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpRequetBean.kt
new file mode 100644
index 0000000..31b5ac9
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpRequetBean.kt
@@ -0,0 +1,3 @@
+package safeluck.drive.evaluation.httpmodule
+
+data class HttpRequetBean(var sn:String,var area_type:String)
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/httpmodule/MyGsonRequestBodyConverter.java b/app/src/main/java/safeluck/drive/evaluation/httpmodule/MyGsonRequestBodyConverter.java
new file mode 100644
index 0000000..cf2f999
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/httpmodule/MyGsonRequestBodyConverter.java
@@ -0,0 +1,45 @@
+package safeluck.drive.evaluation.httpmodule;
+
+import com.google.gson.Gson;
+import com.google.gson.TypeAdapter;
+import com.google.gson.stream.JsonWriter;
+
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.nio.charset.Charset;
+
+import javax.annotation.Nullable;
+
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
+import okio.Buffer;
+import retrofit2.Converter;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+public class MyGsonRequestBodyConverter<T> implements Converter<T, RequestBody> {
+
+    private static final MediaType MEDIA_TYPE = MediaType.parse("application/json; charset=UTF-8");
+    private static final Charset UTF_8 = Charset.forName("UTF-8");
+
+    private final Gson gson;
+    private final TypeAdapter<T> adapter;
+
+    public MyGsonRequestBodyConverter(Gson gson, TypeAdapter<T> adapter) {
+        this.gson = gson;
+        this.adapter = adapter;
+    }
+
+    @Nullable
+    @Override
+    public RequestBody convert(T value) throws IOException {
+        Buffer buffer = new Buffer();
+        Writer writer = new OutputStreamWriter(buffer.outputStream(), UTF_8);
+        JsonWriter jsonWriter = gson.newJsonWriter(writer);
+        adapter.write(jsonWriter, value);
+        jsonWriter.close();
+        return RequestBody.create(MEDIA_TYPE, buffer.readByteString());
+
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/httpmodule/RetrofitCreator.kt b/app/src/main/java/safeluck/drive/evaluation/httpmodule/RetrofitCreator.kt
new file mode 100644
index 0000000..117ba49
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/httpmodule/RetrofitCreator.kt
@@ -0,0 +1,17 @@
+package safeluck.drive.evaluation.httpmodule
+
+import retrofit2.Retrofit
+
+class RetrofitCreator{
+    companion object{
+        private val BASE_URL = "https://trainsim-api.aaej.cn/"
+        private val RETROFIT_CLIENT = Retrofit.Builder().baseUrl(BASE_URL)
+                .addConverterFactory(GsonConverterFactory.create()).build()
+
+        private val REST_SERVICE = RETROFIT_CLIENT.create(AYApiService::class.java)
+
+        public fun getRestService()=REST_SERVICE
+    }
+
+
+}
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index a9e1add..cf25b67 100644
--- a/build.gradle
+++ b/build.gradle
@@ -11,9 +11,10 @@
         roomVersion  ='2.2.1'
         workVersion  ='2.2.0'
         lifecycleVersion = '2.1.0'
+        retrofit_version = '2.8.1'
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.5.0'
+        classpath 'com.android.tools.build:gradle:3.5.3'
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
 
         // NOTE: Do not place your application dependencies here; they belong

--
Gitblit v1.8.0