package safeluck.drive.evaluation; import android.Manifest; import android.app.AlertDialog; import com.anyun.basecommonlib.MyLog; import android.content.DialogInterface; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProviders; import me.yokeyword.fragmentation.SupportActivity; import safeluck.drive.evaluation.DB.appstatusdb.AppStatus; import safeluck.drive.evaluation.DB.appstatusdb.AppStatusViewModel; import safeluck.drive.evaluation.DB.rtktb.RTKConfig; import safeluck.drive.evaluation.DB.rtktb.RTKConfigViewModel; import safeluck.drive.evaluation.DB.signalConfigdb.SignalConfigViewModel; import safeluck.drive.evaluation.bean.ExamPlatformData; import safeluck.drive.evaluation.bean.SignalConfigRemote; import safeluck.drive.evaluation.cEventCenter.CEventCenter; import safeluck.drive.evaluation.cEventCenter.ICEventListener; import safeluck.drive.evaluation.fragment.HomeFragment; import com.anyun.im_lib.listener.IMSConnectStatusCallback; import com.google.gson.Gson; import com.safeluck.aykj.utils.BytesUtils; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import safeluck.drive.evaluation.im.IMSClientBootstrap; import safeluck.drive.evaluation.im.MessageProcessor; import safeluck.drive.evaluation.platformMessage.JKMessage0100; import safeluck.drive.evaluation.platformMessage.JKMessage0101; import safeluck.drive.evaluation.platformMessage.PlatFormConstant; import safeluck.drive.evaluation.util.CThreadPoolExecutor; import safeluck.drive.evaluation.util.FileUtil; import safeluck.drive.evaluation.util.PermissionManager; import safeluck.drive.evaluation.util.SPUtils; import safeluck.drive.evaluation.util.Utils; import safeluck.drive.evaluation.viewmodels.ExamPlatformModel; import safeluck.drive.evaluation.viewmodels.TimeViewModel; public class MainActivity extends SupportActivity implements IMSConnectStatusCallback, View.OnClickListener { private static final int PERMISSIONS_REQUEST_CODE = 1001; private String TAG = MainActivity.class.getCanonicalName(); SignalConfigViewModel signalConfigViewModel; private PermissionManager mPermissionsManager; private RTKConfig mRTKConfig;//RTK配置信息 private ImageView iv_rtk_status; private Gson gson = new Gson(); String[] PERMISSIONS = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}; RTKConfigViewModel rtkConfigViewModel; public ExamPlatformModel examPlatformModel; private TextView tv_sat_num,tv_work_platform,tv_network_time, tv_qf; public Button btn_return; public View viewtitle; private ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(); private ICEventListener icEventListener = new ICEventListener() { @Override public void onCEvent(String topic, int msgCode, int resultCode, Object obj) { if (msgCode == Constant.RTK_PLATFORM_REGISTER_STATUS) { try { JSONObject jsonObject = new JSONObject((String) obj); String rtkLoginPwd = jsonObject.getString("password"); int reg_code = jsonObject.getInt("register_code"); if (mRTKConfig != null) { mRTKConfig.setPassword(rtkLoginPwd); mRTKConfig.setRegistered(reg_code); rtkConfigViewModel.insertRTKConfig(mRTKConfig); }else{ MyLog.i(TAG,"mRTKConfig == null"); } } catch (JSONException e) { e.printStackTrace(); } } } }; private List signalConfiglist = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //全屏 requestWindowFeature(Window.FEATURE_NO_TITLE); hideBottomUIMenu(); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_main); //初始化tts ExamPlatformData.getInstance().initTTS(getApplicationContext()); viewtitle = findViewById(R.id.top_title); btn_return = findViewById(R.id.btn_return); btn_return.setOnClickListener(this); iv_rtk_status = findViewById(R.id.iv_rtk_connect); tv_work_platform = findViewById(R.id.platform); tv_sat_num = findViewById(R.id.tv_sat_num_instatus); tv_qf = findViewById(R.id.tv_qf); iv_rtk_status.getDrawable().setLevel(0); tv_network_time = findViewById(R.id.network_time); tv_network_time.setText(Utils.getHHmm()); AppStatusViewModel appStatusViewModel = ViewModelProviders.of(this).get(AppStatusViewModel.class); appStatusViewModel.getAppStatus().observe(this, new Observer() { @Override public void onChanged(AppStatus appStatus) { if (appStatus != null){ Log.i(TAG, "onChanged: "+appStatus.toString()); iv_rtk_status.getDrawable().setLevel(appStatus.getRtk_connect_status()); tv_work_platform.setText(getString(R.string.platform_status,ExamPlatformData.getInstance().getExamplatformStatusStr( ExamPlatformData.getInstance().getExamplatformStatus() ))); tv_sat_num.setText(String.valueOf(appStatus.getSat_num()).length()==1?"0"+appStatus.getSat_num():String.valueOf(appStatus.getSat_num())); tv_qf.setText(getResources().getStringArray(R.array.qf_status)[appStatus.getQf()]); } } }); TimeViewModel timeViewModel = ViewModelProviders.of(this).get(TimeViewModel.class); timeViewModel.getLiveDataTime().observe(this, new Observer() { @Override public void onChanged(String s) { tv_network_time.setText(s); } }); // TODO // 进行tcp连接 final String userId = "100002"; final String token = "token_" + userId; examPlatformModel= ViewModelProviders.of(this).get(ExamPlatformModel.class); examPlatformModel.getDataChange().observe(this, new Observer() { @Override public void onChanged(Integer integer) { Log.i(TAG, "ExamPlatformModel onChanged: integer=="+integer); if (integer == 1){ MyLog.i("重新连接考试平台"); }else{ } String str = ExamPlatformData.getInstance().getPlatformIP(); String hosts = "[{\"host\":"+str+","+ "\"port\":"+ExamPlatformData.getInstance().getPlatformPort()+"}]"; MyLog.i("hosts="+hosts); IMSClientBootstrap.getInstance().close(); IMSClientBootstrap.getInstance().init(userId,token,hosts,1,MainActivity.this); } }); scheduledExecutorService.scheduleAtFixedRate(new Runnable() { @Override public void run() { ExamPlatformData.getInstance().setTimeArrive_10s(true); } },10,10, TimeUnit.SECONDS); rtkConfigViewModel = ViewModelProviders.of(this).get(RTKConfigViewModel.class); rtkConfigViewModel.getRTKConfig().observe(this, new Observer() { @Override public void onChanged(RTKConfig rtkConfig) { MyLog.i(TAG, "RTKConfig Changed: " + (rtkConfig != null ? rtkConfig.toString() : "null")); if (rtkConfig != null) mRTKConfig = rtkConfig; synchronized (MainActivity.this){ // if (onlySendOnceRTKConfig){ // MyLog.i(TAG,"进入 synchronized (MainActivity.this)"); // onlySendOnceRTKConfig = false; // sendRtkConfigInfo(); // } } } }); mPermissionsManager = new PermissionManager(this) { @Override public void authorized(int requestCode) { } @Override public void noAuthorization(int requestCode, String[] lackPermissions) { AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("提示"); builder.setMessage("缺少" + lackPermissions + "权限"); builder.setPositiveButton("设置权限", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { PermissionManager.startAppSettings(getApplicationContext()); } }); builder.create().show(); } @Override public void ignore() { } }; MyLog.i(TAG, "onCreate"); //加载根Fragment if (findFragment(HomeFragment.class) == null) { loadRootFragment(R.id.fl_container, HomeFragment.newInstance()); } CEventCenter.onBindEvent(true, icEventListener, Constant.BIND_CONNECT_RTK_TOPIC);//收到rtk连接 登录结果 } @Override protected void onDestroy() { super.onDestroy(); CEventCenter.onBindEvent(false, icEventListener, Constant.BIND_CONNECT_RTK_TOPIC); Log.i(TAG, "onDestroy: "); } @Override protected void onResume() { super.onResume(); mPermissionsManager.checkPermissions(PERMISSIONS_REQUEST_CODE, PERMISSIONS); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); mPermissionsManager.recheckPermissions(PERMISSIONS_REQUEST_CODE, permissions, grantResults); } private boolean listContainsSameValue(List indexs) { for (int i = 0; i < indexs.size(); i++) { //可以默认是0 0不判断是否有相同的index if (indexs.get(i) == 0){ continue; } for (int j=i+1;j 11 && Build.VERSION.SDK_INT < 19) { // lower api View v = this.getWindow().getDecorView(); v.setSystemUiVisibility(View.GONE); } else if (Build.VERSION.SDK_INT >= 19) { //for new api versions. View decorView = getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN; decorView.setSystemUiVisibility(uiOptions); } } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_return: onBackPressed(); break; } } }