Browse Source

扭橙,app下发通知,逻辑修改,010D/F语言改动

zhangshenjie 11 months ago
parent
commit
96a87c3fe0
38 changed files with 860 additions and 144 deletions
  1. 2 2
      BusinessAirFryer/src/main/assets/config_000.json
  2. 10 10
      BusinessAirFryer/src/main/assets/config_010.json
  3. 8 8
      BusinessAirFryer/src/main/assets/lang_config_010.json
  4. 14 0
      BusinessAirFryer/src/main/assets/tuya_config.json
  5. 1 1
      BusinessAuth/src/main/java/com/develop/auth/ui/MemberProfileFragment.kt
  6. 8 4
      BusinessCommon/src/main/java/com/develop/common/food_sdk/FloatWindowManager.kt
  7. 3 0
      BusinessCommon/src/main/java/com/develop/common/food_sdk/SerialPortUtils.kt
  8. 126 0
      BusinessCommon/src/main/java/com/develop/common/food_sdk/ZeroMcu2DevEventListener.java
  9. 44 6
      BusinessCommon/src/main/java/com/develop/common/ui/CommonBindingActivity.kt
  10. 58 43
      BusinessCommon/src/main/java/com/develop/common/utils/CommonUtils.kt
  11. 1 1
      BusinessCommon/src/main/java/com/develop/common/widget/FoodContentView.kt
  12. 18 0
      BusinessCommon/src/main/res/values-de/strings.xml
  13. 17 0
      BusinessCommon/src/main/res/values-en/strings.xml
  14. 24 9
      BusinessCommon/src/main/res/values-fr/strings.xml
  15. 10 0
      BusinessCommon/src/main/res/values-it/strings.xml
  16. 11 0
      BusinessCommon/src/main/res/values/strings.xml
  17. 33 0
      BusinessMain/src/main/java/com/develop/main/ui/HomeActivity.kt
  18. 26 6
      BusinessMain/src/main/java/com/develop/main/ui/ModeEntranceActivity.kt
  19. 0 2
      BusinessStep/src/main/AndroidManifest.xml
  20. 127 8
      BusinessStep/src/main/java/com/develop/step/ui/ModesDetailActivity.kt
  21. 137 26
      BusinessStep/src/main/java/com/develop/step/ui/cook_step/CookStepActivity.kt
  22. 38 2
      BusinessStep/src/main/java/com/develop/step/ui/recipes_detail/CookDetailActivity.kt
  23. 23 13
      app/build.gradle
  24. BIN
      app/src/main/assets/skins/night.skin
  25. 3 2
      libBase/src/main/java/com/develop/base/ext/GlobaExt.kt
  26. 11 1
      libBase/src/main/java/com/develop/base/mvvm/BaseBindingActivity.kt
  27. 52 0
      libBase/src/main/java/com/develop/base/util/AppActivityManager.java
  28. 1 0
      libBase/src/main/java/com/develop/base/util/TopResumedAtyHolder.kt
  29. 5 0
      libBase/src/main/java/com/develop/base/util/TuyaEventEntity.kt
  30. BIN
      libThirdPart/libs/cofar-cooking-device-sdk-0.0.1-SNAPSHOT.jar
  31. 7 0
      skin-support/src/main/res/drawable/dialog_ok_bg.xml
  32. 7 0
      skin-support/src/main/res/drawable/dialog_recipe_update.xml
  33. 8 0
      skin-support/src/main/res/drawable/dialog_recipes_cancel.xml
  34. 7 0
      skin-support/src/main/res/drawable/dialog_recipes_download.xml
  35. 5 0
      skin-support/src/main/res/drawable/mode_resume_bg.xml
  36. 5 0
      skin-support/src/main/res/drawable/mode_start_bg.xml
  37. 9 0
      skin-support/src/main/res/drawable/mode_stop_bg.xml
  38. 1 0
      skin-support/src/main/res/values/colors.xml

+ 2 - 2
BusinessAirFryer/src/main/assets/config_000.json

@@ -112,7 +112,7 @@
       "bg": "ic_mode_citrus_juicer",
       "icon": "ic_grid_citrus_juicer",
       "devMode": "SOUP",
-      "listShow": false
+      "listShow": true
     },
 
     {
@@ -251,7 +251,7 @@
       "bg": "ic_sm_whisk_bg",
       "icon": "ic_sm_whisk",
       "devMode": "STAND_MIXER",
-      "listShow": false
+      "listShow": true
     },
     {
       "type": "SM_BEATER",

+ 10 - 10
BusinessAirFryer/src/main/assets/config_010.json

@@ -27,7 +27,7 @@
     },
     {
       "type": "STEAM",
-      "name": "steam",
+      "name": "steam_010",
       "bg": "ic_mode_steam",
       "icon": "ic_grid_steam",
       "devMode": "SOUP",
@@ -35,7 +35,7 @@
     },
     {
       "type": "KNEAD_TOUGH",
-      "name": "knead_dough",
+      "name": "knead_dough_010",
       "bg": "ic_mode_knead_dough",
       "icon": "ic_grid_knead_dough",
       "devMode": "SOUP",
@@ -43,7 +43,7 @@
     },
     {
       "type": "SLOW_COOK",
-      "name": "slow_cook",
+      "name": "slow_cook_010",
       "bg": "ic_mode_slow_cook",
       "icon": "ic_grid_slow_cook",
       "devMode": "SOUP",
@@ -51,7 +51,7 @@
     },
     {
       "type": "FERMENT",
-      "name": "ferment",
+      "name": "ferment_010",
       "bg": "ic_mode_ferment",
       "icon": "ic_grid_ferment",
       "devMode": "SOUP",
@@ -59,7 +59,7 @@
     },
     {
       "type": "MULSIFY",
-      "name": "mulsify",
+      "name": "mulsify_010",
       "bg": "cm_icon_mulsify",
       "icon": "cm_icon_mulsify",
       "devMode": "SOUP",
@@ -67,7 +67,7 @@
     },
     {
       "type": "FOOD_PROCESSOR",
-      "name": "food_processor",
+      "name": "food_processor_010",
       "bg": "ic_mode_food_processor",
       "icon": "ic_grid_food_processor",
       "devMode": "SOUP",
@@ -75,7 +75,7 @@
     },
     {
       "type": "CHOP",
-      "name": "chop",
+      "name": "chop_010",
       "bg": "ic_mode_chop",
       "icon": "ic_grid_chop",
       "devMode": "SOUP",
@@ -83,7 +83,7 @@
     },
     {
       "type": "WIGHT",
-      "name": "wight",
+      "name": "wight_010",
       "bg": "ic_mode_weight",
       "icon": "ic_grid_weight",
       "devMode": "SOUP",
@@ -91,7 +91,7 @@
     },
     {
       "type": "AUTO_CLEAN",
-      "name": "auto_clean",
+      "name": "auto_clean_010",
       "bg": "cm_icon_auto_clean",
       "icon": "cm_icon_auto_clean",
       "devMode": "SOUP",
@@ -99,7 +99,7 @@
     },
     {
       "type": "TURBO",
-      "name": "turbo",
+      "name": "turbo_010",
       "bg": "ic_mode_turbo",
       "icon": "ic_grid_turbo",
       "devMode": "SOUP",

+ 8 - 8
BusinessAirFryer/src/main/assets/lang_config_010.json

@@ -7,13 +7,6 @@
       "showName": "Polski",
       "show": false
     },
-    {
-      "name": "German(德语)",
-      "value": "DE",
-      "icon": "icon_lang_de",
-      "showName": "Deutsch",
-      "show": false
-    },
     {
       "name": "French(法语)",
       "value": "FR",
@@ -21,6 +14,13 @@
       "showName": "Français",
       "show": true
     },
+    {
+      "name": "German(德语)",
+      "value": "DE",
+      "icon": "icon_lang_de",
+      "showName": "Deutsch",
+      "show": true
+    },
     {
       "name": "Dutch(荷兰语)",
       "value": "NL",
@@ -47,7 +47,7 @@
       "value": "IT",
       "icon": "icon_lang_it",
       "showName": "Italiano",
-      "show": false
+      "show": true
     },
     {
       "name": "English(英语)",

+ 14 - 0
BusinessAirFryer/src/main/assets/tuya_config.json

@@ -215,6 +215,11 @@
       "uid": "uuidf49bd4b6f57750c7",
       "ak": "l7K3bjZMgNtAt9EA5PAOUapDMlNEjUZD"
     },
+    "000A30150020123010190003": {
+      "pid": "wy8ogbhchnzkmrup",
+      "uid": "uuid9aa9669f99f79414",
+      "ak": "ZwDCooravMlGCErWtkdARz9rT7lakmT4"
+    },
     "000A50370020123010190004": {
       "pid": "as3ox9yav2atavax",
       "uid": "uuid631374afce4623be",
@@ -453,6 +458,15 @@
       "pid": "bvuorstpnkfsh6fm",
       "uid": "uuid758e6c5bea1239b3",
       "ak": "ArxSJZf7ZeQ0nkl7x39hzSD7dSfTGhSs"
+    },"033G20020020123010190001": {
+      "pid": "je90y7he5zc62rdl",
+      "uid": "uuid481324819eb29b69",
+      "ak": "lEkmeMDBw0f5usArqbm110UMfxTzxOOf"
+    },
+    "000A30150020123010190001": {
+      "pid": "wy8ogbhchnzkmrup",
+      "uid": "uuid3a0b274f5edbc38b",
+      "ak": "2wGAsGNRzAsTlL8x3qgxmP46DC6p2K8Y"
     }
   }
 }

+ 1 - 1
BusinessAuth/src/main/java/com/develop/auth/ui/MemberProfileFragment.kt

@@ -32,7 +32,7 @@ import com.develop.common.tag.CURRENT_USER_ID_TAG
 import com.develop.common.tag.LOGIN_TAG
 import com.develop.common.ui.CommonBVMFragment
 
