From bb4b66df7218dd9178823d611021f626630b0030 Mon Sep 17 00:00:00 2001 From: wenfei Date: Mon, 24 Nov 2025 17:34:04 +0800 Subject: [PATCH] =?UTF-8?q?=E8=93=9D=E7=89=99=E4=BC=A0=E6=84=9F=E5=99=A8?= =?UTF-8?q?=E5=86=99=E5=85=A5=E6=95=B0=E6=8D=AE=E5=AE=8C=E6=88=90=EF=BC=8C?= =?UTF-8?q?=E8=AF=BB=E5=8F=96=E8=93=9D=E7=89=99=E9=80=9A=E7=9F=A5=E5=90=8E?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E5=B9=BF=E6=92=AD=E5=9B=9E=E4=BC=A0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=88=B0=E9=A1=B5=E9=9D=A2=EF=BC=8C=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bleUtil/BlueToothDeviceSdkActivity.java | 13 +++- .../rehome/dywoa/ui/activity/HomeActivity.kt | 13 ++-- .../dywoa/ui/activity/sbxdjgl/CJFragment.java | 77 ++++++++++++++++++- .../ui/activity/sbxdjgl/SjcjFragment.java | 68 ++++++++++++++++ app/src/main/res/layout/fragment_cj.xml | 22 +++++- 5 files changed, 181 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/rehome/dywoa/bleUtil/BlueToothDeviceSdkActivity.java b/app/src/main/java/com/rehome/dywoa/bleUtil/BlueToothDeviceSdkActivity.java index 5e63009..a03b608 100644 --- a/app/src/main/java/com/rehome/dywoa/bleUtil/BlueToothDeviceSdkActivity.java +++ b/app/src/main/java/com/rehome/dywoa/bleUtil/BlueToothDeviceSdkActivity.java @@ -82,6 +82,7 @@ public class BlueToothDeviceSdkActivity extends BaseActivity { private WaitDialog dialog; private Timer timer; + static int bleSendType=0; @Override public int getContentViewID() { @@ -220,7 +221,13 @@ public class BlueToothDeviceSdkActivity extends BaseActivity { timer.schedule(new TimerTask() { public void run() { if(mBluetoothLeService!=null){ - //mBluetoothLeService.writeString("BV"); + bleSendType++; + if(bleSendType%2==0){ + mBluetoothLeService.writeHex("0B0B6300"); + } + if(bleSendType%3==0){ + mBluetoothLeService.writeString("BV"); + } } } }, 6000, 6000); @@ -347,7 +354,9 @@ public class BlueToothDeviceSdkActivity extends BaseActivity { mLeDeviceListAdapter.notifyDataSetChanged(); if (initconn) { - if (!mConnected) mBluetoothLeService.connect(mDeviceAddress); + if(mBluetoothLeService!=null){ + if (!mConnected) mBluetoothLeService.connect(mDeviceAddress); + } } else { Intent gattServiceIntent = new Intent(BlueToothDeviceSdkActivity.this, BluetoothLeService.class); bindService(gattServiceIntent, mServiceConnection, BIND_AUTO_CREATE); diff --git a/app/src/main/java/com/rehome/dywoa/ui/activity/HomeActivity.kt b/app/src/main/java/com/rehome/dywoa/ui/activity/HomeActivity.kt index 842ddf2..1f17046 100755 --- a/app/src/main/java/com/rehome/dywoa/ui/activity/HomeActivity.kt +++ b/app/src/main/java/com/rehome/dywoa/ui/activity/HomeActivity.kt @@ -264,6 +264,9 @@ class HomeActivity : BaseActivityOaToolbarViewBinding() { getXjZhTjDropDown("zy"); getXjZhTjDropDown("zc"); getXjZhTjDropDown("lx"); + + val gattServiceIntent = Intent(this, BluetoothLeService::class.java) + bindService(gattServiceIntent, mServiceConnection, BIND_AUTO_CREATE) } private val mServiceConnection: ServiceConnection = object : ServiceConnection { @@ -1256,15 +1259,15 @@ class HomeActivity : BaseActivityOaToolbarViewBinding() { override fun onStart() { super.onStart() - val gattServiceIntent = Intent(this, BluetoothLeService::class.java) - bindService(gattServiceIntent, mServiceConnection, BIND_AUTO_CREATE) +// val gattServiceIntent = Intent(this, BluetoothLeService::class.java) +// bindService(gattServiceIntent, mServiceConnection, BIND_AUTO_CREATE) } override fun onStop() { super.onStop() - if(mBluetoothLeService!=null){ - unbindService(mServiceConnection) - } +// if(mBluetoothLeService!=null){ +// unbindService(mServiceConnection) +// } } override fun onDestroy() { diff --git a/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/CJFragment.java b/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/CJFragment.java index 14c766a..7db0cab 100755 --- a/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/CJFragment.java +++ b/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/CJFragment.java @@ -1,7 +1,14 @@ package com.rehome.dywoa.ui.activity.sbxdjgl; +import static android.content.Context.BIND_AUTO_CREATE; + +import android.content.ComponentName; +import android.content.Intent; +import android.content.ServiceConnection; import android.os.Bundle; +import android.os.Handler; +import android.os.IBinder; import android.text.Editable; import android.text.InputFilter; import android.text.InputType; @@ -22,6 +29,7 @@ import com.rehome.dywoa.DBModel.DjjhRwQy; import com.rehome.dywoa.R; import com.rehome.dywoa.base.BaseFragment; import com.rehome.dywoa.bean.SisReaultBean; +import com.rehome.dywoa.bleUtil.BluetoothLeService; import com.rehome.dywoa.utils.GsonUtils; import com.rehome.dywoa.utils.HttpListener; import com.rehome.dywoa.utils.NoProgresshttpUtils; @@ -69,6 +77,7 @@ public class CJFragment extends BaseFragment { TextView tv_sis_value; //Button btn_next; Button btn_selectCheckResult; + Button btn_cj; LinearLayout ll_bz; LinearLayout ll_et_jg; @@ -86,6 +95,8 @@ public class CJFragment extends BaseFragment { private double bjsx = 0;//报警上限 private double bjxx = 0;//报警下限 + private BluetoothLeService mBluetoothLeService; + public CJFragment() { } @@ -145,6 +156,7 @@ public class CJFragment extends BaseFragment { ll_bz = view.findViewById(R.id.ll_bz); ll_et_jg = view.findViewById(R.id.ll_et_jg); sv = view.findViewById(R.id.sv); + btn_cj = view.findViewById(R.id.btn_cj); // btn_next.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { @@ -191,6 +203,28 @@ public class CJFragment extends BaseFragment { dialog.show(); } }); + btn_cj.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if(mBluetoothLeService!=null){ + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + if(isEdit){ + if(!TextUtils.isEmpty(info.getPOINTNAME())){ + if(info.getPOINTNAME().contains("温度")){ + mBluetoothLeService.writeHex("0B0B6300"); + } + if(info.getPOINTNAME().contains("振动")){ + mBluetoothLeService.writeHex("1F13"); + } + } + } + } + },1000); + } + } + }); } @Override @@ -232,6 +266,11 @@ public class CJFragment extends BaseFragment { public void afterTextChanged(Editable s) { } }); + + if(isEdit){ + Intent gattServiceIntent = new Intent(requireActivity(), BluetoothLeService.class); + requireActivity().bindService(gattServiceIntent, mServiceConnection, BIND_AUTO_CREATE); + } } private void getSisDate(String sisNo){ @@ -333,7 +372,6 @@ public class CJFragment extends BaseFragment { tv_kks.setText(info.getASSETNUM()); } - if(!TextUtils.isEmpty(info.getUNITOFMEASURE())){ tv_dw.setVisibility(View.VISIBLE); }else{ @@ -347,17 +385,29 @@ public class CJFragment extends BaseFragment { if(!TextUtils.isEmpty(info.getMEAMETHOD())){ if(info.getMEAMETHOD().equals("抄表")){ //android:digits="0123456789.-" + btn_cj.setVisibility(View.GONE); ll_bz.setVisibility(View.GONE); tv_dw.setVisibility(View.VISIBLE); ll_et_jg.setVisibility(View.VISIBLE); btn_selectCheckResult.setVisibility(View.GONE); //et_jg.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_FLAG_DECIMAL); //et_jg.setText("正常"); + if(isEdit){ + if(!TextUtils.isEmpty(info.getPOINTNAME())){ + if(info.getPOINTNAME().contains("温度")){ + btn_cj.setVisibility(View.VISIBLE); + } + if(info.getPOINTNAME().contains("振动")){ + btn_cj.setVisibility(View.VISIBLE); + } + } + } }else{ ll_bz.setVisibility(View.GONE); tv_dw.setVisibility(View.GONE); ll_et_jg.setVisibility(View.GONE); btn_selectCheckResult.setVisibility(View.VISIBLE); + btn_cj.setVisibility(View.GONE); //et_jg.setInputType(InputType.TYPE_CLASS_TEXT); } } @@ -506,4 +556,29 @@ public class CJFragment extends BaseFragment { public String getEditTextFxContent() { return etFxnr.getText().toString().trim(); } + + public void getBlueToothData(String bleData) { + et_jg.setText(bleData); + } + private final ServiceConnection mServiceConnection = new ServiceConnection() { + @Override + public void onServiceConnected(ComponentName componentName, IBinder service) { + mBluetoothLeService = ((BluetoothLeService.LocalBinder) service).getService(); + } + + @Override + public void onServiceDisconnected(ComponentName componentName) { + mBluetoothLeService = null; + } + }; + + @Override + public void onDestroy() { + super.onDestroy(); + if(isEdit){ + if(mBluetoothLeService!=null){ + requireActivity().unbindService(mServiceConnection); + } + } + } } diff --git a/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/SjcjFragment.java b/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/SjcjFragment.java index 372763d..7593222 100755 --- a/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/SjcjFragment.java +++ b/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/SjcjFragment.java @@ -1,14 +1,18 @@ package com.rehome.dywoa.ui.activity.sbxdjgl; +import android.content.BroadcastReceiver; import android.content.ContentValues; +import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.IntentFilter; import android.graphics.Color; import android.os.Bundle; import androidx.fragment.app.Fragment; import androidx.appcompat.app.AlertDialog; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; import android.text.TextUtils; import android.view.View; @@ -21,6 +25,7 @@ import com.rehome.dywoa.DBModel.DjjhRwQy; import com.rehome.dywoa.R; import com.rehome.dywoa.adapter.MyFragmentYXAdapter; import com.rehome.dywoa.base.BaseFragment; +import com.rehome.dywoa.bleUtil.BluetoothLeService; import com.rehome.dywoa.ui.activity.sbxj.SbxjcjsbActivity; import com.rehome.dywoa.utils.ControllerActivity; import com.rehome.dywoa.utils.GsonUtils; @@ -31,6 +36,7 @@ import org.litepal.crud.DataSupport; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.List; @@ -245,6 +251,8 @@ public class SjcjFragment extends BaseFragment { if (!isEdit) { btn_save_next.setVisibility(View.GONE); + }else{ + LocalBroadcastManager.getInstance(requireActivity()).registerReceiver(mGattUpdateReceiver, makeGattUpdateIntentFilter()); } list = new ArrayList<>(); if (!lists.isEmpty()) { @@ -382,4 +390,64 @@ public class SjcjFragment extends BaseFragment { bz.updata(lists.get(0).getMEASTANDARD()); ff.update(lists.get(0).getMEAMETHOD()); } + + private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + final String action = intent.getAction(); + String bleData = ""; + if (BluetoothLeService.ACTION_DATA_AVAILABLE.equals(action)) { + String resultReceive = intent.getStringExtra(BluetoothLeService.EXTRA_DATA); + String type = resultReceive.substring(0, 1); + showLog("data:"+resultReceive); + if (type.equals("T")) { + if(!TextUtils.isEmpty(resultReceive)){ + List listWenDu = stringToListBlank(resultReceive); + if(!listWenDu.isEmpty()){ + showLog(listWenDu.get(0)); + showLog(listWenDu.get(1)); + List strWenDu = stringToList(listWenDu.get(0)); + if(!strWenDu.isEmpty()){ + bleData = strWenDu.get(1); + } + } + } + //bleData = "温度:" + data.substring(2, 6); + } else if("d".equals(type)) { + List strWenDu = stringToList(resultReceive); + if(!strWenDu.isEmpty()){ + bleData = strWenDu.get(1); + } + } + cj.getBlueToothData(bleData); + } + } + }; + + static IntentFilter makeGattUpdateIntentFilter() { + final IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(BluetoothLeService.ACTION_GATT_CONNECTED); + intentFilter.addAction(BluetoothLeService.ACTION_GATT_DISCONNECTED); + intentFilter.addAction(BluetoothLeService.ACTION_GATT_SERVICES_DISCOVERED); + intentFilter.addAction(BluetoothLeService.ACTION_DATA_AVAILABLE); + return intentFilter; + } + + @Override + public void onDestroy() { + super.onDestroy(); + if (isEdit) { + // 注销广播接收器 + LocalBroadcastManager.getInstance(requireActivity()).unregisterReceiver(mGattUpdateReceiver); + } + } + + private List stringToList(String strs) { + String str[] = strs.split(":"); + return Arrays.asList(str); + } + private List stringToListBlank(String strs) { + String str[] = strs.split("\n"); + return Arrays.asList(str); + } } diff --git a/app/src/main/res/layout/fragment_cj.xml b/app/src/main/res/layout/fragment_cj.xml index 3b5758a..98d2a73 100755 --- a/app/src/main/res/layout/fragment_cj.xml +++ b/app/src/main/res/layout/fragment_cj.xml @@ -307,25 +307,39 @@ android:id="@+id/ll_et_jg" android:layout_width="match_parent" android:layout_height="80px" - android:visibility="gone" + android:visibility="visible" android:orientation="horizontal"> + +