蓝牙传感器写入数据完成,读取蓝牙通知后通过广播回传数据到页面,更新页面数据

master
wenfei 2 months ago
parent 881e73f01a
commit bb4b66df72

@ -82,6 +82,7 @@ public class BlueToothDeviceSdkActivity extends BaseActivity {
private WaitDialog dialog; private WaitDialog dialog;
private Timer timer; private Timer timer;
static int bleSendType=0;
@Override @Override
public int getContentViewID() { public int getContentViewID() {
@ -220,7 +221,13 @@ public class BlueToothDeviceSdkActivity extends BaseActivity {
timer.schedule(new TimerTask() { timer.schedule(new TimerTask() {
public void run() { public void run() {
if(mBluetoothLeService!=null){ if(mBluetoothLeService!=null){
//mBluetoothLeService.writeString("BV"); bleSendType++;
if(bleSendType%2==0){
mBluetoothLeService.writeHex("0B0B6300");
}
if(bleSendType%3==0){
mBluetoothLeService.writeString("BV");
}
} }
} }
}, 6000, 6000); }, 6000, 6000);
@ -347,7 +354,9 @@ public class BlueToothDeviceSdkActivity extends BaseActivity {
mLeDeviceListAdapter.notifyDataSetChanged(); mLeDeviceListAdapter.notifyDataSetChanged();
if (initconn) { if (initconn) {
if(mBluetoothLeService!=null){
if (!mConnected) mBluetoothLeService.connect(mDeviceAddress); if (!mConnected) mBluetoothLeService.connect(mDeviceAddress);
}
} else { } else {
Intent gattServiceIntent = new Intent(BlueToothDeviceSdkActivity.this, BluetoothLeService.class); Intent gattServiceIntent = new Intent(BlueToothDeviceSdkActivity.this, BluetoothLeService.class);
bindService(gattServiceIntent, mServiceConnection, BIND_AUTO_CREATE); bindService(gattServiceIntent, mServiceConnection, BIND_AUTO_CREATE);

@ -264,6 +264,9 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
getXjZhTjDropDown("zy"); getXjZhTjDropDown("zy");
getXjZhTjDropDown("zc"); getXjZhTjDropDown("zc");
getXjZhTjDropDown("lx"); getXjZhTjDropDown("lx");
val gattServiceIntent = Intent(this, BluetoothLeService::class.java)
bindService(gattServiceIntent, mServiceConnection, BIND_AUTO_CREATE)
} }
private val mServiceConnection: ServiceConnection = object : ServiceConnection { private val mServiceConnection: ServiceConnection = object : ServiceConnection {
@ -1256,15 +1259,15 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
override fun onStart() { override fun onStart() {
super.onStart() super.onStart()
val gattServiceIntent = Intent(this, BluetoothLeService::class.java) // val gattServiceIntent = Intent(this, BluetoothLeService::class.java)
bindService(gattServiceIntent, mServiceConnection, BIND_AUTO_CREATE) // bindService(gattServiceIntent, mServiceConnection, BIND_AUTO_CREATE)
} }
override fun onStop() { override fun onStop() {
super.onStop() super.onStop()
if(mBluetoothLeService!=null){ // if(mBluetoothLeService!=null){
unbindService(mServiceConnection) // unbindService(mServiceConnection)
} // }
} }
override fun onDestroy() { override fun onDestroy() {

@ -1,7 +1,14 @@
package com.rehome.dywoa.ui.activity.sbxdjgl; 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.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.text.Editable; import android.text.Editable;
import android.text.InputFilter; import android.text.InputFilter;
import android.text.InputType; import android.text.InputType;
@ -22,6 +29,7 @@ import com.rehome.dywoa.DBModel.DjjhRwQy;
import com.rehome.dywoa.R; import com.rehome.dywoa.R;
import com.rehome.dywoa.base.BaseFragment; import com.rehome.dywoa.base.BaseFragment;
import com.rehome.dywoa.bean.SisReaultBean; import com.rehome.dywoa.bean.SisReaultBean;
import com.rehome.dywoa.bleUtil.BluetoothLeService;
import com.rehome.dywoa.utils.GsonUtils; import com.rehome.dywoa.utils.GsonUtils;
import com.rehome.dywoa.utils.HttpListener; import com.rehome.dywoa.utils.HttpListener;
import com.rehome.dywoa.utils.NoProgresshttpUtils; import com.rehome.dywoa.utils.NoProgresshttpUtils;
@ -69,6 +77,7 @@ public class CJFragment extends BaseFragment {
TextView tv_sis_value; TextView tv_sis_value;
//Button btn_next; //Button btn_next;
Button btn_selectCheckResult; Button btn_selectCheckResult;
Button btn_cj;
LinearLayout ll_bz; LinearLayout ll_bz;
LinearLayout ll_et_jg; LinearLayout ll_et_jg;
@ -86,6 +95,8 @@ public class CJFragment extends BaseFragment {
private double bjsx = 0;//报警上限 private double bjsx = 0;//报警上限
private double bjxx = 0;//报警下限 private double bjxx = 0;//报警下限
private BluetoothLeService mBluetoothLeService;
public CJFragment() { public CJFragment() {
} }
@ -145,6 +156,7 @@ public class CJFragment extends BaseFragment {
ll_bz = view.findViewById(R.id.ll_bz); ll_bz = view.findViewById(R.id.ll_bz);
ll_et_jg = view.findViewById(R.id.ll_et_jg); ll_et_jg = view.findViewById(R.id.ll_et_jg);
sv = view.findViewById(R.id.sv); sv = view.findViewById(R.id.sv);
btn_cj = view.findViewById(R.id.btn_cj);
// btn_next.setOnClickListener(new View.OnClickListener() { // btn_next.setOnClickListener(new View.OnClickListener() {
// @Override // @Override
// public void onClick(View v) { // public void onClick(View v) {
@ -191,6 +203,28 @@ public class CJFragment extends BaseFragment {
dialog.show(); 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 @Override
@ -232,6 +266,11 @@ public class CJFragment extends BaseFragment {
public void afterTextChanged(Editable s) { 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){ private void getSisDate(String sisNo){
@ -333,7 +372,6 @@ public class CJFragment extends BaseFragment {
tv_kks.setText(info.getASSETNUM()); tv_kks.setText(info.getASSETNUM());
} }
if(!TextUtils.isEmpty(info.getUNITOFMEASURE())){ if(!TextUtils.isEmpty(info.getUNITOFMEASURE())){
tv_dw.setVisibility(View.VISIBLE); tv_dw.setVisibility(View.VISIBLE);
}else{ }else{
@ -347,17 +385,29 @@ public class CJFragment extends BaseFragment {
if(!TextUtils.isEmpty(info.getMEAMETHOD())){ if(!TextUtils.isEmpty(info.getMEAMETHOD())){
if(info.getMEAMETHOD().equals("抄表")){ if(info.getMEAMETHOD().equals("抄表")){
//android:digits="0123456789.-" //android:digits="0123456789.-"
btn_cj.setVisibility(View.GONE);
ll_bz.setVisibility(View.GONE); ll_bz.setVisibility(View.GONE);
tv_dw.setVisibility(View.VISIBLE); tv_dw.setVisibility(View.VISIBLE);
ll_et_jg.setVisibility(View.VISIBLE); ll_et_jg.setVisibility(View.VISIBLE);
btn_selectCheckResult.setVisibility(View.GONE); btn_selectCheckResult.setVisibility(View.GONE);
//et_jg.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_FLAG_DECIMAL); //et_jg.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_FLAG_DECIMAL);
//et_jg.setText("正常"); //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{ }else{
ll_bz.setVisibility(View.GONE); ll_bz.setVisibility(View.GONE);
tv_dw.setVisibility(View.GONE); tv_dw.setVisibility(View.GONE);
ll_et_jg.setVisibility(View.GONE); ll_et_jg.setVisibility(View.GONE);
btn_selectCheckResult.setVisibility(View.VISIBLE); btn_selectCheckResult.setVisibility(View.VISIBLE);
btn_cj.setVisibility(View.GONE);
//et_jg.setInputType(InputType.TYPE_CLASS_TEXT); //et_jg.setInputType(InputType.TYPE_CLASS_TEXT);
} }
} }
@ -506,4 +556,29 @@ public class CJFragment extends BaseFragment {
public String getEditTextFxContent() { public String getEditTextFxContent() {
return etFxnr.getText().toString().trim(); 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);
}
}
}
} }

@ -1,14 +1,18 @@
package com.rehome.dywoa.ui.activity.sbxdjgl; package com.rehome.dywoa.ui.activity.sbxdjgl;
import android.content.BroadcastReceiver;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Color; import android.graphics.Color;
import android.os.Bundle; import android.os.Bundle;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.View; import android.view.View;
@ -21,6 +25,7 @@ import com.rehome.dywoa.DBModel.DjjhRwQy;
import com.rehome.dywoa.R; import com.rehome.dywoa.R;
import com.rehome.dywoa.adapter.MyFragmentYXAdapter; import com.rehome.dywoa.adapter.MyFragmentYXAdapter;
import com.rehome.dywoa.base.BaseFragment; import com.rehome.dywoa.base.BaseFragment;
import com.rehome.dywoa.bleUtil.BluetoothLeService;
import com.rehome.dywoa.ui.activity.sbxj.SbxjcjsbActivity; import com.rehome.dywoa.ui.activity.sbxj.SbxjcjsbActivity;
import com.rehome.dywoa.utils.ControllerActivity; import com.rehome.dywoa.utils.ControllerActivity;
import com.rehome.dywoa.utils.GsonUtils; import com.rehome.dywoa.utils.GsonUtils;
@ -31,6 +36,7 @@ import org.litepal.crud.DataSupport;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -245,6 +251,8 @@ public class SjcjFragment extends BaseFragment {
if (!isEdit) { if (!isEdit) {
btn_save_next.setVisibility(View.GONE); btn_save_next.setVisibility(View.GONE);
}else{
LocalBroadcastManager.getInstance(requireActivity()).registerReceiver(mGattUpdateReceiver, makeGattUpdateIntentFilter());
} }
list = new ArrayList<>(); list = new ArrayList<>();
if (!lists.isEmpty()) { if (!lists.isEmpty()) {
@ -382,4 +390,64 @@ public class SjcjFragment extends BaseFragment {
bz.updata(lists.get(0).getMEASTANDARD()); bz.updata(lists.get(0).getMEASTANDARD());
ff.update(lists.get(0).getMEAMETHOD()); 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<String> listWenDu = stringToListBlank(resultReceive);
if(!listWenDu.isEmpty()){
showLog(listWenDu.get(0));
showLog(listWenDu.get(1));
List<String> strWenDu = stringToList(listWenDu.get(0));
if(!strWenDu.isEmpty()){
bleData = strWenDu.get(1);
}
}
}
//bleData = "温度:" + data.substring(2, 6);
} else if("d".equals(type)) {
List<String> 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<String> stringToList(String strs) {
String str[] = strs.split(":");
return Arrays.asList(str);
}
private List<String> stringToListBlank(String strs) {
String str[] = strs.split("\n");
return Arrays.asList(str);
}
} }

@ -307,25 +307,39 @@
android:id="@+id/ll_et_jg" android:id="@+id/ll_et_jg"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="80px" android:layout_height="80px"
android:visibility="gone" android:visibility="visible"
android:orientation="horizontal"> android:orientation="horizontal">
<EditText <EditText
android:id="@+id/et_jg" android:id="@+id/et_jg"
style="@style/editTextTheme" style="@style/editTextTheme"
android:layout_height="70px" android:layout_height="70px"
android:layout_margin="0dp" android:layout_margin="0dp"
android:layout_width="250px" android:layout_width="200px"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:inputType="numberSigned|numberDecimal"/> android:inputType="numberSigned|numberDecimal"/>
<TextView <TextView
android:id="@+id/tv_dw" android:id="@+id/tv_dw"
android:layout_width="150px" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:gravity="center_vertical" android:gravity="center_vertical"
android:layout_marginStart="5dp" android:layout_marginStart="5dp"
android:text="MM/S" android:text="MM/S"
android:textSize="@dimen/sbtextSize" /> android:textSize="@dimen/sbtextSize" />
<Button
android:id="@+id/btn_cj"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="5dp"
android:background="@drawable/border_line_while"
android:minWidth="80dp"
android:minHeight="70px"
android:text="传感器采集"
android:textColor="@color/colorPrimary"
android:textSize="14sp"
android:visibility="visible" />
</LinearLayout> </LinearLayout>
<Button <Button
android:id="@+id/btn_selectCheckResult" android:id="@+id/btn_selectCheckResult"
@ -339,7 +353,7 @@
android:text="点击选择采集结果" android:text="点击选择采集结果"
android:textColor="@color/colorPrimary" android:textColor="@color/colorPrimary"
android:textSize="15sp" android:textSize="15sp"
android:visibility="visible"/> android:visibility="gone"/>
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>

Loading…
Cancel
Save