package safeluck.drive.evaluation.fragment; import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; 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 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.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 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.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.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() { } }); 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() { @Override public void onChanged(CriteriaForI criteriaForI) { Log.i(TAG, "onChanged: "+criteriaForI.toString()); } }); } }