This commit is contained in:
fengjignqi
2026-07-17 15:34:23 +08:00
parent 69830dfc69
commit 192ca7d3a4
9 changed files with 30 additions and 401 deletions

View File

@@ -21,8 +21,8 @@ public class AppConfig {
// public static boolean IS_TEST_REQUEST = true; // public static boolean IS_TEST_REQUEST = true;
/**************************本地*******************************/ /**************************本地*******************************/
// public static String BASE_URL = "http://192.168.1.217:8081/";//后端本地测试 public static String BASE_URL = "http://192.168.1.217:8081/";//后端本地测试
public static String BASE_URL = "http://47.97.217.123:8081/";//服务器测试 // public static String BASE_URL = "http://47.97.217.123:8081/";//服务器测试
public static String BASE_URL_TWO = BASE_URL;//测试 public static String BASE_URL_TWO = BASE_URL;//测试
public static String BASE_URL_THREE = BASE_URL;//测试 public static String BASE_URL_THREE = BASE_URL;//测试
public static boolean IS_TEST_REQUEST = true; public static boolean IS_TEST_REQUEST = true;

View File

@@ -1202,6 +1202,7 @@ public abstract class BaseActivity<T extends ViewBinding, P extends IPresenter>
editText.setInputType( editText.setInputType(
InputType.TYPE_CLASS_NUMBER InputType.TYPE_CLASS_NUMBER
); );
editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(4)});
break; break;
case INPUT_TYPE_LETTER: case INPUT_TYPE_LETTER:

View File

