package safeluck.drive.evaluation.fragment;
|
|
import android.os.Bundle;
|
|
import androidx.annotation.NonNull;
|
import androidx.annotation.Nullable;
|
|
import android.os.Looper;
|
import android.text.TextUtils;
|
import android.util.Log;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
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;
|
|
import com.anyun.exam.lib.util.Speaker;
|
import com.anyun.im_lib.listener.IMSConnectStatusCallback;
|
import com.anyun.im_lib.util.ByteUtil;
|
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;
|
import java.util.concurrent.ScheduledExecutorService;
|
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;
|
import safeluck.drive.evaluation.platformMessage.JKMessage0002;
|
import safeluck.drive.evaluation.platformMessage.JKMessage0100;
|
import safeluck.drive.evaluation.platformMessage.JKMessage0101;
|
import safeluck.drive.evaluation.platformMessage.JKMessage0201;
|
import safeluck.drive.evaluation.platformMessage.JKMessage0202;
|
import safeluck.drive.evaluation.platformMessage.JKMessage0203;
|
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;
|
|
/**
|
* MyApplication2
|
* Created by lzw on 2019/10/21. 17:56:51
|
* 邮箱:632393724@qq.com
|
* All Rights Saved! Chongqing AnYun Tech co. LTD
|
*/
|
public class TcpFragment extends SupportFragment implements View.OnClickListener {
|
|
|
private static final String TAG = TcpFragment.class.getSimpleName();
|
private TextInputEditText ip;
|
private TextInputEditText port;
|
private TextView tv_content;
|
private Button btn_connect;
|
private Button btn_auth;
|
private Button btn_send;
|
private AppCompatEditText sendEditText;
|
private CriteriaIViewModel workViewModel;
|
private int item_id=0;
|
|
public static TcpFragment newInstance() {
|
return new TcpFragment();
|
}
|
|
@Nullable
|
@Override
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
View view = inflater.inflate(R.layout.layout_tcpclient, container, false);
|
initView(view);
|
// workViewModel =ViewModelProviders.of(this).get(CriteriaIViewModel.class);
|
|
|
|
return view;
|
}
|
|
private void initView(View view) {
|
ip = view.findViewById(R.id.input_ip);
|
port = view.findViewById(R.id.input_port);
|
sendEditText = view.findViewById(R.id.sendtxt);
|
tv_content = view.findViewById(R.id.content);
|
|
btn_connect = view.findViewById(R.id.btn_connect);
|
btn_send = view.findViewById(R.id.btn_send);
|
view.findViewById(R.id.btn_register).setOnClickListener(this);
|
btn_auth = view.findViewById(R.id.btn_auth);
|
btn_auth.setOnClickListener(this);
|
view.findViewById(R.id.btn_gain).setOnClickListener(this);
|
view.findViewById(R.id.btn_start_exam).setOnClickListener(this);
|
view.findViewById(R.id.btn_stop_exam).setOnClickListener(this);
|
view.findViewById(R.id.btn_fail).setOnClickListener(this);
|
view.findViewById(R.id.btn_gps).setOnClickListener(this);
|
view.findViewById(R.id.btn_keepalive).setOnClickListener(this);
|
|
btn_send.setOnClickListener(this);
|
btn_connect.setOnClickListener(this);
|
}
|
int r ; boolean flag;
|
@Override
|
public void onClick(View v) {
|
switch (v.getId()){
|
case R.id.btn_connect:
|
|
// String serverIp = ip.getText().toString().trim();
|
// String serverPort = port.getText().toStrirng().trim();
|
// connectThread = new ConnectThread(serverIp,Integer.parseInt(serverPort));
|
// connectThread.start();
|
|
/**======================以下用于测试数据库==================*/
|
// Random random = new Random();
|
// r = random.nextInt(30)+1;
|
// Log.i(TAG, "onClick: 随机数="+r);
|
// WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() {
|
// @Override
|
// public void run() {
|
//
|
// WorkRoomDataBase.getWorkRoomDataBase(getContext().getApplicationContext()).getFailProjDao().insert(new FailedProj(flag?1:2, r,flag?1001:1000));
|
// flag = !flag;
|
// }
|
// });
|
/**======================测试数据库结束==================*/
|
|
|
// 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() {
|
//
|
// }
|
// });
|
|
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();
|
}
|
}
|
|
@Override
|
public void onFailure(Call<ResponseBody> call, Throwable t) {
|
Log.i(TAG,t.getLocalizedMessage());
|
}
|
});
|
|
break;
|
case R.id.btn_send:
|
// if (connectThread != null){
|
//// connectThread.sendMessage(sendEditText.getText().toString().trim());
|
//// sendEditText.getText().clear();
|
//// }
|
|
|
|
ByteUtil.str2Bcd("13021245");
|
String strbcd=ByteUtil.bcd2Str(ByteUtil.str2Bcd("13021245"));
|
Log.i(TAG, "onClick: strbcd="+strbcd);
|
|
|
JKMessage0001 jkClientCommonMessage =new JKMessage0001();
|
jkClientCommonMessage.setMessageLen(5);
|
jkClientCommonMessage.respMessageId = "8001";
|
jkClientCommonMessage.respNo = 15;
|
jkClientCommonMessage.result =1;
|
String str1 = jkClientCommonMessage.toString();
|
|
Log.i(TAG, "onClick1: "+ str1+" ============");
|
String hex = "B7 A2 B6 AF BB FA C6 F4 B6 AF BA F3 A3 AC B2 BB BC B0 CA B1 CB C9 BF AA C6 F4 B6 AF BF AA B9 D8";
|
String jsonGps = "7B22757463223A2232303037303130313036323135362E3830222C227166223A302C22636F6F72645F78223A2D33303631313736332E3436312C22636F6F72645F785F646972223A224E222C22636F6F72645F79223A2D333236363036392E3635332C22636F6F72645F795F646972223A2245222C2268656164696E67223A302E302C227069746368223A302E302C22726F6C6C223A302E307D0A7B22757463223A2232303037303130313036323135372E3030222C227361745F6E756D223A302C227166223A302C226C61746974756465223A302E302C226C6F6E676974756465223A302E302C22616C746974756465223A2D363337383135342E3136322C227370656564223A302E307D";
|
|
String string = null;
|
try {
|
string = new String(BytesUtils.hexStringToBytes(hex.replace(" ","")),"GBK");
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}String json = null;
|
try {
|
json = new String(BytesUtils.hexStringToBytes(jsonGps),"GBK");
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
Log.i(TAG, "onClick: jsongps="+json);
|
break;
|
case R.id.btn_register:
|
String hexPwd = (String) SPUtils.get(getActivity(),SPUtils.DES_HEX_PWD,"");
|
if (TextUtils.isEmpty(hexPwd)){
|
|
JKMessage0100 jkRegisterMessage = new JKMessage0100();
|
jkRegisterMessage.proviceid = 23;
|
jkRegisterMessage.cityid = 1;
|
jkRegisterMessage.imei = "460123874561";
|
jkRegisterMessage.model = "123";
|
jkRegisterMessage.sn = "0314200100000004";
|
|
Log.i(TAG, "onClick: msg len "+jkRegisterMessage.getMessageLen()+" "+ jkRegisterMessage.props.value);
|
byte[] str = jkRegisterMessage.toBytes();
|
MessageProcessor.getInstance().sendMessage(jkRegisterMessage);
|
Log.i(TAG, "onClick: "+ BytesUtils.bytesToHexString(str)+" ============");
|
}else{
|
Log.i(TAG, "onClick: 密码="+hexPwd);
|
btn_auth.performClick();
|
}
|
break;
|
case R.id.btn_auth:
|
JKMessage0101 jkMessage0101 = new JKMessage0101();
|
jkMessage0101.des ="0102030405060708";
|
jkMessage0101.timestamp = (int) System.currentTimeMillis();
|
MessageProcessor.getInstance().sendMessage(jkMessage0101);
|
break;
|
case R.id.btn_gain:
|
JKMessage0201 jkMessage0201 = new JKMessage0201();
|
jkMessage0201.currentExam = 1;
|
jkMessage0201.id = "123456789";
|
MessageProcessor.getInstance().sendMessage(jkMessage0201);
|
break;
|
case R.id.btn_start_exam:
|
JKMessage0202 jkMessage0202 = new JKMessage0202();
|
jkMessage0202.timeBCD = new Date();
|
jkMessage0202.curr_exam = 1;
|
jkMessage0202.ID = "123456789";
|
jkMessage0202.exam_id = ExamPlatformData.getInstance().getExam_id();
|
MessageProcessor.getInstance().sendMessage(jkMessage0202);
|
break;
|
case R.id.btn_fail:
|
JKMessage0203 jkMessage0203 = new JKMessage0203();
|
// jkMessage0203.timeBCD = new Date(utc2NetWorkTime("20200330101455"));
|
jkMessage0203.fail_item_id = 4;
|
jkMessage0203.fail_score = 10;
|
jkMessage0203.fail_reason = "发动机启动后,不及时松开启动开关";
|
jkMessage0203.ID = "123456789";
|
jkMessage0203.exam_id = 123456;
|
MessageProcessor.getInstance().sendMessage(jkMessage0203);
|
break;
|
case R.id.btn_gps:
|
JKMessage0206 jkMessage0206 = new JKMessage0206();
|
jkMessage0206.alert = 0;
|
jkMessage0206.status = 0;
|
jkMessage0206.json = "{\"utc\":\"20070101062156.80\",\"qf\":0,\"coord_x\":-30611763.461,\"coord_x_dir\":\"N\",\"coord_y\":-3266069.653,\"coord_y_dir\":\"E\",\"heading\":0.0,\"pitch\":0.0,\"roll\":0.0}\n" +
|
"{\"utc\":\"20070101062157.00\",\"sat_num\":0,\"qf\":0,\"latitude\":0.0,\"longitude\":0.0,\"altitude\":-6378154.162,\"speed\":0.0}";
|
jkMessage0206.length = jkMessage0206.json.length();
|
AttachInfo attachInfo = new AttachInfo();
|
attachInfo.attach_message_id = Integer.parseInt(port.getText().toString().trim());
|
attachInfo.attach_message_length = 4;
|
Log.i(TAG, "attachInfo.attach_message_id ="+attachInfo.attach_message_id );
|
if (attachInfo.attach_message_id == 0x41){
|
Log.i(TAG, "onClick: 41");
|
attachInfo.attach_data="00000000";
|
}else{
|
|
//18个字节 ascii
|
attachInfo.attach_data="303030303030303030303030303030303030";
|
}
|
|
jkMessage0206.attachInfo = attachInfo;
|
Log.i(TAG, "位置上报="+jkMessage0206.toString());
|
MessageProcessor.getInstance().sendMessage(jkMessage0206);
|
break;
|
case R.id.btn_stop_exam:
|
JKMessage0204 jkMessage0204 = new JKMessage0204();
|
jkMessage0204.phone = "0314200100000004";
|
jkMessage0204.timeBCD = new Date();
|
jkMessage0204.score = 10;
|
jkMessage0204.stop = JKMessage0204.SUCC_STOP;
|
jkMessage0204.ID = "123456789";
|
jkMessage0204.exam_id = 123456;
|
MessageProcessor.getInstance().sendMessage(jkMessage0204);
|
break;
|
case R.id.btn_keepalive:
|
ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
|
scheduledExecutorService.scheduleWithFixedDelay(new Runnable() {
|
@Override
|
public void run() {
|
JKMessage0002 jkMessage0002 = new JKMessage0002();
|
// jkMessage0002.checksum = 0x7e;
|
MessageProcessor.getInstance().sendMessage(jkMessage0002);
|
Log.i(TAG, "run: 5s一次");
|
}
|
},1,5, TimeUnit.SECONDS);
|
|
break;
|
}
|
}
|
|
private void checkCriteria(int item_id) {
|
workViewModel.queryCriteriaI(item_id).observe(TcpFragment.this, new Observer<CriteriaForI>() {
|
@Override
|
public void onChanged(CriteriaForI criteriaForI) {
|
Log.i(TAG, "onChanged: "+criteriaForI.toString());
|
}
|
});
|
}
|
}
|