显示附近蓝牙设备

This commit is contained in:
fengjignqi
2026-06-03 16:47:42 +08:00
parent 07edcb4664
commit 20a08e9b61
4 changed files with 29 additions and 5 deletions

View File

@@ -75,7 +75,6 @@ public class AddDeviceActivity extends BaseActivity<AddDeviceLayoutBinding, Devi
if (animationDrawable.isRunning()) { if (animationDrawable.isRunning()) {
animationDrawable.stop(); animationDrawable.stop();
viewBinding.ivScanAnimation.setVisibility(GONE); viewBinding.ivScanAnimation.setVisibility(GONE);
viewBinding.imgDeviceItem.setVisibility(VISIBLE);
} }
} }
} }
@@ -87,7 +86,6 @@ public class AddDeviceActivity extends BaseActivity<AddDeviceLayoutBinding, Devi
private void initListener() { private void initListener() {
setClick(viewBinding.includedTitle.imgBack); setClick(viewBinding.includedTitle.imgBack);
setClick(viewBinding.tvScanAdd); setClick(viewBinding.tvScanAdd);
setClick(viewBinding.imgDeviceItem);
} }
private void setClick(View view) { private void setClick(View view) {

View File

@@ -16,6 +16,7 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.ParcelUuid; import android.os.ParcelUuid;
import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.ImageView; import android.widget.ImageView;
@@ -25,6 +26,7 @@ import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.ckkj.water.BuildConfig; import com.ckkj.water.BuildConfig;
import com.ckkj.water.ConstantUtil; import com.ckkj.water.ConstantUtil;
import com.ckkj.water.R; import com.ckkj.water.R;
@@ -47,6 +49,7 @@ import com.maning.mlkitscanner.scan.callback.act.MNScanCallback;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
@@ -76,6 +79,7 @@ public class AddDeviceActivity_copy extends BaseActivity<AddDeviceLayoutBinding,
private boolean bluetoothReady = false; private boolean bluetoothReady = false;
private BleScanDeviceAdapter bleAdapter; private BleScanDeviceAdapter bleAdapter;
private List<WaterDeviceEntity> mDeviceList = new ArrayList<>(); private List<WaterDeviceEntity> mDeviceList = new ArrayList<>();
private Set<String> discoveredMacSet = new HashSet<>();
@Override @Override
public DevicePresenter createPresenter() { public DevicePresenter createPresenter() {
@@ -148,17 +152,26 @@ public class AddDeviceActivity_copy extends BaseActivity<AddDeviceLayoutBinding,
@Override @Override
public void onScanResult(int callbackType, @NonNull ScanResult result) { public void onScanResult(int callbackType, @NonNull ScanResult result) {
super.onScanResult(callbackType, result); super.onScanResult(callbackType, result);
//Mac地址
String deviceAddress = result.getDevice().getAddress();
// 去重:已存在的设备不再添加
if (discoveredMacSet.contains(deviceAddress)) {
return;
}
discoveredMacSet.add(deviceAddress);
WaterDeviceEntity bean = new WaterDeviceEntity(); WaterDeviceEntity bean = new WaterDeviceEntity();
//设备名字 //设备名字
String deviceName = result.getScanRecord() != null ? String deviceName = result.getScanRecord() != null ?
result.getScanRecord().getDeviceName() : "无名称"; result.getScanRecord().getDeviceName() : "无名称";
//Mac地址
String deviceAddress = result.getDevice().getAddress();
bean.setDeviceName(deviceName); bean.setDeviceName(deviceName);
bean.setMacAddress(deviceAddress); bean.setMacAddress(deviceAddress);
mDeviceList.add(bean); mDeviceList.add(bean);
bleAdapter.notifyItemInserted(mDeviceList.size() - 1); bleAdapter.notifyItemInserted(mDeviceList.size() - 1);
if(bleAdapter.getItemCount() != 0){
viewBinding.rvDevices.setVisibility(VISIBLE);
}
} }
@@ -242,6 +255,17 @@ public class AddDeviceActivity_copy extends BaseActivity<AddDeviceLayoutBinding,
setClick(viewBinding.includedTitle.imgBack); setClick(viewBinding.includedTitle.imgBack);
setClick(viewBinding.tvScanAdd); setClick(viewBinding.tvScanAdd);
setClick(viewBinding.btnBleScan); setClick(viewBinding.btnBleScan);
if(bleAdapter != null){
bleAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
ToastUtil.showShort(mContext, TextUtils.isEmpty(mDeviceList.get(position).getDeviceName()) ?
"未知设备" : mDeviceList.get(position).getDeviceName());
//TODO 准备连接设备,方案未定
}
});
}
} }
private void setClick(View view) { private void setClick(View view) {

View File

@@ -1,6 +1,7 @@
package com.ckkj.water.device.adapter; package com.ckkj.water.device.adapter;
import android.content.Context; import android.content.Context;
import android.text.TextUtils;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@@ -25,6 +26,6 @@ public class BleScanDeviceAdapter extends BaseQuickAdapter<WaterDeviceEntity, Ba
@Override @Override
protected void convert(BaseViewHolder helper, WaterDeviceEntity item) { protected void convert(BaseViewHolder helper, WaterDeviceEntity item) {
helper.setText(R.id.tv_device_name,item.getDeviceName()); helper.setText(R.id.tv_device_name, TextUtils.isEmpty(item.getDeviceName())? "未知设备" : item.getDeviceName());
} }
} }

View File

@@ -17,6 +17,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5" android:layout_marginTop="@dimen/dp_5"
android:singleLine="true"
android:text="设备名称" android:text="设备名称"
android:textColor="@color/textPrimaryColor" android:textColor="@color/textPrimaryColor"
android:textSize="13sp"/> android:textSize="13sp"/>