From b2340ac4ce1c9ea2070c0e7fb72a03fb2b2500ad Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期四, 19 三月 2026 15:27:32 +0800
Subject: [PATCH] 2026年03月19日15:27:21 蓝牙开发中
---
app/src/main/java/com/hdl/photovoltaic/other/HdlBluetoothLogic.java | 126 +++++++++++++++++++++++-------------------
1 files changed, 69 insertions(+), 57 deletions(-)
diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlBluetoothLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlBluetoothLogic.java
index d705f58..5609602 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlBluetoothLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlBluetoothLogic.java
@@ -6,7 +6,11 @@
import androidx.annotation.RequiresPermission;
import com.hdl.photovoltaic.HDLApp;
+import com.hdl.photovoltaic.utils.AppManagerUtils;
import com.hdl.photovoltaic.utils.BleWifiConfiguratorUtils;
+import com.hdl.photovoltaic.utils.PermissionUtils;
+
+import java.util.List;
/**
* 钃濈墮閫昏緫
@@ -45,83 +49,39 @@
* 鎵弿璁惧
*/
@RequiresPermission(Manifest.permission.BLUETOOTH_SCAN)
- public void scanDevices() {
+ public void scanDevices(BleWifiConfiguratorUtils.ScanListener listener) {
if (this.configurator == null) {
return;
}
- this.configurator.startScan(new BleWifiConfiguratorUtils.ScanListener() {
- @Override
- public void onDeviceFound(BluetoothDevice device, int rssi, byte[] scanRecord) {
-
- }
-
- @Override
- public void onScanFailed(int errorCode) {
-
- }
- });
+ this.configurator.startScan(listener);
}
/**
* 杩炴帴璁惧
+ *
+ * @param deviceAddress 鐩爣璁惧BluetoothDevice
+ * @param listener 鍥炶皟鐩戝惉
*/
@RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
- public void connect() {
+ public void connect(String deviceAddress, BleWifiConfiguratorUtils.ConnectListener listener) {
if (this.configurator == null) {
return;
}
- this.configurator.connect("", new BleWifiConfiguratorUtils.ConnectListener() {
- @Override
- public void onConnected() {
-
- }
-
- @Override
- public void onDisconnected() {
-
- }
-
- @Override
- public void onConnectionFailed(String reason) {
-
- }
- });
+ this.configurator.connect(deviceAddress, listener);
}
/**
* 鍙戦�侀厤缃俊鎭�
+ *
+ * @param str 鍙戦�佹暟鎹�
+ * @param listener 鍥炶皟鐩戝惉
*/
@RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
- public void sendConfig() {
+ public void sendConfig(String str, BleWifiConfiguratorUtils.WriteListener listener) {
if (this.configurator == null) {
return;
}
- this.configurator.writeCredentials("", "", new BleWifiConfiguratorUtils.WriteListener() {
- @Override
- public void onSsidWriteSuccess() {
-
- }
-
- @Override
- public void onPasswordWriteSuccess() {
-
- }
-
- @Override
- public void onWriteComplete(boolean success) {
-
- }
-
- @Override
- public void onWriteFailed(int status) {
-
- }
-
- @Override
- public void onDeviceResponse(String response) {
-
- }
- });
+ this.configurator.writeCredentials(str, listener);
}
/**
@@ -137,12 +97,38 @@
/**
* 鏂紑璁惧杩炴帴
+ * * @param deviceAddress 鐩爣璁惧BluetoothDevice
*/
- public void disconnect() {
+ public void disconnect(String deviceAddress) {
if (this.configurator == null) {
return;
}
this.configurator.disconnect();
+ }
+
+ /**
+ * 妫�鏌ヨ摑鐗欒繛鎺ョ姸鎬�
+ *
+ * @param deviceAddress 鐩爣璁惧BluetoothDevice
+ * @return true琛ㄧず杩炴帴鎴愬姛锛宖alse琛ㄧず杩炴帴澶辫触
+ */
+ public boolean bluetoothStatusCheck(String deviceAddress) {
+ if (this.configurator == null) {
+ return false;
+ }
+ return this.configurator.getBluetoothStatus();
+ }
+
+ /**
+ * 妫�鏌ヨ摑鐗欐槸鍚﹀紑鍚�
+ *
+ * @return true琛ㄧず寮�鍚紝false琛ㄧず鍏抽棴
+ */
+ public boolean checkBluetoothEnabled() {
+ if (this.configurator == null) {
+ return false;
+ }
+ return this.configurator.checkBluetoothEnabled();
}
/**
@@ -155,4 +141,30 @@
}
this.configurator.release();
}
+
+ /**
+ * 鑾峰彇鏉冮檺鐘舵��( 鏉冮檺妫�鏌ョ粨鏋滃姣�)
+ * 妫�鏌ユ槸鍚︽嫢鏈夊繀瑕佺殑杩愯鏃舵潈闄愶紙Android 12+ 闇�鍔ㄦ�佺敵璇锋柊鏉冮檺锛�
+ *
+ * @return true琛ㄧず鎷ユ湁鎵�鏈夊繀瑕佺殑鏉冮檺锛宖alse琛ㄧず缂哄皯鏉冮檺锛屼篃涓嶄細寮圭獥锛屽繀椤诲紩瀵肩敤鎴峰幓璁剧疆椤甸潰鎵嬪姩寮�鍚�
+ */
+ public boolean getMissingPermissions() {
+ if (this.configurator == null) {
+ return false;
+ }
+ List<String> missingPermissions = this.configurator.getMissingPermissions();
+ if (missingPermissions.isEmpty()) {
+ return true;
+ }
+ for (int i = 0; i < missingPermissions.size(); i++) {
+ int permissionState = PermissionUtils.getPermissionStateV2(AppManagerUtils.getAppManager().getLastActivity(), missingPermissions.get(i));
+ if (permissionState == 2) {
+ return false;
+ }
+ }
+ if (AppManagerUtils.getAppManager().getLastActivity() != null) {
+ AppManagerUtils.getAppManager().getLastActivity().requestPermissions(missingPermissions.toArray(new String[0]), 200);
+ }
+ return true;
+ }
}
--
Gitblit v1.8.0