diff --git a/.idea/MarsCodeWorkspaceAppSettings.xml b/.idea/MarsCodeWorkspaceAppSettings.xml index 8321720..1086cb3 100644 --- a/.idea/MarsCodeWorkspaceAppSettings.xml +++ b/.idea/MarsCodeWorkspaceAppSettings.xml @@ -3,6 +3,6 @@ \ No newline at end of file diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml new file mode 100644 index 0000000..ac9d2b2 --- /dev/null +++ b/.idea/assetWizardSettings.xml @@ -0,0 +1,31 @@ + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 3f7b6b3..7baf147 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,13 +3,13 @@ plugins { } android { namespace "com.example.tyre" - compileSdk 33 + compileSdk 34 // compileSdkVersion 29 // buildToolsVersion '29.0.0' defaultConfig { applicationId "com.example.tyre" - minSdk 24 - targetSdk 33 + minSdk 26 + targetSdk 34 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -23,8 +23,12 @@ android { } } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } + buildFeatures { + viewBinding true + dataBinding true } } @@ -41,11 +45,13 @@ dependencies { testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test:runner:1.5.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' - implementation 'com.jakewharton:butterknife:10.2.0' - annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.0' +// implementation 'com.jakewharton:butterknife:10.2.0' +// annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.0' implementation 'com.lzy.net:okgo:3.0.4' implementation 'com.google.code.gson:gson:2.10.1' implementation 'androidx.recyclerview:recyclerview:1.3.0' implementation files('libs/uhfcom13_v15.jar') implementation files('libs/SerialPort.jar') + implementation 'androidx.gridlayout:gridlayout:1.0.0' + implementation 'com.google.android.material:material:1.11.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 529caeb..b6b0ac0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -6,10 +6,12 @@ - - @@ -22,12 +24,32 @@ android:supportsRtl="true" android:theme="@style/AppTheme" android:usesCleartextTraffic="true"> - - - + + + + + - - + + + + + + + + + + + + android:exported="true" /> + + - - - - - - - diff --git a/app/src/main/java/com/example/tyre/CheckActivity.java b/app/src/main/java/com/example/tyre/CheckActivity.java index 355b76e..d6bee37 100644 --- a/app/src/main/java/com/example/tyre/CheckActivity.java +++ b/app/src/main/java/com/example/tyre/CheckActivity.java @@ -15,9 +15,7 @@ import android.view.KeyEvent; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; -import android.widget.Button; import android.widget.Spinner; -import android.widget.TextView; import android.widget.Toast; import com.android.hdhe.uhf.reader.UhfReader; @@ -49,27 +47,28 @@ import java.util.ArrayList; import java.util.List; import androidx.appcompat.app.AppCompatActivity; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; import cn.pda.serialport.Tools; +import com.example.tyre.databinding.ActivityCheckBinding; + public class CheckActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener { - @BindView(R.id.epc_display) TextInputEditText epcInput; - @BindView(R.id.th) TextInputEditText tyreNoInput; - @BindView(R.id.zbh) TextInputEditText selfNoInput; - @BindView(R.id.tyrecon) TextInputEditText remarkInput; - @BindView(R.id.patternDepth) TextInputEditText patternDepthInput; - @BindView(R.id.mileage) TextInputEditText mileageInput; + private ActivityCheckBinding binding; - @BindView(R.id.epc_layout) TextInputLayout epcLayout; - @BindView(R.id.th_layout) TextInputLayout tyreNoLayout; - @BindView(R.id.zbh_layout) TextInputLayout selfNoLayout; - @BindView(R.id.mileage_layout) TextInputLayout mileageNoLayout; - @BindView(R.id.patternDepth_layout) TextInputLayout patternDepthNoLayout; + TextInputEditText epcInput; + TextInputEditText tyreNoInput; + TextInputEditText selfNoInput; + TextInputEditText remarkInput; + TextInputEditText patternDepthInput; + TextInputEditText mileageInput; - @BindView(R.id.result) Spinner resultSpinner; - @BindView(R.id.CheckTypeSpinner) Spinner checkTypeSpinner; + TextInputLayout epcLayout; + TextInputLayout tyreNoLayout; + TextInputLayout selfNoLayout; + TextInputLayout mileageNoLayout; + TextInputLayout patternDepthNoLayout; + + Spinner resultSpinner; + Spinner checkTypeSpinner; private boolean isStart = true; @@ -88,8 +87,10 @@ public class CheckActivity extends AppCompatActivity implements AdapterView.OnIt @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_check); - ButterKnife.bind(this); + binding = ActivityCheckBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + bindViews(); + setupClickListeners(); manager = MyApplication.getManager(); listEPC = new ArrayList(); Thread thread = new InventoryThread(); @@ -101,6 +102,24 @@ public class CheckActivity extends AppCompatActivity implements AdapterView.OnIt showLoadingDialog(); } + private void bindViews() { + epcInput = binding.epcDisplay; + tyreNoInput = binding.th; + selfNoInput = binding.zbh; + remarkInput = binding.tyrecon; + patternDepthInput = binding.patternDepth; + mileageInput = binding.mileage; + + epcLayout = binding.epcLayout; + tyreNoLayout = binding.thLayout; + selfNoLayout = binding.zbhLayout; + mileageNoLayout = binding.mileageLayout; + patternDepthNoLayout = binding.patternDepthLayout; + + resultSpinner = binding.result; + checkTypeSpinner = binding.checkTypeSpinner; + } + @Override public void onResume() { super.onResume(); @@ -221,8 +240,10 @@ public class CheckActivity extends AppCompatActivity implements AdapterView.OnIt Log.e("EPC", "listepc:+ " + listepc); } private void clearData() { - listEPC.removeAll(listEPC); - listepc.removeAll(listepc); + // listEPC.removeAll(listEPC); + // listepc.removeAll(listepc); + listEPC.clear(); + listepc.clear(); } private void showLoadingDialog() { progressDialog = new ProgressDialog(this); @@ -276,14 +297,7 @@ public class CheckActivity extends AppCompatActivity implements AdapterView.OnIt @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { - switch (parent.getId()) { - case R.id.result: - // checkresult.setText(parent.getItemAtPosition(position).toString()); - break; - case R.id.CheckTypeSpinner: - // checktype.setText(parent.getItemAtPosition(position).toString()); - break; - } + } @@ -292,41 +306,39 @@ public class CheckActivity extends AppCompatActivity implements AdapterView.OnIt } - @OnClick({R.id.wc, R.id.fh}) - public void onViewClicked(View view) { - switch (view.getId()) { - case R.id.wc: - String rfid=epcInput.getText().toString(); - String selectedResult = resultSpinner.getSelectedItem().toString(); - String checkType = checkTypeSpinner.getSelectedItem().toString(); - String remark = remarkInput.getText().toString(); - String mileage = mileageInput.getText().toString().trim(); - String patternDepth = patternDepthInput.getText().toString().trim(); - String tyreNo = tyreNoInput.getText().toString().trim(); - String selfNo = selfNoInput.getText().toString().trim(); - if (rfid == null || rfid.isEmpty() || rfid.equals("等待扫描...")) - { - epcLayout.setError("请扫描芯片"); - return; - } - if (tyreNo == null || tyreNo.isEmpty()) - { - tyreNoLayout.setError("请检查胎号数据"); - return; - } - if (selfNo == null || selfNo.isEmpty()) - { - selfNoLayout.setError("请检查自编号数据"); - return; - } - showLoadingDialog(); - insert_check_record(rfid,selectedResult,remark,checkType,mileage,patternDepth); - break; - case R.id.fh: - Intent intent=new Intent(this,HomePageActivity.class); - startActivity(intent); - break; - } + private void setupClickListeners() { + binding.wc.setOnClickListener(v -> { + String rfid=epcInput.getText().toString(); + String selectedResult = resultSpinner.getSelectedItem().toString(); + String checkType = checkTypeSpinner.getSelectedItem().toString(); + String remark = remarkInput.getText().toString(); + String mileage = mileageInput.getText().toString().trim(); + String patternDepth = patternDepthInput.getText().toString().trim(); + String tyreNo = tyreNoInput.getText().toString().trim(); + String selfNo = selfNoInput.getText().toString().trim(); + if (rfid == null || rfid.isEmpty() || rfid.equals("等待扫描...")) + { + epcLayout.setError("请扫描芯片"); + return; + } + if (tyreNo == null || tyreNo.isEmpty()) + { + tyreNoLayout.setError("请检查胎号数据"); + return; + } + if (selfNo == null || selfNo.isEmpty()) + { + selfNoLayout.setError("请检查自编号数据"); + return; + } + showLoadingDialog(); + insert_check_record(rfid,selectedResult,remark,checkType,mileage,patternDepth); + }); + + binding.fh.setOnClickListener(v -> { + Intent intent=new Intent(this,HomePageActivity.class); + startActivity(intent); + }); } // 防抖延迟时间 (毫秒) diff --git a/app/src/main/java/com/example/tyre/DownActivity.java b/app/src/main/java/com/example/tyre/DownActivity.java index 821f1ca..4939d8c 100644 --- a/app/src/main/java/com/example/tyre/DownActivity.java +++ b/app/src/main/java/com/example/tyre/DownActivity.java @@ -46,30 +46,21 @@ import java.util.ArrayList; import java.util.List; import androidx.appcompat.app.AppCompatActivity; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; import cn.pda.serialport.Tools; +import com.example.tyre.databinding.ActivityDownBinding; -public class DownActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener { +public class DownActivity extends AppCompatActivity { + + private ActivityDownBinding binding; - @BindView(R.id.epc) TextView EPC; - @BindView(R.id.car) TextView car; - @BindView(R.id.start) EditText start; - @BindView(R.id.azlw) TextView azlw; - @BindView(R.id.ok) Button ok; - @BindView(R.id.back) Button back; - @BindView(R.id.th) TextView th; - @BindView(R.id.zbh) TextView zbh; - @BindView(R.id.patternDepth) EditText patternDepth; private boolean isStart = true; private ProgressDialog progressDialog; @@ -87,8 +78,10 @@ public class DownActivity extends AppCompatActivity implements AdapterView.OnIte @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_down); - ButterKnife.bind(this); + binding = ActivityDownBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + bindViews(); + setupClickListeners(); manager = MyApplication.getManager(); listEPC = new ArrayList(); Thread thread = new InventoryThread(); @@ -97,6 +90,55 @@ public class DownActivity extends AppCompatActivity implements AdapterView.OnIte } + private void bindViews() { + EPC = binding.epc; + car = binding.car; + start = binding.start; + azlw = binding.azlw; + ok = binding.ok; + back = binding.back; + th = binding.th; + zbh = binding.zbh; + patternDepth = binding.patternDepth; + } + + private void setupClickListeners() { + binding.ok.setOnClickListener(v -> { + String rfid=EPC.getText().toString(); + String carNo = car.getText().toString(); + String millage = start.getText().toString(); + String wheel = azlw.getText().toString(); + String depth = patternDepth.getText().toString(); + if (rfid == null || rfid.isEmpty()) + { + new CommonDialog(DownActivity.this).setMessage("请扫描轮胎!").show(); + return; + } + if (carNo == null || carNo.isEmpty()) + { + new CommonDialog(DownActivity.this).setMessage("该轮胎未安装!").show(); + return; + } + if (millage == null || millage.isEmpty()) + { + new CommonDialog(DownActivity.this).setMessage("请输入卸胎里程!").show(); + return; + } + if (wheel == null || wheel.isEmpty()) + { + new CommonDialog(DownActivity.this).setMessage("该轮胎未安装!").show(); + return; + } + showLoadingDialog(); + down_insert(rfid,carNo,millage,wheel,depth); + }); + + binding.back.setOnClickListener(v -> { + Intent intent = new Intent(this, HomePageActivity.class); + startActivity(intent); + }); + } + @Override public void onResume() { super.onResume(); @@ -264,56 +306,6 @@ public class DownActivity extends AppCompatActivity implements AdapterView.OnIte private void unregisterReceiver() { unregisterReceiver(keyReceiver); } - @OnClick({R.id.ok, R.id.back}) - public void onViewClicked(View view) { - switch (view.getId()) { - case R.id.ok: - String rfid=EPC.getText().toString(); - String carNo = car.getText().toString(); - String millage = start.getText().toString(); - String wheel = azlw.getText().toString(); - String depth = patternDepth.getText().toString(); - if (rfid == null || rfid.isEmpty()) - { - new CommonDialog(DownActivity.this).setMessage("请扫描轮胎!").show(); - return; - } - if (carNo == null || carNo.isEmpty()) - { - new CommonDialog(DownActivity.this).setMessage("该轮胎未安装!").show(); - return; - } - if (millage == null || millage.isEmpty()) - { - new CommonDialog(DownActivity.this).setMessage("请输入卸胎里程!").show(); - return; - } - if (wheel == null || wheel.isEmpty()) - { - new CommonDialog(DownActivity.this).setMessage("该轮胎未安装!").show(); - return; - } - showLoadingDialog(); - down_insert(rfid,carNo,millage,wheel,depth); - break; - case R.id.back: - Intent intent = new Intent(this, HomePageActivity.class); - startActivity(intent); - break; - } - } - - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - } - - @Override - public void onNothingSelected(AdapterView parent) { - - } - - - // 基本信息查询 private void find(String epc) { OkGo.post(MyUrl.url + "/tyre/tyre/pdaQueryTyreInfo").tag(this).params("tyreEpc", epc) .execute(new StringCallback() { diff --git a/app/src/main/java/com/example/tyre/HomePageActivity.java b/app/src/main/java/com/example/tyre/HomePageActivity.java index 32132b1..0cd0bad 100644 --- a/app/src/main/java/com/example/tyre/HomePageActivity.java +++ b/app/src/main/java/com/example/tyre/HomePageActivity.java @@ -10,28 +10,23 @@ import android.widget.RadioButton; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; +import com.example.tyre.databinding.ActivityHomePageBinding; +import com.example.tyre.maintenance.NewHomePageActivity; /** * Created by 杨万里 on 2019/12/3. */ public class HomePageActivity extends AppCompatActivity { - @BindView(R.id.chaxun) + + private ActivityHomePageBinding binding; + RadioButton chaxun; - @BindView(R.id.ruku) RadioButton ruku; - @BindView(R.id.chuku) RadioButton chuku; - @BindView(R.id.zhuangxie) RadioButton zhuangxie; - @BindView(R.id.huanwei) RadioButton huanwei; - @BindView(R.id.zhijian) RadioButton zhijian; - @BindView(R.id.logout) Button logout; private long exitTime = 0; @@ -39,52 +34,70 @@ public class HomePageActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_homepage); - ButterKnife.bind(this); + binding = ActivityHomePageBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + bindViews(); + setupClickListeners(); } - /** - * 修改点 1:在注解列表中加入 R.id.logout - */ - @OnClick({R.id.chaxun, R.id.ruku, R.id.chuku, R.id.zhuangxie, R.id.huanwei, R.id.zhijian, R.id.xxbd,R.id.test1, R.id.logout}) - public void onViewClicked(View view) { - Intent intent; // 建议在这里声明,而不是方法最开始 + private void bindViews() { + chaxun = binding.chaxun; + ruku = binding.ruku; + chuku = binding.chuku; + zhuangxie = binding.zhuangxie; + huanwei = binding.huanwei; + zhijian = binding.zhijian; + logout = binding.logout; + } - switch (view.getId()) { - case R.id.chaxun: - intent = new Intent(this, TyreSearchActivity.class); - break; - case R.id.ruku: - intent = new Intent(this, InStoreHouseActivity.class); - break; - case R.id.chuku: - intent = new Intent(this, OutStoreHouseActivity.class); - break; - case R.id.zhuangxie: - intent = new Intent(this, UpActivity.class); - break; - case R.id.huanwei: - intent = new Intent(this, DownActivity.class); - break; - case R.id.zhijian: - intent = new Intent(this, CheckActivity.class); - break; - case R.id.xxbd: - intent = new Intent(this, TestActivity.class); - break; - case R.id.test1: - intent = new Intent(this, TyreLayoutActivity.class); - break; - case R.id.logout: - // 修改点 2:处理退出逻辑 - handleLogout(); - return; // 退出后直接返回,不需要执行下面的 startActivity - default: - return; - } + private void setupClickListeners() { + binding.chaxun.setOnClickListener(v -> { + Intent intent = new Intent(this, TyreSearchActivity.class); + startActivity(intent); + }); - // 只有非退出按钮才执行跳转 - startActivity(intent); + binding.ruku.setOnClickListener(v -> { + Intent intent = new Intent(this, InStoreHouseActivity.class); + startActivity(intent); + }); + + binding.chuku.setOnClickListener(v -> { + Intent intent = new Intent(this, OutStoreHouseActivity.class); + startActivity(intent); + }); + + binding.zhuangxie.setOnClickListener(v -> { + Intent intent = new Intent(this, UpActivity.class); + startActivity(intent); + }); + + binding.huanwei.setOnClickListener(v -> { + Intent intent = new Intent(this, DownActivity.class); + startActivity(intent); + }); + + binding.zhijian.setOnClickListener(v -> { + Intent intent = new Intent(this, CheckActivity.class); + startActivity(intent); + }); + + binding.xxbd.setOnClickListener(v -> { + Intent intent = new Intent(this, TestActivity.class); + startActivity(intent); + }); + + binding.test1.setOnClickListener(v -> { + Intent intent = new Intent(this, TyreLayoutActivity.class); + startActivity(intent); + }); + + binding.logout.setOnClickListener(v -> { + handleLogout(); + }); + binding.inNewSystem.setOnClickListener(v -> { + Intent intent = new Intent(this, NewHomePageActivity.class); + startActivity(intent); + }); } /** diff --git a/app/src/main/java/com/example/tyre/InStoreHouseActivity.java b/app/src/main/java/com/example/tyre/InStoreHouseActivity.java index 9627903..46c68ce 100644 --- a/app/src/main/java/com/example/tyre/InStoreHouseActivity.java +++ b/app/src/main/java/com/example/tyre/InStoreHouseActivity.java @@ -6,8 +6,6 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; -import android.os.Handler; -import android.os.Message; import android.os.SystemClock; import android.util.Log; import android.view.KeyEvent; @@ -21,88 +19,57 @@ import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; +import androidx.appcompat.app.AppCompatActivity; + import com.android.hdhe.uhf.reader.UhfReader; import com.android.hdhe.uhf.readerInterface.TagModel; +import com.example.tyre.databinding.ActivityInstorehouseBinding; import com.example.tyre.entity.AjaxResult; import com.example.tyre.entity.BaseTyre; import com.example.tyre.entity.EPC; import com.example.tyre.entity.InStoreSpinnerVo; -import com.example.tyre.entity.Tyre; import com.example.tyre.util.CommonDialog; import com.example.tyre.util.MyUrl; -import com.example.tyre.util.PlayMusic; import com.example.tyre.util.SharedPreferencesUtils; import com.example.tyre.util.Util; import com.google.gson.Gson; import com.google.gson.JsonSyntaxException; -import com.google.gson.reflect.TypeToken; import com.lzy.okgo.OkGo; import com.lzy.okgo.callback.StringCallback; import com.lzy.okgo.model.Response; - -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; -import androidx.appcompat.app.AppCompatActivity; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; import cn.pda.serialport.Tools; /** * Created by 杨万里 on 2019/12/10. */ -public class InStoreHouseActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{ +public class InStoreHouseActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener { - @BindView(R.id.button) Button button; - @BindView(R.id.epc) TextView scan; - @BindView(R.id.pinpai) TextView pinpai; - @BindView(R.id.xinghao) TextView xinghao; - @BindView(R.id.cengji) TextView cengji; - @BindView(R.id.huawen) TextView huawen; - @BindView(R.id.gcts) TextView gcts; - @BindView(R.id.back) Button back; - @BindView(R.id.wtbm) EditText wtbm; -// @BindView(R.id.zbh) -// EditText zbh; -// @BindView(R.id.spinner) -// Spinner spinner; - @BindView(R.id.linearLayout3) LinearLayout linearLayout3; -// @BindView(R.id.czy) -// TextView czy; - @BindView(R.id.tyrekind) TextView tyrekind; - @BindView(R.id.spinnerkind) Spinner spinnerkind; - - @BindView(R.id.spinnerpattern) Spinner spinnerpattern; - - @BindView(R.id.spinnerlevel) Spinner spinnerlevel; - - @BindView(R.id.spinnerSize) Spinner spinnerSize; - - @BindView(R.id.spinnerBrand) Spinner spinnerBrand; - - @BindView(R.id.spinnergcts) Spinner spinnergcts; - // private UHFService mDevice; + long lastTime; + long nextTime; + private ActivityInstorehouseBinding binding; + // private UHFService mDevice; // private MyHandler handler; private boolean isStart = true; private ProgressDialog progressDialog; @@ -111,11 +78,17 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi private UhfReader manager; // UHF manager,UHF Operating handle private ArrayList listEPC; private ArrayList listepc = new ArrayList(); + private Toast mToast; + private Toast toast; + private KeyReceiver keyReceiver; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_instorehouse); - ButterKnife.bind(this); + binding = ActivityInstorehouseBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + bindViews(); + setupClickListeners(); manager = MyApplication.getManager(); check_spinner(); showLoadingDialog(); @@ -129,14 +102,59 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi Thread thread = new InventoryThread(); thread.start(); com.example.tyre.util.Util.initSoundPool(this); -// spinner.setOnItemSelectedListener(this); } + + private void bindViews() { + button = binding.button; + scan = binding.epc; + pinpai = binding.pinpai; + xinghao = binding.xinghao; + cengji = binding.cengji; + huawen = binding.huawen; + gcts = binding.gcts; + back = binding.back; + wtbm = binding.wtbm; + linearLayout3 = binding.linearLayout3; + tyrekind = binding.tyrekind; + spinnerkind = binding.spinnerkind; + spinnerpattern = binding.spinnerpattern; + spinnerlevel = binding.spinnerlevel; + spinnerSize = binding.spinnerSize; + spinnerBrand = binding.spinnerBrand; + spinnergcts = binding.spinnergcts; + } + + private void setupClickListeners() { + binding.button.setOnClickListener(v -> { + String epc = scan.getText().toString(); + String w = wtbm.getText().toString(); + String p = pinpai.getText().toString(); + String x = xinghao.getText().toString(); + String c = cengji.getText().toString(); + String h = huawen.getText().toString(); + String t = tyrekind.getText().toString(); + String g = gcts.getText().toString(); + if (scan.getText().toString() == "") { + new CommonDialog(InStoreHouseActivity.this).setMessage("请扫描轮胎芯片!").show(); + return; + } + showLoadingDialog(); + insert_inventory(epc, w, p, x, c, h, g, t); + }); + + binding.back.setOnClickListener(v -> { + Intent intent = new Intent(this, HomePageActivity.class); + startActivity(intent); + }); + } + private void showLoadingDialog() { progressDialog = new ProgressDialog(this); progressDialog.setMessage("数据加载中..."); progressDialog.setCancelable(false); progressDialog.show(); } + private void hideLoadingDialog() { if (progressDialog != null && progressDialog.isShowing()) { progressDialog.dismiss(); @@ -167,51 +185,11 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi runFlag = false; super.onDestroy(); } + private void initView() { listEPC = new ArrayList(); } - /** - * Inventory EPC Thread - */ - class InventoryThread extends Thread { - private List tagList; - byte[] accessPassword = Tools.HexString2Bytes("00000000"); - @Override - public void run() { - super.run(); - while (runFlag) { - if (startFlag) { - tagList = manager.inventoryRealTime(); //实时盘存 - if (tagList != null && !tagList.isEmpty()) { - //播放提示音 - Util.play(1, 0); - for (TagModel tag : tagList) { - if (tag == null) { - String epcStr = ""; -// String epcStr = new String(epc); - addToList(listEPC, epcStr, (byte) -1); - } else { - String epcStr = Tools.Bytes2HexString(tag.getmEpcBytes(), tag.getmEpcBytes().length); -// String epcStr = new String(epc); - byte rssi = tag.getmRssi(); - addToList(listEPC, epcStr, rssi); - } - } - } - tagList = null; - try { - Thread.sleep(20); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } - } - } - long lastTime; - long nextTime; // EPC add to LISTVIEW private void addToList(final List list, final String epc, final byte rssi) { runOnUiThread(new Runnable() { @@ -226,7 +204,7 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi list.add(epcTag); listepc.add(epc); - }else { + } else { for (int i = 0; i < list.size(); i++) { EPC mEPC = list.get(i); // list contain this epc @@ -248,14 +226,14 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi } // play sound - lastTime = SystemClock.elapsedRealtime(); + lastTime = SystemClock.elapsedRealtime(); long time = lastTime - nextTime; if (time >= 60) { Util.play(1, 0); nextTime = lastTime; Log.e("TAG", "run: " + time); } - if (listepc != null && !listepc.isEmpty()){ + if (listepc != null && !listepc.isEmpty()) { startFlag = false; String currentEpc = listepc.get(0); scan.setText(currentEpc); @@ -274,74 +252,80 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi // } // clearData(); } + private void clearData() { - listEPC.removeAll(listEPC); - listepc.removeAll(listepc); + listEPC.clear(); + listepc.clear(); } + // 基本信息查询 private void find(String epc) { OkGo.post(MyUrl.url + "/tyre/tyre/pdaQueryTyreInfo").tag(this) .params("tyreEpc", epc) .execute(new StringCallback() { - @Override - public void onSuccess(Response response) { - String body = response.body(); - Log.e("body", body); - try { - Gson gson = new Gson(); - BaseTyre baseTyre = gson.fromJson(body, BaseTyre.class); - if (baseTyre != null) { - // 空值处理:若字段为 null 则显示空字符串 - String tyreNo = safeGetString(baseTyre.getTyreNo()); - wtbm.setText(tyreNo); - String brand = safeGetString(baseTyre.getTyreBrand()); - String model = safeGetString(baseTyre.getTyreModel()); - String level = safeGetString(baseTyre.getTyreLevel()); - String pattern = safeGetString(baseTyre.getTyrePattern()); - String kind = safeGetString(baseTyre.getTyreType()); - pinpai.setText(brand); - xinghao.setText(model); - cengji.setText(level); - huawen.setText(pattern); - tyrekind.setText(kind); + @Override + public void onSuccess(Response response) { + String body = response.body(); + Log.e("body", body); + try { + Gson gson = new Gson(); + BaseTyre baseTyre = gson.fromJson(body, BaseTyre.class); + if (baseTyre != null) { + // 空值处理:若字段为 null 则显示空字符串 + String tyreNo = safeGetString(baseTyre.getTyreNo()); + wtbm.setText(tyreNo); + String brand = safeGetString(baseTyre.getTyreBrand()); + String model = safeGetString(baseTyre.getTyreModel()); + String level = safeGetString(baseTyre.getTyreLevel()); + String pattern = safeGetString(baseTyre.getTyrePattern()); + String kind = safeGetString(baseTyre.getTyreType()); + pinpai.setText(brand); + xinghao.setText(model); + cengji.setText(level); + huawen.setText(pattern); + tyrekind.setText(kind); + } + } catch (JsonSyntaxException e) { + return; + } } - } catch (JsonSyntaxException e) { - return; - } - } - }); + }); } + private String safeGetString(String value) { return value == null || "null".equals(value) ? "" : value; } - //添加到库存表 - private void insert_inventory(String epc,String wtbm,String pinpai,String xinghao,String cengji,String huawen,String grooves,String tyrekind) { + + // 添加到库存表 + private void insert_inventory(String epc, String wtbm, String pinpai, String xinghao, String cengji, String huawen, String grooves, String tyrekind) { OkGo.post(MyUrl.url + "/tyre/inventory/pdaAddInventory").tag(this) .params("tyreRfid", epc) - .params("tyreEpc",epc) - .params("tyreOutsideId",wtbm) - .params("tyreBrand",pinpai) - .params("tyreModel",xinghao) - .params("tyreLevel",cengji) - .params("tyrePattern",huawen) - .params("grooves",grooves) - .params("tyreType",tyrekind) - .params("CreateBy",SharedPreferencesUtils.getstring("user","admin")).execute(new StringCallback() { - @Override - public void onSuccess(Response response) { - hideLoadingDialog(); - String body = response.body(); - Gson gson = new Gson(); - AjaxResult ajaxResult = gson.fromJson(body, AjaxResult.class); - handleResponse(ajaxResult); - } - @Override - public void onError(Response response) { - hideLoadingDialog(); - Toast.makeText(InStoreHouseActivity.this, "请求失败,请检查网络或重试", Toast.LENGTH_SHORT).show(); - } - }); + .params("tyreEpc", epc) + .params("tyreOutsideId", wtbm) + .params("tyreBrand", pinpai) + .params("tyreModel", xinghao) + .params("tyreLevel", cengji) + .params("tyrePattern", huawen) + .params("grooves", grooves) + .params("tyreType", tyrekind) + .params("CreateBy", SharedPreferencesUtils.getstring("user", "admin")).execute(new StringCallback() { + @Override + public void onSuccess(Response response) { + hideLoadingDialog(); + String body = response.body(); + Gson gson = new Gson(); + AjaxResult ajaxResult = gson.fromJson(body, AjaxResult.class); + handleResponse(ajaxResult); + } + + @Override + public void onError(Response response) { + hideLoadingDialog(); + Toast.makeText(InStoreHouseActivity.this, "请求失败,请检查网络或重试", Toast.LENGTH_SHORT).show(); + } + }); } + private void handleResponse(AjaxResult result) { switch (result.getCode()) { case "500": @@ -352,103 +336,35 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi break; } } - @OnClick({R.id.button, R.id.back}) - public void onViewClicked(View view) { - switch (view.getId()) { - case R.id.button: -// int len=wtbm.getText().toString().length(); -// if (len != 11){ -// new CommonDialog(InStoreHouseActivity.this).setMessage("胎号填写错误").show(); -// }else { -// Log.e("aaaaa",epc.substring(4)+wtbm.getText().toString()+tyrekind.getText().toString()); - String epc=scan.getText().toString(); - String w=wtbm.getText().toString(); -// String zb=zbh.getText().toString(); - String p = pinpai.getText().toString(); - String x=xinghao.getText().toString(); - String c=cengji.getText().toString(); - String h=huawen.getText().toString(); - String t=tyrekind.getText().toString(); - String g=gcts.getText().toString(); - if (scan.getText().toString()==""){ - new CommonDialog(InStoreHouseActivity.this).setMessage("请扫描轮胎芯片!").show(); - return; - } - showLoadingDialog(); - insert_inventory(epc,w,p,x,c,h,g,t); -// } - break; - case R.id.back: - Intent intent = new Intent(this, HomePageActivity.class); - startActivity(intent); - break; - } - - } @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { - switch (parent.getId()){ + + int id1 = parent.getId(); + // case R.id.spinner: // czy.setText(parent.getItemAtPosition(position).toString()); // break; - case R.id.spinnerkind: - tyrekind.setText(parent.getItemAtPosition(position).toString()); - break; - case R.id.spinnerpattern: - huawen.setText(parent.getItemAtPosition(position).toString()); - break; - case R.id.spinnerlevel: - cengji.setText(parent.getItemAtPosition(position).toString()); - break; - case R.id.spinnerSize: - xinghao.setText(parent.getItemAtPosition(position).toString()); - break; - case R.id.spinnerBrand: - pinpai.setText(parent.getItemAtPosition(position).toString()); - break; - case R.id.spinnergcts: - gcts.setText(parent.getItemAtPosition(position).toString()); - break; + if (id1 == R.id.spinnerkind) { + tyrekind.setText(parent.getItemAtPosition(position).toString()); + } else if (id1 == R.id.spinnerpattern) { + huawen.setText(parent.getItemAtPosition(position).toString()); + } else if (id1 == R.id.spinnerlevel) { + cengji.setText(parent.getItemAtPosition(position).toString()); + } else if (id1 == R.id.spinnerSize) { + xinghao.setText(parent.getItemAtPosition(position).toString()); + } else if (id1 == R.id.spinnerBrand) { + pinpai.setText(parent.getItemAtPosition(position).toString()); + } else if (id1 == R.id.spinnergcts) { + gcts.setText(parent.getItemAtPosition(position).toString()); } } - private Toast mToast; - - private Toast toast; @Override public void onNothingSelected(AdapterView parent) { } - private class KeyReceiver extends BroadcastReceiver { - @Override - public void onReceive(Context context, Intent intent) { - int keyCode = intent.getIntExtra("keyCode", 0); - if (keyCode == 0) { - keyCode = intent.getIntExtra("keycode", 0); - } - boolean keyDown = intent.getBooleanExtra("keydown", false); - if (keyDown) { - if (toast == null) { - // toast = Toast.makeText(InStoreHouseActivity.this, "KeyReceiver:keyCode = down" + keyCode, Toast.LENGTH_SHORT); - } else { - // toast.setText("KeyReceiver:keyCode = down" + keyCode); - } - // toast.show(); - switch (keyCode) { - case KeyEvent.KEYCODE_F1: - case KeyEvent.KEYCODE_F2: - case KeyEvent.KEYCODE_F3: - case KeyEvent.KEYCODE_F4: - case KeyEvent.KEYCODE_F5: - //扫描 - startFlag = true; - break; - } - } - } - } private void check_spinner() { OkGo.post(MyUrl.url + "/system/dict/data/tyreTypeList").execute(new StringCallback() { @Override @@ -456,20 +372,26 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi hideLoadingDialog(); String body = response.body(); Gson gson = new Gson(); - InStoreSpinnerVo inStoreSpinnerVo=new InStoreSpinnerVo(); - inStoreSpinnerVo = gson.fromJson(body,InStoreSpinnerVo.class); - List stringList=inStoreSpinnerVo.getKindList(); - List patternList=inStoreSpinnerVo.getPatternList(); - List patternLevel=inStoreSpinnerVo.getLevelList(); - List patternSize=inStoreSpinnerVo.getTyreSizeList(); - List patternBrand=inStoreSpinnerVo.getTyreBrandList(); - List patternGcts=inStoreSpinnerVo.getGctsList(); - ArrayAdapter arrayAdapter = new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, stringList); - ArrayAdapter arrayAdapterPattern = new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternList); - ArrayAdapter arrayAdapterLevel = new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternLevel); - ArrayAdapter arrayAdapterSize = new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternSize); - ArrayAdapter arrayAdapterBrand = new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternBrand); - ArrayAdapter arrayAdapterGcts = new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternGcts); + InStoreSpinnerVo inStoreSpinnerVo = new InStoreSpinnerVo(); + inStoreSpinnerVo = gson.fromJson(body, InStoreSpinnerVo.class); + List stringList = inStoreSpinnerVo.getKindList(); + List patternList = inStoreSpinnerVo.getPatternList(); + List patternLevel = inStoreSpinnerVo.getLevelList(); + List patternSize = inStoreSpinnerVo.getTyreSizeList(); + List patternBrand = inStoreSpinnerVo.getTyreBrandList(); + List patternGcts = inStoreSpinnerVo.getGctsList(); + ArrayAdapter arrayAdapter = + new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, stringList); + ArrayAdapter arrayAdapterPattern = + new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternList); + ArrayAdapter arrayAdapterLevel = + new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternLevel); + ArrayAdapter arrayAdapterSize = + new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternSize); + ArrayAdapter arrayAdapterBrand = + new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternBrand); + ArrayAdapter arrayAdapterGcts = + new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternGcts); spinnerkind.setAdapter(arrayAdapter); spinnerpattern.setAdapter(arrayAdapterPattern); spinnerlevel.setAdapter(arrayAdapterLevel); @@ -539,7 +461,7 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi } }); } - private KeyReceiver keyReceiver; + private void registerReceiver() { keyReceiver = new KeyReceiver(); IntentFilter filter = new IntentFilter(); @@ -547,7 +469,83 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi filter.addAction("android.intent.action.FUN_KEY"); registerReceiver(keyReceiver, filter); } + private void unregisterReceiver() { unregisterReceiver(keyReceiver); } + + /** + * Inventory EPC Thread + */ + class InventoryThread extends Thread { + byte[] accessPassword = Tools.HexString2Bytes("00000000"); + private List tagList; + + @Override + public void run() { + super.run(); + while (runFlag) { + if (startFlag) { + tagList = manager.inventoryRealTime(); // 实时盘存 + if (tagList != null && !tagList.isEmpty()) { + // 播放提示音 + Util.play(1, 0); + for (TagModel tag : tagList) { + if (tag == null) { + String epcStr = ""; +// String epcStr = new String(epc); + addToList(listEPC, epcStr, (byte) -1); + } else { + String epcStr = + Tools.Bytes2HexString(tag.getmEpcBytes(), tag.getmEpcBytes().length); +// String epcStr = new String(epc); + byte rssi = tag.getmRssi(); + addToList(listEPC, epcStr, rssi); + } + + } + } + tagList = null; + try { + Thread.sleep(20); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + } + + private class KeyReceiver extends BroadcastReceiver { + + + @Override + public void onReceive(Context context, Intent intent) { + int keyCode = intent.getIntExtra("keyCode", 0); + if (keyCode == 0) { + keyCode = intent.getIntExtra("keycode", 0); + } + boolean keyDown = intent.getBooleanExtra("keydown", false); + if (keyDown) { + if (toast == null) { + // toast = Toast.makeText(InStoreHouseActivity.this, "KeyReceiver:keyCode = down" + keyCode, Toast.LENGTH_SHORT); + } else { + // toast.setText("KeyReceiver:keyCode = down" + keyCode); + } + // toast.show(); + switch (keyCode) { + case KeyEvent.KEYCODE_F1: + case KeyEvent.KEYCODE_F2: + case KeyEvent.KEYCODE_F3: + case KeyEvent.KEYCODE_F4: + case KeyEvent.KEYCODE_F5: + // 扫描 + startFlag = true; + break; + } + } + } + } } + diff --git a/app/src/main/java/com/example/tyre/MainActivity.java b/app/src/main/java/com/example/tyre/MainActivity.java index f059324..f788b3c 100644 --- a/app/src/main/java/com/example/tyre/MainActivity.java +++ b/app/src/main/java/com/example/tyre/MainActivity.java @@ -20,6 +20,7 @@ import android.os.Bundle; import android.os.Environment; import android.os.Process; import android.util.Log; +import android.view.WindowManager; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; @@ -46,20 +47,16 @@ import org.json.JSONObject; import java.io.File; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; +import cn.pda.serialport.Tools; +import com.example.tyre.databinding.ActivityMainBinding; public class MainActivity extends AppCompatActivity { - @BindView(R.id.login_name) + private ActivityMainBinding binding; + EditText loginName; - @BindView(R.id.login_pass) EditText loginPass; - @BindView(R.id.login_log) Button loginLog; - @BindView(R.id.checkbox_remember) CheckBox cbRemember; - @BindView(R.id.version) TextView version; // 声明进度条变量 private ProgressDialog progressDialog; @@ -74,15 +71,38 @@ public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - ButterKnife.bind(this); - // --- 新增:页面加载时读取保存的账号密码 --- + binding = ActivityMainBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + bindViews(); + setupClickListeners(); initRememberInfo(); - // 2. 检查权限并开始检查更新 - //showLoadingDialog(); - //checkPermissionsAndUpdate(); - // 注册下载完成广播接收器 - //registerReceiver(onDownloadComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); + checkPermissionsAndUpdate(); + // 隐藏状态栏 + getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); + } + + private void bindViews() { + loginName = binding.loginName; + loginPass = binding.loginPass; + loginLog = binding.loginLog; + cbRemember = binding.checkboxRemember; + version = binding.version; + } + + private void setupClickListeners() { + binding.loginLog.setOnClickListener(v -> { + String name = loginName.getText().toString().trim(); + String pass = loginPass.getText().toString().trim(); + boolean isRemember = cbRemember.isChecked(); + + if (name.isEmpty() || pass.isEmpty()) { + Toast.makeText(this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show(); + return; + } + + showLoadingDialog(); + login(name, pass, isRemember); + }); } /** * 检查权限并开始版本更新检查 @@ -122,26 +142,6 @@ public class MainActivity extends AppCompatActivity { } } - @OnClick(R.id.login_log) - public void onViewClicked() { - // 获取输入内容 - String name = loginName.getText().toString().trim(); - String pass = loginPass.getText().toString().trim(); - - // --- 修改:在点击登录时立即获取CheckBox状态 --- - // 注意:这里直接用 cbRemember.isChecked(),不要等到网络请求回来再判断 - boolean isRemember = cbRemember.isChecked(); - - // 简单的非空校验 - if (name.isEmpty() || pass.isEmpty()) { - Toast.makeText(this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show(); - return; - } - - showLoadingDialog(); - login(name, pass, isRemember); // 将状态传递给 login 方法 - } - /** * 核心逻辑:检查更新 */ diff --git a/app/src/main/java/com/example/tyre/OutStoreHouseActivity.java b/app/src/main/java/com/example/tyre/OutStoreHouseActivity.java index a0b697b..1ab1ffa 100644 --- a/app/src/main/java/com/example/tyre/OutStoreHouseActivity.java +++ b/app/src/main/java/com/example/tyre/OutStoreHouseActivity.java @@ -42,32 +42,21 @@ import java.util.ArrayList; import java.util.List; import androidx.appcompat.app.AppCompatActivity; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; import cn.pda.serialport.Tools; +import com.example.tyre.databinding.ActivityOutStoreHouseBinding; public class OutStoreHouseActivity extends AppCompatActivity { - @BindView(R.id.epc) + private ActivityOutStoreHouseBinding binding; + TextView scan; - @BindView(R.id.pinpai) TextView pinpai; - @BindView(R.id.xinghao) TextView xinghao; - @BindView(R.id.cengji) TextView cengji; - @BindView(R.id.huawen) TextView huawen; - @BindView(R.id.button) Button button; - @BindView(R.id.wtbm) TextView wtbm; -// @BindView(R.id.zbh) -// TextView zbh; - @BindView(R.id.back) Button back; - @BindView(R.id.ltlb) TextView ltlb; private boolean isStart = true; private ProgressDialog progressDialog; @@ -84,8 +73,10 @@ public class OutStoreHouseActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_out_store_house); - ButterKnife.bind(this); + binding = ActivityOutStoreHouseBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + bindViews(); + setupClickListeners(); manager = MyApplication.getManager(); listEPC = new ArrayList(); Thread thread = new InventoryThread(); @@ -93,6 +84,30 @@ public class OutStoreHouseActivity extends AppCompatActivity { Util.initSoundPool(this); } + private void bindViews() { + scan = binding.epc; + pinpai = binding.pinpai; + xinghao = binding.xinghao; + cengji = binding.cengji; + huawen = binding.huawen; + button = binding.button; + wtbm = binding.wtbm; + back = binding.back; + ltlb = binding.ltlb; + } + + private void setupClickListeners() { + binding.button.setOnClickListener(v -> { + showLoadingDialog(); + out_inventory(scan.getText().toString(),SharedPreferencesUtils.getstring("user","admin")); + }); + + binding.back.setOnClickListener(v -> { + Intent intent = new Intent(this, HomePageActivity.class); + startActivity(intent); + }); + } + @Override public void onResume() { @@ -262,7 +277,6 @@ public class OutStoreHouseActivity extends AppCompatActivity { private String safeGetString(String value) { return value == null || "null".equals(value) ? "" : value; } - //轮胎出库 private void out_inventory(String epc,String createBy) { OkGo.post(MyUrl.url + "/tyre/inventory/pdaOutInventory").tag(this) .params("tyreRfid", epc) @@ -279,22 +293,6 @@ public class OutStoreHouseActivity extends AppCompatActivity { }); } - @OnClick({R.id.button, R.id.back}) - public void onViewClicked(View view) { - switch (view.getId()) { - case R.id.button: -// Log.e("aaaaa",epc.substring(4)+wtbm.getText().toString()); - showLoadingDialog(); - out_inventory(scan.getText().toString(),SharedPreferencesUtils.getstring("user","admin")); - break; - case R.id.back: - Intent intent = new Intent(this, HomePageActivity.class); - startActivity(intent); - break; - } - - } - private class KeyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { diff --git a/app/src/main/java/com/example/tyre/SwitchActivity.java b/app/src/main/java/com/example/tyre/SwitchActivity.java index 800c484..0030e50 100644 --- a/app/src/main/java/com/example/tyre/SwitchActivity.java +++ b/app/src/main/java/com/example/tyre/SwitchActivity.java @@ -33,35 +33,24 @@ import java.util.ArrayList; import java.util.List; import androidx.appcompat.app.AppCompatActivity; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; +import cn.pda.serialport.Tools; +import com.example.tyre.databinding.ActivitySwitchBinding; public class SwitchActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener { - @BindView(R.id.epc) + private ActivitySwitchBinding binding; + TextView epc1; - @BindView(R.id.car1) TextView car1; - @BindView(R.id.lw1) TextView lw1; - @BindView(R.id.epc2) TextView epc2; - @BindView(R.id.car) TextView car; - @BindView(R.id.lw2) TextView lw2; - @BindView(R.id.ok) Button ok; - @BindView(R.id.back) Button back; - @BindView(R.id.wth1) TextView wth1; - @BindView(R.id.linearLayout5) LinearLayout linearLayout5; - @BindView(R.id.wth2) TextView wth2; - @BindView(R.id.lc) EditText lc; // @BindView(R.id.czr) // TextView czr; @@ -83,16 +72,66 @@ public class SwitchActivity extends AppCompatActivity implements AdapterView.OnI @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_switch); - ButterKnife.bind(this); + binding = ActivitySwitchBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + bindViews(); + setupClickListeners(); myHandler = new MyHandler(this); -// spinner.setOnItemSelectedListener(this); upTyre = new UpTyre(); changeTyre = new ChangeTyre(); list_change = new ArrayList<>(); PlayMusic.init(this); } + private void bindViews() { + epc1 = binding.epc; + car1 = binding.car1; + lw1 = binding.lw1; + epc2 = binding.epc2; + car = binding.car; + lw2 = binding.lw2; + ok = binding.ok; + back = binding.back; + wth1 = binding.wth1; + linearLayout5 = binding.linearLayout5; + wth2 = binding.wth2; + lc = binding.lc; + } + + private void setupClickListeners() { + binding.ok.setOnClickListener(v -> { + changeTyre.setCarnumber(car.getText().toString()); + changeTyre.setTyreEPCOne(epc1.getText().toString()); + changeTyre.setTyreEPCTwo(epc2.getText().toString()); + changeTyre.setSiteNoOneOld(lw1.getText().toString()); + changeTyre.setSiteNoOneNow(lw2.getText().toString()); + changeTyre.setSiteNoTwoOld(lw2.getText().toString()); + changeTyre.setSiteNoTwoNow(lw1.getText().toString()); + list_change.add(changeTyre); + String json = gson.toJson(list_change); + Log.e("json", json + wth1.getText().toString() + wth2.getText().toString() + userID); + if (epc1.getText().toString().equals(epc2.getText().toString())){ + new CommonDialog(SwitchActivity.this).setMessage("轮胎EPC一样").show(); + } + else if (!car.getText().toString().equals(car1.getText().toString())) + { + new CommonDialog(SwitchActivity.this).setMessage("车牌号不一样").show(); + } + else if (lc.getText().toString().isEmpty()){ + new CommonDialog(SwitchActivity.this).setMessage("换位里程不能为空").show(); + } + else { + change(json, wth1.getText().toString(), wth2.getText().toString(), userID,lc.getText().toString()); + } + list_change.clear(); + }); + + binding.back.setOnClickListener(v -> { + Intent intent = new Intent(this, HomePageActivity.class); + startActivity(intent); + }); + } + @Override public void onResume() { super.onResume(); @@ -159,42 +198,6 @@ public class SwitchActivity extends AppCompatActivity implements AdapterView.OnI public void onNothingSelected(AdapterView parent) { } - @OnClick({R.id.ok, R.id.back}) - public void onViewClicked(View view) { - switch (view.getId()) { - case R.id.ok: - changeTyre.setCarnumber(car.getText().toString()); - changeTyre.setTyreEPCOne(epc1.getText().toString()); - changeTyre.setTyreEPCTwo(epc2.getText().toString()); - changeTyre.setSiteNoOneOld(lw1.getText().toString()); - changeTyre.setSiteNoOneNow(lw2.getText().toString()); - changeTyre.setSiteNoTwoOld(lw2.getText().toString()); - changeTyre.setSiteNoTwoNow(lw1.getText().toString()); - list_change.add(changeTyre); - String json = gson.toJson(list_change); - Log.e("json", json + wth1.getText().toString() + wth2.getText().toString() + userID); - if (epc1.getText().toString().equals(epc2.getText().toString())){ - new CommonDialog(SwitchActivity.this).setMessage("轮胎EPC一样").show(); - } - else if (!car.getText().toString().equals(car1.getText().toString())) - { - new CommonDialog(SwitchActivity.this).setMessage("车牌号不一样").show(); - } - else if (lc.getText().toString().isEmpty()){ - new CommonDialog(SwitchActivity.this).setMessage("换位里程不能为空").show(); - } - else { - change(json, wth1.getText().toString(), wth2.getText().toString(), userID,lc.getText().toString()); - } - list_change.clear(); - break; - case R.id.back: - Intent intent = new Intent(this, HomePageActivity.class); - startActivity(intent); - break; - } - } - class MyHandler extends Handler { WeakReference weakReference; diff --git a/app/src/main/java/com/example/tyre/TestActivity.java b/app/src/main/java/com/example/tyre/TestActivity.java index 8fd09a2..49d46ad 100644 --- a/app/src/main/java/com/example/tyre/TestActivity.java +++ b/app/src/main/java/com/example/tyre/TestActivity.java @@ -49,27 +49,19 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; import cn.pda.serialport.Tools; +import com.example.tyre.databinding.ActivityTestBinding; public class TestActivity extends AppCompatActivity { - @BindView(R.id.button) + private ActivityTestBinding binding; + Button back; - @BindView(R.id.dept) EditText deptName; - @BindView(R.id.searchButton) Button search; - @BindView(R.id.in_santext) TextView in_santext; - @BindView(R.id.pinpai) TextView carNo; - @BindView(R.id.carLine) TextView line; - @BindView(R.id.carType) TextView type; - @BindView(R.id.confirm_button) Button confirm; private boolean isStart = true; private ProgressDialog progressDialog; @@ -89,8 +81,10 @@ public class TestActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_test); - ButterKnife.bind(this); + binding = ActivityTestBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + bindViews(); + setupClickListeners(); manager = MyApplication.getManager(); listEPC = new ArrayList(); Thread thread = new InventoryThread(); @@ -99,6 +93,40 @@ public class TestActivity extends AppCompatActivity { Util.initSoundPool(this); } + + private void bindViews() { + back = binding.button; + deptName = binding.dept; + search = binding.searchButton; + in_santext = binding.inSantext; + carNo = binding.pinpai; + line = binding.carLine; + type = binding.carType; + confirm = binding.confirmButton; + } + + private void setupClickListeners() { + binding.button.setOnClickListener(v -> { + Intent intent = new Intent(this, HomePageActivity.class); + startActivity(intent); + }); + + binding.searchButton.setOnClickListener(v -> { + String carTeam = deptName.getText().toString(); + if (carTeam == null || carTeam.isEmpty()) + { + new CommonDialog(TestActivity.this).setMessage("请输入车队名称!").show(); + return; + } + showLoadingDialog(); + car_team(carTeam); + }); + + binding.confirmButton.setOnClickListener(v -> { + showLoadingDialog(); + carBangding(); + }); + } @Override protected void onResume() { super.onResume(); @@ -134,33 +162,6 @@ public class TestActivity extends AppCompatActivity { runFlag = false; super.onDestroy(); } - @OnClick({R.id.button,R.id.searchButton,R.id.confirm_button}) - public void onViewClicked(View view) { - Intent intent = new Intent(this,MainActivity.class); - String carTeam = deptName.getText().toString(); - switch (view.getId()) { - case R.id.button: - intent = new Intent(this, HomePageActivity.class); - startActivity(intent); - break; - case R.id.searchButton: - if (carTeam == null || carTeam.isEmpty()) - { - new CommonDialog(TestActivity.this).setMessage("请输入车队名称!").show(); - return; - } - showLoadingDialog(); - car_team(carTeam); - break; - case R.id.confirm_button: - //执行绑定请求后台 - showLoadingDialog(); - carBangding(); - break; - } - - } - //绑定车牌与RFID信息 private void carBangding() { OkGo.post(MyUrl.url + "/tyre/car/PdaBingCarRfid") .tag(this).params("rfid", in_santext.getText().toString()) diff --git a/app/src/main/java/com/example/tyre/TyreLayoutActivity.java b/app/src/main/java/com/example/tyre/TyreLayoutActivity.java index 6c1877a..3eaa5e6 100644 --- a/app/src/main/java/com/example/tyre/TyreLayoutActivity.java +++ b/app/src/main/java/com/example/tyre/TyreLayoutActivity.java @@ -43,22 +43,15 @@ import com.lzy.okgo.model.Response; import java.util.ArrayList; import java.util.List; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; import cn.pda.serialport.Tools; +import com.example.tyre.databinding.ActivityTyreLayoutBinding; public class TyreLayoutActivity extends AppCompatActivity { - // 1. 使用 @BindView 绑定控件 - // 注意:变量名可以自定义,但 ID 必须对应 XML 中的 id - @BindView(R.id.et_plate_number) + private ActivityTyreLayoutBinding binding; + TextInputEditText etPlateNumber; - - @BindView(R.id.btn_retrieve) - Button btnRetrieve; // 因为使用的是 MaterialButton,这里类型要对应 - - @BindView(R.id.til_plate_number) + Button btnRetrieve; TextInputLayout tilPlateNumber; private ProgressDialog progressDialog; @@ -94,14 +87,16 @@ public class TyreLayoutActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_tyre_layout); - ButterKnife.bind(this); + binding = ActivityTyreLayoutBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + bindViews(); + setupClickListeners(); manager = MyApplication.getManager(); listEPC = new ArrayList(); Thread thread = new InventoryThread(); thread.start(); Util.initSoundPool(this); - tilPlateNumber = findViewById(R.id.til_plate_number); + tilPlateNumber = binding.tilPlateNumber; etPlateNumber.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @@ -111,18 +106,12 @@ public class TyreLayoutActivity extends AppCompatActivity { @Override public void afterTextChanged(Editable s) { - // 核心代码:只要用户输入了内容,就清除错误提示 tilPlateNumber.setError(null); - - // 可选:如果你使用了 errorEnabled="true",可能还需要调用下面这行来彻底清除空间占用 - // tilPlateNumber.setErrorEnabled(false); } }); tilPlateNumber.setEndIconOnClickListener(v -> { - // 在这里处理搜索逻辑 String plateNumber = etPlateNumber.getText().toString().trim(); if (!plateNumber.isEmpty()) { - // 执行搜索 showLoadingDialog(); performSearch(plateNumber); } else { @@ -130,6 +119,24 @@ public class TyreLayoutActivity extends AppCompatActivity { } }); } + + private void bindViews() { + etPlateNumber = binding.etPlateNumber; + btnRetrieve = binding.btnRetrieve; + tilPlateNumber = binding.tilPlateNumber; + } + + private void setupClickListeners() { + binding.btnRetrieve.setOnClickListener(v -> { + String PlateNumber = etPlateNumber.getText().toString(); + if (PlateNumber == null || PlateNumber.isEmpty()) + { + new CommonDialog(TyreLayoutActivity.this).setMessage("请输入车牌号!").show(); + return; + } + carBangding(PlateNumber); + }); + } @Override public void onResume() { super.onResume(); @@ -187,21 +194,6 @@ public class TyreLayoutActivity extends AppCompatActivity { }); dialog.show(); } - @OnClick({R.id.btn_retrieve}) - public void onViewClicked(View view) { - String PlateNumber = etPlateNumber.getText().toString(); - switch (view.getId()) { - case R.id.btn_retrieve: - if (PlateNumber == null || PlateNumber.isEmpty()) - { - new CommonDialog(TyreLayoutActivity.this).setMessage("请输入车牌号!").show(); - return; - } - carBangding(PlateNumber); - break; - } - } - //绑定车牌与RFID信息 private void carBangding(String PlateNumber) { OkGo.post(MyUrl.url + "/tyre/tyre/getCarBingTire") .tag(this).params("carNo", PlateNumber) diff --git a/app/src/main/java/com/example/tyre/TyreLoadUnLoadActivity.java b/app/src/main/java/com/example/tyre/TyreLoadUnLoadActivity.java index 95cb75c..cc31e4e 100644 --- a/app/src/main/java/com/example/tyre/TyreLoadUnLoadActivity.java +++ b/app/src/main/java/com/example/tyre/TyreLoadUnLoadActivity.java @@ -3,45 +3,46 @@ package com.example.tyre; import android.content.Intent; import android.os.Bundle; -import android.view.View; -import android.widget.Button; import android.widget.RadioButton; import androidx.appcompat.app.AppCompatActivity; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; +import com.example.tyre.databinding.ActivityTyreLoadUnLoadBinding; public class TyreLoadUnLoadActivity extends AppCompatActivity { - @BindView(R.id.up) + private ActivityTyreLoadUnLoadBinding binding; + RadioButton up; - @BindView(R.id.down) RadioButton down; - @BindView(R.id.back) - Button back; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_tyre_load_un_load); - ButterKnife.bind(this); + binding = ActivityTyreLoadUnLoadBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + bindViews(); + setupClickListeners(); } - @OnClick({R.id.up, R.id.down,R.id.back}) - public void onViewClicked(View view) { - Intent intent = null; - switch (view.getId()) { - case R.id.up: - intent = new Intent(this, UpActivity.class); - break; - case R.id.down: - intent = new Intent(this, DownActivity.class); - break; - case R.id.back: - intent = new Intent(this, HomePageActivity.class); - break; - } - startActivity(intent); + private void bindViews() { + up = binding.up; + down = binding.down; + } + + private void setupClickListeners() { + binding.up.setOnClickListener(v -> { + Intent intent = new Intent(this, UpActivity.class); + startActivity(intent); + }); + + binding.down.setOnClickListener(v -> { + Intent intent = new Intent(this, DownActivity.class); + startActivity(intent); + }); + + binding.back.setOnClickListener(v -> { + Intent intent = new Intent(this, HomePageActivity.class); + startActivity(intent); + }); } } diff --git a/app/src/main/java/com/example/tyre/TyreSearchActivity.java b/app/src/main/java/com/example/tyre/TyreSearchActivity.java index bba62be..5c30557 100644 --- a/app/src/main/java/com/example/tyre/TyreSearchActivity.java +++ b/app/src/main/java/com/example/tyre/TyreSearchActivity.java @@ -35,89 +35,81 @@ import com.google.gson.JsonSyntaxException; import com.lzy.okgo.OkGo; import com.lzy.okgo.callback.StringCallback; import com.lzy.okgo.model.Response; -//import com.seuic.scanner.ScannerKey; -//import com.seuic.uhf.EPC; -//import com.seuic.uhf.UHFService; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; import androidx.appcompat.app.AppCompatActivity; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; import cn.pda.serialport.Tools; +import com.example.tyre.databinding.ActivityTyresearchBinding; -/** - * Created by 杨万里 on 2019/12/3. - */ +public class TyreSearchActivity extends AppCompatActivity { + private ActivityTyresearchBinding binding; -public class TyreSearchActivity extends AppCompatActivity implements View.OnClickListener{ - @BindView(R.id.in_santext) TextView inSantext; - @BindView(R.id.basemessage) Button basemessage; - @BindView(R.id.button) Button button; - @BindView(R.id.pinpai) TextView pinpai; - @BindView(R.id.xinghao) TextView xinghao; - @BindView(R.id.cengji) TextView cengji; - @BindView(R.id.huawen) TextView huawen; - private int power = 0;//rate of work + private int power = 0; private int area = 0; private SharedPreferences shared; private TextView textVersion; - private Button buttonStart; - private Button buttonBack; + private boolean runFlag = true; private boolean startFlag = false; - private UhfReader manager; // UHF manager,UHF Operating handle + private UhfReader manager; private ArrayList listEPC; private ArrayList listepc = new ArrayList(); private ProgressDialog progressDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_tyresearch); + binding = ActivityTyresearchBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + bindViews(); + setupClickListeners(); manager = MyApplication.getManager(); initView(); - //start inventory thread Thread thread = new InventoryThread(); thread.start(); - // init sound pool com.example.tyre.util.Util.initSoundPool(this); Log.e("onCreate", "onCreate:+ " ); } - @Override - public void onClick(View v) { - byte[] accessPassword = Tools.HexString2Bytes("00000000"); - List tagList; -// addr = Integer.valueOf(editAddr.getText().toString()); -// length = Integer.valueOf(editLength.getText().toString()); - switch (v.getId()) { - case R.id.scan_button: - if (!startFlag) { - startFlag = true; - buttonStart.setText("停 止"); - } else { - startFlag = false; - buttonStart.setText("扫 描"); - } - break; - case R.id.button: - Intent intent = new Intent(this, HomePageActivity.class); - startActivity(intent); - break; - } + private void bindViews() { + inSantext = binding.inSantext; + basemessage = binding.basemessage; + button = binding.button; + pinpai = binding.pinpai; + xinghao = binding.xinghao; + cengji = binding.cengji; + huawen = binding.huawen; } + private void setupClickListeners() { + binding.scanButton.setOnClickListener(v -> { + if (!startFlag) { + startFlag = true; + binding.scanButton.setText("停 止"); + } else { + startFlag = false; + binding.scanButton.setText("扫 描"); + } + }); + binding.button.setOnClickListener(v -> { + // Intent intent = new Intent(this, HomePageActivity.class); + // startActivity(intent); + finish(); + }); + } + + + @Override public void onResume() { super.onResume(); @@ -133,7 +125,7 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic @Override public void onPause() { startFlag = false; - buttonStart.setText("扫 描"); + binding.scanButton.setText("扫描"); // manager.close(); unregisterReceiver(); Log.e("onPause", "onPause:+ " ); @@ -144,39 +136,26 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic protected void onDestroy() { startFlag = false; runFlag = false; -// if (manager != null) { -// manager.close(); -// manager = null; // 重置manager引用 -// } Log.e("onDestroy", "onDestroy:+ " ); super.onDestroy(); } private void initView() { - textVersion = (TextView) findViewById(R.id.in_santext); - buttonStart = (Button) findViewById(R.id.scan_button); - buttonBack =(Button) findViewById(R.id.button); - pinpai = (TextView) findViewById(R.id.pinpai); - xinghao = (TextView) findViewById(R.id.xinghao); - cengji = (TextView) findViewById(R.id.cengji); - huawen = (TextView) findViewById(R.id.huawen); - buttonStart.setOnClickListener(this); - buttonBack.setOnClickListener(this); + textVersion = binding.inSantext; + pinpai = binding.pinpai; + xinghao = binding.xinghao; + cengji = binding.cengji; + huawen = binding.huawen; + listEPC = new ArrayList(); } private long exitTime = 0; - /** - * show Toast - */ private Toast mToast; private Toast toast; - /** - * Inventory EPC Thread - */ class InventoryThread extends Thread { private List tagList; byte[] accessPassword = Tools.HexString2Bytes("00000000"); @@ -185,18 +164,15 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic super.run(); while (runFlag) { if (startFlag) { - tagList = manager.inventoryRealTime(); //实时盘存 + tagList = manager.inventoryRealTime(); if (tagList != null && !tagList.isEmpty()) { - //播放提示音 Util.play(1, 0); for (TagModel tag : tagList) { if (tag == null) { String epcStr = ""; -// String epcStr = new String(epc); addToList(listEPC, epcStr, (byte) -1); } else { String epcStr = Tools.Bytes2HexString(tag.getmEpcBytes(), tag.getmEpcBytes().length); -// String epcStr = new String(epc); byte rssi = tag.getmRssi(); addToList(listEPC, epcStr, rssi); } @@ -207,19 +183,16 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic try { Thread.sleep(20); } catch (InterruptedException e) { - // TODO Auto-generated catch block e.printStackTrace(); } } } } } - // EPC add to LISTVIEW private void addToList(final List list, final String epc, final byte rssi) { runOnUiThread(new Runnable() { @Override public void run() { - // The epc for the first time if (list.isEmpty()) { EPC epcTag = new EPC(); epcTag.setEpc(epc); @@ -231,14 +204,12 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic }else { for (int i = 0; i < list.size(); i++) { EPC mEPC = list.get(i); - // list contain this epc if (epc.equals(mEPC.getEpc())) { mEPC.setCount(mEPC.getCount() + 1); mEPC.setRssi(rssi); list.set(i, mEPC); break; } else if (i == (list.size() - 1)) { - // list doesn't contain this epc EPC newEPC = new EPC(); newEPC.setEpc(epc); newEPC.setCount(1); @@ -249,7 +220,6 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic } } - // play sound lastTime = SystemClock.elapsedRealtime(); long time = lastTime - nextTime; if (time >= 60) { @@ -262,16 +232,14 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic Log.e("EPC", "listepc:+ " + listepc); if (listepc != null && !listepc.isEmpty()){ startFlag = false; - buttonStart.setText("扫 描"); + binding.scanButton.setText("扫 描"); textVersion.setText(listepc.get(0).toString()); - //请求后台 find(listepc.get(0).toString()); } clearData(); } long lastTime; long nextTime; - // Make the button clickable or unclickable private void setButtonClickable(Button button, boolean flag) { button.setClickable(flag); if (flag) { @@ -320,39 +288,31 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic boolean keyDown = intent.getBooleanExtra("keydown", false); if (keyDown) { if (toast == null) { - // toast = Toast.makeText(TyreSearchActivity.this, "KeyReceiver:keyCode = down" + keyCode, Toast.LENGTH_SHORT); } else { - // toast.setText("KeyReceiver:keyCode = down" + keyCode); } - //toast.show(); switch (keyCode) { case KeyEvent.KEYCODE_F1: case KeyEvent.KEYCODE_F2: case KeyEvent.KEYCODE_F3: case KeyEvent.KEYCODE_F4: case KeyEvent.KEYCODE_F5: - //触发扫描动作 - onClick(buttonStart); + binding.scanButton.callOnClick(); break; } } } } -// 基本信息查询 private void find(String epc) { - //showLoadingDialog(); OkGo.post(MyUrl.url + "/tyre/tyre/pdaQueryTyreInfo").tag(this) .params("tyreEpc", epc) .execute(new StringCallback() { @Override public void onSuccess(Response response) { - // hideLoadingDialog(); String body = response.body(); try { Gson gson = new Gson(); BaseTyre baseTyre = gson.fromJson(body, BaseTyre.class); if (baseTyre != null) { - // 空值处理:若字段为 null 则显示空字符串 String brand = safeGetString(baseTyre.getTyreBrand()); String model = safeGetString(baseTyre.getTyreModel()); String level = safeGetString(baseTyre.getTyreLevel()); @@ -369,7 +329,6 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic huawen.setText(""); } } catch (JsonSyntaxException e) { - // 处理 JSON 解析错误 pinpai.setText(""); xinghao.setText(""); cengji.setText(""); @@ -382,4 +341,4 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic private String safeGetString(String value) { return value == null || "null".equals(value) ? "" : value; } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/example/tyre/UpActivity.java b/app/src/main/java/com/example/tyre/UpActivity.java index 8007222..f15bfbf 100644 --- a/app/src/main/java/com/example/tyre/UpActivity.java +++ b/app/src/main/java/com/example/tyre/UpActivity.java @@ -48,35 +48,22 @@ import java.util.ArrayList; import java.util.List; import androidx.appcompat.app.AppCompatActivity; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; import cn.pda.serialport.Tools; +import com.example.tyre.databinding.ActivityUpBinding; public class UpActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{ + private ActivityUpBinding binding; - @BindView(R.id.epc) TextView EPC; - @BindView(R.id.azlw) TextView azlw; - @BindView(R.id.condition) Spinner condition; -// @BindView(R.id.carAdapter) -// Spinner carAdapter; - @BindView(R.id.start) EditText start; - @BindView(R.id.searchButton) Button searchButton; - @BindView(R.id.ok) Button ok; - @BindView(R.id.back) Button back; - @BindView(R.id.th) TextView th; - @BindView(R.id.zbh) TextView zbh; - @BindView(R.id.car) EditText car; private boolean isStart = true; private ProgressDialog progressDialog; @@ -95,20 +82,88 @@ public class UpActivity extends AppCompatActivity implements AdapterView.OnItemS @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_up); - ButterKnife.bind(this); + binding = ActivityUpBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + bindViews(); + setupClickListeners(); manager = MyApplication.getManager(); listEPC = new ArrayList(); condition.setOnItemSelectedListener(this); showLoadingDialog(); check_spinner(); - //car_spinner(); Thread thread = new InventoryThread(); thread.start(); Util.initSoundPool(this); } + private void bindViews() { + EPC = binding.epc; + azlw = binding.azlw; + condition = binding.condition; + start = binding.start; + searchButton = binding.searchButton; + ok = binding.ok; + back = binding.back; + th = binding.th; + zbh = binding.zbh; + car = binding.car; + } + + private void setupClickListeners() { + binding.ok.setOnClickListener(v -> { + String rfid=EPC.getText().toString(); + String carNo = car.getText().toString(); + String millage = start.getText().toString(); + String wheel = azlw.getText().toString(); + String selfNo = zbh.getText().toString(); + + if (rfid == null || rfid.isEmpty()) + { + new CommonDialog(UpActivity.this).setMessage("请扫描轮胎!").show(); + return; + } + if (carNo == null || carNo.isEmpty()) + { + new CommonDialog(UpActivity.this).setMessage("请选择安装车辆!").show(); + return; + } + if (millage == null || millage.isEmpty()) + { + new CommonDialog(UpActivity.this).setMessage("请输入起始里程!").show(); + return; + } + if (wheel == null || wheel.isEmpty()) + { + new CommonDialog(UpActivity.this).setMessage("请选择安装轮位!").show(); + return; + } + if (selfNo == null || selfNo.isEmpty()) + { + new CommonDialog(UpActivity.this).setMessage("请输入自编号!").show(); + return; + } + up_insert(rfid,carNo,millage,wheel,selfNo); + showLoadingDialog(); + }); + + binding.back.setOnClickListener(v -> { + Intent intent = new Intent(this, HomePageActivity.class); + startActivity(intent); + }); + + binding.searchButton.setOnClickListener(v -> { + String carNo = car.getText().toString(); + if (carNo == null || carNo.isEmpty()) + { + new CommonDialog(UpActivity.this).setMessage("请输入车牌号!").show(); + return; + } + showLoadingDialog(); + car_spinner(carNo); + }); + } + @@ -300,75 +355,15 @@ public class UpActivity extends AppCompatActivity implements AdapterView.OnItemS @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { - switch (parent.getId()){ - case R.id.condition: - azlw.setText(parent.getItemAtPosition(position).toString()); - break; + if (parent.getId() == R.id.condition) { + azlw.setText(parent.getItemAtPosition(position).toString()); } } // 添加缺失的方法 @Override public void onNothingSelected(AdapterView parent) { - // 当没有选项被选中时的处理逻辑 - // 可以留空,但必须实现这个方法 } - @OnClick({R.id.ok, R.id.back,R.id.searchButton}) - public void onViewClicked(View view) { - - String rfid=EPC.getText().toString(); - String carNo = car.getText().toString(); - String millage = start.getText().toString(); - String wheel = azlw.getText().toString(); - String selfNo = zbh.getText().toString(); - switch (view.getId()) { - case R.id.ok: - -// String azlw = - if (rfid == null || rfid.isEmpty()) - { - new CommonDialog(UpActivity.this).setMessage("请扫描轮胎!").show(); - return; - } - if (carNo == null || carNo.isEmpty()) - { - new CommonDialog(UpActivity.this).setMessage("请选择安装车辆!").show(); - return; - } - if (millage == null || millage.isEmpty()) - { - new CommonDialog(UpActivity.this).setMessage("请输入起始里程!").show(); - return; - } - if (wheel == null || wheel.isEmpty()) - { - new CommonDialog(UpActivity.this).setMessage("请选择安装轮位!").show(); - return; - } - if (selfNo == null || selfNo.isEmpty()) - { - new CommonDialog(UpActivity.this).setMessage("请输入自编号!").show(); - return; - } - up_insert(rfid,carNo,millage,wheel,selfNo); - showLoadingDialog(); - break; - case R.id.back: - Intent intent = new Intent(this, HomePageActivity.class); - startActivity(intent); - break; - case R.id.searchButton: - if (carNo == null || carNo.isEmpty()) - { - new CommonDialog(UpActivity.this).setMessage("请输入车牌号!").show(); - return; - } - showLoadingDialog(); - car_spinner(carNo); - break; - } - } - // 安装请求后台 private void up_insert(String rfid,String carNo,String millage,String wheel,String selfNo) { OkGo.post(MyUrl.url + "/tyre/install/PdaInstallTyre").tag(this) .params("tyreRfid", rfid) diff --git a/app/src/main/java/com/example/tyre/maintenance/BaseActivity.java b/app/src/main/java/com/example/tyre/maintenance/BaseActivity.java new file mode 100644 index 0000000..e618394 --- /dev/null +++ b/app/src/main/java/com/example/tyre/maintenance/BaseActivity.java @@ -0,0 +1,16 @@ +package com.example.tyre.maintenance; + +import android.view.View; + +import androidx.appcompat.app.AppCompatActivity; + +import java.text.Format; +import java.text.SimpleDateFormat; + +public class BaseActivity extends AppCompatActivity { + public SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd"); + + public void onBackClick(View view) { + finish(); + } +} diff --git a/app/src/main/java/com/example/tyre/maintenance/CreateWorkOrderActivity.java b/app/src/main/java/com/example/tyre/maintenance/CreateWorkOrderActivity.java new file mode 100644 index 0000000..eb9f39d --- /dev/null +++ b/app/src/main/java/com/example/tyre/maintenance/CreateWorkOrderActivity.java @@ -0,0 +1,33 @@ +package com.example.tyre.maintenance; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; + +import com.example.tyre.R; +import com.example.tyre.maintenance.dialog.TipResultDialog; + +public class CreateWorkOrderActivity extends BaseActivity { + TipResultDialog dialog; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + DataBindingUtil.setContentView(this,R.layout.activity_create_work_order); + dialog = new TipResultDialog(this, this); + + } + + public void openSelectCarDialog(View view) { + + } + + + public void generateWorkOrder(View view) { + dialog.show(true, "工单生成成功", true); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/tyre/maintenance/NewHomePageActivity.java b/app/src/main/java/com/example/tyre/maintenance/NewHomePageActivity.java new file mode 100644 index 0000000..c0d4c00 --- /dev/null +++ b/app/src/main/java/com/example/tyre/maintenance/NewHomePageActivity.java @@ -0,0 +1,64 @@ +package com.example.tyre.maintenance; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; + +import androidx.databinding.DataBindingUtil; + +import com.example.tyre.R; +import com.example.tyre.databinding.ActivityNewHomePageBinding; + +public class NewHomePageActivity extends BaseActivity { + private ActivityNewHomePageBinding binding; + private Intent intent; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + binding = DataBindingUtil.setContentView(this, R.layout.activity_new_home_page); + intent = new Intent(this, WorkOrderActivity.class); + } + + public void goActivity1(View view) { + intent.putExtra("title", "二级保养"); + startActivity(intent); + } + + public void goActivity2(View view) { + intent.putExtra("title", "小修"); + startActivity(intent); + } + + public void goActivity3(View view) { + intent.putExtra("title", "抢碎修"); + startActivity(intent); + } + + public void goActivity4(View view) { + intent.putExtra("title", "月检"); + startActivity(intent); + } + + public void goActivity5(View view) { + intent.putExtra("title", "拆报废车"); + startActivity(intent); + } + + public void goActivity6(View view) { + intent.putExtra("title", "轮胎修补"); + startActivity(intent); + } + + public void goActivity7(View view) { + intent.putExtra("title", "轮胎报废"); + startActivity(intent); + } + + public void goAllWorkOrder(View view) { + intent.putExtra("title", "总工单列表"); + startActivity(intent); + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/example/tyre/maintenance/WorkOrderActivity.java b/app/src/main/java/com/example/tyre/maintenance/WorkOrderActivity.java new file mode 100644 index 0000000..4ced489 --- /dev/null +++ b/app/src/main/java/com/example/tyre/maintenance/WorkOrderActivity.java @@ -0,0 +1,74 @@ +package com.example.tyre.maintenance; + +import android.annotation.SuppressLint; +import android.app.DatePickerDialog; +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.ListPopupWindow; + +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableBoolean; + +import com.example.tyre.R; +import com.example.tyre.databinding.ActivityWorkOrderBinding; + +import java.util.Calendar; + +public class WorkOrderActivity extends BaseActivity { + private ActivityWorkOrderBinding binding; + private ObservableBoolean status; + private DatePickerDialog datePickerDialog; + private ListPopupWindow listPopupWindow; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + binding = DataBindingUtil.setContentView(this, R.layout.activity_work_order); + status = new ObservableBoolean(false); + binding.setStatus(status); + + // 获取当前日期 + Calendar calendar = Calendar.getInstance(); + int year = calendar.get(Calendar.YEAR); + int month = calendar.get(Calendar.MONTH); + int day = calendar.get(Calendar.DAY_OF_MONTH); + binding.workOrderDate.setText(dateFormat.format(calendar.getTime())); + datePickerDialog = new DatePickerDialog(this, + (view1, year1, monthOfYear, dayOfMonth) -> { + @SuppressLint("DefaultLocale") + String selectedDate = + year1 + "-" + String.format("%02d", (monthOfYear + 1)) + "-" + String.format("%02d", dayOfMonth); + binding.workOrderDate.setText(selectedDate); + }, year, month, day); + // 初始化选择框 + listPopupWindow = new ListPopupWindow(this); + listPopupWindow.setAnchorView(binding.workOrderSite); + String[] stringArray = getResources().getStringArray(R.array.zxzd); + listPopupWindow.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, stringArray)); + listPopupWindow.setOnItemClickListener((parent, view, position, id) -> { + binding.workOrderSite.setText(stringArray[position]); + listPopupWindow.dismiss();` + }); + + } + + // 选日期 + public void selectDate(View view) { + datePickerDialog.show(); + } + // 选站点 + public void selectOrderSite(View view) { + listPopupWindow.show(); + } + + public void goCreateWorkOrder(View view) { + startActivity(new Intent(this, CreateWorkOrderActivity.class)); + } + + public void switchStatus(View view) { + status.set(!status.get()); + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/example/tyre/maintenance/dialog/TipResultDialog.java b/app/src/main/java/com/example/tyre/maintenance/dialog/TipResultDialog.java new file mode 100644 index 0000000..790de84 --- /dev/null +++ b/app/src/main/java/com/example/tyre/maintenance/dialog/TipResultDialog.java @@ -0,0 +1,105 @@ +package com.example.tyre.maintenance.dialog; + +import android.app.Activity; +import android.app.Dialog; +import android.content.Context; +import android.os.Bundle; +import android.os.CountDownTimer; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; + +import androidx.databinding.DataBindingUtil; + +import com.example.tyre.R; +import com.example.tyre.databinding.DialogTipResultBinding; + + +/** + * 写入结果弹窗(2秒自动关闭+手动关闭) + */ +public class TipResultDialog extends Dialog { + private final DialogTipResultBinding binding; + private CountDownTimer countDownTimer; + private final Activity activity; + + public TipResultDialog(Context context,Activity activity) { + super(context, R.style.MyMiddleDialogStyle); + this.activity = activity; + binding =DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.dialog_tip_result, null, false); + binding.dialogConfirm.setOnClickListener(view -> dismiss()); + setContentView(binding.getRoot()); + } + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + initDialogStyle(); + startCountDown(); + } + + /** + * 设置弹窗样式(匹配原型:大圆角、居中、占屏比例) + */ + private void initDialogStyle() { + Window window = getWindow(); + if (window != null) { + window.setGravity(Gravity.CENTER); + WindowManager.LayoutParams params = window.getAttributes(); + params.width = (int) (getContext().getResources().getDisplayMetrics().widthPixels * 0.9); + params.height = WindowManager.LayoutParams.WRAP_CONTENT; + window.setAttributes(params); + window.setBackgroundDrawableResource(android.R.color.transparent); + + } + // 点击外部不关闭 + setCanceledOnTouchOutside(false); + } + + + + + /** + * 启动2秒倒计时(自动关闭) + */ + private void startCountDown() { + countDownTimer = new CountDownTimer(2000, 1000) { + @Override + public void onTick(long millisUntilFinished) { + + } + + @Override + public void onFinish() { + + dismiss(); + activity.finish(); + } + }; + } + + public void show(boolean state, String info, boolean closeType) { + super.show(); + binding.dialogState.setVisibility(state ? View.VISIBLE : View.GONE); + binding.dialogTip.setText(info); + if (closeType) { + countDownTimer.start(); + } + + + } + + + + @Override + public void dismiss() { + super.dismiss(); + if (countDownTimer != null) { + countDownTimer.cancel(); + } + + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_button_blue.xml b/app/src/main/res/drawable/bg_button_blue.xml new file mode 100644 index 0000000..6a24135 --- /dev/null +++ b/app/src/main/res/drawable/bg_button_blue.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_select_blue.xml b/app/src/main/res/drawable/bg_select_blue.xml new file mode 100644 index 0000000..db46692 --- /dev/null +++ b/app/src/main/res/drawable/bg_select_blue.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_select_grey.xml b/app/src/main/res/drawable/bg_select_grey.xml new file mode 100644 index 0000000..ed19491 --- /dev/null +++ b/app/src/main/res/drawable/bg_select_grey.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_state_1.xml b/app/src/main/res/drawable/bg_state_1.xml new file mode 100644 index 0000000..a2ad6dc --- /dev/null +++ b/app/src/main/res/drawable/bg_state_1.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/card_bg.xml b/app/src/main/res/drawable/card_bg.xml new file mode 100644 index 0000000..dd5ba35 --- /dev/null +++ b/app/src/main/res/drawable/card_bg.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/dialog.xml b/app/src/main/res/drawable/dialog.xml index bde8d64..ee67733 100644 --- a/app/src/main/res/drawable/dialog.xml +++ b/app/src/main/res/drawable/dialog.xml @@ -1,7 +1,5 @@ - - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_png_sl.png b/app/src/main/res/drawable/ic_png_sl.png new file mode 100644 index 0000000..daebb9a Binary files /dev/null and b/app/src/main/res/drawable/ic_png_sl.png differ diff --git a/app/src/main/res/drawable/ic_sanjiao.xml b/app/src/main/res/drawable/ic_sanjiao.xml new file mode 100644 index 0000000..d09c613 --- /dev/null +++ b/app/src/main/res/drawable/ic_sanjiao.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_select.xml b/app/src/main/res/drawable/ic_select.xml new file mode 100644 index 0000000..9469f73 --- /dev/null +++ b/app/src/main/res/drawable/ic_select.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/icon_bg.xml b/app/src/main/res/drawable/icon_bg.xml new file mode 100644 index 0000000..0dff8d8 --- /dev/null +++ b/app/src/main/res/drawable/icon_bg.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/item_bg_1.xml b/app/src/main/res/drawable/item_bg_1.xml new file mode 100644 index 0000000..70c2ac2 --- /dev/null +++ b/app/src/main/res/drawable/item_bg_1.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_check.xml b/app/src/main/res/layout/activity_check.xml index 4e3e3e5..c3e5c9e 100644 --- a/app/src/main/res/layout/activity_check.xml +++ b/app/src/main/res/layout/activity_check.xml @@ -220,7 +220,7 @@ android:layout_margin="8dp"> diff --git a/app/src/main/res/layout/activity_create_work_order.xml b/app/src/main/res/layout/activity_create_work_order.xml new file mode 100644 index 0000000..d109c90 --- /dev/null +++ b/app/src/main/res/layout/activity_create_work_order.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + +