From 96f2b56c103c53b17cf946d2c733d4cb03d2f39d Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期一, 29 一月 2024 15:16:28 +0800 Subject: [PATCH] 2024年01月29日15:16:23 --- app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java | 289 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 246 insertions(+), 43 deletions(-) diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java index 634d792..e276732 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java +++ b/app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java @@ -2,35 +2,51 @@ import androidx.annotation.NonNull; import androidx.appcompat.content.res.AppCompatResources; +import androidx.core.app.ActivityCompat; import android.Manifest; +import android.content.Context; +import android.content.Intent; import android.content.pm.PackageManager; +import android.location.Location; +import android.location.LocationListener; +import android.location.LocationManager; import android.os.Bundle; import android.os.Process; +import android.os.SystemClock; +import android.provider.Settings; import android.text.TextUtils; import android.view.View; +import com.alibaba.fastjson.JSONObject; import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.linkpm.sdk.home.type.HomeType; +import com.hdl.photovoltaic.HDLApp; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.base.CustomBaseActivity; import com.hdl.photovoltaic.bean.MqttInfo; import com.hdl.photovoltaic.config.ConstantManage; import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.databinding.ActivityMyPowerStationBinding; +import com.hdl.photovoltaic.enums.HomepageTitleTabSwitch; +import com.hdl.photovoltaic.enums.NetworkType; import com.hdl.photovoltaic.listener.CloudCallBeak; -import com.hdl.photovoltaic.other.HdlCommonLogic; import com.hdl.photovoltaic.other.HdlDeviceLogic; import com.hdl.photovoltaic.other.HdlLogLogic; import com.hdl.photovoltaic.other.HdlMqttLogic; import com.hdl.photovoltaic.other.HdlOtaLogic; +import com.hdl.photovoltaic.other.HdlResidenceLogic; import com.hdl.photovoltaic.other.HdlThreadLogic; import com.hdl.photovoltaic.other.HdlUniLogic; import com.hdl.photovoltaic.ui.bean.DeviceRemoteInfo; +import com.hdl.photovoltaic.ui.bean.OidBean; import com.hdl.photovoltaic.uni.HDLUniMP; import com.hdl.photovoltaic.utils.AppManagerUtils; +import com.hdl.photovoltaic.utils.GPSManagerUtils; import com.hdl.photovoltaic.utils.PermissionUtils; +import com.hdl.photovoltaic.widget.ConfirmationCancelDialog; import com.hdl.sdk.link.HDLLinkLocalSdk; import com.hdl.sdk.link.common.event.EventListener; import com.hdl.sdk.link.core.bean.LinkResponse; @@ -44,8 +60,10 @@ import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import java.lang.reflect.Type; import java.util.List; +import cn.jpush.android.api.JPushInterface; /** @@ -57,9 +75,7 @@ private ActivityMyPowerStationBinding viewBinding; private int currentFragmentIndex = 1; private EventListener allTopicsListener; - private int backPressTimes; - @Override public Object getContentView() { @@ -71,15 +87,108 @@ public void onBindView(Bundle savedInstanceState) { setNotificationBarBackgroundColor(CustomColor.blue); //鍒濆鍖� - initView(); + this.initView(); //鍒濆鍖栫晫闈㈢洃鍚櫒 - initEvent(); + this.initEvent(); //娉ㄥ唽鐩戝惉 - registerAllTopicsListener(); + this.registerAllTopicsListener(); //鍒濆鍖杕qtt瀹㈡埛绔� - initMqttClient(); + this.initMqttClient(); + //涓婁紶鏋佸厜娉ㄥ唽ID鍒颁簯绔� + this.pushTokens(); + //鐐瑰嚮鏋佸厜閫氱煡鏍忔秷鎭繘鏉� + this.clickJpushNotificationMessage(); + //鍒濆鍖栨潈闄� + this.requestPermissions(); } + + + /** + * 涓婁紶鏋佸厜娉ㄥ唽ID鍒颁簯绔� + */ + private void pushTokens() { + String registrationId_tag = "registrationID_" + UserConfigManage.getInstance().getUserId(); + String is_registrationID = HDLApp.getInstance().getKey(registrationId_tag); + if (is_registrationID.equals("true")) { + //涓婅繃灏辨病鏈夊繀瑕佸湪涓婁紶鍟� + return; + } + + HdlThreadLogic.runSubThread(new Runnable() { + @Override + public void run() { + String registrationID = JPushInterface.getRegistrationID(_mActivity); + int addCount = 0; + while (TextUtils.isEmpty(registrationID)) { + SystemClock.sleep(1000);//1s浼戠湢 + registrationID = JPushInterface.getRegistrationID(_mActivity); + addCount++; + if (addCount > 5) { + //5s瓒呮椂 + break; + } + } + if (!TextUtils.isEmpty(registrationID)) { + UserConfigManage.getInstance().setRegistrationID(registrationID); + UserConfigManage.getInstance().Save(); + String finalRegistrationID = registrationID; + HdlResidenceLogic.getInstance().pushAdd(new CloudCallBeak<String>() { + @Override + public void onSuccess(String pushId) { + + if (!TextUtils.isEmpty(pushId)) { + UserConfigManage.getInstance().setPushId(pushId); + UserConfigManage.getInstance().Save(); + } + HDLApp.getInstance().setInfoMap(registrationId_tag, "true");//璁板綍涓�涓嬬姸鎬�,鍚庡彴鏉�姝籥pp浼氭竻绌�; + HdlLogLogic.print("娣诲姞鏋佸厜ID鍒颁簯绔�--->registrationID:" + finalRegistrationID, true); + + } + + @Override + public void onFailure(HDLException e) { + HDLApp.getInstance().setInfoMap(registrationId_tag, "false");//璁板綍涓�涓嬬姸鎬�,鍚庡彴鏉�姝籥pp浼氭竻绌�; + HdlLogLogic.print("娣诲姞鏋佸厜ID鍒颁簯绔け璐�--->registrationID:" + finalRegistrationID, true); + } + }); + + } + + + } + }); + } + + /** + * 寮�鍚�氱煡鏉冮檺 + */ + private void notificationSet() { + boolean isBoolean = PermissionUtils.isNotificationEnabled(_mActivity); + if (!isBoolean) { + ConfirmationCancelDialog confirmationCancelDialog = new ConfirmationCancelDialog(_mActivity); + confirmationCancelDialog.setTitle(getString(R.string.loading_title_tip)); + confirmationCancelDialog.setContent(getString(R.string.no_permissions_unable_to_receive_push)); + confirmationCancelDialog.setConfirmation(getString(R.string.go_to_settings)); + confirmationCancelDialog.show(); + confirmationCancelDialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() { + @Override + public void Confirm() { + confirmationCancelDialog.dismiss(); + PermissionUtils.openNotificationSettings(_mActivity); + + } + }); + confirmationCancelDialog.setNoOnclickListener(new ConfirmationCancelDialog.onNoOnclickListener() { + @Override + public void Cancel() { + confirmationCancelDialog.dismiss(); + } + }); + + } + } + private void initEvent() { viewBinding.myPowerStationBottomIl1.clickTv.setOnClickListener(new View.OnClickListener() { @@ -87,7 +196,7 @@ public void onClick(View v) { currentFragmentIndex = 1; bottomViewChangeOfStyle(); - postEventBus(HdlCommonLogic.HomepageTitleTabSwitch.powerstation); + postEventBus(HomepageTitleTabSwitch.powerstation); } }); viewBinding.myMessageBottomIl2.clickTv.setOnClickListener(new View.OnClickListener() { @@ -95,7 +204,7 @@ public void onClick(View v) { currentFragmentIndex = 2; bottomViewChangeOfStyle(); - postEventBus(HdlCommonLogic.HomepageTitleTabSwitch.message); + postEventBus(HomepageTitleTabSwitch.message); } }); viewBinding.myMeBottomIl3.clickTv.setOnClickListener(new View.OnClickListener() { @@ -103,12 +212,13 @@ public void onClick(View v) { currentFragmentIndex = 3; bottomViewChangeOfStyle(); - postEventBus(HdlCommonLogic.HomepageTitleTabSwitch.me); + postEventBus(HomepageTitleTabSwitch.me); } }); } + @Override protected void onDestroy() { @@ -116,11 +226,10 @@ HdlUniLogic.getInstance().checkRemoveOtherUniMPEventCallBack(); //绉婚櫎鐩戝惉 HDLLinkLocalSdk.getInstance().removeAllTopicsListener(allTopicsListener); - } private void initView() { - viewBinding.myPowerStationBottomIl1.titleTv.setText(R.string.power_station); + viewBinding.myPowerStationBottomIl1.titleTv.setText(R.string.power_shome_page);// viewBinding.myMessageBottomIl2.titleTv.setText(R.string.message); viewBinding.myMeBottomIl3.titleTv.setText(R.string.power_station_me); this.bottomViewChangeOfStyle(); @@ -166,21 +275,24 @@ * * @param tabSwitch - */ - private void postEventBus(HdlCommonLogic.HomepageTitleTabSwitch tabSwitch) { + private void postEventBus(HomepageTitleTabSwitch tabSwitch) { BaseEventBus baseEventBus = new BaseEventBus(); baseEventBus.setTopic(ConstantManage.homepage_title_tab_switch); - baseEventBus.setType(tabSwitch + ""); - EventBus.getDefault().post(baseEventBus); + baseEventBus.setType(tabSwitch.toString()); + EventBus.getDefault().postSticky(baseEventBus); } public void requestPermissions() { - String[] ary = PermissionUtils.checkPermission(_mActivity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}); + //娑堟伅閫氱煡闄愭潈 + this.notificationSet(); + //Manifest.permission.ACCESS_COARSE_LOCATION + //ACCESS_FINE_LOCATION 鍏佽浣跨敤GPS瀹氫綅 + //ACCESS_COARSE_LOCATION 鍏佽浣跨敤WIFI鐑偣鎴栧熀绔欐潵鑾峰彇绮楃暐鐨勫畾浣� + String[] ary = PermissionUtils.checkPermission(_mActivity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}); if (ary.length > 0) { - requestPermissions(ary, PermissionUtils.STATUS_SUCCESS); + this.requestPermissions(ary, PermissionUtils.STATUS_SUCCESS); } else { - if (mPermissionsResultCallback != null) { - mPermissionsResultCallback.succeed(); - } + locationUpdates(); } } @@ -190,28 +302,17 @@ if (requestCode == PermissionUtils.STATUS_SUCCESS) { for (int i = 0; i < permissions.length; i++) { if (grantResults[i] == PackageManager.PERMISSION_GRANTED) { - if (mPermissionsResultCallback != null) { - mPermissionsResultCallback.succeed(); + switch (permissions[i]) { + case Manifest.permission.ACCESS_FINE_LOCATION: { + locationUpdates(); + } + break; } + } } } - - } - - - private PermissionsResultCallback mPermissionsResultCallback; - - public void setPermissionsResultCallback(PermissionsResultCallback permissionsResultCallback) { - mPermissionsResultCallback = permissionsResultCallback; - } - - public interface PermissionsResultCallback { - - void succeed(); - - void failing(); } @@ -232,12 +333,20 @@ if (response.getTopic() == null) { return; } - HdlLogLogic.print("鐩戝惉鍒扮殑鏁版嵁===" + new Gson().toJson(response), false); + HdlLogLogic.print("鐩戝惉鍒癕odbus鏁版嵁--->" + new Gson().toJson(response), false); // if (response.getTopic().endsWith("custom/native/inverter/up")) { HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean(); uniCallBackBaseBean.setType(response.getTopic()); uniCallBackBaseBean.setData(response.getData()); +// if (com.hdl.photovoltaic.ui.test.UniAppMqtt.getInstance().getUni()) { +// try { +// String t = String.format("AndroidToPC/%s/%s", System.currentTimeMillis(), HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL); +// com.hdl.photovoltaic.ui.test.UniAppMqtt.getInstance().publish(t, JSONObject.toJSON(uniCallBackBaseBean).toString()); +// } catch (Exception ignored) { +// } +// } else { HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, uniCallBackBaseBean); +// } // } } else if (msg instanceof LinkResponse) { @@ -250,7 +359,25 @@ uniCallBackBaseBean.setType(linkResponse.getTopic()); uniCallBackBaseBean.setData(linkResponse.getData()); HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_REPLY_OTA_MODEL, uniCallBackBaseBean); - HdlLogLogic.print( linkResponse.getTopic() + new Gson().toJson(linkResponse.getData()), true); + HdlLogLogic.print(linkResponse.getTopic() + new Gson().toJson(linkResponse.getData()), true); + } else if (linkResponse.getTopic().endsWith("/custom/device/list/upload")) { + //閫嗗彉鍣ㄦ湁鏂皁id閫氱煡涓婚 + if (linkResponse.getData() == null) { + HdlLogLogic.print("閫嗗彉鍣ㄦ湁鏂皁id閫氱煡--->鏁版嵁涓虹┖", false); + return; + } + try { + Gson gson = new Gson(); + Type typeOfT = new TypeToken<List<OidBean>>() { + }.getType(); + String json = gson.toJson(linkResponse.getData()); + List<OidBean> oidList = gson.fromJson(json, typeOfT); + //澧為噺澧炲姞add + HdlDeviceLogic.getInstance().updateOidAdd(UserConfigManage.getInstance().getHomeId(), oidList, null); + } catch (Exception ignored) { + } + + } } } @@ -272,7 +399,7 @@ @Override public void onFailure(HDLException e) { - HdlLogLogic.print("璇诲彇mqtt杩滅▼淇℃伅澶辫触===" + e.getMessage(), e.getCode(), true); + HdlLogLogic.print("璇诲彇mqtt杩滅▼淇℃伅澶辫触--->" + e.getMessage(), e.getCode(), true); } }); } @@ -294,7 +421,7 @@ return; } int index = -1; - List<GatewayBean> list = HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(); + List<GatewayBean> list = HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(UserConfigManage.getInstance().getHomeId()); for (int i = 0; i < list.size(); i++) { GatewayBean gatewayBean = list.get(i); if (gatewayBean.getGatewayId().equals(topics[2])) { @@ -327,13 +454,53 @@ uniCallBackBaseBean.setType(event.getType()); uniCallBackBaseBean.setData(event.getData()); HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_REPLY_OTA_MODEL, uniCallBackBaseBean); - HdlLogLogic.print( event.getTopic() + new Gson().toJson(event.getData()), true); + HdlLogLogic.print(event.getTopic() + new Gson().toJson(event.getData()), true); + } else if (event.getTopic().contains(ConstantManage.network_change_post)) { +// String wifi_ssid = WifiUtils.getInstance().getCurrentConnectWifiSsid();//鑾峰彇WiFi鐨剆sid闇�瑕佷綅缃潈闄愮殑 + HdlLogLogic.print("鐩戝惉缃戠粶鐘舵��--->" + event.getData().toString() + "(" + event.getType() + ")", true); + //绗竴娆″惎鍔ˋpp,浠ュ強鍒囨崲缃戠粶鐨勬椂鍊欐洿鏂� + if (TextUtils.isEmpty(UserConfigManage.getInstance().getHomeId())) { + return; + } + if (!event.getType().equals(NetworkType.no_network.toString())) { +// AppManagerUtils.getAppManager().showLoading(); + HdlThreadLogic.runSubThread(new Runnable() { + @Override + public void run() { + HdlDeviceLogic.getInstance().getCurrentHomeLocalAndCloudGatewayList(UserConfigManage.getInstance().getHomeId(), new CloudCallBeak<List<GatewayBean>>() { + @Override + public void onSuccess(List<GatewayBean> obj) { +// AppManagerUtils.getAppManager().hideLoading(); + } + + @Override + public void onFailure(HDLException e) { +// AppManagerUtils.getAppManager().hideLoading(); + } + }); + } + }); + } + } + } + + /** + * 鐐瑰嚮鏋佸厜閫氱煡鏍忔秷鎭繘鏉� + */ + private void clickJpushNotificationMessage() { + Intent intent = getIntent(); + if (intent != null) { + String key = intent.getStringExtra("skip"); + if (key != null) { + //瑙﹀彂娑堟伅鐐瑰嚮浜嬩欢 + viewBinding.myMessageBottomIl2.clickTv.performClick(); + } } } /** - * 鐐瑰嚮杩斿洖閿殑浜嬩欢 + * 鐗╃悊鎸夐敭杩斿洖浜嬩欢 */ @Override public void onBackPressed() { @@ -363,4 +530,40 @@ } + /** + * 鍒濆鍖栥�愬紑鍚畾浣嶃�戝拰銆愪綅缃俊鎭�戞潈闄� + */ + private void locationUpdates() { + // 鍒濆鍖朙ocationManager瀵硅薄 + LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); + GPSManagerUtils.getInstance().getLocation(this); + // 鍒ゆ柇璁惧鏄惁鏀寔瀹氫綅鍔熻兘 + if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { + // 鎻愮ず鐢ㄦ埛鎵撳紑瀹氫綅鍔熻兘鎴栬�呭紩瀵肩敤鎴峰幓绯荤粺璁剧疆椤甸潰鎵撳紑瀹氫綅鍔熻兘 + ConfirmationCancelDialog confirmationCancelDialog = new ConfirmationCancelDialog(_mActivity); + confirmationCancelDialog.setTitle(getString(R.string.loading_title_tip)); + confirmationCancelDialog.setContent(getString(R.string.system_positioning_switch)); + confirmationCancelDialog.setConfirmation(getString(R.string.go_to_settings)); + confirmationCancelDialog.show(); + confirmationCancelDialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() { + @Override + public void Confirm() { + confirmationCancelDialog.dismiss(); + Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + HDLApp.getInstance().startActivity(intent); + + } + }); + confirmationCancelDialog.setNoOnclickListener(new ConfirmationCancelDialog.onNoOnclickListener() { + @Override + public void Cancel() { + confirmationCancelDialog.dismiss(); + } + }); + + } + + } + } \ No newline at end of file -- Gitblit v1.8.0