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