From e0b6e04e55acdfd060aadba6868e82120731edd3 Mon Sep 17 00:00:00 2001 From: wanghao Date: Wed, 29 Oct 2025 13:41:50 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E6=98=8A=E5=8D=8E=E5=A4=96=E7=BD=91?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/MarsCodeWorkspaceAppSettings.xml | 7 + app/src/main/AndroidManifest.xml | 5 + .../com/example/writeepc/HomeActivity.java | 7 + .../writeepc/IntentSelectActivity.java | 230 ++++++++++++++++++ .../example/writeepc/SettingsActivity.java | 2 +- .../example/writeepc/base/MyApplication.java | 6 +- app/src/main/res/layout/activity_home.xml | 37 ++- .../res/layout/activity_intent_select.xml | 102 ++++++++ app/src/main/res/layout/settings_activity.xml | 15 +- 9 files changed, 374 insertions(+), 37 deletions(-) create mode 100644 .idea/MarsCodeWorkspaceAppSettings.xml create mode 100644 app/src/main/java/com/example/writeepc/IntentSelectActivity.java create mode 100644 app/src/main/res/layout/activity_intent_select.xml diff --git a/.idea/MarsCodeWorkspaceAppSettings.xml b/.idea/MarsCodeWorkspaceAppSettings.xml new file mode 100644 index 0000000..cd9c4c9 --- /dev/null +++ b/.idea/MarsCodeWorkspaceAppSettings.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d563155..96cfa5e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -21,6 +21,11 @@ android:name=".SettingsActivity" android:exported="false" android:label="@string/title_activity_settings" /> + + + { intent.putExtra("type",true); @@ -40,6 +41,12 @@ public class HomeActivity extends BaseActivity { button4.setOnClickListener(v -> { startActivity(new Intent(this, SettingsActivity.class)); }); + + button3.setOnClickListener(v -> { + startActivity(new Intent(this, IntentSelectActivity.class)); + }); + + } @Override diff --git a/app/src/main/java/com/example/writeepc/IntentSelectActivity.java b/app/src/main/java/com/example/writeepc/IntentSelectActivity.java new file mode 100644 index 0000000..94fc02c --- /dev/null +++ b/app/src/main/java/com/example/writeepc/IntentSelectActivity.java @@ -0,0 +1,230 @@ +package com.example.writeepc; + +import android.annotation.SuppressLint; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Bundle; +import android.os.Handler; +import android.text.Editable; +import android.text.TextWatcher; +import android.util.Log; +import android.view.View; +import android.widget.Button; + +import androidx.databinding.DataBindingUtil; + +import com.example.writeepc.adapter.MyMesInfoAdapter; +import com.example.writeepc.base.BaseActivity; +import com.example.writeepc.base.okgo.MyRecultCall; +import com.example.writeepc.base.okgo.MyResult; +import com.example.writeepc.been.MESInfo; +import com.example.writeepc.databinding.ActivityIntentSelectBinding; +import com.example.writeepc.utils.SharedPreferencesUtils; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.model.Response; +import com.uhf.api.cls.Reader; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import okhttp3.MediaType; +import okhttp3.RequestBody; + +public class IntentSelectActivity extends BaseActivity { + private final Handler handler = new Handler(); + public MediaType JSON = MediaType.parse("application/json; charset=utf-8"); + private ActivityIntentSelectBinding binding; + private MyMesInfoAdapter adapter; + private Button traceSanButton; + private boolean sanState = true; + private Runnable runnable; + private Runnable tokenRunnable; + private MyKeyReceiver keyReceiver; + private String ip; + private String token; + + @SuppressLint("UnspecifiedRegisterReceiverFlag") + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + binding = DataBindingUtil.setContentView(this, R.layout.activity_intent_select); + initUHFRManager1(); + // 设置功率 + String powerTrace1 = SharedPreferencesUtils.getstring("powerTrace", "22"); + int powerTrace = Integer.parseInt(powerTrace1); + Reader.READER_ERR readerErr = uhfrManager.setPower(powerTrace, powerTrace); + Log.e("TAG", "追溯设置功率" + powerTrace1 + ":" + readerErr.name()); + initDialog(); + adapter = new MyMesInfoAdapter(this); + binding.setAdapter(adapter); + traceSanButton = binding.traceSanButton; + runnable = () -> { + if (sanState) { + handler.removeCallbacks(runnable); + } else { + readEPC(12); + handler.postDelayed(runnable, 1000); + } + }; + tokenRunnable = () -> { + requestToken(); + }; + handler.postDelayed(tokenRunnable, 0); + keyReceiver = new MyKeyReceiver(); + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction("android.rfid.FUN_KEY"); + registerReceiver(keyReceiver, intentFilter); + String ACTION_CLOSE_SCAN = "com.rfid.CLOSE_SCAN"; + Intent toKillService = new Intent(); + toKillService.setAction(ACTION_CLOSE_SCAN); + sendBroadcast(toKillService); + binding.dataEpc.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + + } + + @Override + public void afterTextChanged(Editable s) { + if (s.length() == 24) { + haohuaMesSelect(s.toString()); + } + + } + }); + ip = SharedPreferencesUtils.getstring("ip", "https://rfidpub.haohuatire.com:7443"); + } + + private void requestToken() { + Map map = new HashMap<>(); + map.put("AppId", "app-20250704032545-nmmhn8jw"); + map.put("AppSecret", "dXJZQKubbqhSPCugtA49rsDGACmN5CMD4ItTfP11+DA="); + OkGo.post(ip + "/UMInterface/Auth/AccessToken").upRequestBody(RequestBody.create(JSON, gson.toJson(map))).execute(new MyRecultCall(dialog, this) { + @Override + public void onSuccess(Response response) { + super.onSuccess(response); + MyResult body = response.body(); + if (body.getCode() == 200) { + String dataJson = body.getDataJson(); + JsonObject jsonObject = JsonParser.parseString(dataJson).getAsJsonObject(); + token = jsonObject.get("Token").getAsString(); + Log.e("TAG", "onSuccess:token=" + token); + binding.traceSanButton1.setVisibility(View.GONE); + handler.postDelayed(tokenRunnable, 60 * 1000 * 90); + } else { + tipsDialog.setTip(false, body.getInfo()); + tipsDialog.show(); + binding.traceSanButton1.setVisibility(View.VISIBLE); + } + + } + }); + } + + public void intentRequestToken(View view) { + requestToken(); + } + + public void dataReadRFID(View view) { + if (sanState) { + handler.postDelayed(runnable, 0); + sanState = false; + traceSanButton.setBackgroundResource(R.drawable.button_bg2); + traceSanButton.setText("停止扫描"); + } else { + sanState = true; + handler.removeCallbacks(runnable); + traceSanButton.setBackgroundResource(R.drawable.button_bg1); + traceSanButton.setText("开始扫描"); + } + + + } + + @Override + protected void readTidReault(boolean readState, String result, byte[] rdata) { + super.readTidReault(readState, result, rdata); + binding.dataEpc.setText(result); + + if (readState) { + dataReadRFID(null); + + + } + } + + private void haohuaMesSelect(String result) { + OkGo.post(ip + "/UMInterface/RFID/sellTyreTracingBack") + .headers("Token", token) + .params("rfid", result).execute(new MyRecultCall(dialog, this) { + @SuppressLint("NotifyDataSetChanged") + @Override + public void onSuccess(Response response) { + super.onSuccess(response); + MyResult body = response.body(); + try { + if (body.getCode() == 200) { + String dataJson = body.getDataJson(); + if (dataJson == null || dataJson.equals("[]")) { + tipsDialog.setTip(false, "未查询到相关信息"); + tipsDialog.show(); + adapter.setList(null); + return; + } + dataJson = dataJson.replace("[{", "").replace("\"", "").trim(); + String[] split = dataJson.split(","); + List mesInfos = new ArrayList<>(); + for (String item : split) { + String[] split1 = item.split(":"); + MESInfo mesInfo = new MESInfo(); + mesInfo.setTitle(split1[0]); + mesInfo.setInfo(split1[1]); + mesInfos.add(mesInfo); + } + ; + adapter.setList(mesInfos); + + } else { + tipsDialog.setTip(false, body.getInfo()); + tipsDialog.show(); + adapter.setList(null); + + } + } catch (Exception e) { + tipsDialog.setTip(false, "接口返回信息异常,解析失败"); + tipsDialog.show(); + + } + adapter.notifyDataSetChanged(); + } + }); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + unregisterReceiver(keyReceiver); + } + + private class MyKeyReceiver extends BroadcastReceiver { + + @Override + public void onReceive(Context context, Intent intent) { + var keydown = intent.getBooleanExtra("keydown", false); + if (!keydown) { + dataReadRFID(null); + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/writeepc/SettingsActivity.java b/app/src/main/java/com/example/writeepc/SettingsActivity.java index bb1e73a..1c7194d 100644 --- a/app/src/main/java/com/example/writeepc/SettingsActivity.java +++ b/app/src/main/java/com/example/writeepc/SettingsActivity.java @@ -32,7 +32,7 @@ public class SettingsActivity extends AppCompatActivity { List powerList = Arrays.asList(getResources().getStringArray(R.array.power)); powerBinding.setSelection(powerList.indexOf(bindingPower)); powerTrace.setSelection(powerList.indexOf(tracePower)); - settingIp.setText(SharedPreferencesUtils.getstring("ip", null)); + settingIp.setText(SharedPreferencesUtils.getstring("ip", "https://rfidpub.haohuatire.com:7443")); } public void saveInfo(View view) { diff --git a/app/src/main/java/com/example/writeepc/base/MyApplication.java b/app/src/main/java/com/example/writeepc/base/MyApplication.java index 56fb2bc..3096f14 100644 --- a/app/src/main/java/com/example/writeepc/base/MyApplication.java +++ b/app/src/main/java/com/example/writeepc/base/MyApplication.java @@ -62,9 +62,9 @@ public class MyApplication extends Application { HttpsUtils.SSLParams sslParams1 = HttpsUtils.getSslSocketFactory(); // 方法一:信任所有证书,不安全有风险 builder.sslSocketFactory(sslParams1.sSLSocketFactory, sslParams1.trustManager); builder.addInterceptor(loggingInterceptor); - builder.readTimeout(6000, TimeUnit.MILLISECONDS); // 全局的读取超时时间 - builder.writeTimeout(6000, TimeUnit.MILLISECONDS); // 全局的写入超时时间 - builder.connectTimeout(6000, TimeUnit.MILLISECONDS); // 全局的连接超时时间 + builder.readTimeout(10000, TimeUnit.MILLISECONDS); // 全局的读取超时时间 + builder.writeTimeout(10000, TimeUnit.MILLISECONDS); // 全局的写入超时时间 + builder.connectTimeout(10000, TimeUnit.MILLISECONDS); // 全局的连接超时时间 builder.cookieJar(new CookieJarImpl(new MemoryCookieStore())); // 使用内存保持cookie,app退出后,cookie消失 OkGo.getInstance().init(this).setOkHttpClient(builder.build()) // 建议设置OkHttpClient,不设置将使用默认的 .setCacheMode(CacheMode.NO_CACHE) // 全局统一缓存模式,默认不使用缓存,可以不传 diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml index ce53892..5e60b23 100644 --- a/app/src/main/res/layout/activity_home.xml +++ b/app/src/main/res/layout/activity_home.xml @@ -23,7 +23,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" - android:orientation="horizontal"> + android:orientation="horizontal" + android:visibility="gone"> + - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_intent_select.xml b/app/src/main/res/layout/activity_intent_select.xml new file mode 100644 index 0000000..bf0c55c --- /dev/null +++ b/app/src/main/res/layout/activity_intent_select.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +