From 51444dd042c029975678a029fd13bafe486d7cfa Mon Sep 17 00:00:00 2001 From: wanghao Date: Thu, 7 Nov 2024 17:44:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20=E5=B7=A1=E6=A3=80?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/beijing_daxing/BFActivity.java | 2 +- .../example/beijing_daxing/CheckActivity.java | 12 ++++- .../beijing_daxing/CheckListActivity.java | 23 +++++---- .../example/beijing_daxing/FpInActivity.java | 2 +- .../example/beijing_daxing/FpOutActivity.java | 4 +- .../example/beijing_daxing/InActivity.java | 4 +- .../example/beijing_daxing/MainActivity.java | 3 -- .../example/beijing_daxing/OutActivity.java | 2 +- .../beijing_daxing/StoreCheckActivity.java | 4 +- .../beijing_daxing/base/BaseActivity.java | 41 ++++++++++++++-- .../beijing_daxing/dialog/InPutDialog.java | 2 +- .../uitls/CustomWatermarkTransformation.java | 47 +++++++++++++++++++ .../main/res/layout/activity_check_list.xml | 27 +++++++++-- app/src/main/res/layout/dialog_input.xml | 26 ++++++---- app/src/main/res/values/array.xml | 13 +++++ 15 files changed, 171 insertions(+), 41 deletions(-) create mode 100644 app/src/main/java/com/example/beijing_daxing/uitls/CustomWatermarkTransformation.java diff --git a/app/src/main/java/com/example/beijing_daxing/BFActivity.java b/app/src/main/java/com/example/beijing_daxing/BFActivity.java index 7dfe18c..9c57dc8 100644 --- a/app/src/main/java/com/example/beijing_daxing/BFActivity.java +++ b/app/src/main/java/com/example/beijing_daxing/BFActivity.java @@ -62,7 +62,7 @@ public class BFActivity extends BaseActivity implements TakePictureDialog.dialog } @Override - protected void sanRfid(List epcs) { + public void sanRfid(List epcs) { var epc = epcs.get(0); byte[] epcId = epc.EpcId; String epc1 = HexAscii.hex2Str(Tools.Bytes2HexString(epcId, epcId.length)); diff --git a/app/src/main/java/com/example/beijing_daxing/CheckActivity.java b/app/src/main/java/com/example/beijing_daxing/CheckActivity.java index f429bf9..2da1555 100644 --- a/app/src/main/java/com/example/beijing_daxing/CheckActivity.java +++ b/app/src/main/java/com/example/beijing_daxing/CheckActivity.java @@ -13,6 +13,8 @@ import android.os.Message; import android.view.View; import android.widget.Toast; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.example.beijing_daxing.adapter.CheckAdapter; import com.example.beijing_daxing.base.AdapterClickCall; import com.example.beijing_daxing.base.BaseActivity; @@ -22,6 +24,7 @@ import com.example.beijing_daxing.been.Stock; import com.example.beijing_daxing.databinding.ActivityCheckBinding; import com.example.beijing_daxing.dialog.InPutDialog; import com.example.beijing_daxing.dialog.TakePictureDialog; +import com.example.beijing_daxing.uitls.CustomWatermarkTransformation; import com.example.beijing_daxing.uitls.HexAscii; import com.example.beijing_daxing.uitls.SharedPreferencesUtils; import com.google.gson.reflect.TypeToken; @@ -115,7 +118,7 @@ public class CheckActivity extends BaseActivity implements AdapterClickCall, InP // 扫描到返回数据 @SuppressLint("NotifyDataSetChanged") @Override - protected void sanRfid(List epcs) { + public void sanRfid(List epcs) { epcs.forEach(t -> { var epc = Tools.Bytes2HexString(t.EpcId, t.EpcId.length); if (tagList.contains(t)) { @@ -218,7 +221,7 @@ public class CheckActivity extends BaseActivity implements AdapterClickCall, InP public void run() { // sendBroadcast(broadcastIntent); sanEpc(); - handler.postDelayed(runnable, 50); + handler.postDelayed(runnable, 10); } }; @@ -238,6 +241,11 @@ public class CheckActivity extends BaseActivity implements AdapterClickCall, InP @Override public void takePhotoCall(File outputImage, Bitmap bitmap) { + + // Glide.with(this) + // .load(outputImage.getPath()) + // .apply(RequestOptions.bitmapTransform(new CustomWatermarkTransformation())) + // .into(imageView); files.add(outputImage); bitmaps.add(bitmap); binding.confirmPictureNumber2.setText(bitmaps.size() + ""); diff --git a/app/src/main/java/com/example/beijing_daxing/CheckListActivity.java b/app/src/main/java/com/example/beijing_daxing/CheckListActivity.java index bbc24cf..95716e1 100644 --- a/app/src/main/java/com/example/beijing_daxing/CheckListActivity.java +++ b/app/src/main/java/com/example/beijing_daxing/CheckListActivity.java @@ -9,6 +9,8 @@ import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; +import android.widget.AdapterView; +import android.widget.Spinner; import android.widget.Toast; import com.example.beijing_daxing.adapter.CheckListAdapter; @@ -31,7 +33,7 @@ public class CheckListActivity extends BaseActivity implements AdapterClickCall private CheckListAdapter adapter; private List list; private ObservableBoolean createState; - + private String[] stateList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -41,12 +43,18 @@ public class CheckListActivity extends BaseActivity implements AdapterClickCall createState = new ObservableBoolean(); createState.set(false); binding.setState(createState); - initRequest(); - } + stateList = getResources().getStringArray(R.array.checkState); + binding.checkListState.setOnItemClickListener((parent, view, position, id) -> { + initRequest(stateList[position]); + }); - private void initRequest() { + } + public void onItemClick(AdapterView parent, View view, int position, long id) { + + } + private void initRequest(String state) { OkGo.post(url + "/inspection/selectTask") - .params("user", SharedPreferencesUtils.getstring("user", "")) + .params("state", SharedPreferencesUtils.getstring("user", "")) .execute(new MyRecultCall(dialog, this) { @SuppressLint("NotifyDataSetChanged") @Override @@ -67,10 +75,7 @@ public class CheckListActivity extends BaseActivity implements AdapterClickCall }); } - @Override - protected void sanRfid(List epcs) { - } public void check_start(View view) { OkGo.post(url + "/xj/createTask") @@ -81,7 +86,7 @@ public class CheckListActivity extends BaseActivity implements AdapterClickCall super.onSuccess(response); var body = response.body(); if (body.getCode() == 0) { - initRequest(); + // initRequest(); return; } Toast.makeText(CheckListActivity.this, body.getMsg(), Toast.LENGTH_SHORT).show(); diff --git a/app/src/main/java/com/example/beijing_daxing/FpInActivity.java b/app/src/main/java/com/example/beijing_daxing/FpInActivity.java index c113919..f0af979 100644 --- a/app/src/main/java/com/example/beijing_daxing/FpInActivity.java +++ b/app/src/main/java/com/example/beijing_daxing/FpInActivity.java @@ -52,7 +52,7 @@ public class FpInActivity extends BaseActivity { } @Override - protected void sanRfid(List epcs) { + public void sanRfid(List epcs) { Reader.TAGINFO taginfo = epcs.get(0); var epc = HexAscii.hex2Str(Tools.Bytes2HexString(taginfo.EpcId,taginfo.EpcId.length)); vm.setEpc(epc); diff --git a/app/src/main/java/com/example/beijing_daxing/FpOutActivity.java b/app/src/main/java/com/example/beijing_daxing/FpOutActivity.java index 26f6e8d..24dc444 100644 --- a/app/src/main/java/com/example/beijing_daxing/FpOutActivity.java +++ b/app/src/main/java/com/example/beijing_daxing/FpOutActivity.java @@ -50,7 +50,7 @@ public class FpOutActivity extends BaseActivity { private List tagList; @Override - protected void sanRfid(List epcs) { + public void sanRfid(List epcs) { if (tagList==null) return; epcs.forEach(t -> { var epc = Tools.Bytes2HexString(t.EpcId,t.EpcId.length); @@ -135,7 +135,7 @@ public class FpOutActivity extends BaseActivity { public void run() { // sendBroadcast(broadcastIntent); sanEpc(); - handler.postDelayed(runnable, 1000); + handler.postDelayed(runnable, 10); } }; diff --git a/app/src/main/java/com/example/beijing_daxing/InActivity.java b/app/src/main/java/com/example/beijing_daxing/InActivity.java index 54ed032..57f8c81 100644 --- a/app/src/main/java/com/example/beijing_daxing/InActivity.java +++ b/app/src/main/java/com/example/beijing_daxing/InActivity.java @@ -64,7 +64,7 @@ public class InActivity extends BaseActivity implements AdapterClickCall { } @Override - protected void sanRfid(List epcs) { + public void sanRfid(List epcs) { epcs.stream().forEach(t -> { var epc = Tools.Bytes2HexString(t.EpcId,t.EpcId.length); Log.e("TAG", "sanRfid:" + epc); @@ -128,7 +128,7 @@ public class InActivity extends BaseActivity implements AdapterClickCall { @Override public void run() { sanEpc(); - handler.postDelayed(runnable, 50); + handler.postDelayed(runnable, 10); } }; public void instore_check(View view) { diff --git a/app/src/main/java/com/example/beijing_daxing/MainActivity.java b/app/src/main/java/com/example/beijing_daxing/MainActivity.java index 0f30446..8d0881a 100644 --- a/app/src/main/java/com/example/beijing_daxing/MainActivity.java +++ b/app/src/main/java/com/example/beijing_daxing/MainActivity.java @@ -45,10 +45,7 @@ public class MainActivity extends BaseActivity { // .update(); } - @Override - protected void sanRfid(List epcs) { - } public void login_click(View view) { String pass = loginVm.getPass(); diff --git a/app/src/main/java/com/example/beijing_daxing/OutActivity.java b/app/src/main/java/com/example/beijing_daxing/OutActivity.java index b34f9b6..df9d6e0 100644 --- a/app/src/main/java/com/example/beijing_daxing/OutActivity.java +++ b/app/src/main/java/com/example/beijing_daxing/OutActivity.java @@ -57,7 +57,7 @@ public class OutActivity extends BaseActivity implements AdapterClickCall { } @SuppressLint("NotifyDataSetChanged") @Override - protected void sanRfid(List epcs) { + public void sanRfid(List epcs) { epcs.forEach(t -> { var epc = Tools.Bytes2HexString(t.EpcId,t.EpcId.length); Log.e("TAG", "sanRfid:" + epc); diff --git a/app/src/main/java/com/example/beijing_daxing/StoreCheckActivity.java b/app/src/main/java/com/example/beijing_daxing/StoreCheckActivity.java index 9406bf2..66c5770 100644 --- a/app/src/main/java/com/example/beijing_daxing/StoreCheckActivity.java +++ b/app/src/main/java/com/example/beijing_daxing/StoreCheckActivity.java @@ -63,7 +63,7 @@ public class StoreCheckActivity extends BaseActivity { @SuppressLint("NotifyDataSetChanged") @Override - protected void sanRfid(List epcs) { + public void sanRfid(List epcs) { if (tagList == null) return; epcs.forEach(t -> { var epc = Tools.Bytes2HexString(t.EpcId, t.EpcId.length); @@ -156,7 +156,7 @@ public class StoreCheckActivity extends BaseActivity { // Log.e("TAG", "发送广播,读取RFID"); // sendBroadcast(broadcastIntent); sanEpc(); - handler.postDelayed(runnable, 0); + handler.postDelayed(runnable, 10); } }; diff --git a/app/src/main/java/com/example/beijing_daxing/base/BaseActivity.java b/app/src/main/java/com/example/beijing_daxing/base/BaseActivity.java index 45e73ad..e4a8c65 100644 --- a/app/src/main/java/com/example/beijing_daxing/base/BaseActivity.java +++ b/app/src/main/java/com/example/beijing_daxing/base/BaseActivity.java @@ -10,6 +10,9 @@ import android.content.IntentFilter; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; import android.media.MediaPlayer; import android.net.Uri; import android.os.Build; @@ -34,14 +37,17 @@ import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.time.ZoneId; import java.util.Date; import java.util.List; import okhttp3.MediaType; -public abstract class BaseActivity extends AppCompatActivity { - // public static String url = "http://192.168.137.1:8090/api"; - public static String url = "http://119.45.202.115:8090/api"; +public class BaseActivity extends AppCompatActivity { + public static String url = "http://192.168.137.1:8090/api"; + // public static String url = "http://119.45.202.115:8090/api"; public ProgressDialog dialog; public Gson gson; public MediaType JSON = MediaType.parse("application/json; charset=utf-8"); @@ -119,12 +125,15 @@ public abstract class BaseActivity extends AppCompatActivity { } - protected abstract void sanRfid(List epcs); + public void sanRfid(List epcs){ + + }; public static final int CAMERA_PHOTO = 0X02; public File outputImage; public Uri img_uri; public SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); + public SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); // 拍照 public void takePhoto() { @@ -168,6 +177,8 @@ public abstract class BaseActivity extends AppCompatActivity { try { Log.e("TAG", "onActivityResult:" + img_uri.getPath()); bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(img_uri)); + // 添加水印 + bitmap = addWatermark(bitmap); FileOutputStream outputStream = new FileOutputStream(outputImage); bitmap.compress(Bitmap.CompressFormat.JPEG, 50, outputStream); takePhotoCall(outputImage, bitmap); @@ -180,4 +191,26 @@ public abstract class BaseActivity extends AppCompatActivity { } } + private String[] strings=new String[]{"星期日","星期一","星期二","星期三","星期四","星期五","星期六","星期日"}; + @SuppressLint("NewApi") + private Bitmap addWatermark(Bitmap src) { + int w = src.getWidth(); + int h = src.getHeight(); + Bitmap result = Bitmap.createBitmap(w, h, src.getConfig()); + Canvas canvas = new Canvas(result); + canvas.drawBitmap(src, 0, 0, null); + Paint paint = new Paint(); + paint.setColor(Color.RED); + paint.setStrokeWidth(30); + paint.setTextSize(150); + paint.setAntiAlias(true); + // 获取当前日期 + LocalDate today = LocalDate.now(ZoneId.systemDefault()); + // 获取当前日期是周几 + DayOfWeek dayOfWeek = today.getDayOfWeek(); + canvas.drawText("机位:101", 10, h - 400, paint); + canvas.drawText(dateFormat.format(new Date()), 10, h - 200, paint); + canvas.drawText(strings[dayOfWeek.getValue()], 10, h - 20, paint); + return result; + } } \ No newline at end of file diff --git a/app/src/main/java/com/example/beijing_daxing/dialog/InPutDialog.java b/app/src/main/java/com/example/beijing_daxing/dialog/InPutDialog.java index 54d10db..02ec866 100644 --- a/app/src/main/java/com/example/beijing_daxing/dialog/InPutDialog.java +++ b/app/src/main/java/com/example/beijing_daxing/dialog/InPutDialog.java @@ -30,7 +30,7 @@ public class InPutDialog extends Dialog { setContentView(binding.getRoot()); binding.dialogFalse.setOnClickListener(v -> dismiss()); binding.dialogTrue.setOnClickListener(v -> { - inPutDialogCall.inPutDialogReculi( binding.inputDialogText.getText().toString().trim()); + inPutDialogCall.inPutDialogReculi( binding.inputDialogSelect.getSelectedItem().toString()); }); } diff --git a/app/src/main/java/com/example/beijing_daxing/uitls/CustomWatermarkTransformation.java b/app/src/main/java/com/example/beijing_daxing/uitls/CustomWatermarkTransformation.java new file mode 100644 index 0000000..8202782 --- /dev/null +++ b/app/src/main/java/com/example/beijing_daxing/uitls/CustomWatermarkTransformation.java @@ -0,0 +1,47 @@ +package com.example.beijing_daxing.uitls; + +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; + +import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; +import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; + +import java.security.MessageDigest; + +public class CustomWatermarkTransformation extends BitmapTransformation { + + @Override + protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { + // 获取原始图片的宽度和高度 + int width = toTransform.getWidth(); + int height = toTransform.getHeight(); + + // 创建一个新的Bitmap,用于绘制带有水印的图片 + Bitmap watermarkedBitmap = pool.get(width, height, Bitmap.Config.ARGB_8888); + + // 创建画布,并将原始图片绘制到画布上 + Canvas canvas = new Canvas(watermarkedBitmap); + canvas.drawBitmap(toTransform, 0, 0, null); + + // 创建一个画笔,用于绘制水印 + Paint paint = new Paint(); + paint.setColor(Color.RED); + paint.setTextSize(50); + paint.setAntiAlias(true); + + // 设置水印的透明度 + paint.setAlpha(128); + + // 在指定位置绘制水印文字 + canvas.drawText("自定义水印1", width - 200, height - 50, paint); + canvas.drawText("自定义水印2", width - 200, height - 80, paint); + + return watermarkedBitmap; + } + + @Override + public void updateDiskCacheKey(MessageDigest messageDigest) {} + +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_check_list.xml b/app/src/main/res/layout/activity_check_list.xml index 39437dc..4b2d82e 100644 --- a/app/src/main/res/layout/activity_check_list.xml +++ b/app/src/main/res/layout/activity_check_list.xml @@ -27,6 +27,24 @@ android:layout_height="45dp" android:letterSpacing="0" android:text="待巡检机位列表" /> + + + + + android:text="跳过" /> @@ -109,7 +126,7 @@ android:layout_height="55dp" android:layout_margin="15dp" android:onClick="check_start" - android:visibility="@{state?View.VISIBLE:View.GONE}" - android:text="创建巡检列表" /> + android:text="创建巡检列表" + android:visibility="@{state?View.VISIBLE:View.GONE}" /> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_input.xml b/app/src/main/res/layout/dialog_input.xml index 85026fd..74c47cb 100644 --- a/app/src/main/res/layout/dialog_input.xml +++ b/app/src/main/res/layout/dialog_input.xml @@ -16,7 +16,7 @@ android:layout_height="50dp" android:gravity="center" android:letterSpacing="0.2" - android:text="输入提示" + android:text="选择跳过巡检原因" android:textColor="@color/black" android:textSize="23sp" /> @@ -26,8 +26,18 @@ android:layout_height="100dp" android:layout_margin="20dp" android:background="@drawable/san_text_bg" + android:gravity="center" android:hint="输入巡检跳过原因" - android:gravity="center" /> + android:visibility="gone" /> + + + android:text="取消" + android:textColor="@color/yellow" + android:textSize="20sp" /> + android:text="确定" + android:textColor="@color/blue" + android:textSize="20sp" /> diff --git a/app/src/main/res/values/array.xml b/app/src/main/res/values/array.xml index aae4fc5..906948e 100644 --- a/app/src/main/res/values/array.xml +++ b/app/src/main/res/values/array.xml @@ -7,6 +7,13 @@ 报废 + + 使用中 + 安全隔离未完成 + 轮挡损坏,需要维修 + 轮挡损坏,需要报废 + + 轮挡绳子损坏 @@ -14,4 +21,10 @@ 橡胶损坏 其他 + + 全部 + 待完成 + 已完成 + + \ No newline at end of file