app/build.gradle | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/app.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/httpmodule/AYApiService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/httpmodule/GsonConverterFactory.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpRequetBean.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/httpmodule/MyGsonRequestBodyConverter.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/httpmodule/RetrofitCreator.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
build.gradle | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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() 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" + "和vechile json到包目录下"); new Thread(new Runnable() { @Override public void run() { FileUtil.copyAssertFileToSD(getApplicationContext(),Constant.MAP); FileUtil.copyAssertFileToSD(getApplicationContext(),Constant.VEHICLE); } }).start(); //1.先检查sd卡包名的目录下,是否存在地图文件和车辆模型文件 //2. 如果不能再就去下载 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){ 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); app/src/main/java/safeluck/drive/evaluation/httpmodule/AYApiService.java
New file @@ -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 { // 地址:https://trainsim-api.aaej.cn/api/get/area // 参数: // { // sn:"0314200100000002", // area_type:"place" // } // 说明:POST请求,场地area_type传place,车模型area_type传car @POST("api/get/area") Call<ResponseBody> getMapsAndVehicleModel(@Body HttpRequetBean httpRequetBean); } app/src/main/java/safeluck/drive/evaluation/httpmodule/GsonConverterFactory.java
New file @@ -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); } } app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpRequetBean.kt
New file @@ -0,0 +1,3 @@ package safeluck.drive.evaluation.httpmodule data class HttpRequetBean(var sn:String,var area_type:String) app/src/main/java/safeluck/drive/evaluation/httpmodule/MyGsonRequestBodyConverter.java
New file @@ -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()); } } app/src/main/java/safeluck/drive/evaluation/httpmodule/RetrofitCreator.kt
New file @@ -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 } } 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