yy1717
2020-01-10 fff165b3215de255000cb133d51ceb03b5202bd6
app/src/main/java/safeluck/drive/evaluation/MainActivity.java
@@ -19,21 +19,107 @@
import me.yokeyword.fragmentation.SupportActivity;
import safeluck.drive.evaluation.DB.Student;
import safeluck.drive.evaluation.DB.WokViewModel;
import safeluck.drive.evaluation.DB.rtktb.RTKConfig;
import safeluck.drive.evaluation.DB.rtktb.RTKConfigViewModel;
import safeluck.drive.evaluation.cEventCenter.CEventCenter;
import safeluck.drive.evaluation.cEventCenter.ICEventListener;
import safeluck.drive.evaluation.fragment.HomeFragment;
import com.anyun.exam.lib.AYSdk;
import com.anyun.exam.lib.MyLog;
import com.google.gson.Gson;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.List;
import safeluck.drive.evaluation.util.PermissionManager;
import safeluck.drive.evaluation.viewmodels.MainViewModel;
import safeluck.drive.evaluation.viewmodels.RTKConnAndLogin;
import safeluck.drive.evaluation.viewmodels.RTKConnAndLoginViewModel;
public class MainActivity extends SupportActivity {
    private static final int PERMISSIONS_REQUEST_CODE = 1001;
    private String TAG = MainActivity.class.getCanonicalName();
    private PermissionManager mPermissionsManager ;
    String[] PERMISSIONS = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CAMERA};
    private PermissionManager mPermissionsManager;
    private RTKConfig mRTKConfig;//RTK配置信息
    private Gson gson = new Gson();
    String[] PERMISSIONS = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA};
    RTKConnAndLoginViewModel rtkConnAndLoginViewModel;
    RTKConnAndLogin rtkConnAndLogin;
    RTKConfigViewModel rtkConfigViewModel;
    private ICEventListener icEventListener = new ICEventListener() {
        @Override
        public void onCEvent(String topic, int msgCode, int resultCode, Object obj) {
            if (msgCode == Constant.FETCH_RTK_PLATFORM_INFO) {
                if (mRTKConfig != null) {
                    String rtkjson = gson.toJson(mRTKConfig);
                    //去除id字段
                    JSONObject jsonObject = null;
                    try {
                        jsonObject = new JSONObject(rtkjson);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                    jsonObject.remove("_id");
                    rtkjson = null;
                    rtkjson = jsonObject.toString();
                    MyLog.i(TAG, "RTK配置信息:" + rtkjson);
                    AYSdk.getInstance().sendCmd(Constant.PUSH_RTK_PLATFORM_INFO, rtkjson);
                } else {
                    MyLog.d(TAG, "RTKConfig未取到数据");
                }
            }
            if (msgCode == Constant.RTK_PLATFORM_CONNECT_STATUS || msgCode == Constant.RTK_PLATFORM_REGISTER_RESULT) {
                if (msgCode == Constant.RTK_PLATFORM_REGISTER_RESULT) {
                    try {
                        JSONObject jsonObject3 = new JSONObject((String) obj);
                        int loginCode = jsonObject3.getInt("login_code");
                        MyLog.d(TAG, "RTK平台登录结果:" + loginCode);
                        rtkConnAndLogin.setLogin_code(loginCode);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                } else {
                    try {
                        JSONObject jsonObject3 = new JSONObject((String) obj);
                        int connect_status = jsonObject3.getInt("connected");
                        MyLog.i(TAG, "RTK平台连接状态:" + connect_status);
                        rtkConnAndLogin.setLogin_code(connect_status);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
                rtkConnAndLoginViewModel.getRtkConnAndLogin().postValue(rtkConnAndLogin);
            }
            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();
                }
            }
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
@@ -46,14 +132,25 @@
        wokViewModel.getStudents().observe(this, new Observer<List<Student>>() {
            @Override
            public void onChanged(List<Student> students) {
                for (Student student:
                for (Student student :
                        students) {
                    Log.i(TAG, "onChanged: "+student.toString());
                    Log.i(TAG, "onChanged: " + student.toString());
                }
            }
        });
        rtkConfigViewModel  = ViewModelProviders.of(this).get(RTKConfigViewModel.class);
        rtkConfigViewModel.getRTKConfig().observe(this, new Observer<RTKConfig>() {
            @Override
            public void onChanged(RTKConfig rtkConfig) {
                MyLog.i(TAG, "RTKConfig Changed: " + (rtkConfig != null ? rtkConfig.toString() : "null"));
                mRTKConfig = rtkConfig;
            }
        });
        rtkConnAndLoginViewModel = ViewModelProviders.of(this).get(RTKConnAndLoginViewModel.class);
        rtkConnAndLogin = new RTKConnAndLogin();
        mPermissionsManager = new PermissionManager(this) {
@@ -66,7 +163,7 @@
            public void noAuthorization(int requestCode, String[] lackPermissions) {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("提示");
                builder.setMessage("缺少"+lackPermissions+"权限");
                builder.setMessage("缺少" + lackPermissions + "权限");
                builder.setPositiveButton("设置权限", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
@@ -83,40 +180,45 @@
        };
        MyLog.i(TAG,"onCreate");
        MyLog.i(TAG, "onCreate");
        MainViewModel mainViewModel = ViewModelProviders.of(this).get(MainViewModel.class);
        mainViewModel.getJson().observe(this, new Observer<String>() {
            @Override
            public void onChanged(@Nullable String json) {
                Toast.makeText(MainActivity.this, json, Toast.LENGTH_SHORT).show();
                MyLog.i(TAG,"json=========="+json+" ThreadName:"+Thread.currentThread().getName());
                MyLog.i(TAG, "json==========" + json + " ThreadName:" + Thread.currentThread().getName());
            }
        });
        //加载根Fragment
        if (findFragment(HomeFragment.class) == null){
            loadRootFragment(R.id.fl_container,HomeFragment.newInstance());
        if (findFragment(HomeFragment.class) == null) {
            loadRootFragment(R.id.fl_container, HomeFragment.newInstance());
        }
        CEventCenter.onBindEvent(true, icEventListener, Constant.BIND_RTKCONFIG_TOPIC);//发送rtk配置消息
        CEventCenter.onBindEvent(true, icEventListener, Constant.BIND_CONNECT_RTK_TOPIC);//收到rtk连接 登录结果
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        CEventCenter.onBindEvent(false, icEventListener, Constant.BIND_RTKCONFIG_TOPIC);
        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);
        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);
        mPermissionsManager.recheckPermissions(PERMISSIONS_REQUEST_CODE, permissions, grantResults);
    }
}