修改criteria_I.json文件某个字段使之Gson不报错;点开TrainFragment的时候开始加载数据库(onCreate插入数据)
| | |
| | | "item_content": "通用要求", |
| | | "deducting_reason": "因操作不当造成发动机熄火一次", |
| | | "score_deducting":10, |
| | | "required_precision":"5" |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":6, |
| | | "item_content": "倒车入库", |
| | | "deducting_reason": "不按规定路线、顺序行驶", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":7, |
| | | "item_content": "倒车入库", |
| | | "deducting_reason": "车身出线", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":8, |
| | |
| | | "item_content": "倒车入库", |
| | | "deducting_reason": "在倒车前,未将两个前轮触地点均驶过控制线", |
| | | "score_deducting":100, |
| | | "required_precision":"" |
| | | "required_precision": "" |
| | | }, |
| | | { |
| | | "item_id":10, |
| | |
| | | "item_content": "倒车入库", |
| | | "deducting_reason": "中途停车时间超过2s", |
| | | "score_deducting":100, |
| | | "score_deducting":"" |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":12, |
| | | "item_content": "坡道定点停车和起步", |
| | | "deducting_reason": "车辆停止后,汽车前保险杠未定于桩杆线上,且前后超出50cm", |
| | | "score_deducting":100, |
| | | "required_precision":"df" |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":13, |
| | |
| | | "item_content": "坡道定点停车和起步", |
| | | "deducting_reason": "车辆停止后,车身距离路边缘线超出50cm", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | } , { |
| | | "required_precision":"" |
| | | } , |
| | | { |
| | | "item_id":15, |
| | | "item_content": "坡道定点停车和起步", |
| | | "deducting_reason": "车辆停止后,起步时间超过30s", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, { |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":16, |
| | | "item_content": "坡道定点停车和起步", |
| | | "deducting_reason": "起步时车辆后溜距离大于30cm", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, { |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":17, |
| | | "item_content": "坡道定点停车和起步", |
| | | "deducting_reason": "车辆停止后,汽车前保险杠未定于桩杆线上,且前后不超出50cm", |
| | | "score_deducting":10, |
| | | "required_precision":"5" |
| | | }, { |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":18, |
| | | "item_content": "坡道定点停车和起步", |
| | | "deducting_reason": "车辆停止后,车身距离路边缘线超出30cm,未超出50cm", |
| | | "score_deducting":10, |
| | | "required_precision":"5" |
| | | }, { |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":19, |
| | | "item_content": "坡道定点停车和起步", |
| | | "deducting_reason": "停车后未拉紧驻车制动器", |
| | | "score_deducting":10, |
| | | "required_precision":"5" |
| | | }, { |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":20, |
| | | "item_content": "坡道定点停车和起步", |
| | | "deducting_reason": "起步时车辆后溜距离10cm~30cm", |
| | | "score_deducting":10, |
| | | "required_precision":"5" |
| | | }, { |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":21, |
| | | "item_content": "侧方停车", |
| | | "deducting_reason": "车辆入库停止后,车身出线", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, { |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":22, |
| | | "item_content": "侧方停车", |
| | | "deducting_reason": "项目完成时间超过90s", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, { |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":23, |
| | | "item_content": "侧方停车", |
| | | "deducting_reason": "行驶中车轮触轧车道边线", |
| | | "score_deducting":10, |
| | | "required_precision":"5" |
| | | }, { |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":24, |
| | | "item_content": "侧方停车", |
| | | "deducting_reason": "行驶中车身触碰库位边线", |
| | | "score_deducting":10, |
| | | "required_precision":"5" |
| | | }, { |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":25, |
| | | "item_content": "侧方停车", |
| | | "deducting_reason": "出库时不使用或错误使用转向灯", |
| | | "score_deducting":10, |
| | | "required_precision":"5" |
| | | }, { |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":26, |
| | | "item_content": "侧方停车", |
| | | "deducting_reason": "中途停车时间超过2s", |
| | | "score_deducting":5, |
| | | "required_precision":"trew" |
| | | }, { |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":27, |
| | | "item_content": "曲线行驶", |
| | | "deducting_reason": "车轮轧道路边缘线", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, { |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":28, |
| | | "item_content": "曲线行驶", |
| | | "deducting_reason": "中途停车时间超过2s", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, { |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":29, |
| | | "item_content": "直线转弯", |
| | | "deducting_reason": "车轮轧道路边缘线", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, { |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":30, |
| | | "item_content": "直线转弯", |
| | | "deducting_reason": "转弯时不使用或错误使用转向灯,转完后不关闭转向灯", |
| | | "score_deducting":10, |
| | | "required_precision":"5" |
| | | }, { |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":31, |
| | | "item_content": "直线转弯", |
| | | "deducting_reason": "中途停车时间超过2s", |
| | | "score_deducting":5, |
| | | "required_precision":"5" |
| | | "required_precision":"" |
| | | } |
| | | ] |
| | |
| | | public static final ExecutorService dataBaseWriteExecutor = Executors.newFixedThreadPool(NUMBER_OF_THREADS); |
| | | |
| | | public static WorkRoomDataBase getWorkRoomDataBase(final Context mContext){ |
| | | Log.i(TAG, "getWorkRoomDataBase"); |
| | | if (workRoomDataBase == null){ |
| | | synchronized (WorkRoomDataBase.class){ |
| | | if (workRoomDataBase == null){ |
| | | Log.i(TAG, "getWorkRoomDataBase==null "); |
| | | workRoomDataBase = Room.databaseBuilder(mContext.getApplicationContext(),WorkRoomDataBase.class,"work_database") |
| | | .addCallback(new Callback() { |
| | | @Override |
| | |
| | | WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest); |
| | | WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest1); |
| | | } |
| | | |
| | | @Override |
| | | public void onOpen(@NonNull SupportSQLiteDatabase db) { |
| | | super.onOpen(db); |
| | | Log.i(TAG, "onOpen: "); |
| | | } |
| | | }) |
| | | .build(); |
| | | } |
| | |
| | | package safeluck.drive.evaluation.DB.criterias; |
| | | |
| | | import android.app.Application; |
| | | import android.util.Log; |
| | | |
| | | import androidx.lifecycle.LiveData; |
| | | |
| | |
| | | */ |
| | | public class CriteriasRepository { |
| | | |
| | | private static final String TAG = "CriteriasRepository"; |
| | | |
| | | CriteriaIDao mCriteriaIDao; |
| | | |
| | |
| | | * @param application |
| | | */ |
| | | public CriteriasRepository(Application application) { |
| | | this.mCriteriaIDao = WorkRoomDataBase.getWorkRoomDataBase(application).getCriteriaIDao(); |
| | | Log.i(TAG, "CriteriasRepository: "); |
| | | WorkRoomDataBase db =WorkRoomDataBase.getWorkRoomDataBase(application); |
| | | this.mCriteriaIDao = db.getCriteriaIDao(); |
| | | } |
| | | } |
| | |
| | | package safeluck.drive.evaluation.DB.criterias.viewmodel; |
| | | |
| | | import android.app.Application; |
| | | import android.util.Log; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.lifecycle.AndroidViewModel; |
| | |
| | | */ |
| | | public class CriteriaIViewModel extends AndroidViewModel { |
| | | |
| | | private static final String TAG = "CriteriaIViewModel"; |
| | | CriteriasRepository mCriteriasRep; |
| | | LiveData<CriteriaForI> criteriaI; |
| | | |
| | | public CriteriaIViewModel(@NonNull Application application) { |
| | | super(application); |
| | | Log.i(TAG, "CriteriaIViewModel Constructor "); |
| | | mCriteriasRep = new CriteriasRepository(application); |
| | | } |
| | | |
| | | public LiveData<CriteriaForI> getItemForCriteriaI(int item_id){ |
| | | criteriaI = mCriteriasRep.queryItemForCriteriaI(item_id); |
| | | return criteriaI; |
| | | |
| | | |
| | | public LiveData<CriteriaForI> queryCriteriaI(int item_id){ |
| | | return mCriteriasRep.queryItemForCriteriaI(item_id); |
| | | |
| | | } |
| | | |
| | | public void insertCriteriaIs(List<CriteriaForI> cs){ |
| | |
| | | import me.yokeyword.fragmentation.SupportFragment; |
| | | import safeluck.drive.evaluation.DB.Student; |
| | | import safeluck.drive.evaluation.DB.WokViewModel; |
| | | import safeluck.drive.evaluation.DB.criterias.CriteriaForI; |
| | | import safeluck.drive.evaluation.DB.criterias.viewmodel.CriteriaIViewModel; |
| | | import safeluck.drive.evaluation.R; |
| | | import safeluck.drive.evaluation.tcp.ConnectThread; |
| | | |
| | |
| | | public class TcpFragment extends SupportFragment implements View.OnClickListener { |
| | | |
| | | |
| | | private static final String TAG = TcpFragment.class.getSimpleName(); |
| | | private TextInputEditText ip; |
| | | private TextInputEditText port; |
| | | private Button btn_connect; |
| | | private Button btn_send; |
| | | private ConnectThread connectThread; |
| | | private AppCompatEditText sendEditText; |
| | | private WokViewModel workViewModel; |
| | | private CriteriaIViewModel workViewModel; |
| | | private int item_id=0; |
| | | |
| | | public static TcpFragment newInstance() { |
| | | return new TcpFragment(); |
| | |
| | | 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(WokViewModel.class); |
| | | workViewModel =ViewModelProviders.of(this).get(CriteriaIViewModel.class); |
| | | |
| | | workViewModel.getStudents().observe((LifecycleOwner) this, new Observer<List<Student>>() { |
| | | @Override |
| | | public void onChanged(List<Student> students) { |
| | | for (Student student:students){ |
| | | Log.i("Students", "onChanged: "+student.toString()); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | return view; |
| | | } |
| | | |
| | |
| | | //// connectThread.sendMessage(sendEditText.getText().toString().trim()); |
| | | //// sendEditText.getText().clear(); |
| | | //// } |
| | | workViewModel.insertStudent(new Student(1002,"王五","500107198910124566",1)); |
| | | checkCriteria(++item_id); |
| | | 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()); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.annotation.Nullable; |
| | | import androidx.lifecycle.Observer; |
| | | import androidx.lifecycle.ViewModelProviders; |
| | | |
| | | import android.util.Log; |
| | | import android.view.LayoutInflater; |
| | | import android.view.View; |
| | | import android.view.ViewGroup; |
| | |
| | | import java.util.List; |
| | | |
| | | import me.yokeyword.fragmentation.SupportFragment; |
| | | import safeluck.drive.evaluation.DB.Student; |
| | | import safeluck.drive.evaluation.DB.WokViewModel; |
| | | import safeluck.drive.evaluation.R; |
| | | import safeluck.drive.evaluation.adapter.ScoreAdapter; |
| | | import safeluck.drive.evaluation.bean.ScoreBean; |
| | |
| | | * All Rights Saved! Chongqing AnYun Tech co. LTD |
| | | */ |
| | | public class TrainFragment extends SupportFragment implements View.OnClickListener { |
| | | |
| | | private static final String TAG = TrainFragment.class.getSimpleName(); |
| | | private ListView mListView ; |
| | | private ScoreAdapter mScoreAdapter; |
| | | |
| | |
| | | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { |
| | | View view = inflater.inflate(R.layout.layout_train_fragment,container,false); |
| | | initView(view); |
| | | |
| | | WokViewModel wokViewModel = ViewModelProviders.of(this).get(WokViewModel.class); |
| | | wokViewModel.getStudents().observe(this, new Observer<List<Student>>() { |
| | | @Override |
| | | public void onChanged(List<Student> students) { |
| | | for (Student student: |
| | | students) { |
| | | Log.i(TAG, "onChanged: "+student.toString()); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | return view; |
| | | } |
| | | private void initView(View view) { |