-class MemberProfileFragment : CommonBVMFragment<FragmentMemberProfileBinding, MemberViewModel>() {
+class  MemberProfileFragment : CommonBVMFragment<FragmentMemberProfileBinding, MemberViewModel>() {
 
     private var selectAge = -1
     private var selectGender = 0

+ 8 - 4
BusinessCommon/src/main/java/com/develop/common/food_sdk/FloatWindowManager.kt

@@ -37,10 +37,9 @@ object FloatWindowManager {
     private var coverPath: Any? = null
     private var modeName = ""
     private var isMode = false
-
     private var ivFood: CircleImageView? = null
     private var tvStep: MarqueeTextView? = null
-
+    private var modeType = ""
     private val confirmCancelDialog by lazy {
         CancelConfirmDialog()
     }
@@ -73,6 +72,7 @@ object FloatWindowManager {
         step = event.step
         modeName = event.modeName
         isMode = event.isMode
+        modeType = event.modeType
         if (!EventBus.getDefault().isRegistered(this)) {
             EventBus.getDefault().register(this)
         }
@@ -132,12 +132,16 @@ object FloatWindowManager {
     }
 
     fun hideStepFlowWindow() {
-        
         if (EasyFloat.isShow()) {
             EasyFloat.dismiss()
         }
     }
-
+    fun isStepShow() : Boolean{
+        return  EasyFloat.isShow()
+    }
+    fun isModeDiyShow() :Boolean{
+        return  isMode && (modeType=="ADAPTED_COOKING"||modeType=="AF_DIY") && isStepShow()
+    }
     @Subscribe
     fun onDevStateEvent(event: DevStatusEvent) {
         event.devInfo?.apply {

+ 3 - 0
BusinessCommon/src/main/java/com/develop/common/food_sdk/SerialPortUtils.kt

@@ -37,7 +37,10 @@ object SerialPortUtils {
                 }
             }
             CofarSDK.register(dev2McuEventListener)
+
             CofarSDK.register(Mcu2DevEventListener())
+            //特殊处理扭成方法
+//            CofarSDK.register(ZeroMcu2DevEventListener())
             val protocolListener = ProtocolListener(serialPort)
             thread = Thread(protocolListener)
             thread?.start()

+ 126 - 0
BusinessCommon/src/main/java/com/develop/common/food_sdk/ZeroMcu2DevEventListener.java

@@ -0,0 +1,126 @@
+package com.develop.common.food_sdk;
+
+import com.kuyuntech.cofarcooking.device.sdk.eventbus.core.DevInfo;
+import com.kuyuntech.cofarcooking.device.sdk.eventbus.event.Mcu2DevEvent;
+import com.kuyuntech.cofarcooking.device.sdk.eventbus.listener.Mcu2DevEventListener;
+import com.kuyuntech.cofarcooking.device.sdk.protocol.core.BaseDecoder;
+import com.kuyuntech.cofarcooking.device.sdk.protocol.core.cmd.HeartbeatCmd;
+import com.kuyuntech.cofarcooking.device.sdk.protocol.core.cmd.ShakeHandsCmd;
+import com.kuyuntech.cofarcooking.device.sdk.protocol.core.cmd.WeightAlignDataCmd;
+import com.kuyuntech.cofarcooking.device.sdk.protocol.core.cmd.WeightDataCmd;
+import com.kuyuntech.cofarcooking.device.sdk.protocol.core.resp.HeartbeatResp;
+import com.kuyuntech.cofarcooking.device.sdk.protocol.core.resp.ShakeHandsResp;
+import com.kuyuntech.cofarcooking.device.sdk.protocol.core.resp.VersionQueryResp;
+import com.kuyuntech.cofarcooking.device.sdk.util.core.CofarSDK;
+import com.kuyuntech.cofarcooking.device.sdk.util.core.Converter;
+
+import org.apache.commons.lang3.StringUtils;
+import org.greenrobot.eventbus.Subscribe;
+
+public class ZeroMcu2DevEventListener extends Mcu2DevEventListener {
+
+    @Override
+    @Subscribe
+    public void onMcu2DevEvent(Mcu2DevEvent event) {
+        try {
+            BaseDecoder baseDecoder = new BaseDecoder(event.getData());
+            if ("0001".equals(baseDecoder.getProtocol())) {
+                ShakeHandsResp shakeHandsResp = new ShakeHandsResp();
+                CofarSDK.post2Mcu(shakeHandsResp);
+            }
+            if ("0002".equals(baseDecoder.getProtocol())) {
+                HeartbeatResp heartbeatResp = new HeartbeatResp();
+                CofarSDK.post2Mcu(heartbeatResp);
+                HeartbeatCmd heartbeatCmd = new HeartbeatCmd(baseDecoder);
+                DevInfo devInfo = CofarSDK.devInfo();
+                devInfo.setMotorDirection(Converter.hexToByte(heartbeatCmd.getMotorDirection()));
+                devInfo.setMotorGear(Converter.hexToByte(heartbeatCmd.getMotorGear()));
+                devInfo.setAutoGear(Converter.hexToByte(heartbeatCmd.getAutoGear()));
+                devInfo.setHeatMode(Converter.hexToByte(heartbeatCmd.getHeatMode()));
+                short temp = Converter.hexToShort(heartbeatCmd.getTemp());
+                if (temp < 37 && !devInfo.isArrive37Temp()) {
+                    temp = 0;
+                } else if (temp < 37 && devInfo.isArrive37Temp()) {
+                    temp = 37;
+                }
+
+                if (temp >= 37) {
+                    devInfo.setArrive37Temp(true);
+                }
+
+                devInfo.setTemp(CofarSDK.parseTemp(temp));
+                devInfo.setRealTemp(Converter.hexToShort(heartbeatCmd.getTemp()));
+                devInfo.setTargetTemp(CofarSDK.parseTemp(Converter.hexToShort(heartbeatCmd.getTargetTemp())));
+                devInfo.setPotStatus(Converter.hexToByte(heartbeatCmd.getPotStatus()));
+                if (1 == devInfo.getPotStatus()) {
+                    devInfo.setArrive37Temp(false);
+                }
+
+                devInfo.setPotCloverStatus(Converter.hexToByte(heartbeatCmd.getPotCloverStatus()));
+                devInfo.setErrCode(Converter.hexToByte(heartbeatCmd.getErrCode()));
+                String textZero  = Converter.bytesToHexString(new byte[]{heartbeatCmd.getBaseBody().getContent()[5]}, 1);
+                if (textZero.length()>=1){
+                    textZero = String.valueOf(textZero.charAt(1));
+                }
+                devInfo.setResetZero(Byte.parseByte(textZero));
+                devInfo.setRunningStatus(Converter.hexToByte(heartbeatCmd.getRunningStatus()));
+                if (devInfo.getRunningStatus() == 0) {
+                    devInfo.setPotCloverEleStatus((byte)0);
+                }
+
+                if (devInfo.getRunningStatus() == 1) {
+                    devInfo.setPotCloverEleStatus((byte)1);
+                }
+
+                if (devInfo.getRunningStatus() == 2) {
+                    devInfo.setPotCloverEleStatus((byte)0);
+                }
+
+                if (StringUtils.isNotEmpty(heartbeatCmd.getPotCoverType())) {
+                    devInfo.setPotCloverType(Converter.hexToByte(heartbeatCmd.getPotCoverType()));
+                }
+
+                if (StringUtils.isNotEmpty(heartbeatCmd.getWaterSprayGear())) {
+                    devInfo.setWaterSprayGear(Converter.hexToByte(heartbeatCmd.getWaterSprayGear()));
+                }
+
+                if (StringUtils.isNotEmpty(heartbeatCmd.getSupportWaterSpray())) {
+                    devInfo.setSupportWaterSpray(Converter.hexToByte(heartbeatCmd.getSupportWaterSpray()));
+                }
+
+                CofarSDK.updateDevInfo(devInfo);
+            }
+
+            if ("000C".equals(baseDecoder.getProtocol())) {
+                WeightDataCmd cmd = new WeightDataCmd(baseDecoder);
+                int weight = CofarSDK.parseWeight(Converter.hexToInt(cmd.getWeight()));
+                if (weight > 32767) {
+                    weight = 32767;
+                }
+
+                byte type = Converter.hexToByte(cmd.getType());
+                CofarSDK.updateWeightData(type == 0 ? (short)weight : (short)(-weight));
+            }
+
+            if ("000F".equals(baseDecoder.getProtocol())) {
+                WeightAlignDataCmd cmd = new WeightAlignDataCmd(baseDecoder);
+                CofarSDK.updateWeightAlignData(Converter.hexToByte(cmd.getAlignStatus()), Converter.hexToByte(cmd.getAlignPoint()));
+            }
+
+            if ("0001".equals(baseDecoder.getProtocol())) {
+                ShakeHandsCmd cmd = new ShakeHandsCmd(baseDecoder);
+                CofarSDK.updateVersionInfo(Converter.hexToShort(cmd.getManufacturer()), Converter.hexToShort(cmd.getHaradware()), Converter.hexToShort(cmd.getSoftware()), Converter.hexToByte(cmd.getProtocol()), Converter.hexToByte(cmd.getDevType()));
+            }
+
+            if ("0013".equals(baseDecoder.getProtocol())) {
+                VersionQueryResp cmd = new VersionQueryResp(baseDecoder);
+                CofarSDK.updateVersionInfo(Converter.hexToShort(cmd.getManufacturer()), Converter.hexToShort(cmd.getHaradware()), Converter.hexToShort(cmd.getSoftware()), Converter.hexToByte(cmd.getProtocol()), Converter.hexToByte(cmd.getDevType()));
+            }
+        } catch (Exception var7) {
+            var7.printStackTrace();
+        }
+
+
+
+    }
+}

+ 44 - 6
BusinessCommon/src/main/java/com/develop/common/ui/CommonBindingActivity.kt

@@ -4,10 +4,8 @@ import android.content.BroadcastReceiver
 import android.content.Context
 import android.content.Intent
 import android.content.IntentFilter
-import android.content.res.Resources
 import android.os.Bundle
 import android.os.IBinder
-import android.os.Looper
 import android.util.Log
 import android.view.MotionEvent
 import android.view.View
@@ -15,15 +13,14 @@ import android.view.inputmethod.InputMethodManager
 import android.widget.EditText
 import androidx.viewbinding.ViewBinding
 import com.develop.base.ext.getModelNum
-import com.develop.base.ext.getSN
 import com.develop.base.ext.isBrand062
 import com.develop.base.ext.navigateTo
-import com.develop.base.ext.toJson
 import com.develop.base.mvvm.BaseBindingActivity
 import com.develop.base.mvvm.FullScreenTransparentDialog
 import com.develop.base.util.GlobalToast
 import com.develop.base.util.MMkvUtils
 import com.develop.base.util.TopResumedAtyHolder
+import com.develop.base.util.TuyaEventEntity
 import com.develop.common.R
 import com.develop.common.data_repo.FoodDataProvider
 import com.develop.common.data_repo.net.TokenInvalidateEvent
@@ -37,10 +34,9 @@ import com.develop.common.tag.CURRENT_USER_ID
 import com.develop.common.tag.SCREENSAVER
 import com.develop.common.utils.NoScreenEvent
 import com.develop.common.utils.TimeDownUtil
+import com.kuyuntech.cofarcooking.device.sdk.constant.core.DevStatus
 import com.kuyuntech.cofarcooking.device.sdk.eventbus.event.DevPromptEvent
 import com.kuyuntech.cofarcooking.device.sdk.util.core.CofarSDK
-import me.jessyan.autosize.AutoSizeCompat
-import org.alee.component.skin.service.ThemeSkinService
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 
@@ -550,4 +546,46 @@ abstract class CommonBindingActivity<T : ViewBinding> : BaseBindingActivity<T>()
 
             }
     }
+    fun  showMsgOKDialog(msg :String){
+        lastMsg = msg
+        cancelConfirmDialog.showCancel = false
+        cancelConfirmDialog.showConfirm = true
+
+        cancelConfirmDialog.confirmStr = resources.getString(
+            resources.getIdentifier(
+                "ok", "string", this.packageName
+            )
+        )
+        cancelConfirmDialog.title =lastMsg
+//            resources.getString(resources.getIdentifier("pmpt_msg", "string", this.packageName))
+
+        cancelConfirmDialog.showDialog(supportFragmentManager, "confirmCancelDialog")
+
+        cancelConfirmDialog.onDialogClickListener =
+            object : CancelConfirmDialog.OnDialogClickListener {
+                override fun onConfirm() {
+
+                    cancelConfirmDialog.removeSelf();
+                    lastMsg = "";
+                }
+
+                override fun onCancel() {
+                    cancelConfirmDialog.removeSelf();
+                    lastMsg = "";
+                }
+
+            }
+    }
+
+    @Subscribe
+    fun onTuyaEventEntity(event: TuyaEventEntity) {
+        onTuyaMsg(event)
+    }
+
+    open fun onTuyaMsg(event: TuyaEventEntity) {
+        if (CofarSDK.devInfo().runningStatus != DevStatus.STOP&&event.isType==0){
+            showMsgOKDialog(getString(R.string.running_block_tips))
+        }
+
+    }
 }

+ 58 - 43
BusinessCommon/src/main/java/com/develop/common/utils/CommonUtils.kt

@@ -1,11 +1,15 @@
 package com.develop.common.utils
 
 import android.os.Bundle
+import android.util.Log
 import com.blankj.utilcode.util.ToastUtils
 import com.develop.base.ext.navigateTo
+import com.develop.base.util.AppActivityManager
 import com.develop.base.util.MMkvUtils
 import com.develop.base.util.TopResumedAtyHolder
+import com.develop.base.util.TuyaEventEntity
 import com.develop.common.data_repo.FoodDataProvider
+import com.develop.common.food_sdk.FloatWindowManager
 import com.develop.common.router.Screens
 import com.develop.common.tag.CURRENT_LANGUAGE
 import com.develop.common.tag.MODE_TYPE
@@ -15,10 +19,28 @@ import com.kuyuntech.cofarcooking.device.sdk.constant.core.DevModes
 import com.kuyuntech.cofarcooking.device.sdk.constant.core.DevStatus
 import com.kuyuntech.cofarcooking.device.sdk.constant.core.WorkModes
 import com.kuyuntech.cofarcooking.device.sdk.util.core.CofarSDK
+import org.greenrobot.eventbus.EventBus
+
+object CommonUtils {
+
+    fun navigateToRemoteRecipe(number: String) {
+
+        if (CofarSDK.devInfo().runningStatus != DevStatus.STOP) {
+            EventBus.getDefault().post(TuyaEventEntity(recipeNumber = number, isType = 1))
+            return
+        }
+
+        //需要关闭的页面
+        for (activity in AppActivityManager.getInstance().activityList()) {
+            if (activity.localClassName.contains("CookDetailActivity")
+                || activity.localClassName.contains("CookStepActivity")
+                || activity.localClassName.contains("ModesDetailActivity")
+            ) {
+                activity.finish()
+            }
+        }
 
-object  CommonUtils {
 
-    fun navigateToRemoteRecipe(number:String){
 
 
         FoodDataProvider.getDatabase().recipeDao().apply {
@@ -33,29 +55,17 @@ object  CommonUtils {
             if (recipeBean != null) {
 
                 TopResumedAtyHolder.getCurrentActivity()?.navigateTo(Screens.Cook.COOK_DETAIL) {
-
-
-
                     withString(
-                        SOURCE_TAG,  "local"
-
+                        SOURCE_TAG, "local"
                     )
                     withString(NUMBER_TAG, number)
-
                 }
-
-            }else{
-
+            } else {
                 TopResumedAtyHolder.getCurrentActivity()?.navigateTo(Screens.Cook.COOK_DETAIL) {
-
-
-
                     withString(
-                        SOURCE_TAG,  "remote"
-
+                        SOURCE_TAG, "remote"
                     )
                     withString(NUMBER_TAG, number)
-
                 }
 
             }
@@ -63,58 +73,64 @@ object  CommonUtils {
         }
 
 
-
     }
 
 
-    fun navigateToAdaptedCooking(){
-
-
-        TopResumedAtyHolder.getCurrentActivity()?.apply {
-
+    fun navigateToAdaptedCooking() {
+        //判断设备是否正在运行,而还判断是否有挂起程序,挂起程序是否自动程序且还要是diy模式才可以重新进入ModeDetail页面
+        if (CofarSDK.devInfo().runningStatus != DevStatus.STOP && !FloatWindowManager.isModeDiyShow()) {
+            EventBus.getDefault().post(TuyaEventEntity(recipeNumber = "", isType = 0))
+            return
+        }
+        //当时测试有个BUG,料理机点击diy以后,手机没识别,然后手机点击diy模式,会导致程序崩溃,具体日志没看到什么东西,估在这多一个判断
+        //当前模式是diy,且当前页面是ModesDetailActivity的时候,return方法
+        if ((CofarSDK.devInfo().runningInstId == "ADAPTED_COOKING" || CofarSDK.devInfo().runningInstId == "AF_DIY")
+            && AppActivityManager.getInstance().topActivity.localClassName.contains("ModesDetailActivity")) {
+            return
+        }
 
-            if(localClassName.indexOf("ModesDetailActivity") != -1){
-                if(CommonUtils.devReady()){
+        //需要关闭的页面
+        for (activity in AppActivityManager.getInstance().activityList()) {
+            if (activity.localClassName.contains("CookDetailActivity")
+                || activity.localClassName.contains("CookStepActivity")
+                || activity.localClassName.contains("ModesDetailActivity")
+            ) {
+                if (devReady()) {
                     return
-                }else{
-                    finish()
+                } else {
+                    activity.finish()
                 }
             }
-
         }
 
-
-
-
-
-        if(DevModes.SOUP == CofarSDK.devInfo().devMode){
+        if (DevModes.SOUP == CofarSDK.devInfo().devMode) {
             val bundle = Bundle()
             bundle.putString(MODE_TYPE, WorkModes.ADAPTED_COOKING)
-            bundle.putString("OP_MODE","APP")
+            bundle.putString("OP_MODE", "APP")
             TopResumedAtyHolder.getCurrentActivity()?.navigateTo(Screens.Cook.COOK_MODES) {
                 with(bundle)
             }
-        }else if (DevModes.AIR_FRYER == CofarSDK.devInfo().devMode){
+
+        } else if (DevModes.AIR_FRYER == CofarSDK.devInfo().devMode) {
             val bundle = Bundle()
             bundle.putString(MODE_TYPE, WorkModes.AF_DIY)
-            bundle.putString("OP_MODE","APP")
+            bundle.putString("OP_MODE", "APP")
             TopResumedAtyHolder.getCurrentActivity()?.navigateTo(Screens.Cook.COOK_MODES) {
                 with(bundle)
             }
         }
 
 
-
     }
 
-    fun devReady():Boolean{
+    fun devReady(): Boolean {
 
 
-        if(DevModes.SOUP == CofarSDK.devInfo().devMode){
-            return TopResumedAtyHolder.getCurrentActivity()?.localClassName?.indexOf("ModesDetailActivity") != -1  && CofarSDK.devInfo().mode.mode === WorkModes.ADAPTED_COOKING && !CofarSDK.devInfo().isWeightStatus
+        if (DevModes.SOUP == CofarSDK.devInfo().devMode) {
+            return TopResumedAtyHolder.getCurrentActivity()?.localClassName?.indexOf("ModesDetailActivity") != -1 && CofarSDK.devInfo().mode.mode === WorkModes.ADAPTED_COOKING && !CofarSDK.devInfo().isWeightStatus
 
-        }else if (DevModes.AIR_FRYER == CofarSDK.devInfo().devMode){
-            return TopResumedAtyHolder.getCurrentActivity()?.localClassName?.indexOf("ModesDetailActivity") != -1  && CofarSDK.devInfo().mode.mode === WorkModes.AF_DIY  && !CofarSDK.devInfo().isWeightStatus
+        } else if (DevModes.AIR_FRYER == CofarSDK.devInfo().devMode) {
+            return TopResumedAtyHolder.getCurrentActivity()?.localClassName?.indexOf("ModesDetailActivity") != -1 && CofarSDK.devInfo().mode.mode === WorkModes.AF_DIY && !CofarSDK.devInfo().isWeightStatus
 
         }
 
@@ -122,5 +138,4 @@ object  CommonUtils {
     }
 
 
-
 }

+ 1 - 1
BusinessCommon/src/main/java/com/develop/common/widget/FoodContentView.kt

@@ -64,7 +64,7 @@ class FoodContentView : ConstraintLayout {
 
     init {
         val root = View.inflate(context, R.layout.food_content_view, this)
-        is033 = getSN().startsWith("033F")
+        is033 = getSN().startsWith("033F") || getSN().startsWith("033G")
         binding = FoodContentViewBinding.bind(root)
         binding.contentLayout.skinBackground(R.drawable.food_content_conner)
         binding.likeLayout.skinBackground(R.drawable.white_circle)

+ 18 - 0
BusinessCommon/src/main/res/values-de/strings.xml

@@ -49,6 +49,24 @@ Nanfang plus client ist eine Online-Informationsplattform, die von Guangdong Nan
     <string name="steam">Dampf</string>
     <string name="food_processor">LEBENSMITTELVERARBEITER</string>
     <string name="turbo">TURBO</string>
+
+
+
+
+    <string name="steam_010">Dampf</string>
+    <string name="knead_dough_010">Knetteig</string>
+    <string name="slow_cook_010">Langsam kühl</string>
+    <string name="ferment_010">Gärung</string>
+    <string name="mulsify_010">MULSIFY</string>
+    <string name="food_processor_010">LEBENSMITTELVERARBEITER</string>
+    <string name="chop_010">SCHNEIDEN</string>
+    <string name="wight_010">GEWICHT</string>
+    <string name="auto_clean_010">AUTOREINIGUNG</string>
+    <string name="turbo_010">TURBO</string>
+
+
+
+
     <string name="language">SPRACHE</string>
     <string name="sound">SAUM</string>
     <string name="brightness">HELLIGKEIT</string>

+ 17 - 0
BusinessCommon/src/main/res/values-en/strings.xml

@@ -43,12 +43,27 @@ Nanfang plus client is an online information platform developed and operated by
     <string name="scales">SCALES</string>
     <string name="boil_water">BOIL WATER</string>
     <string name="chop">CHOP</string>
+    <string name="ferment">FERMENT</string>
     <string name="slow_cook">SLOW COOK</string>
     <string name="knead_dough">KNEAD DOUGH</string>
     <string name="steam">STEAM</string>
     <string name="food_processor">FOOD PROCESSOR</string>
     <string name="turbo">TURBO</string>
     <string name="citrus_juicer">CITRUS_JUICER</string>
+
+    <string name="steam_010">STEAM</string>
+    <string name="knead_dough_010">KNEAD DOUGH</string>
+    <string name="slow_cook_010">SLOW COOK</string>
+    <string name="ferment_010">FERMENT</string>
+    <string name="mulsify_010">MULSIFY</string>
+    <string name="food_processor_010">FOOD PROCESSOR</string>
+    <string name="chop_010">CHOP</string>
+    <string name="wight_010">WEIGHT</string>
+    <string name="auto_clean_010">AUTO CLEAN</string>
+    <string name="turbo_010">TURBO</string>
+
+
+
     <string name="language">LANGUAGE</string>
     <string name="sound">SOUND</string>
     <string name="brightness">BRIGHTNESS</string>
@@ -58,6 +73,8 @@ Nanfang plus client is an online information platform developed and operated by
     <string name="about">ABOUT</string>
     <string name="tuya">App  Download</string>
 
+
+
     <string name="tuya_app_title">With Tuya</string>
     <string name="tuya_app_content">Please use app (with Tuya ) to scan the QR code</string>
     <string name="tuya_sn_title">Cobotmix</string>

+ 24 - 9
BusinessCommon/src/main/res/values-fr/strings.xml

@@ -42,13 +42,31 @@ Southern plus client est une plate - forme d’information en ligne développée
     <string name="adapted_cooking">Cuisine adaptable</string>
     <string name="scales">SCALES</string>
     <string name="boil_water">Brûler l’eau</string>
-    <string name="chop">Hacher</string>
-    <string name="ferment">Yaourt</string>
-    <string name="slow_cook">Mijoter</string>
-    <string name="knead_dough">Pétrir</string>
+
+
+
     <string name="steam">Vapeur</string>
-    <string name="food_processor">Râper/trancher</string>
-    <string name="turbo">Pulse</string>
+    <string name="knead_dough">Pétrir la pâte</string>
+    <string name="slow_cook">Cuire lentement</string>
+    <string name="ferment">Fermentation</string>
+    <string name="mulsify">Emulsification</string>
+    <string name="food_processor">Machines de traitement des aliments</string>
+    <string name="chop">Fendu</string>
+    <string name="wight">Poids</string>
+    <string name="auto_clean">Nettoyage automatique</string>
+    <string name="turbo">Turbine</string>
+    <string name="steam_010">Vapeur</string>
+    <string name="knead_dough_010">Pétrir</string>
+    <string name="slow_cook_010">Mijoter</string>
+    <string name="ferment_010">Yaourt</string>
+    <string name="mulsify_010">Emulsionner</string>
+    <string name="food_processor_010">Râper/trancher</string>
+    <string name="chop_010">Hacher</string>
+    <string name="wight_010">Balance</string>
+    <string name="auto_clean_010">Nettoyage</string>
+    <string name="turbo_010">Pulse</string>
+
+
     <string name="language">Langue</string>
     <string name="sound">La voix</string>
     <string name="brightness">Luminosité</string>
@@ -210,7 +228,6 @@ Southern plus client est une plate - forme d’information en ligne développée
     <string name="pot_clover_not_clost_tips">Le couvercle est déverrouillé. S’il vous plaît verrouiller le couvercle d’abord et commencer.</string>
     <string name="screen_saver_title">Vous souhaitez accéder à l’écran respiratoire?</string>
     <string name="sex">Sexe</string>
-    <string name="wight">Balance</string>
     <string name="running_block_tips">Arrêtez le programme en cours d’exécution et lancez - en un nouveau.</string>
     <string name="unset_target_time">L’heure n’est pas encore définie.</string>
     <string name="recipe_complete">La formule est terminée</string>
@@ -275,12 +292,10 @@ Southern plus client est une plate - forme d’information en ligne développée
 
     <string name="cook_eggs">Œufs à cuire</string>
     <string name="cook_rice">Faire cuire le repas</string>
-    <string name="mulsify">Emulsionner</string>
     <string name="puree">Purée de fruits</string>
     <string name="roast">Cuisson</string>
     <string name="smoothie">Milkshake</string>
     <string name="sovs_vide">SOVS VIDE</string>
-    <string name="auto_clean">Nettoyage</string>
     <string name="network_error">Erreur réseau</string>
     <string name="apk_version_latest">La version de l‘application est déjà à jour.</string>
     <string name="installing">Installation en cours...</string>

+ 10 - 0
BusinessCommon/src/main/res/values-it/strings.xml

@@ -49,6 +49,16 @@ Nanfang plus client è una piattaforma di informazioni online sviluppata e gesti
     <string name="steam">VAPORE</string>
     <string name="food_processor">PROCESSORE ALIMENTARE</string>
     <string name="turbo">TURBO</string>
+    <string name="steam_010">VAPORE</string>
+    <string name="knead_dough_010">IMPASTATURA</string>
+    <string name="slow_cook_010">Cuoco lento</string>
+    <string name="ferment_010">FERMENTO</string>
+    <string name="mulsify_010">MULSIFICA</string>
+    <string name="food_processor_010">PROCESSORE ALIMENTARE</string>
+    <string name="chop_010">TAGLIA</string>
+    <string name="wight_010">PESO</string>
+    <string name="auto_clean_010">PULIZIA AUTOMATICA</string>
+    <string name="turbo_010">TURBO</string>
     <string name="language">LINGUA</string>
     <string name="sound">SUONO</string>
     <string name="brightness">LUCE</string>

+ 11 - 0
BusinessCommon/src/main/res/values/strings.xml

@@ -307,6 +307,17 @@ Nanfang plus client is an online information platform developed and operated by
     <string name="sm_pasta_maker">PASTA MAKER</string>
 
 
+    <string name="steam_010">STEAM</string>
+    <string name="knead_dough_010">KNEAD DOUGH</string>
+    <string name="slow_cook_010">SLOW COOK</string>
+    <string name="ferment_010">FERMENT</string>
+    <string name="mulsify_010">MULSIFY</string>
+    <string name="food_processor_010">FOOD PROCESSOR</string>
+    <string name="chop_010">CHOP</string>
+    <string name="wight_010">WEIGHT</string>
+    <string name="auto_clean_010">AUTO CLEAN</string>
+    <string name="turbo_010">TURBO</string>
+
 
     <string name="cook_eggs">COOK EGGS</string>
     <string name="cook_rice">COOK RICE</string>

+ 33 - 0
BusinessMain/src/main/java/com/develop/main/ui/HomeActivity.kt

@@ -33,8 +33,12 @@ import com.develop.common.widget.NewsLayout
 import com.develop.main.R
 import com.develop.main.databinding.ActivityHomeBinding
 import com.develop.main.viewmodel.HomeViewModel
+import com.kuyuntech.cofarcooking.device.sdk.constant.core.WorkModes
+import com.kuyuntech.cofarcooking.device.sdk.eventbus.event.DevStatusEvent
+import com.kuyuntech.cofarcooking.device.sdk.util.core.CofarSDK
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
+import org.greenrobot.eventbus.ThreadMode
 import java.lang.reflect.Method
 
 
@@ -42,6 +46,7 @@ import java.lang.reflect.Method
 class HomeActivity : CommonBVMActivity<ActivityHomeBinding, HomeViewModel>() {
 
     private var isKeyUP = false // 处理用户长按点击finish 页面,会重新调用keyup
+    private var isResetZero = -1  //初始扭橙的值
 
     private val modesFragment by lazy {
         ModesFragment()
@@ -86,6 +91,8 @@ class HomeActivity : CommonBVMActivity<ActivityHomeBinding, HomeViewModel>() {
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
+        isResetZero = CofarSDK.devInfo().resetZero.toInt()
+
         initFragment(intent)
         initCallbackAndListener()
     }
@@ -342,6 +349,7 @@ class HomeActivity : CommonBVMActivity<ActivityHomeBinding, HomeViewModel>() {
     }
 
 
+
     override fun dispatchKeyEvent(event: KeyEvent): Boolean {
         var spend = (System.currentTimeMillis() - lastKeyTime);
         if (spend < 10) {
@@ -382,6 +390,31 @@ class HomeActivity : CommonBVMActivity<ActivityHomeBinding, HomeViewModel>() {
     }
 
 
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    fun onDevStateEvent(event: DevStatusEvent) {
+
+        //处理扭橙问题 扭橙 resetZero ==1 //普通 resetZero ==0
+        /**
+         * 当扭橙的值不等于初始化的时候,就需要重新跳转ModesDetails
+         * */
+        if (event.devInfo.resetZero.toInt() == 1&&event.devInfo.resetZero.toInt()!=isResetZero) {
+
+
+            navigateTo(Screens.Cook.COOK_MODES) {
+                val bundle = Bundle()
+                bundle.putString(MODE_TYPE, WorkModes.CITRUS_JUICER)
+                bundle.putString(
+                    "mode_name",
+                    resources.getString(com.develop.common.R.string.citrus_juicer)
+                )
+                with(bundle)
+            }
+        }
+        //由于页面不关闭需要重新复制扭橙控件,避免重复跳转
+        isResetZero = event.devInfo.resetZero.toInt()
+
+    }
+
 
     override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
         super.onActivityResult(requestCode, resultCode, data)

+ 26 - 6
BusinessMain/src/main/java/com/develop/main/ui/ModeEntranceActivity.kt

@@ -77,16 +77,15 @@ class ModeEntranceActivity : CommonBindingActivity<ActivityModeEntranceBinding>(
     private var isDevModes = true
     private var isModelNum = ""
     private var devMode = ""
-
+    private var isResetZero = -1  //初始扭橙的值
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         MMkvUtils.save(FIRST_IN, true)
         //设置系统语言
         addListLocale()
-
         devMode = CofarSDK.devInfo().devMode
         isModelNum = getModelNum()
-
+        isResetZero = CofarSDK.devInfo().resetZero.toInt()
         prepareDataLiveData = FoodDataProvider.getPrepareLiveData() as MutableLiveData<Boolean>
         prepareDataLiveData.observe(this) {
             loadingDialog.removeSelf()
@@ -278,7 +277,7 @@ class ModeEntranceActivity : CommonBindingActivity<ActivityModeEntranceBinding>(
                     }
                 }
             }.models = DataFactory.get002DEntranceData()
-        }else if (getSN().startsWith("032D")){
+        } else if (getSN().startsWith("032D")) {
             binding.entranceRecycle.apply {
                 grid(2)
                 setup {
@@ -362,7 +361,7 @@ class ModeEntranceActivity : CommonBindingActivity<ActivityModeEntranceBinding>(
                     }
                 }
             }.models = DataFactory.get032DEntranceData()
-        }else {
+        } else {
             binding.entranceRecycle.apply {
                 grid(2)
                 setup {
@@ -594,9 +593,10 @@ class ModeEntranceActivity : CommonBindingActivity<ActivityModeEntranceBinding>(
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     fun onDevStateEvent(event: DevStatusEvent) {
-        Log.e("TAG devMode","devMode :$devMode")
+        Log.e("TAG devMode", "devMode :$devMode")
         ////devInfo.potStatus 0是有锅  1是没锅
         //当没有锅得时候,默认是汤锅模式 //切当前Fragment可见状态 // 只针对5037的处理
+
         if (isModelNum == "5037" && event.devInfo.potStatus.toInt() == 1) {
             // isDevModes 避免重复刷新
             if (isDevModes && devMode != DevModes.SOUP) {
@@ -618,6 +618,26 @@ class ModeEntranceActivity : CommonBindingActivity<ActivityModeEntranceBinding>(
 
         }
 
+        //处理扭橙问题 扭橙 resetZero ==1 //普通 resetZero ==0
+        /**
+         * 当扭橙的值不等于初始化的时候,就需要重新跳转ModesDetails
+         * */
+        if (event.devInfo.resetZero.toInt() == 1&&event.devInfo.resetZero.toInt()!=isResetZero) {
+
+
+            navigateTo(Screens.Cook.COOK_MODES) {
+                val bundle = Bundle()
+                bundle.putString(MODE_TYPE, WorkModes.CITRUS_JUICER)
+                bundle.putString(
+                    "mode_name",
+                    resources.getString(com.develop.common.R.string.citrus_juicer)
+                )
+                with(bundle)
+            }
+        }
+        //由于页面不关闭需要重新复制扭橙控件,避免重复跳转
+        isResetZero = event.devInfo.resetZero.toInt()
+
 
     }
 

+ 0 - 2
BusinessStep/src/main/AndroidManifest.xml

@@ -8,11 +8,9 @@
             android:screenOrientation="landscape" />
         <activity
             android:name=".ui.ModesDetailActivity"
-            android:launchMode="singleTask"
             android:screenOrientation="landscape" />
         <activity
             android:name=".ui.recipes_detail.CookDetailActivity"
-            android:launchMode="singleTask"
             android:screenOrientation="landscape" />
         <activity
             android:name=".ui.recipes_detail.CookEvaluateActivity"

+ 127 - 8
BusinessStep/src/main/java/com/develop/step/ui/ModesDetailActivity.kt

@@ -30,9 +30,12 @@ import com.develop.base.ext.setVisible
 import com.develop.base.ext.src
 import com.develop.base.ext.updateText
 import com.develop.base.util.ThreadUtils
+import com.develop.base.util.TopResumedAtyHolder
+import com.develop.base.util.TuyaEventEntity
 import com.develop.base.widgets.CommonPopupWindow
 import com.develop.common.bean.TuyaEvent
 import com.develop.common.bean.WorkMode
+import com.develop.common.data_repo.FoodDataProvider
 import com.develop.common.data_repo.db.ModesType
 import com.develop.common.dialog.CancelConfirmDialog
 import com.develop.common.dialog.PotCoverUnlockedDialog
@@ -41,7 +44,9 @@ import com.develop.common.food_sdk.FloatWindowManager
 import com.develop.common.food_sdk.FoodSdkUtils
 import com.develop.common.router.Screens
 import com.develop.common.tag.MODE_TYPE
+import com.develop.common.tag.NUMBER_TAG
 import com.develop.common.tag.PRESS_DOWN_KEY_CODE
+import com.develop.common.tag.SOURCE_TAG
 import com.develop.common.tag.TURN_DOWN_KEY_CODE
 import com.develop.common.tag.TURN_UP_KEY_CODE
 import com.develop.common.ui.CommonBVMActivity
@@ -256,7 +261,7 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
          * 需求:扭橙模式一打开,如果没有扭橙汁配件时需要提示
          * CofarSDK.devInfo().resetZero.toInt()==1 代表已经是扭橙汁配件
          * */
-        if (modeType==WorkModes.CITRUS_JUICER&&CofarSDK.devInfo().resetZero.toInt()!=1){
+        if (modeType == WorkModes.CITRUS_JUICER && CofarSDK.devInfo().resetZero.toInt() != 1) {
             showMsgDialog(resources.getString(com.develop.common.R.string.dev_not_orange_parts))
         }
 
@@ -724,7 +729,7 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
         /**
          * 当扭橙的值不等于初始化的时候,就需要重新跳转ModesDetails
          * */
-        if (event.devInfo.resetZero.toInt() == 1&&event.devInfo.resetZero.toInt()!=isResetZero) {
+        if (event.devInfo.resetZero.toInt() == 1 && event.devInfo.resetZero.toInt() != isResetZero) {
             navigateTo(Screens.Cook.COOK_MODES) {
                 val bundle = Bundle()
                 bundle.putString(MODE_TYPE, WorkModes.CITRUS_JUICER)
@@ -943,13 +948,13 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
         viewModel.modeType.apply {
             val baseMode = CofarSDK.devMode(this)
             //显示对应模式UI
-            if (this == ModesType.WIGHT.name||this == ModesType.SM_WIGHT.name) {
+            if (this == ModesType.WIGHT.name || this == ModesType.SM_WIGHT.name) {
                 CofarSDK.recordConfig()
 
                 //称重模式
                 viewModel.changeStep(CookSettingType.WEIGHT)
                 //CofarSDK.changeMode(baseMode)
-            } else if (this == ModesType.TURBO.name||this == ModesType.SM_TURBO.name) {
+            } else if (this == ModesType.TURBO.name || this == ModesType.SM_TURBO.name) {
                 CofarSDK.recordConfig()
 
                 viewModel.changeStep(CookSettingType.TURBO)
@@ -1131,9 +1136,13 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
             title = ctx.getString(com.develop.common.R.string.keep_cooking_in_the_background)
             onDialogClickListener = object : CancelConfirmDialog.OnDialogClickListener {
                 override fun onConfirm() {
+                    if (CofarSDK.devInfo().status == DevStatus.STOP.toInt()) {
+                        FloatWindowManager.hideStepFlowWindow()
+                        finish()
+                        return
+                    }
                     runOnMainThread {
                         var workMode = ConfigUtils.getMode(modeType)
-
                         val cookStepEvent = CookStepEvent(
                             coverPath = ctx.theme.resources.getIdentifier(
                                 workMode?.icon,
@@ -1713,6 +1722,8 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
                 clSetTime.setTargetTime("--${getTimeStr(targetTime)}--")
             }
         }
+
+
     }
 
     /**
@@ -1955,7 +1966,7 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
              * 需求:扭橙模式一打开,如果没有扭橙汁配件时需要提示
              * CofarSDK.devInfo().resetZero.toInt()==1 代表已经是扭橙汁配件
              * */
-            if (modeType==WorkModes.CITRUS_JUICER&&CofarSDK.devInfo().resetZero.toInt()!=1){
+            if (modeType == WorkModes.CITRUS_JUICER && CofarSDK.devInfo().resetZero.toInt() != 1) {
                 showMsgDialog(resources.getString(com.develop.common.R.string.dev_not_orange_parts))
                 return
             }
@@ -1963,7 +1974,7 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
              * 需求:非扭橙模式打开点击运行,且是扭橙的配件时需要提示用户
              * CofarSDK.devInfo().resetZero.toInt()==1 代表已经是扭橙汁配件
              * */
-            if (modeType!=WorkModes.CITRUS_JUICER&&CofarSDK.devInfo().resetZero.toInt()==1){
+            if (modeType != WorkModes.CITRUS_JUICER && CofarSDK.devInfo().resetZero.toInt() == 1) {
                 showMsgDialog(resources.getString(com.develop.common.R.string.dev_remove_orange_parts))
                 return
             }
@@ -2185,6 +2196,13 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
                 finish()
             }
         } else {
+
+            /**
+             * 由于 app 按暂停 和 料理机同时按 backRequestDialog YES 会导致 ,重新点击悬浮进来的模式是暂停的
+             * 按返回退出的话不会消除悬浮,估在这加多一个消除悬浮代码
+             * **/
+
+            FloatWindowManager.hideStepFlowWindow()
             CofarSDK.stoptWeight()
             finish()
         }
@@ -2440,7 +2458,6 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
         if (CommonEventTypes.DEV_MODE_CHANGE == event.type) {
 
 
-
             //针对DIY处理
             if (workMode?.devMode != CofarSDK.devInfo().devMode && (lastModeType == WorkModes.ADAPTED_COOKING || lastModeType == WorkModes.AF_DIY)) {
 //                isWidget = false
@@ -2481,5 +2498,107 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
 
     }
 
+    @Override
+    override fun onTuyaMsg(event: TuyaEventEntity) {
+        //处理 2577 bug问题
+        when (event.isType) {
+            0 -> {
+                //模式
+                if (CofarSDK.devInfo().runningStatus != DevStatus.STOP){
+                    showMsgOKDialog(getString(com.develop.common.R.string.running_block_tips))
+                }
+            }
+            1 -> {
+                //食谱
+                if (CofarSDK.devInfo().runningStatus != DevStatus.STOP){
+                    var backDialog = CancelConfirmDialog()
+                    backDialog.apply {
+                        title = ctx.getString(com.develop.common.R.string.keep_cooking_in_the_background)
+                        onDialogClickListener = object : CancelConfirmDialog.OnDialogClickListener {
+                            override fun onConfirm() {
+                                if (CofarSDK.devInfo().status == DevStatus.STOP.toInt()) {
+                                    FloatWindowManager.hideStepFlowWindow()
+                                    finish()
+                                    return
+                                }
+                                runOnMainThread {
+                                    var workMode = ConfigUtils.getMode(modeType)
+                                    val cookStepEvent = CookStepEvent(
+                                        coverPath = ctx.theme.resources.getIdentifier(
+                                            workMode?.icon,
+                                            "drawable",
+                                            packageName
+                                        ),
+                                        isMode = true,
+                                        modeType = viewModel.modeType,
+                                        modeName = getString(
+                                            resources.getIdentifier(
+                                                workMode?.name,
+                                                "string",
+                                                packageName
+                                            )
+                                        )
+                                    )
+                                    FloatWindowManager.showStepFlowWindow(cookStepEvent)
+
+
+                                    getRecipe(event.recipeNumber?:"")
+
+                                    finish()
+                                }
 
+                            }
+
+                            override fun onCancel() {
+                                runOnMainThread {
+                                    FloatWindowManager.hideStepFlowWindow()
+                                    CofarSDK.stop()
+                                    getRecipe(event.recipeNumber?:"")
+                                    finish()
+                                }
+                            }
+                        }
+                    }
+                    backDialog.showDialog(
+                        supportFragmentManager, "backRequestDialog"
+                    )
+                }
+
+            }
+            else -> {
+
+            }
+        }
+    }
+
+    private  fun  getRecipe(number:String){
+        FoodDataProvider.getDatabase().recipeDao().apply {
+            var recipeNumber = number
+            if (recipeNumber.contains("@")) {
+                var (numbers, language) = recipeNumber.split("@")
+                recipeNumber = numbers
+            }
+
+
+            val recipeBean = queryRecipe(recipeNumber)
+            if (recipeBean != null) {
+
+                navigateTo(Screens.Cook.COOK_DETAIL) {
+                    withString(
+                        SOURCE_TAG, "local"
+                    )
+                    withString(NUMBER_TAG, number)
+                }
+            } else {
+                navigateTo(Screens.Cook.COOK_DETAIL) {
+                    withString(
+                        SOURCE_TAG, "remote"
+                    )
+                    withString(NUMBER_TAG, number)
+                }
+
+            }
+
+        }
+    }
 }

+ 137 - 26
BusinessStep/src/main/java/com/develop/step/ui/cook_step/CookStepActivity.kt

@@ -18,12 +18,17 @@ import com.develop.base.ext.getSN
 import com.develop.base.ext.isBrand062
 import com.develop.base.ext.isNightTheme
 import com.develop.base.ext.navigateTo
+import com.develop.base.ext.runOnMainThread
 import com.develop.base.ext.setGone
 import com.develop.base.ext.setVisible
 import com.develop.base.ext.src
 import com.develop.base.ext.updateText
+import com.develop.base.util.AppActivityManager
+import com.develop.base.util.GlobalToast
 import com.develop.base.util.MusicBackPlayerUtil
 import com.develop.base.util.ThreadUtils
+import com.develop.base.util.TopResumedAtyHolder
+import com.develop.base.util.TuyaEventEntity
 import com.develop.common.router.Screens
 import com.develop.common.widget.TimePickerView
 import com.develop.step.CookSettingType
@@ -34,6 +39,7 @@ import com.develop.common.data_repo.FoodDataProvider
 import com.develop.common.data_repo.db.ModesType
 import com.develop.common.data_repo.db.entity.UserFavoriteRecipes
 import com.develop.common.data_repo.db.entity.UserHistoryRecipes
+import com.develop.common.data_repo.net.TokenInvalidateEvent
 import com.develop.common.dialog.CancelConfirmDialog
 import com.develop.common.dialog.PotCoverUnlockedDialog
 import com.develop.common.event.CookStepEvent
@@ -43,7 +49,9 @@ import com.develop.common.food_sdk.FoodSdkUtils
 import com.develop.common.food_sdk.GlobalDevEvent
 import com.develop.common.tag.CURRENT_USER_ID
 import com.develop.common.tag.MODE_TYPE
+import com.develop.common.tag.NUMBER_TAG
 import com.develop.common.tag.PRESS_DOWN_KEY_CODE
+import com.develop.common.tag.SOURCE_TAG
 import com.develop.common.tag.TURN_DOWN_KEY_CODE
 import com.develop.common.tag.TURN_UP_KEY_CODE
 import com.develop.common.utils.CofarUtils
@@ -131,17 +139,24 @@ class CookStepActivity : CookStepBaseActivity() {
         //做食谱步骤判断  由于可能对应的 cofig 缺少程序,故用总文件来 config.json
         configJson = ConfigUtils.loadCookConfig()
         isModelNum = getModelNum()
+
+
+        for (activity in AppActivityManager.getInstance().activityList()) {
+
+            Log.e("TAG ASDASD", "ACITIVITY :" + activity.localClassName)
+
+        }
         if (!isNightTheme()) {
             if (is062) {
                 binding.viewChangeCrush.setBgColor(R.color.view_change_062)
                 binding.viewChangeWeight.setBgColor(R.color.view_change_062)
                 binding.viewRemark.setBgColor(R.color.white)
-            } else if(is011){
+            } else if (is011) {
                 binding.viewChangeCrush.setBgColor(R.color.view_change_011)
                 binding.viewChangeWeight.setBgColor(R.color.view_change_011)
                 binding.viewRemark.setBgColor(R.color.white)
                 binding.viewWeightClose.setBgColor(R.color.view_change_011)
-            }else {
+            } else {
                 binding.viewChangeCrush.setBgColor(R.color.view_change)
                 binding.viewChangeWeight.setBgColor(R.color.view_change)
                 binding.viewRemark.setBgColor(R.color.view_change)
@@ -236,10 +251,10 @@ class CookStepActivity : CookStepBaseActivity() {
             } else if (viewModel.displayStep()?.isDescription() == true) {
                 CofarSDK.stoptWeight()
                 changeDescription()
-            }  else if (viewModel.displayStep()?.isWarning() == true) {
+            } else if (viewModel.displayStep()?.isWarning() == true) {
                 CofarSDK.stoptWeight()
                 changeWarning()
-            }else {
+            } else {
                 CofarSDK.stoptWeight()
                 changeTempSettingPanel()
             }
@@ -373,10 +388,10 @@ class CookStepActivity : CookStepBaseActivity() {
                 } else if (it.isDescription()) {
                     CofarSDK.stoptWeight()
                     changeDescription()
-                }  else if (it.isWarning()) {
+                } else if (it.isWarning()) {
                     CofarSDK.stoptWeight()
                     changeWarning()
-                }else {
+                } else {
                     CofarSDK.stoptWeight()
                     changeTempSettingPanel()
                 }
@@ -561,7 +576,7 @@ class CookStepActivity : CookStepBaseActivity() {
                     currentMotorGer = it.uiData.currentSpeed
                     currentWaterGear = it.uiData.currentWaterGear
                     currTime = it.uiData.targetTime
-                    if (!it.isWeightMode() && !it.isDescription()&&!it.isWarning()) {
+                    if (!it.isWeightMode() && !it.isDescription() && !it.isWarning()) {
                         //设置初始参数
                         CofarSDK.cfgMotorGear(0)
                         CofarSDK.cfgTime(0)
@@ -601,7 +616,7 @@ class CookStepActivity : CookStepBaseActivity() {
                     getString(com.develop.common.R.string.confirm), workDevMode
                 )
             }
-            modeType = workModes?.type ?:"ADAPTED_COOKING"
+            modeType = workModes?.type ?: "ADAPTED_COOKING"
             turnDevModeUI(workDevMode)
 
         }
@@ -681,23 +696,6 @@ class CookStepActivity : CookStepBaseActivity() {
 
             isClickType = 1
 
-            /**
-             * 需求:扭橙模式一打开,如果没有扭橙汁配件时需要提示
-             * CofarSDK.devInfo().resetZero.toInt()==1 代表已经是扭橙汁配件
-             * */
-            if (modeType==WorkModes.CITRUS_JUICER&&CofarSDK.devInfo().resetZero.toInt()!=1){
-                showMsgDialog(resources.getString(com.develop.common.R.string.dev_not_orange_parts))
-                return
-            }
-            /**
-             * 需求:非扭橙模式打开点击运行,且是扭橙的配件时需要提示用户
-             * CofarSDK.devInfo().resetZero.toInt()==1 代表已经是扭橙汁配件
-             * */
-            if (modeType!=WorkModes.CITRUS_JUICER&&CofarSDK.devInfo().resetZero.toInt()==1){
-                showMsgDialog(resources.getString(com.develop.common.R.string.dev_remove_orange_parts))
-                return
-            }
-
 
             //判断是否是空炸错误,由于汤锅错误SDK 已经做了 ;
             if (ConfigUtils.getBooleanErrCode(CofarSDK.devInfo().errCode.toInt()) && CofarSDK.devInfo().devMode == DevModes.AIR_FRYER) {
@@ -707,7 +705,8 @@ class CookStepActivity : CookStepBaseActivity() {
                     //没有菜谱步骤
                     return
                 }
-                var workModes = configJson?.workModes?.find { it.type == viewModel.allSteps[viewModel.stepIndex].workMode }
+                var workModes =
+                    configJson?.workModes?.find { it.type == viewModel.allSteps[viewModel.stepIndex].workMode }
                 var wrokDevMode = workModes?.devMode
                 //由于菜谱内包含汤锅和空炸估做判断当前步骤是否是所需要得锅
                 if (wrokDevMode != CofarSDK.devInfo().devMode) {
@@ -724,6 +723,20 @@ class CookStepActivity : CookStepBaseActivity() {
                         showPotCloverDialog()
                     } else if (CofarSDK.devInfo().runningInstId != "${recipeNumber}:${viewModel.stepIndex}") {
                         overrideModeDialog.showDialog(supportFragmentManager, "overrideModeDialog")
+                    }
+                    /**
+                     * 需求:扭橙模式一打开,如果没有扭橙汁配件时需要提示
+                     * CofarSDK.devInfo().resetZero.toInt()==1 代表已经是扭橙汁配件
+                     * */
+                    else if (workModes?.type == WorkModes.CITRUS_JUICER && CofarSDK.devInfo().resetZero.toInt() != 1) {
+                        showMsgDialog(resources.getString(com.develop.common.R.string.dev_not_orange_parts))
+                    }
+                    /**
+                     * 需求:非扭橙模式打开点击运行,且是扭橙的配件时需要提示用户
+                     * CofarSDK.devInfo().resetZero.toInt()==1 代表已经是扭橙汁配件
+                     * */
+                    else if (workModes?.type != WorkModes.CITRUS_JUICER && CofarSDK.devInfo().resetZero.toInt() == 1) {
+                        showMsgDialog(resources.getString(com.develop.common.R.string.dev_remove_orange_parts))
                     } else {
                         viewModel.displayStep()?.let {
                             viewModel.setTargetCookingStep(it)
@@ -1644,5 +1657,103 @@ class CookStepActivity : CookStepBaseActivity() {
         }
     }
 
+    @Override
+    override fun onTuyaMsg(event: TuyaEventEntity) {
+        //处理 2577 bug问题
+        when (event.isType) {
+            0 -> {
+                //模式
+                if (CofarSDK.devInfo().runningStatus != DevStatus.STOP) {
+                    showMsgOKDialog(getString(R.string.running_block_tips))
+                }
+            }
+
+            1 -> {
+                //食谱
+                if (CofarSDK.devInfo().runningStatus != DevStatus.STOP) {
+                    showBackDilaog(event.recipeNumber ?: "")
+                }
+
+            }
+
+            else -> {
+
+            }
+        }
+    }
+
+    private fun showBackDilaog(number: String) {
+        var backDialog = CancelConfirmDialog()
+        backDialog.apply {
+            title = this@CookStepActivity.getString(R.string.keep_cooking_in_the_background)
+            onDialogClickListener = object : CancelConfirmDialog.OnDialogClickListener {
+                override fun onConfirm() {
+                    if (CofarSDK.devInfo().runningInstId != null) {
+                        val info = CofarSDK.devInfo().runningInstId.split(":");
+                        val cookStepEvent = CookStepEvent(
+                            recipeNumber = info[0],
+                            coverPath = photoPath!!,
+                            step = info[1].toInt(),
+                            isMode = false,
+                            modeName = this@CookStepActivity.binding.tvTitleStep.text.toString()
+
+
+                        )
+                        FloatWindowManager.showStepFlowWindow(cookStepEvent)
+                        getRecipe(number)
+                        finish()
+                    }
+                }
+
+                override fun onCancel() {
+                    FloatWindowManager.hideStepFlowWindow()
+                    CofarSDK.stop(false)
+                    getRecipe(number)
+                    finish()
+                }
+            }
+        }
+        backDialog.showDialog(supportFragmentManager, "backRequestDialog")
+
+    }
+
+
+    private fun getRecipe(number: String) {
+        FoodDataProvider.getDatabase().recipeDao().apply {
+            var recipeNumber = number
+            if (recipeNumber.contains("@")) {
+                var (numbers, language) = recipeNumber.split("@")
+                recipeNumber = numbers
+            }
+
+
+            val recipeBean = queryRecipe(recipeNumber)
 
+            //需要关闭的页面
+            for (activity in AppActivityManager.getInstance().activityList()) {
+                if (activity.localClassName.contains("CookDetailActivity")) {
+                    activity.finish()
+                }
+            }
+
+            if (recipeBean != null) {
+
+                navigateTo(Screens.Cook.COOK_DETAIL) {
+                    withString(
+                        SOURCE_TAG, "local"
+                    )
+                    withString(NUMBER_TAG, number)
+                }
+            } else {
+                navigateTo(Screens.Cook.COOK_DETAIL) {
+                    withString(
+                        SOURCE_TAG, "remote"
+                    )
+                    withString(NUMBER_TAG, number)
+                }
+
+            }
+
+        }
+    }
 }

+ 38 - 2
BusinessStep/src/main/java/com/develop/step/ui/recipes_detail/CookDetailActivity.kt

@@ -29,6 +29,7 @@ import com.develop.common.dialog.ShareQRCodeDialog
 import com.develop.common.event.RefreshDataEvent
 import com.develop.common.event.RefreshLikeDataEvent
 import com.develop.common.tag.CURRENT_LANGUAGE
+import com.develop.common.tag.MODE_TYPE
 import com.develop.common.utils.setLeftDrawable
 import com.develop.step.databinding.ActivityCookDetailBinding
 import com.develop.step.viewmodel.CookDetailViewModel
@@ -36,12 +37,15 @@ import java.util.*
 import com.develop.step.R
 import com.develop.step.ui.recipes_detail.model.CookDetailInfo
 import com.kuyuntech.cofarcooking.device.sdk.constant.core.DevModes
+import com.kuyuntech.cofarcooking.device.sdk.constant.core.WorkModes
+import com.kuyuntech.cofarcooking.device.sdk.eventbus.event.DevStatusEvent
 import com.kuyuntech.cofarcooking.device.sdk.util.core.CofarSDK
 import kotlinx.serialization.encodeToString
 import kotlinx.serialization.json.Json
 import kotlinx.serialization.json.JsonDecoder
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
+import org.greenrobot.eventbus.ThreadMode
 
 @Route(path = Screens.Cook.COOK_DETAIL)
 class CookDetailActivity : CommonBVMActivity<ActivityCookDetailBinding, CookDetailViewModel>() {
@@ -73,6 +77,7 @@ class CookDetailActivity : CommonBVMActivity<ActivityCookDetailBinding, CookDeta
     private var portionSizelJson: String? = null
     private var is062 = false
     private var is011 = false
+    private var isResetZero = -1  //初始扭橙的值
     private val shareQRCodeDialog by lazy {
         ShareQRCodeDialog()
     }
@@ -96,6 +101,7 @@ class CookDetailActivity : CommonBVMActivity<ActivityCookDetailBinding, CookDeta
         ARouter.getInstance().inject(this)
         is062 = isBrand062()
         is011 = isBrand011A()
+        isResetZero = CofarSDK.devInfo().resetZero.toInt()
         initView()
         initData()
         initListener()
@@ -151,7 +157,7 @@ class CookDetailActivity : CommonBVMActivity<ActivityCookDetailBinding, CookDeta
             binding.tvEasy.visibility = View.VISIBLE
         }
 
-        if (getSN().startsWith("033F")) {
+        if (getSN().startsWith("033F")||getSN().startsWith("033G")) {
             binding.startLayout.visibility = View.INVISIBLE
             binding.tvMoreScore.visibility = View.GONE
         }
@@ -230,7 +236,7 @@ class CookDetailActivity : CommonBVMActivity<ActivityCookDetailBinding, CookDeta
             it.add(binding.viewIcon1)
             it.add(binding.viewIcon2)
             it.add(binding.tvFoodTime)
-            if (!getSN().startsWith("033F")) {
+            if (!(getSN().startsWith("033F")||getSN().startsWith("033G"))) {
                 it.add(binding.startLayout)
             }
         }
@@ -394,6 +400,36 @@ class CookDetailActivity : CommonBVMActivity<ActivityCookDetailBinding, CookDeta
         }
     }
 
+
+
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    fun onDevStateEvent(event: DevStatusEvent) {
+
+        //处理扭橙问题 扭橙 resetZero ==1 //普通 resetZero ==0
+        /**
+         * 当扭橙的值不等于初始化的时候,就需要重新跳转ModesDetails
+         * */
+        if (event.devInfo.resetZero.toInt() == 1&&event.devInfo.resetZero.toInt()!=isResetZero) {
+
+
+            navigateTo(Screens.Cook.COOK_MODES) {
+                val bundle = Bundle()
+                bundle.putString(MODE_TYPE, WorkModes.CITRUS_JUICER)
+                bundle.putString(
+                    "mode_name",
+                    resources.getString(com.develop.common.R.string.citrus_juicer)
+                )
+                with(bundle)
+            }
+        }
+        //由于页面不关闭需要重新复制扭橙控件,避免重复跳转
+        isResetZero = event.devInfo.resetZero.toInt()
+
+    }
+
+
+
+
     private fun selectTab(tab: Int) {
         for (tabView in allTabViews) {
             tabView.isSelected = true

+ 23 - 13
app/build.gradle

@@ -12,9 +12,9 @@ ext {
 
     versionCode = Integer.parseInt(new SimpleDateFormat("yyMMddHH").format(new Date()) + 1)
 //    versionCode=230617180
-    brandCode="000A"
-//    brandCode = "010D"
-    model = "5067"
+//    brandCode="000A"
+    brandCode = "000A"
+    model = "1039"
 
 }
 
@@ -197,7 +197,17 @@ android {
             buildConfigField("String", "appCode", "\"1.01\"")
 //            buildConfigField("String", "appCode", "\"2.01\"")
         }
-
+        brand033GTuya {
+            dimension "platform"
+            applicationId "com.develop.foodcooking"
+            buildConfigField("String", "UpdatePlatform", "\"normal\"")
+            resValue("string", "app_theme", "@style/SplashThemeNotLogo")
+            buildConfigField("String", "model", "\"1039\"")
+            buildConfigField("String", "brandCode", "\"033G\"")
+            //appCode 1.01 指向bug修复,2.01指向功能变更
+            buildConfigField("String", "appCode", "\"1.01\"")
+//            buildConfigField("String", "appCode", "\"2.01\"")
+        }
 
         brand000A {
             dimension "platform"
@@ -382,20 +392,20 @@ android {
 //            buildConfigField("String", "appCode", "\"1.01\"")
 
 
-//             resValue("string", "app_theme", "@style/SplashTheme")
-//            buildConfigField("String", "UpdatePlatform", "\"normal\"")
-//            buildConfigField("String", "model", "\"1039\"")
-//            buildConfigField("String", "brandCode", "\"000A\"")
-//            //appCode 1.01 指向bug修复,2.01指向功能变更
-//            buildConfigField("String", "appCode", "\"1.01\"")
-
+             resValue("string", "app_theme", "@style/SplashTheme")
             buildConfigField("String", "UpdatePlatform", "\"normal\"")
-            resValue("string", "app_theme", "@style/SplashTheme")
-            buildConfigField("String", "model", "\"5067\"")
+            buildConfigField("String", "model", "\"1039\"")
             buildConfigField("String", "brandCode", "\"000A\"")
             //appCode 1.01 指向bug修复,2.01指向功能变更
             buildConfigField("String", "appCode", "\"1.01\"")
 
+//            buildConfigField("String", "UpdatePlatform", "\"normal\"")
+//            resValue("string", "app_theme", "@style/SplashTheme")
+//            buildConfigField("String", "model", "\"5067\"")
+//            buildConfigField("String", "brandCode", "\"000A\"")
+//            //appCode 1.01 指向bug修复,2.01指向功能变更
+//            buildConfigField("String", "appCode", "\"1.01\"")
+
 
 //             buildConfigField("String", "UpdatePlatform", "\"011A\"")
 //            resValue("string", "app_theme", "@style/Splash011A5037Theme")

BIN
app/src/main/assets/skins/night.skin


+ 3 - 2
libBase/src/main/java/com/develop/base/ext/GlobaExt.kt

@@ -206,10 +206,10 @@ fun getSN(): String {
 
     if (BuildConfig.DEBUG) {
 //        return "045A21030020123010190001"
-//    return "000A30150020123010190001"
+    return "000A30150020123010190001"
 //     return "002A30150020123010190001"
 //     return "000A10390020123010190001"
-        return "000A50670020123010190005"
+//        return "000A50670020123010190005"
 //    return "010D10390020123010190001"
 //        return "010F10390020123010190001"
 
@@ -229,6 +229,7 @@ fun getSN(): String {
 //        return "000A50370020123010190011"
 //         return  "030A10390020123010190002"
 //        return  "033F20020020123010190001"
+//        return "033G20020020123010190001"
 //        return  "014A19050020123010190002"
 //        return "029C21010020123010190001"
 //        return  "062A10390020123010190001"

+ 11 - 1
libBase/src/main/java/com/develop/base/mvvm/BaseBindingActivity.kt

@@ -12,7 +12,9 @@ import androidx.fragment.app.Fragment
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.ViewModelProvider
 import androidx.viewbinding.ViewBinding
+import com.develop.base.util.AppActivityManager
 import com.develop.base.util.FragmentKit
+import com.develop.base.util.TuyaEventEntity
 import com.smarx.notchlib.NotchScreenManager
 import me.jessyan.autosize.AutoSize
 import me.jessyan.autosize.AutoSizeCompat
@@ -51,6 +53,8 @@ abstract class BaseBindingActivity<T : ViewBinding> : AppCompatActivity() {
         NotchScreenManager.getInstance().setDisplayInNotch(this)
         binding = createViewBinding(layoutInflater)
         setContentView(binding.root)
+        //添加activity管理,做涂鸦功能
+        AppActivityManager.getInstance().addActivity(this)
     }
 
 
@@ -132,7 +136,6 @@ abstract class BaseBindingActivity<T : ViewBinding> : AppCompatActivity() {
             .commitAllowingStateLoss()
     }
 
-
     open fun handleBackPress() {
         finish()
     }
@@ -143,4 +146,11 @@ abstract class BaseBindingActivity<T : ViewBinding> : AppCompatActivity() {
         }
         return super.onTouchEvent(event)
     }
+
+    override fun onDestroy() {
+        super.onDestroy()
+        AppActivityManager.getInstance().removeActivity(this)
+    }
+
+
 }

+ 52 - 0
libBase/src/main/java/com/develop/base/util/AppActivityManager.java

@@ -0,0 +1,52 @@
+package com.develop.base.util;
+
+import android.app.ActivityManager;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+//Activity 管理类
+public class AppActivityManager {
+    private static AppActivityManager instance;
+    private List<AppCompatActivity> activityList;
+
+    private AppActivityManager() {
+        activityList = new ArrayList<>();
+    }
+
+    public static synchronized AppActivityManager getInstance() {
+        if (instance == null) {
+            instance = new AppActivityManager();
+        }
+        return instance;
+    }
+
+    public void addActivity(AppCompatActivity activity) {
+        activityList.add(activity);
+    }
+
+    public void removeActivity(AppCompatActivity activity) {
+        activityList.remove(activity);
+    }
+    public List<AppCompatActivity> activityList() {
+        return  activityList;
+    }
+
+    public AppCompatActivity getTopActivity() {
+        if (activityList.isEmpty()) {
+            return null;
+        } else {
+            return activityList.get(activityList.size() - 1);
+        }
+    }
+    public boolean getIsDetails(){
+        if (activityList.isEmpty()) {
+            return false;
+        } else {
+            AppCompatActivity ac = activityList.get(activityList.size() - 1);
+            return ac.getLocalClassName().contains("ModesDetailActivity")||ac.getLocalClassName().contains("CookStepActivity");
+        }
+    }
+}

+ 1 - 0
libBase/src/main/java/com/develop/base/util/TopResumedAtyHolder.kt

@@ -45,5 +45,6 @@ object TopResumedAtyHolder : Application.ActivityLifecycleCallbacks {
 
     override fun onActivityDestroyed(activity: Activity) {
 
+
     }
 }

+ 5 - 0
libBase/src/main/java/com/develop/base/util/TuyaEventEntity.kt

@@ -0,0 +1,5 @@
+package com.develop.base.util
+
+//isType = 0 模式详情 1是食谱详情
+class TuyaEventEntity(var recipeNumber: String?="", var isType: Int) {
+}

BIN
libThirdPart/libs/cofar-cooking-device-sdk-0.0.1-SNAPSHOT.jar


+ 7 - 0
skin-support/src/main/res/drawable/dialog_ok_bg.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+
+    <solid android:color="#E03E52"/>
+
+</shape>

+ 7 - 0
skin-support/src/main/res/drawable/dialog_recipe_update.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <corners android:radius="@dimen/convert_60px"/>
+    <solid android:color="#E03E52"/>
+
+</shape>

+ 8 - 0
skin-support/src/main/res/drawable/dialog_recipes_cancel.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <corners android:radius="@dimen/convert_100px"/>
+    <stroke android:color="#000"
+        android:width="@dimen/convert_2px"/>
+
+</shape>

+ 7 - 0
skin-support/src/main/res/drawable/dialog_recipes_download.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <corners android:radius="@dimen/convert_60px"/>
+    <solid android:color="#E03E52"/>
+
+</shape>

+ 5 - 0
skin-support/src/main/res/drawable/mode_resume_bg.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <corners android:radius="@dimen/convert_60px"/>
+    <solid android:color="@color/language_conner"/>
+</shape>

+ 5 - 0
skin-support/src/main/res/drawable/mode_start_bg.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <corners android:radius="@dimen/convert_60px"/>
+    <solid android:color="@color/language_conner"/>
+</shape>

+ 9 - 0
skin-support/src/main/res/drawable/mode_stop_bg.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <corners android:radius="@dimen/convert_100px"/>
+    <stroke
+        android:width="@dimen/convert_3px"
+        android:color="#FFFFFF"/>
+
+</shape>

+ 1 - 0
skin-support/src/main/res/values/colors.xml

@@ -160,6 +160,7 @@
     <color name="more_bg">#E03E52</color>
     <color name="hide_bg">#fff</color>
     <color name="no_color">#1A1A1A</color>
+    <color name="dialog_recipes_no">#1A1A1A</color>
     <color name="view_change">#fff</color>
     <color name="text_hit">#eeeeee</color>
 </resources>