@@ -8,6 +8,7 @@ import android.view.View;
import com.ckkj.water.ConstantUtil; import com.ckkj.water.ConstantUtil;
import com.ckkj.water.R; import com.ckkj.water.R;
import com.ckkj.water.base.BaseActivity; import com.ckkj.water.base.BaseActivity;
import com.ckkj.water.base.BaseFragment;
import com.ckkj.water.databinding.SetDeviceNameLayoutBinding; import com.ckkj.water.databinding.SetDeviceNameLayoutBinding;
import com.ckkj.water.device.mvp.DeviceContract; import com.ckkj.water.device.mvp.DeviceContract;
import com.ckkj.water.device.mvp.DeviceImpl; import com.ckkj.water.device.mvp.DeviceImpl;
@@ -90,7 +91,7 @@ public class DeviceReNameActivity extends BaseActivity<SetDeviceNameLayoutBindin
@Override @Override
public void addDeviceSuccess(WaterDeviceEntity bean) { public void addDeviceSuccess(WaterDeviceEntity bean) {
hideDialogLoading(); hideDialogLoading();
ToastUtil.showShort(mContext,"设备保存成功"); ToastUtil.showShort(mContext,getString(R.string.device_save_success));
ActivityManager.removeActivityByTag(ConstantUtil.ADD_DEVICE_FLAG); ActivityManager.removeActivityByTag(ConstantUtil.ADD_DEVICE_FLAG);
new Handler().postDelayed(new Runnable() { new Handler().postDelayed(new Runnable() {
@Override @Override
@@ -116,7 +117,22 @@ public class DeviceReNameActivity extends BaseActivity<SetDeviceNameLayoutBindin
@Override @Override
public void showError(String message) { public void showError(String message) {
hideDialogLoading();
showDialogtext(null, false, false, false,
getString(R.string.tip_text),
message,
null,
getString(R.string.confirm_text),
new BaseFragment.OnDialogClick() {
@Override
public void onCancelClick() {
}
@Override
public void onConfirmClick() {
finish();
}
});
} }
@Override @Override

View File

@@ -1,396 +0,0 @@
package com.ckkj.water.device;
import android.Manifest;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import androidx.core.app.ActivityCompat;
import com.ckkj.water.ConstantUtil;
import com.ckkj.water.R;
import com.ckkj.water.base.BaseActivity;
import com.ckkj.water.databinding.DeviceResetWifiBinding;
import com.ckkj.water.device.adapter.WifiListAdapter;
import com.ckkj.water.device.mvp.DeviceContract;
import com.ckkj.water.device.mvp.DeviceImpl;
import com.ckkj.water.device.mvp.DevicePresenter;
import com.ckkj.water.espBle.EspProvisionManager;
import com.ckkj.water.espBle.ProvisionCallback;
import com.ckkj.water.index.entity.WaterDeviceEntity;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.permission.PermissionActivity;
import com.ckkj.water.utils.manager.ActivityManager;
import com.ckkj.water.utils.manager.ThemeManager;
import com.ckkj.water.utils.show.ToastUtil;
import com.gyf.immersionbar.ImmersionBar;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* 配置wifi
*/
public class SelectWifiActivity_copy extends BaseActivity<DeviceResetWifiBinding, DevicePresenter>
implements DeviceContract.DeviceView {
private WifiManager wifiManager;
private WifiListAdapter wifiListAdapter;
private WifiScanReceiver wifiScanReceiver;
//100 来自设备添加, 200 来自设备信息
private int WITCH_FROM_CODE = 100;
private String mWifiName = "";
private WaterDeviceEntity mBleDeviceEntity;
private EspProvisionManager espProvisionManager;
private boolean isBleConnecting = false;
private boolean isBleConnected = false;
@Override
public DevicePresenter createPresenter() {
return new DevicePresenter(new DeviceImpl());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
wifiScanReceiver = new WifiScanReceiver();
ActivityManager.addActivity(this,getClass().getSimpleName() + "_" + ConstantUtil.ADD_DEVICE_FLAG);
}
@Override
protected void onResume() {
super.onResume();
registerReceiver(wifiScanReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(wifiScanReceiver);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (WITCH_FROM_CODE == 100 && espProvisionManager != null) {
espProvisionManager.disconnect();
espProvisionManager.setCallback(null);
}
}
@Override
public void initData(Bundle savedInstanceState) {
super.initData(savedInstanceState);
Bundle bundle = getIntent().getExtras();
if(bundle != null){
WITCH_FROM_CODE = bundle.getInt(ConstantUtil.ACTIVITY_NAVIGATE_FLAG);
mBleDeviceEntity = (WaterDeviceEntity) bundle.getSerializable("ble_device_entity");
}
ImmersionBar.with(this)
.statusBarColor(R.color.color_gray_theme)
.statusBarDarkFont(ThemeManager.isAppThemeLight(mContext))
.titleBar(viewBinding.rlTitle)
.init();
if(WITCH_FROM_CODE == 200){
viewBinding.tvNext.setText(getString(R.string.confirm_text));
}
viewBinding.includedTitle.tvTitle.setText(R.string.select_wifi_tip);
initListener();
initWifiList();
if (WITCH_FROM_CODE == 100) {
initEspProvision();
connectBleDevice();
}
}
private void initWifiList() {
wifiListAdapter = new WifiListAdapter(mContext);
viewBinding.rvWifiList.setAdapter(wifiListAdapter);
wifiListAdapter.setOnWifiItemClickListener(wifiName -> {
mWifiName = wifiName;
viewBinding.etWifiName.setText(wifiName);
viewBinding.rvWifiList.setVisibility(View.GONE);
viewBinding.linearWifiInfo.setVisibility(View.VISIBLE);
viewBinding.tvNext.setVisibility(View.VISIBLE);
});
}
private void initListener() {
setClick(viewBinding.includedTitle.imgBack);
setClick(viewBinding.tvSelectWifi);
setClick(viewBinding.tvNext);
}
private void setClick(View view) {
view.setOnClickListener(this::onClick);
}
public void onClick(View view){
switch (view.getId()){
case R.id.img_back:
finish();
break;
case R.id.tv_select_wifi:
String[] permission = {
Manifest.permission.ACCESS_FINE_LOCATION
};
boolean hasPermission = hasRecordPermission(permission);
if(!hasPermission){
goTo(mContext, PermissionActivity.class,null);
}else{
}
scanWifi();
break;
case R.id.tv_next:
if(TextUtils.isEmpty(mWifiName)){
ToastUtil.showShort(mContext,getString(R.string.toast_select_wifi_tip));
return;
}
if(TextUtils.isEmpty(viewBinding.etInputPsd.getText().toString())){
ToastUtil.showShort(mContext,getString(R.string.toast_select_wifi_psd_tip));
return;
}
if(WITCH_FROM_CODE == 100){
provisionWifi();
}else{
Intent intent = new Intent();
intent.putExtra("wifi_name",mWifiName);
intent.putExtra("wifi_psd",viewBinding.etInputPsd.getText().toString());
setResult(RESULT_OK,intent);
finish();
}
break;
}
}
/**
* 配置网络
*/
private void provisionWifi() {
if (espProvisionManager == null) {
ToastUtil.showShort(mContext, "设备连接未初始化");
return;
}
if (!isBleConnected) {
if (!isBleConnecting) {
connectBleDevice();
}
ToastUtil.showShort(mContext, "设备连接中,请稍后再试");
return;
}
showProgressLoadingDialog(0);
espProvisionManager.provisionWifi(mWifiName, viewBinding.etInputPsd.getText().toString());
// goTo(mContext,DeviceConnectActivity.class,null);
}
private void initEspProvision() {
espProvisionManager = EspProvisionManager.init(mContext).setCallback(new ProvisionCallback() {
@Override
public void onConnecting() {
isBleConnecting = true;
isBleConnected = false;
Log.i("TEST","onConnecting");
}
@Override
public void onConnected() {
isBleConnecting = false;
isBleConnected = true;
Log.i("TEST","onConnected设备连接成功");
}
@Override
public void onProvisioning(int progress) {
Log.i("TEST","WIFI连接进度 == " + progress);
mProgressLoadingDialog.setProgress(progress);
}
@Override
public void onSuccess(String deviceName, String deviceType) {
Log.i("TEST","deviceName" + deviceName + "连接成功");
ToastUtil.showShort(mContext, deviceName + "连接成功");
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
hideDialogLoading();
}
}, 800);
}
@Override
public void onFailed(int errorCode, String message) {
isBleConnecting = false;
if (errorCode != 0) {
isBleConnected = espProvisionManager != null && espProvisionManager .isConnected();
}
Log.i("TEST","errorCode == " + errorCode + " message == " + message);
ToastUtil.showShort(mContext, message);
hideDialogLoading();
}
@Override
public void onDisconnected() {
isBleConnecting = false;
isBleConnected = false;
hideDialogLoading();
Log.i("TEST","onDisconnected");
}
@Override
public void onWifiListReceived(String[] wifiList) {
}
@Override
public void onWifiListFailed(String message) {
Log.i("TEST","onWifiListFailed-Msg==" + message);
}
@Override
public void onProvisioningRejected() {
Log.i("TEST","onProvisioningRejected");
}
});
}
/**
* 连接设备
*/
private void connectBleDevice() {
if (WITCH_FROM_CODE != 100 || mBleDeviceEntity == null || espProvisionManager == null) {
return;
}
if (isBleConnected || isBleConnecting) {
return;
}
espProvisionManager.connect(mBleDeviceEntity.getMacAddress(), mBleDeviceEntity.getDeviceName());
}
private void scanWifi() {
showLoadingDialog();
viewBinding.tvNext.setVisibility(View.GONE);
if (wifiManager != null && wifiManager.isWifiEnabled()) {
wifiManager.startScan();
} else {
ToastUtil.showShort(mContext, getString(R.string.wifi_not_enabled));
hideDialogLoading();
}
}
private void displayWifiList(List<ScanResult> scanResults) {
Set<String> wifiSet = new HashSet<>();
List<String> wifiNameList = new ArrayList<>();
for (ScanResult result : scanResults) {
String wifiName = result.SSID;
if (wifiName != null && !wifiName.isEmpty() && !wifiSet.contains(wifiName)) {
wifiSet.add(wifiName);
wifiNameList.add(wifiName);
}
}
hideDialogLoading();
if (wifiNameList.isEmpty()) {
ToastUtil.showShort(mContext, getString(R.string.no_wifi_found));
viewBinding.linearWifiInfo.setVisibility(View.VISIBLE);
viewBinding.rvWifiList.setVisibility(View.GONE);
} else {
wifiListAdapter.setData(wifiNameList);
viewBinding.linearWifiInfo.setVisibility(View.GONE);
viewBinding.rvWifiList.setVisibility(View.VISIBLE);
}
}
@Override
public void addDeviceSuccess(WaterDeviceEntity bean) {
}
@Override
public void getDeviceDetailInfo(WaterDeviceEntity bean) {
}
@Override
public void editDeviceInfoSuccess(BaseBean bean) {
}
@Override
public void deleteDeviceSuccess(BaseBean bean) {
}
@Override
public void turnOnOffDeviceSuccess(BaseBean bean, String status) {
}
@Override
public void queryDeviceBindStatusSuccess(WaterDeviceEntity bean) {
}
@Override
public void queryDeviceWorkTimeSuccess(WaterDeviceEntity bean) {
}
private class WifiScanReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(intent.getAction())) {
boolean success = intent.getBooleanExtra(WifiManager.EXTRA_RESULTS_UPDATED, false);
if (success) {
if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
List<ScanResult> results = wifiManager.getScanResults();
displayWifiList(results);
} else {
ToastUtil.showShort(mContext, getString(R.string.wifi_scan_failed));
}
}
}
}
@Override
public int getLayoutResId(Bundle savedInstanceState) {
return 0;
}
@Override
public void showError(String message) {
ToastUtil.showShort(mContext,message);
}
@Override
public void logOut(BaseBean bean) {
}
}

View File

@@ -1,6 +1,7 @@
package com.ckkj.water.network; package com.ckkj.water.network;
import android.content.Context; import android.content.Context;
import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.widget.Toast; import android.widget.Toast;
@@ -388,7 +389,9 @@ public class NetWorkManager {
public static Map<String, String> getToken() { public static Map<String, String> getToken() {
Map<String, String> map = new HashMap<>(); Map<String, String> map = new HashMap<>();
try { try {
map.put("Authorization", "Bearer " + AppConfig.USER_TOKEN); if(!TextUtils.isEmpty(AppConfig.USER_TOKEN)){
map.put("Authorization", "Bearer " + AppConfig.USER_TOKEN);
}
map.put("clientId", AppConfig.APP_CLIENT_ID); map.put("clientId", AppConfig.APP_CLIENT_ID);
map.put("content-language", LanguageManager.getCurrentRequestLanguage()); map.put("content-language", LanguageManager.getCurrentRequestLanguage());
} catch (Exception e) { } catch (Exception e) {

View File

@@ -38,6 +38,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginLeft="@dimen/dp_5" android:layout_marginLeft="@dimen/dp_5"
android:background="@null" android:background="@null"
android:maxLength="20"
android:textSize="14sp" android:textSize="14sp"
android:textColor="@color/color_222222" android:textColor="@color/color_222222"
android:hint="@string/input_device_name_hint"/> android:hint="@string/input_device_name_hint"/>

View File

@@ -41,7 +41,8 @@
android:textColor="@color/textPrimaryColor" android:textColor="@color/textPrimaryColor"
android:background="@null" android:background="@null"
android:layout_marginLeft="@dimen/dp_10" android:layout_marginLeft="@dimen/dp_10"
android:hint="@string/input_plan_name"/> android:hint="@string/input_plan_name"
android:maxLength="20"/>
</LinearLayout> </LinearLayout>
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@@ -312,6 +312,7 @@
<string name="device_battery">Battery:</string> <string name="device_battery">Battery:</string>
<string name="update_time">Last Updated:</string> <string name="update_time">Last Updated:</string>
<string name="device_save_success">Device saved successfully</string>
<!-- End --> <!-- End -->

View File

@@ -305,6 +305,8 @@
<string name="update_time">更新时间:</string> <string name="update_time">更新时间:</string>
<string name="device_save_success">设备保存成功</string>
<!--结束--> <!--结束-->