Browse Source

处理新涂鸦逻辑,慢煮 自动程序和食谱问题

zhangshenjie 8 months ago
parent
commit
c92b6c55b9

+ 34 - 0
BusinessCommon/src/main/java/com/develop/common/dialog/TuyaLoadingDialog.kt

@@ -0,0 +1,34 @@
+package com.develop.common.dialog
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.develop.base.ext.getSN
+import com.develop.base.mvvm.FullScreenTransparentDialog
+import com.develop.common.R
+import com.develop.common.databinding.DialogPotCoverUnlockedBinding
+import com.develop.common.databinding.DialogTuyaLoadingBinding
+
+class TuyaLoadingDialog: FullScreenTransparentDialog() {
+
+    private lateinit var binding: DialogTuyaLoadingBinding
+
+    override fun onCreateView(
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View {
+        binding = DialogTuyaLoadingBinding.inflate(
+            inflater, container, false
+        )
+        binding.tuyaCloseIv.setOnClickListener {
+            removeSelf()
+        }
+
+
+
+        return binding.root
+    }
+
+}

+ 1 - 0
BusinessCommon/src/main/java/com/develop/common/event/CommonEvent.kt

@@ -20,4 +20,5 @@ data class CookStepEvent(
     var modeType: String = "",
     var detailJson: String = "",
     var sizelJson: String = "",
+    var startMotorGer:Int = 0
 ) {}

+ 9 - 1
BusinessCommon/src/main/java/com/develop/common/food_sdk/FloatWindowManager.kt

@@ -2,6 +2,7 @@ package com.develop.common.food_sdk
 
 import android.annotation.SuppressLint
 import android.graphics.Color
+import android.util.Log
 import android.widget.ImageView
 import android.widget.RelativeLayout
 import androidx.appcompat.widget.AppCompatTextView
@@ -40,6 +41,7 @@ object FloatWindowManager {
     private var ivFood: CircleImageView? = null
     private var tvStep: MarqueeTextView? = null
     private var modeType = ""
+    private var startMotorGer = 0
     private val confirmCancelDialog by lazy {
         CancelConfirmDialog()
     }
@@ -77,6 +79,8 @@ object FloatWindowManager {
         modeName = event.modeName
         isMode = event.isMode
         modeType = event.modeType
+        startMotorGer = event.startMotorGer
+        Log.e("startMotorGer","showStepFlowWindow startMotorGer :"+event.startMotorGer)
         if (!EventBus.getDefault().isRegistered(this)) {
             EventBus.getDefault().register(this)
         }
@@ -113,18 +117,22 @@ object FloatWindowManager {
 
                 it.findViewById<RelativeLayout>(R.id.content_layout).setOnClickListener {
                     if (isMode) {
+                        Log.e("startMotorGer","event startMotorGer :"+startMotorGer)
+
                         globalApp().navigateTo(Screens.Cook.COOK_MODES) {
                             withString("cook_name", modeName)
                             withString(MODE_TYPE, event.modeType)
                             withBoolean("keep",true)
+                            withInt("startMotorGer",startMotorGer)
                         }
                     } else {
                         globalApp().navigateTo(Screens.Cook.COOK_STEP2) {
                             withString("number", recipeNumber)
                             withString("cook_step_detail", event.detailJson)
                             withString("portionSizelJson", event.sizelJson)
-
                             withInt("stepIndex", step)
+                            withBoolean("keep",true)
+                            withInt("startMotorGer",startMotorGer)
                         }
                     }
                 }

+ 7 - 0
BusinessCommon/src/main/java/com/develop/common/widget/TimePickerView.kt

@@ -205,6 +205,7 @@ class TimePickerView : ConstraintLayout {
             var maxhoursTime = maxTime / 3600
             var hoursTime = 0
             var secondTime = (maxTime - (maxhoursTime * 3600)) / 60
+            if (secondTime==0) secondTime = 59  //测试到慢炖有可能需求是8小时这个整数的,会导致分钟滑动不到
             if ((firstTimePos - 60 + 1) > maxhoursTime) {
                 hoursTime = maxhoursTime
             } else {
@@ -292,6 +293,11 @@ class TimePickerView : ConstraintLayout {
     }
 
     private fun checkLimitTime(setByUser: Boolean = false) {
+        //酸奶程序出问题导致时间不滚动了
+        if (minTime==0&&maxTime==0){
+            return
+        }
+
         val minMinutes = (minTime / 60 % 60)
         val minHours = (minTime / 3600)
         val minSeconds = minTime % 60
@@ -309,6 +315,7 @@ class TimePickerView : ConstraintLayout {
         } else {
             firstTimePos * 60 + secondTimePos
         }
+
         if (currentSeconds < minTime) {
             setTimeInternal(
                 minHours,

BIN
BusinessCommon/src/main/res/drawable-xxxhdpi/bg_tuya_loading_bg.png


BIN
BusinessCommon/src/main/res/drawable-xxxhdpi/tuya_close_bg.png


BIN
BusinessCommon/src/main/res/drawable-xxxhdpi/tuya_msg_bg.png


+ 50 - 0
BusinessCommon/src/main/res/layout/dialog_tuya_loading.xml

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:background="#444">
+
+    <FrameLayout
+        android:id="@+id/tuya_loading_layout"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
+        android:layout_gravity="center">
+
+
+        <LinearLayout
+            android:id="@+id/cl_layer"
+            android:layout_width="@dimen/convert_550px"
+            android:layout_height="wrap_content"
+            android:background="@drawable/bg_tuya_loading_bg"
+            android:orientation="vertical"
+            android:gravity="center_horizontal">
+
+
+            <ImageView
+                android:layout_width="@dimen/convert_438px"
+                android:layout_height="@dimen/convert_158px"
+                android:src="@drawable/tuya_msg_bg"
+                android:scaleType="fitCenter"
+                android:layout_margin="@dimen/convert_100px"
+                android:layout_below="@+id/tv_finish"
+
+                />
+
+
+        </LinearLayout>
+
+    </FrameLayout>
+    <ImageView
+        android:id="@+id/tuya_close_iv"
+        android:layout_width="@dimen/convert_120px"
+        android:layout_height="@dimen/convert_120px"
+        android:src="@drawable/tuya_close_bg"
+        android:layout_marginTop="@dimen/convert_40px_negative"
+        android:layout_alignRight="@+id/tuya_loading_layout"
+        android:layout_alignTop="@+id/tuya_loading_layout"
+        android:layout_marginRight="@dimen/convert_40px_negative"
+        />
+</RelativeLayout>

+ 1 - 0
BusinessCommon/src/main/res/layout/fragment_comme_list.xml

@@ -4,6 +4,7 @@
     android:id="@+id/page"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:background="@color/bg_color"
     app:stateEnabled="true">
 
     <androidx.recyclerview.widget.RecyclerView

+ 11 - 1
BusinessSetting/src/main/java/com/develop/setting/ui/SettingMainActivity.kt

@@ -32,6 +32,8 @@ import com.develop.common.data_repo.db.SettingType
 import com.develop.common.data_repo.net.Api
 import com.develop.common.data_repo.net.model.request.DeviceInfoBody
 import com.develop.common.data_repo.net.model.response.DevInfoResult
+import com.develop.common.dialog.PotCoverUnlockedDialog
+import com.develop.common.dialog.TuyaLoadingDialog
 import com.develop.common.router.Screens
 import com.develop.common.tag.ISTUYA
 import com.develop.common.tag.LANGUAGE_FROM_SETTING
@@ -193,7 +195,9 @@ class SettingMainActivity : CommonBindingActivity<ActivitySettingMainBinding>()
                                         .build().getDetailedState()
                                 ) {
                                     navigateTo(Screens.Setting.TUYA)
-                                } else {
+                                } else if(isTuya&&TuyaUtils.qrcodeUrl== ""){
+                                    showTuyaLoadingDialog()
+                                }else {
                                     navigateTo(Screens.Setting.WIFI, 200) {
                                         val bundle = Bundle()
                                         bundle.putBoolean(WIFI_FROM_MAIN_SETTING, true)
@@ -212,6 +216,12 @@ class SettingMainActivity : CommonBindingActivity<ActivitySettingMainBinding>()
     }
 
 
+    private fun showTuyaLoadingDialog() {
+        val tuyaLoadingDialog = TuyaLoadingDialog()
+        tuyaLoadingDialog.showDialog(supportFragmentManager, "TuyaLoadingDialog")
+    }
+
+
     // 打开文件管理器选择文件
     private fun openFileManager() {
         // 打开文件管理器选择文件

+ 2 - 2
BusinessSetting/src/main/java/com/develop/setting/ui/TuyaActivity.kt

@@ -56,8 +56,8 @@ class TuyaActivity : CommonBindingActivity<ActivityTuyaBinding>() {
             binding.tvTitle.updateText(getString(com.develop.common.R.string.tuya_app_title))
             binding.tvContent.updateText(getString(com.develop.common.R.string.tuya_app_content))
 
-
-            if(TuyaUtils.qrcodeUrl != "" && !TuyaUtils.init){
+            //  TuyaUtils.qrcodeUrl != "" && !TuyaUtils.init 以前图标
+            if(TuyaUtils.qrcodeUrl != "" ){
                 ThreadUtils.runOnMainThread {
                     val bitmap = QRCodeUtils.createQRCodeBitmap(TuyaUtils.qrcodeUrl, 500, 500)
                     binding.tuyaQrcode.setImageBitmap(bitmap)

+ 66 - 23
BusinessStep/src/main/java/com/develop/step/ui/ModesDetailActivity.kt

@@ -74,6 +74,8 @@ import com.kuyuntech.cofarcooking.device.sdk.constant.core.WorkModes
 import com.kuyuntech.cofarcooking.device.sdk.devmode.core.BaseDevMode
 import com.kuyuntech.cofarcooking.device.sdk.devmode.core.Kettle
 import com.kuyuntech.cofarcooking.device.sdk.devmode.core.Knead
+import com.kuyuntech.cofarcooking.device.sdk.devmode.core.SlowCooking010D
+import com.kuyuntech.cofarcooking.device.sdk.devmode.core.SlowCooking033F
 import com.kuyuntech.cofarcooking.device.sdk.eventbus.core.DevInfo
 import com.kuyuntech.cofarcooking.device.sdk.eventbus.event.DevCommonEvent
 import com.kuyuntech.cofarcooking.device.sdk.eventbus.event.DevStatusEvent
@@ -105,7 +107,7 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
     private var minMotorGear = 0
     private var maxWaterGear = 0
     private var minWaterGear = 0
-
+    private var startMotorGer = 0
     private var currTime = 0L
     private var maxTime = 0L
     private var minTime = 0L
@@ -137,7 +139,7 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
     private var sn = getSN()
     private var keep: Boolean = false
     private var mWeightTime: Long = 0  //防止客户重复点击称重
-    private  var isWeightNum  : Float = -50F
+    private var isWeightNum: Float = -50F
     private lateinit var baseMode: BaseDevMode
 
     private val deviceStateDialog by lazy {
@@ -250,8 +252,14 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
         }
 
         //2023.12.11 000A客户需要隐藏电磁阀
-        binding.tvCount.setGone()
-        binding.ivPotCover.setGone()
+        if (sn.startsWith("063")) {
+            binding.tvCount.setVisible()
+            binding.ivPotCover.setVisible()
+        } else {
+            binding.tvCount.setGone()
+            binding.ivPotCover.setGone()
+        }
+
 
 //        if (!getSN().startsWith("000")) {
 //            binding.tvCount.setGone()
@@ -263,6 +271,9 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
         modeName = intent.extras?.getString("mode_name", "") ?: ""
         opMode = intent.extras?.getString("OP_MODE", "HAND") ?: "HAND"
         keep = intent.extras?.getBoolean("keep", false) ?: false
+        if (keep){
+            startMotorGer = intent.extras?.getInt("startMotorGer", 0) ?: 0
+        }
         viewModel.lastModeType = viewModel.modeType
         lastModeType = viewModel.modeType
         modeType = lastModeType
@@ -780,7 +791,7 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
             return
         }
 
-//        Log.d("TAG DevStateEvent", "event:" + event.devInfo.toString())
+        Log.d("TAG DevStateEvent", "event:" + event.devInfo.toString())
         //由于sdk没有判断E7到E16 需要判断运行和暂停过程中,设备发生故障弹出窗口告知故障
         if ((isClickType == DevStatus.RUNNING.toInt() || isClickType == DevStatus.PAUSE.toInt()
                     || isClickType == DevStatus.STOP.toInt()) && viewModel.modeType != ModesType.WIGHT.name
@@ -808,7 +819,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) {
 
 
             var modeName = if (sn.startsWith("011")) {
@@ -870,7 +881,10 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
             mRunningInstId = currDevInfo.runningInstId
             mSettingInstId = currDevInfo.settingInstId
             updateStatusBtn(currDevInfo.status.toByte())
-            if (getSN().startsWith("000")) {
+
+            //之前是000 需要做电磁阀,现在单独判断063
+            //sn.startsWith("000")
+            if (sn.startsWith("063")) {
                 if (!CofarSDK.devInfo().isWeightStatus && currDevInfo.mode.mode != "TURBO") {
                     //电磁阀在非称重/切碎下显示开锁和上锁
                     if (currDevInfo.potCloverEleStatus.toInt() == 0 && potCloverEleStatus != 0) {
@@ -879,7 +893,7 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
                         if (currentBgId == com.develop.common.R.drawable.pot_clover_ele_unlock) {
                             binding.tvCount.setGone()
                         } else {
-                            binding.tvCount.setGone()
+                            binding.tvCount.setVisible()
                             potCloverInterval = Interval(0, 1, TimeUnit.SECONDS, 5).life(this)
                                 .subscribe {
                                     binding.tvCount.updateText(it.toString())
@@ -1246,9 +1260,10 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
                         finish()
                         return
                     }
+
                     runOnMainThread {
                         var workMode = ConfigUtils.getMode(modeType)
-                        val cookStepEvent = CookStepEvent(
+                        var cookStepEvent = CookStepEvent(
                             coverPath = ctx.theme.resources.getIdentifier(
                                 workMode?.icon,
                                 "drawable",
@@ -1262,8 +1277,10 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
                                     "string",
                                     packageName
                                 )
-                            )
+                            ),
+                            startMotorGer = startMotorGer
                         )
+
                         FloatWindowManager.showStepFlowWindow(cookStepEvent)
                         finish()
                     }
@@ -1841,11 +1858,6 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
     ) {
 
 
-//        Log.d(
-//            "TAG updateTimeUI",
-//            "minTime:$minTime   maxTime:$maxTime  remainTime:$remainTime  targetTime:$targetTime  isTimeChange:$isTimeChange   focusUpdate$focusUpdate  type :$type"
-//        )
-
         this.isTimeChange = isTimeChange
         this.maxTime = maxTime.toLong()
         this.minTime = minTime.toLong()
@@ -1854,7 +1866,10 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
             var hours = 0
             var minute = 0
             var sec = 0
-
+            Log.d(
+                "TAG updateTimeUI",
+                "minTime:$minTime   maxTime:$maxTime  dev:${currDevInfo.remainTime.toLong()}    remainTime:$remainTime  targetTime:$targetTime  isTimeChange:$isTimeChange   focusUpdate$focusUpdate  type :$type"
+            )
             /**
              * 由于速度大于7或等于7的时候 ,SDK会回调onDevCommonEvent方法,这个方法focusUpdate传入true,
              * 就会调用下面if方法,故下面clSetTime.setTimeInternal,由于之前的minute  sec 方法计算错误,现特殊处理minute  sec 计算
@@ -1875,6 +1890,7 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
 
 
 
+
             if (!userChanging || focusUpdate) {
                 clCookTime.setConfigValue("--${getTimeStr(targetTime)}--")
                 clSetTime.setTargetTime("--${getTimeStr(targetTime)}--")
@@ -1949,8 +1965,25 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
              * 处理慢炖开5停25逻辑,因为SDK 停的时候 设置挡速为0,客户那边说不能显示0挡速估在这UI处理
              *
              * */
-            if ((sn.startsWith("010")||sn.startsWith("033"))&&(modeType == WorkModes.SLOW_COOKING||modeType == WorkModes.SLOW_COOK) && currentMotorGer==0){
+            if ((sn.startsWith("010") || sn.startsWith("033")) && (modeType == WorkModes.SLOW_COOKING || modeType == WorkModes.SLOW_COOK) && currentMotorGer == 0) {
+                /**
+                 * 后台运行,点击回来,会导致挡速度,因为开5停25 的原因 currentMotorGer 是0
+                 * 客户那边说不能显示0挡速估在这UI处理,估另外处理后台运行,点击回来挡速
+                 * */
+
+                if (keep) {
+
+                    var current: Int = startMotorGer
+                    clCookSpeed.updateChangeValue(current.toString())
+                    speedRingView.setRange(minMotorGear, maxMotorGear)
+                    speedRingText.text = current.toString()
+                    if (!userChanging || focusUpdate) {
+                        speedRingView.updateProgress(current)
+                        speedRingText.text = current.toString()
+                    }
                     return@apply
+                }
+                return@apply
             }
 
             clCookSpeed.updateChangeValue(currentMotorGer.toString())
@@ -1989,7 +2022,7 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
         this.isWaterGearChange = isWaterGearChange
 
         binding.apply {
-            clCookSpeed.updateChangeValue(if (currentMotorGer!=0)currentMotorGer.toString()else this@ModesDetailActivity.currentMotorGer.toString())
+            clCookSpeed.updateChangeValue(if (currentMotorGer != 0) currentMotorGer.toString() else this@ModesDetailActivity.currentMotorGer.toString())
             waterRingView.setRange(minWaterGear, maxWaterGear)
             waterRingView.setCanTouch(isWaterGearChange)
             waterSprayShow.updateGear(currentMotorGer)
@@ -2007,7 +2040,7 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
      */
     @SuppressLint("SetTextI18n")
     private fun updateWeightUI(weight: Float) {
-        if (isWeightNum == weight){
+        if (isWeightNum == weight) {
             return
         }
         binding.tvWeightNum.text = "${weight}g"
@@ -2223,6 +2256,8 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
                 isClickType = 1
                 CofarSDK.cancel()
                 CofarSDK.devInfo().runningRecipeId = null
+                //处理010 033 后台后回来的显示转速问题
+                startMotorGer = if (CofarSDK.devInfo().motorGearBuffer.toInt()!=-1) CofarSDK.devInfo().motorGearBuffer.toInt() else CofarSDK.devInfo().motorGear.toInt()
                 var startConfig = HashMap<String, Any>()
                 startConfig.put("stopTips", showStopTips)
                 CofarSDK.startWithConfig(viewModel.modeType, startConfig)
@@ -2243,14 +2278,13 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
     private fun resumeClick() {
 
 
-
         /**
          * 做这个判断原因是,有可能是扭橙自动程序,start 以后,按返回键程序后台
          * 不在这个页面的后台中,把扭橙锅盖打开sdk 会调用暂停方法 ,然后重新进入到扭橙页面,把锅盖换成汤锅盖
          * 然后在点击resume按钮就会提示  errCode=16 错误提示,但011客户不想这样以errCode=16的提示,估所有都做判断显示换配件
          * 会导致 resetZero=1,errCode=16,估在
          * */
-        if (modeType == WorkModes.CITRUS_JUICER && CofarSDK.devInfo().resetZero.toInt() == 1 &&CofarSDK.devInfo().errCode.toInt() == 16) {
+        if (modeType == WorkModes.CITRUS_JUICER && CofarSDK.devInfo().resetZero.toInt() == 1 && CofarSDK.devInfo().errCode.toInt() == 16) {
             showMsgDialog(resources.getString(com.develop.common.R.string.dev_dice_and_peel_tips))
             return
         }
@@ -2314,6 +2348,9 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
         binding.clSetTime.stopAlphaAnim()
         //确认
         userChanging = false
+
+        //处理010 033 后台后回来的显示转速问题
+        startMotorGer = if (CofarSDK.devInfo().motorGearBuffer.toInt()!=-1) CofarSDK.devInfo().motorGearBuffer.toInt() else CofarSDK.devInfo().motorGear.toInt()
         //配置
         CofarSDK.confirm()
         binding.btnCancel.visibility = View.GONE
@@ -2327,7 +2364,7 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
         confirmType = true //确定是 confirm
         binding.btnResume.visibility = View.INVISIBLE
         userChanging = false
-        Handler().postDelayed({
+       Handler().postDelayed({
             CofarSDK.resume()
         }, 200)
 
@@ -2406,7 +2443,10 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
         initModeData(viewModel.modeType)
         viewModel.changeStep(CookSettingType.TURBO)
         //由于之前没有配置兼容包,直接在公用的翻译添加自动程序名字+后缀_010的翻译,估在这写
-        binding.tvModeName.text = if (sn.startsWith("010")) viewModel.getModeTitle(resources) else viewModel.getModeTitle(resources)
+        binding.tvModeName.text =
+            if (sn.startsWith("010")) viewModel.getModeTitle(resources) else viewModel.getModeTitle(
+                resources
+            )
         binding.ivTurbo.visibility = View.GONE
         visibilityEgg(View.GONE)
         isWidget = false
@@ -2879,12 +2919,15 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
                 5 -> {
                     1
                 }
+
                 7 -> {
                     3
                 }
+
                 10 -> {
                     3
                 }
+
                 else -> {
                     1
                 }

+ 114 - 46
BusinessStep/src/main/java/com/develop/step/ui/cook_step/CookStepActivity.kt

@@ -111,6 +111,8 @@ class CookStepActivity : CookStepBaseActivity() {
     private var currentBgId = R.drawable.pot_clover_ele_unlock //0是开锁图,1上锁图
     private var isModelNum = ""
     private var modeType = ""
+    private var startMotorGer = -1
+    private var keep: Boolean = false
     private val deviceStateDialog by lazy {
         CancelConfirmDialog()
     }
@@ -144,8 +146,12 @@ class CookStepActivity : CookStepBaseActivity() {
         configJson = ConfigUtils.loadCookConfig()
         isModelNum = getModelNum()
 
+        keep = intent.extras?.getBoolean("keep", false) ?: false
+        if (keep) {
+            startMotorGer = intent.extras?.getInt("startMotorGer", 0) ?: 0
+        }
 
-        if (baseSn.startsWith("011")){
+        if (baseSn.startsWith("011")) {
             binding.tvWeightTare.text = resources.getString(com.develop.common.R.string.tare_011)
         }
 
@@ -183,9 +189,15 @@ class CookStepActivity : CookStepBaseActivity() {
 //            binding.tvCount.setGone()
 //            binding.ivPotCover.setGone()
 //        }
+        //2023.12.11 000A客户需要隐藏电磁阀
+        if (baseSn.startsWith("063")) {
+            binding.tvCount.setVisible()
+            binding.ivPotCover.setVisible()
+        } else {
+            binding.tvCount.setGone()
+            binding.ivPotCover.setGone()
+        }
 
-        binding.tvCount.setGone()
-        binding.ivPotCover.setGone()
 
 
         binding.controller.clSetTime.onTimePickerCallback =
@@ -342,6 +354,8 @@ class CookStepActivity : CookStepBaseActivity() {
                 binding.tvTitleStep.text = getText(R.string.recipe_complete)
                 binding.viewChangeCrush.setGone()
                 binding.viewChangeWeight.setGone()
+                binding.ivPotCover.setGone()
+                binding.tvCount.setGone()
                 binding.viewRemark.setGone()
                 if (stepCount == 1) {
                     binding.ivPrevStep.setGone()
@@ -371,6 +385,13 @@ class CookStepActivity : CookStepBaseActivity() {
                     binding.ivCookBg.setGone()
                 }
             } else {
+                //2023.12.11 000A客户需要隐藏电磁阀
+                if (baseSn.startsWith("063")) {
+                    binding.ivPotCover.setVisible()
+                } else {
+                    binding.ivPotCover.setGone()
+                }
+
                 binding.tvStepName.setVisible()
                 binding.tvStepMsg.setGone() //处理 011 步骤
                 binding.tvTitleStep.text = titleName
@@ -441,12 +462,12 @@ class CookStepActivity : CookStepBaseActivity() {
                 } else {
 
 
-                    if (baseSn.startsWith("011")&&it.workMode =="DESCRIPTION"){
+                    if (baseSn.startsWith("011") && it.workMode == "DESCRIPTION") {
                         binding.tvStepName.setVisible()
                         binding.tvStepMsg.setGone()
 //                        binding.tvStepMsg.text = it.source.description
                         binding.tvStepName.text = it.source.description
-                    }else{
+                    } else {
                         binding.tvStepName.text = it.source.description
 
                     }
@@ -501,9 +522,9 @@ class CookStepActivity : CookStepBaseActivity() {
                             step = info[1].toInt(),
                             isMode = false,
                             modeName = this@CookStepActivity.binding.tvTitleStep.text.toString(),
-                            detailJson = cookStepDetail?:"",
-                            sizelJson = portionSizelJson?:""
-
+                            detailJson = cookStepDetail ?: "",
+                            sizelJson = portionSizelJson ?: "",
+                            startMotorGer = startMotorGer
 
                         )
                         FloatWindowManager.showStepFlowWindow(cookStepEvent)
@@ -537,8 +558,8 @@ class CookStepActivity : CookStepBaseActivity() {
                         viewModel.stepIndex,
                         isMode = false,
                         modeName = this@CookStepActivity.binding.tvTitleStep.text.toString(),
-                        detailJson = cookStepDetail?:"",
-                        sizelJson = portionSizelJson?:""
+                        detailJson = cookStepDetail ?: "",
+                        sizelJson = portionSizelJson ?: ""
                     )
                     FloatWindowManager.showStepFlowWindow(cookStepEvent)
                     recordRecipes()
@@ -555,7 +576,6 @@ class CookStepActivity : CookStepBaseActivity() {
         viewModel.recipeLiveData.observe(this) {
 
 
-
             val result = FoodDataProvider.getUserDatabase().userInfoDao()
                 .queryFavoriteRecipes(CURRENT_USER_ID, it.number ?: "")
             if (result.isNotEmpty()) {
@@ -603,7 +623,7 @@ class CookStepActivity : CookStepBaseActivity() {
 
 
                     //由于可能点了称重打开以后,继续下一步,导致这个按钮没有隐藏,故在这初始化做判断
-                    if (binding.viewWeightClose.isVisible){
+                    if (binding.viewWeightClose.isVisible) {
                         binding.viewWeightClose.setGone()
                     }
 
@@ -667,9 +687,14 @@ class CookStepActivity : CookStepBaseActivity() {
             // 当前为手动步骤, 下一个步骤切换会设置为当前烹饪步骤
             pendingCookStep = true
         }
+       if (CofarSDK.devInfo().runningStatus != DevStatus.RUNNING){
+           keep = false
+           startMotorGer = -1
+       }
+
         viewModel.nextStep()
-        binding.tvStepName.scrollTo(0,0)
-        binding.tvStepMsg.scrollTo(0,0)
+        binding.tvStepName.scrollTo(0, 0)
+        binding.tvStepMsg.scrollTo(0, 0)
         initStepData() //初始化步骤参数
         whereIndex = -1
         binding.controller.clSetTime.stopAlphaAnim()
@@ -687,8 +712,12 @@ class CookStepActivity : CookStepBaseActivity() {
             // 当前为手动步骤, 上一个步骤切换会设置为当前烹饪步骤
             pendingCookStep = true
         }
-        binding.tvStepName.scrollTo(0,0)
-        binding.tvStepMsg.scrollTo(0,0)
+        if (CofarSDK.devInfo().runningStatus != DevStatus.RUNNING){
+            keep = false
+            startMotorGer = -1
+        }
+        binding.tvStepName.scrollTo(0, 0)
+        binding.tvStepMsg.scrollTo(0, 0)
         whereIndex = -1
         binding.controller.clSetTime.stopAlphaAnim()
         viewModel.prevStep()
@@ -736,7 +765,6 @@ class CookStepActivity : CookStepBaseActivity() {
             isClickType = 1
 
 
-
             //判断是否是空炸错误,由于汤锅错误SDK 已经做了 ;
             if (ConfigUtils.getBooleanErrCode(CofarSDK.devInfo().errCode.toInt()) && CofarSDK.devInfo().devMode == DevModes.AIR_FRYER) {
                 showErrCodeDialog(CofarSDK.devInfo().errCode.toInt())
@@ -782,10 +810,14 @@ class CookStepActivity : CookStepBaseActivity() {
                     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)
                             configDataAndStart(it.uiData)
                         }
+
+
                         recordRecipes()
                     }
                 }
@@ -797,13 +829,15 @@ class CookStepActivity : CookStepBaseActivity() {
         } else if (tag == BUTTON_TAG_RESUME) {
             CofarSDK.resume()
         } else if (tag == BUTTON_TAG_CONFIRM) {
+            //处理010 033 后台后回来的显示转速问题
+            startMotorGer =
+                if (CofarSDK.devInfo().motorGearBuffer.toInt() != -1) CofarSDK.devInfo().motorGearBuffer.toInt() else CofarSDK.devInfo().motorGear.toInt()
             CofarSDK.confirm()
             binding.controller.btnStart.setGone()
             binding.controller.btnReset.setGone()
         } else if (tag == BUTTON_TAG_STOP) {
             //中途系统出现故障记录
             isClickType = 0
-
             CofarSDK.stop(true)
         } else if (tag == BUTTON_TAG_RESET) {
             val current = viewModel.displayStep() ?: return
@@ -917,24 +951,26 @@ class CookStepActivity : CookStepBaseActivity() {
             }
 
             LogUtils.d("========${devInfo.motorGearBuffer}")
-
-            if (getSN().startsWith("000")) {
+            //之前是000 需要做电磁阀,现在单独判断063
+            //sn.startsWith("000")
+            if (baseSn.startsWith("063")) {
                 if (!CofarSDK.devInfo().isWeightStatus && devInfo.mode.mode != "TURBO") {
                     //电磁阀在非称重/切碎下显示开锁和上锁
                     if (devInfo.potCloverEleStatus.toInt() == 0 && potCloverEleStatus != 0) {
                         potCloverEleStatus = 0
                         potCloverInterval?.cancel()
-                        if (currentBgId == R.drawable.pot_clover_ele_unlock) {
+                        if (currentBgId == com.develop.common.R.drawable.pot_clover_ele_unlock) {
                             binding.tvCount.setGone()
                         } else {
-                            binding.tvCount.setGone()
+                            binding.tvCount.setVisible()
                             potCloverInterval = Interval(0, 1, TimeUnit.SECONDS, 5).life(this)
                                 .subscribe {
                                     binding.tvCount.updateText(it.toString())
                                 }.finish {
                                     binding.tvCount.setGone()
-                                    currentBgId = R.drawable.pot_clover_ele_unlock
-                                    binding.ivPotCover.setBackgroundResource(R.drawable.pot_clover_ele_unlock)
+                                    currentBgId =
+                                        com.develop.common.R.drawable.pot_clover_ele_unlock
+                                    binding.ivPotCover.setBackgroundResource(com.develop.common.R.drawable.pot_clover_ele_unlock)
                                 }
                                 .start()
                         }
@@ -945,15 +981,8 @@ class CookStepActivity : CookStepBaseActivity() {
                             binding.tvCount.setGone()
                         } else {
                             binding.tvCount.setGone()
-                            potCloverInterval = Interval(0, 1, TimeUnit.SECONDS, 5).life(this)
-                                .subscribe {
-                                    binding.tvCount.updateText(it.toString())
-                                }.finish {
-                                    binding.tvCount.setGone()
-                                    currentBgId = com.develop.common.R.drawable.pot_clover_ele_lock
-                                    binding.ivPotCover.setBackgroundResource(com.develop.common.R.drawable.pot_clover_ele_lock)
-                                }
-                                .start()
+                            currentBgId = com.develop.common.R.drawable.pot_clover_ele_lock
+                            binding.ivPotCover.setBackgroundResource(com.develop.common.R.drawable.pot_clover_ele_lock)
                         }
 
                     } else if (devInfo.potCloverEleStatus.toInt() == 2 && potCloverEleStatus != 2) {
@@ -1048,6 +1077,8 @@ class CookStepActivity : CookStepBaseActivity() {
     }
 
     private fun configDataAndStart(uiData: CookStepUiData) {
+
+        startMotorGer = uiData.currentSpeed
         CofarSDK.changeModeWithoutCfg(
             "$recipeNumber:${viewModel.stepIndex}",
             CofarSDK.devMode(viewModel.cookingStep?.workMode)
@@ -1341,10 +1372,14 @@ class CookStepActivity : CookStepBaseActivity() {
 
                                 DevStatus.STOP.toInt() -> {
                                     //判断是否警告或者详情描述,点击旋钮补显示弹窗
-                                    if (viewModel.displayStep()?.isDescription() == true ||viewModel.displayStep()?.isWarning() == true||viewModel.displayStep()?.isFinalStep() == true){
+                                    if (viewModel.displayStep()
+                                            ?.isDescription() == true || viewModel.displayStep()
+                                            ?.isWarning() == true || viewModel.displayStep()
+                                            ?.isFinalStep() == true
+                                    ) {
                                         //下一步
 //                                        clickPrevStep()
-                                    }else{
+                                    } else {
                                         viewModel.stepUiData.doingModify = false
                                         clickFirstButton(BUTTON_TAG_START)
                                     }
@@ -1546,17 +1581,49 @@ class CookStepActivity : CookStepBaseActivity() {
         binding.controller.tvRingTempText.updateText("${FoodSdkUtils.parseTemp(currentTemp.toShort())}°C")                     // 圆环内的数字-当前运行温度
         binding.controller.tvTempValue.updateText("${uiData.currentTemp}°C")                       // 下面的TAB-当前运行温度
 
-        // 速度设置
 
-        val speed = if (uiData.motorGearBuffer != -1) {
-            uiData.motorGearBuffer
+        /**
+         * 慢炖速度兼容 010 033
+         * */
+        if ((baseSn.startsWith("010") || baseSn.startsWith("033")) && viewModel.displayStep()?.workMode == ModesType.SLOW_COOK.name && keep) {
+            if (CofarSDK.devInfo().runningStatus == DevStatus.PAUSE){
+                return
+            }
+              // 速度设置
+            binding.controller.speedRingView.updateProgress(startMotorGer)                               // 圆环设置-当前运行速度
+            binding.controller.tvSpeedText.updateText(startMotorGer.toString())                          // 圆环内的数字-当前运行速度
+            binding.controller.tvSetSpeed.updateText(startMotorGer.toString())                           // 下面的TAB-当前运行速度
+
+
         } else {
-            uiData.currentSpeed
+
+            if (CofarSDK.devInfo().runningStatus == DevStatus.PAUSE){
+                return
+            }
+            // 速度设置
+            val speed =
+                if ((baseSn.startsWith("010") || baseSn.startsWith("033")) && viewModel.displayStep()?.workMode == ModesType.SLOW_COOK.name) {
+                    if (startMotorGer == -1) {
+                        if (uiData.motorGearBuffer != -1) {
+                            uiData.motorGearBuffer
+                        } else {
+                            uiData.currentSpeed
+                        }
+                    } else startMotorGer
+                } else {
+                    if (uiData.motorGearBuffer != -1) {
+                        uiData.motorGearBuffer
+                    } else {
+                        uiData.currentSpeed
+                    }
+                }
+            LogUtils.d("========${uiData.motorGearBuffer}===${uiData.currentSpeed}")
+            binding.controller.speedRingView.updateProgress(speed)                               // 圆环设置-当前运行速度
+            binding.controller.tvSpeedText.updateText(speed.toString())                          // 圆环内的数字-当前运行速度
+            binding.controller.tvSetSpeed.updateText(speed.toString())                           // 下面的TAB-当前运行速度
+
         }
-        LogUtils.d("========${uiData.motorGearBuffer}===${uiData.currentSpeed}")
-        binding.controller.speedRingView.updateProgress(speed)                               // 圆环设置-当前运行速度
-        binding.controller.tvSpeedText.updateText(speed.toString())                          // 圆环内的数字-当前运行速度
-        binding.controller.tvSetSpeed.updateText(speed.toString())                           // 下面的TAB-当前运行速度
+
 
         // 喷水设置
         if (!viewModel.stepUiData.doingModify || focusUpdate) {
@@ -1599,7 +1666,7 @@ class CookStepActivity : CookStepBaseActivity() {
 
 
             //2023年06月22日10:55:55 增加步骤程序自动完成的时候自动跳转下一步
-            if ((CommonEventTypes.CONFIRM_STOP == event.type || CommonEventTypes.AUTO_STOP == event.type)&&!isFromOverWrite) {
+            if ((CommonEventTypes.CONFIRM_STOP == event.type || CommonEventTypes.AUTO_STOP == event.type) && !isFromOverWrite) {
                 clickNextStep();
             }
 
@@ -1750,8 +1817,9 @@ class CookStepActivity : CookStepBaseActivity() {
                             step = info[1].toInt(),
                             isMode = false,
                             modeName = this@CookStepActivity.binding.tvTitleStep.text.toString(),
-                            detailJson = cookStepDetail?:"",
-                            sizelJson = portionSizelJson?:""
+                            detailJson = cookStepDetail ?: "",
+                            sizelJson = portionSizelJson ?: "",
+                            startMotorGer = startMotorGer
 
                         )
                         FloatWindowManager.showStepFlowWindow(cookStepEvent)

+ 25 - 2
app/build.gradle

@@ -18,8 +18,8 @@ ext {
 
     versionCode = Integer.parseInt(new SimpleDateFormat("yyMMddHH").format(new Date()) + 1)
 //    versionCode=230617180
-//    brandCode="011E"
-    brandCode = "010D"
+//    brandCode="010D"
+    brandCode = "063B"
     model = "1039"
 
 }
@@ -469,6 +469,20 @@ android {
             //appCode 1.01 指向bug修复,2.01指向功能变更
             buildConfigField("String", "appCode", "\"1.01\"")
             buildConfigField("String", "time","\"${getCurrentTime()}\"" )
+//            buildConfigField("String", "appCode", "\"2.01\"")
+        }
+
+        brand063BTuya {
+            manifestPlaceholders = [channelName: "brand063BTuya"]
+            dimension "platform"
+            applicationId "com.develop.foodcooking"
+            buildConfigField("String", "UpdatePlatform", "\"normal\"")
+            resValue("string", "app_theme", "@style/SplashThemeNotLogo")
+            buildConfigField("String", "model", "\"1039\"")
+            buildConfigField("String", "brandCode", "\"063B\"")
+            //appCode 1.01 指向bug修复,2.01指向功能变更
+            buildConfigField("String", "appCode", "\"1.01\"")
+            buildConfigField("String", "time","\"${getCurrentTime()}\"" )
 //            buildConfigField("String", "appCode", "\"2.01\"")
         }
     }
@@ -738,6 +752,15 @@ android {
 //            buildConfigField("String", "appCode", "\"1.01\"")
 //            buildConfigField("String", "time","\"${getCurrentTime()}\"" )
 
+//            manifestPlaceholders = [channelName: "brand063B"]
+//            buildConfigField("String", "UpdatePlatform", "\"normal\"")
+//            resValue("string", "app_theme", "@style/SplashThemeNotLogo")
+//            buildConfigField("String", "model", "\"1039\"")
+//            buildConfigField("String", "brandCode", "\"063B\"")
+//            //appCode 1.01 指向bug修复,2.01指向功能变更
+//            buildConfigField("String", "appCode", "\"1.01\"")
+//            buildConfigField("String", "time","\"${getCurrentTime()}\"" )
+
 
         }
     }

+ 437 - 0
app/src/brand063BTuya/res/values-en/strings.xml

@@ -0,0 +1,437 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <string name="not_a_member_yet">Not a %1s yet?</string>
+    <string name="member">member</string>
+    <string name="select_language">Select Language</string>
+    <string name="next">NEXT</string>
+    <string name="english">English</string>
+    <string name="chinese">简体中文</string>
+    <string name="france">Français</string>
+    <string name="japan">日本語</string>
+    <string name="skip"><![CDATA[SKIP >>]]></string>
+    <string name="recipes">RECIPES</string>
+    <string name="mode">MODE</string>
+    <string name="sunday">Sunday</string>
+    <string name="monday">Monday</string>
+    <string name="tuesday">Tuesday</string>
+    <string name="wednesday">Wednesday</string>
+    <string name="thursday">Thursday</string>
+    <string name="friday">Friday</string>
+    <string name="saturday">Saturday</string>
+    <string name="resume">RESUME</string>
+    <string name="privacy_policy">Privacy policy</string>
+    <string name="privacy_policy_content">1.How do we collect and use your personal information
+Nanfang plus client is an online information platform developed and operated by Guangdong Nanfang newspaper mobile media Co.,Ltd.(hereinafter referred to as"we").In theprocess of using the southern plus client service,we will collect the information you actively provide when using the service or arising from using the service in the following ways to provide you with services,optimize our services and ensure the security of your account.</string>
+    <string name="i_agree">I Agree</string>
+    <string name="i_have_read_the_privacy_policy">I have read the privacy policy</string>
+    <string name="second">Second</string>
+    <string name="wifi">WIFI</string>
+    <string name="off_line">OFF-LINE</string>
+    <string name="ok">OK</string>
+    <string name="on_line">ON-LINE</string>
+    <string name="pwd_can_not_be_empty">pwd can not be empty!</string>
+    <string name="skin_for_now">Skin for now</string>
+    <string name="login">Login</string>
+    <string name="online_recipes">Online Recipes</string>
+    <string name="cook_history">Cooking history</string>
+    <string name="favourite_recipes">Favourite recipes</string>
+    <string name="settings">Settings</string>
+    <string name="grid_view">Grid view</string>
+    <string name="list_view">List view</string>
+    <string name="adapted_cooking">ADAPTED COOKING</string>
+    <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="dicing">DICING</string>
+    <string name="potato_peeler">POTARO PEELER</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>
+    <string name="user_account">USER ACCOUNT</string>
+    <string name="storage">STORAGE</string>
+    <string name="reset">RESTORE FACTORY SETTINGS</string>
+    <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>
+    <string name="tuya_sn_content">Please use cobotmix app to scan the QR code</string>
+
+    <string name="current_cooking_dialog_title">Overwrite current cooking process?\nBy overwriting,your current progress will got lost.</string>
+
+
+    <string name="weight">WEIGHT</string>
+    <string name="local_recipes">Local recipes</string>
+    <string name="download">Download</string>
+    <string name="downloading">Downloading</string>
+    <string name="enter_search">Enter search</string>
+    <string name="search">Search</string>
+    <string name="all_name">Alphabetical (A-Z)</string>
+    <string name="most_popular">Most popular</string>
+    <string name="newest">Newest</string>
+    <string name="the_most_commonly_searched">The most commonly searched</string>
+    <string name="notice">Notice</string>
+    <string name="all">ALL</string>
+    <string name="Recipes">Recipes</string>
+    <string name="ingredients">Ingredients</string>
+    <string name="Brightness">Brightness</string>
+    <string name="screen_lock_time">Screen lock time</string>
+    <string name="time_3min">3Min</string>
+    <string name="time_5min">5Min</string>
+    <string name="time_10min">10Min</string>
+    <string name="time_20min">20Min</string>
+    <string name="time_30min">30Min</string>
+    <string name="Sound">Sound</string>
+    <string name="text_to_speech">Text to speech</string>
+    <string name="Language">Language</string>
+    <string name="Continue">CONTINUE</string>
+    <string name="start_cooking">START COOKING</string>
+    <string name="off">OFF</string>
+    <string name="on">ON</string>
+    <string name="update_the_recipes">Update the recipes</string>
+    <string name="apk">APK</string>
+    <string name="mcu">MCU</string>
+    <string name="tp">FW</string>
+    <string name="serial_number">SN</string>
+    <string name="standby_time">MODEL</string>
+    <string name="update">Update</string>
+    <string name="About">About</string>
+    <string name="are_you_sure_to_restore_factory_settings">Are you sure to restore factory settings?</string>
+    <string name="yes">YES</string>
+    <string name="restore_factory_settings">Restore factory settings</string>
+    <string name="connected_successfully">connected successfully</string>
+    <string name="network_wifi_status_connected_no_internet">Connected, but unable to access the Internet</string>
+    <string name="network_wifi_status_saved">Saved</string>
+    <string name="network_wifi_status_idle" />
+    <string name="network_wifi_status_disabled">"Stopped"</string>
+    <string name="network_wifi_status_network_failure">"IP address configuration failure"</string>
+    <string name="network_wifi_status_wifi_failure">"WLAN connection failure"</string>
+    <string name="network_wifi_status_password_failure">"There is a problem with authentication"</string>
+    <string name="network_wifi_status_scanning">Scanning...</string>
+    <string name="network_wifi_status_connecting">Connecting…</string>
+    <string name="network_wifi_status_authenticating">Authentication in progress…</string>
+    <string name="network_wifi_status_obtaining_ip_address">obtaining IP address…</string>
+    <string name="network_wifi_status_connected">Connected</string>
+    <string name="network_wifi_status_suspended">Suspended</string>
+    <string name="network_wifi_status_disconnecting">Disconnecting…</string>
+    <string name="network_wifi_status_disconnected">Disconnected</string>
+    <string name="network_wifi_status_failed">Failed</string>
+    <string name="network_wifi_status_blocked">Blocked</string>
+    <string name="network_wifi_status_verifying_poor_link">Temporarily shut down (bad network condition)</string>
+    <string name="wifi_loading_text">Connecting…</string>
+    <string name="start">START</string>
+    <string name="pause">PAUSE</string>
+    <string name="cancel">CANCEL</string>
+    <string name="confirm">CONFIRM</string>
+    <string name="stop">STOP</string>
+    <string name="turn_right">TURN\nRIGHT</string>
+    <string name="turn_left">TURN\nLEFT</string>
+    <string name="temperature">TEMPERATURE</string>
+    <string name="time">TIME</string>
+    <string name="speed">SPEED</string>
+    <string name="direction">DIRECTION</string>
+    <string name="bad">Bad</string>
+    <string name="imperfect">Imperfect</string>
+    <string name="ordinary">Ordinary</string>
+    <string name="good">Good</string>
+    <string name="perfect">Perfect</string>
+    <string name="are_you_sure_to_delete">Are you sure to delete?</string>
+    <string name="no">NO</string>
+    <string name="easy">easy</string>
+    <string name="medium">medium</string>
+    <string name="hard">hard</string>
+    <string name="grade">GRADE</string>
+
+    <string name="srl_footer_finish">Load Success</string>
+    <string name="srl_footer_loading">Loading…</string>
+
+    <string name="unset_param_tips">Please set the operation parameters</string>
+    <string name="pmpt_confirm">Confirm</string>
+    <string name="pmpt_cancel">Cancel</string>
+    <string name="pmpt_msg">Tips</string>
+    <string name="dev_end_of_run_tips">Finish!</string>
+    <string name="dev_not_orange_parts">Please install the Twisted Orange accessory to start the Twisted Orange program。</string>
+    <string name="dev_remove_orange_parts">The machine is in twisted orange mode, please remove the current accessory.</string>
+    <string name="dev_dice_and_peel_tips">In order to use the program, it is necessary to have and install the appropriate attachment.</string>
+
+    <string name="hight_temp_warning_tips">The current temperature exceeds 60, and the motor speed exceeds the third gear. Are you sure to continue?</string>
+    <string name="hight_temp_turbo_tips">The current temperature exceeds 60, turbo function cannot be operated</string>
+    <string name="update_msg">System updating, please wait~</string>
+    <string name="update_title">Do you want to upgrade to the new version?</string>
+    <string name="finish_download">Downloaded</string>
+    <string name="download_fail">Download failure</string>
+    <string name="start_download">Start to download</string>
+    <string name="weight_overload_tips">Weighing overload</string>
+    <string name="forgot_password">Forgotten password</string>
+    <string name="enter_email_id">Enter Email ID</string>
+    <string name="enter_password">Enter Password</string>
+    <string name="register">Register</string>
+    <string name="launch_detail">Join us today and enjoy the ultimate cooking experience</string>
+    <string name="login_sign_up">Login / Sign up</string>
+    <string name="skip_for_now">Skip for now</string>
+    <string name="reset_password">Reset Password</string>
+    <string name="enter_captcha">Enter Captcha</string>
+    <string name="send_email">Send Email</string>
+    <string name="enter_password_again">Enter Password Again</string>
+    <string name="enter_the_captcha_obtained_from_the_mail">Enter the Captcha obtained from the mail</string>
+    <string name="nickname">Nickname</string>
+    <string name="enter_nickname">Enter Nickname</string>
+    <string name="Gender">Gender</string>
+    <string name="male">Male</string>
+    <string name="age">Age</string>
+    <string name="save">Save</string>
+    <string name="cancellation_of_account">Cancellation of account</string>
+    <string name="sign_up_it_s_free">Sign up, it\'s FREE</string>
+    <string name="pwd_requirement">Composed of letters and numbers,with no less than 8 digits.</string>
+    <string name="please_select_age">Please select age</string>
+    <string name="cancel_lower">Cancel</string>
+    <string name="female">Female</string>
+    <string name="tare">TARE</string>
+
+    <string name="keep_cooking_in_the_background">Keep cooking in the background?</string>
+    <string name="delete_old_recipes">Do you want to delete the old recipes?</string>
+    <string name="reset_button">RESET</string>
+    <string name="finish">Finish!</string>
+    <string name="error">Error</string>
+    <string name="download_failed">Download failed</string>
+    <string name="warning">Warning!</string>
+    <string name="lid_unlock">Lid unlock</string>
+    <string name="share_with_more_people">Share with more people</string>
+    <string name="scan_qr_code_with_camera">Scan QR code with camera</string>
+    <string name="enter_what_you_want_to_say">Enter what you want to say</string>
+    <string name="note_title">NOTE TITLE</string>
+
+    <string name="type_your_notes_here">Type your notes here</string>
+    <string name="make_1_jar">MAKES 1 JAR</string>
+    <string name="make_n_jars">MAKES %1s JARS</string>
+    <string name="per_serving">Per serving</string>
+    <string name="preparation">Preparation:</string>
+    <string name="hours">h</string>
+    <string name="min">min</string>
+
+    <string name="food_hour">hour</string>
+    <string name="food_minutes">minutes</string>
+
+
+    <string name="ready_in">Ready in:</string>
+    <string name="jar">JAR</string>
+    <string name="serving_sizes">Serving sizes</string>
+    <string name="score">Score</string>
+    <string name="share">Share</string>
+    <string name="delete">Delete</string>
+    <string name="recipe_update_tips">A total of {{num}} recipes have been found. Do you want to download them?</string>
+    <string name="no_recipe_update_tips">No new recipe data package \n Currently the latest version</string>
+    <string name="recipe_update_process_tips">({{progress}})Recipe data downloading…</string>
+    <string name="recipe_update_finish">Recipe data update completed</string>
+    <string name="update_recipe_title">Recipe update</string>
+    <string name="restore_confirm_tips">Are you sure to restore to the factory settings?</string>
+    <string name="change_lang_tips">The program is running, please close the program to perform this operation again!</string>
+    <string name="recipe_not_language">The recipe language does not match, please switch languages</string>
+    <string name="exit_weight_align">Exit calibration</string>
+    <string name="weight_aligning">Calibrating..</string>
+    <string name="weight_one_kg_tips">Please put on weight 1 KGS</string>
+    <string name="weight_two_kg_tips">Please put on weight 2 KGS</string>
+    <string name="weight_align_success">Calibrate successfully!</string>
+    <string name="change_lang_tips2">After switch the language, recipe languages will change at the same time and restart. Are you sure to switch the language? </string>
+    <string name="pot_clover_not_clost_tips">The lid is unlocked. Please lock the lid first and start.</string>
+    <string name="screen_saver_title">Do you want to enter the breath screen?</string>
+    <string name="sex">Sex</string>
+    <string name="wight">WEIGHT</string>
+    <string name="running_block_tips">Please stop the running program and start new programs.</string>
+    <string name="unset_target_time">Time has not been set.</string>
+    <string name="empty_notice">Empty Notice</string>
+    <string name="network_error">network error</string>
+    <string name="help">Help</string>
+    <string name="evaluate_successfully">Evaluate successfully</string>
+    <string name="reset_to_default_settings">Reset to default settings</string>
+    <string name="home_auth"><![CDATA[HOME >>]]></string>
+    <string name="rating">rating</string>
+    <string name="loading">Loading</string>
+    <string name="Min20">20Min</string>
+    <string name="enjoy_your_meal">ENJOY YOUR MEAL</string>
+
+    <string name="gan_sao_yi_chan">Attention\n· High temperature\n· No contents in bowl when heating\n· Add ingredients, liquids</string>
+
+    <string name="zhuan_su_fan_kui_yi_chan">Warning\n· Bowl lid not fully engaged\n· Motor overload, allow machine to cool down, Restart with less bowl contents.</string>
+    <string name="dian_zi_cheng_tong_xin_yi_chan">Attention\n· Weight was not measured, scale error\n· Scale faulty </string>
+    <string name="ntc_yi_chan"> Attention: NTC is not working properly, please contact technical service.</string>
+    <string name="mei_fang_guo_yi_chan">Attention\n· Mixing bowl not engaged, reposition bowl</string>
+    <string name="dev_error">Attention: The device is abnormal, please check the device</string>
+    <string name="login_expire_tips">Failed to login, please try again</string>
+    <string name="no_net_error">Please connect to Wifi</string>
+    <string name="no_login">Please enter the fields above to login</string>
+    <string name="enjoy_your_meal_desc">enjoy your meal</string>
+    <string name="wrong_captcha">Wrong captcha</string>
+    <string name="none">None</string>
+    <string name="please_fill_in_nickname">Please fill in nickname</string>
+
+
+    <string name="recipe_complete">RECIPE COMPLETED</string>
+    <string name="engjoy_your_meal">ENJOY YOUR MEAL!</string>
+
+    <string name="press_the_button">Press the button</string>
+    <string name="please_fill_in">Please fill in</string>
+    <string name="Password_is_not_the_same">Password is not the same</string>
+    <string name="enter">ENTER</string>
+    <string name="repeat">REPEAT</string>
+    <string name="automatic_recipes">Automatic\nRecipes</string>
+    <string name="automatic_programmes">Automatic\nProgrammes</string>
+    <string name="manual_cooking">Manual\nCooking</string>
+    <string name="download_new_recipes">Download\nnew recipes</string>
+    <string name="home">HOME</string>
+    <string name="back">BACK</string>
+    <string name="historical_search">Historical search</string>
+
+    <string name="Automatic_recipes">AUTOMATIC RECIPES</string>
+    <string name="Automatic_programmes">AUTOMATIC PROGRAMMES</string>
+    <string name="Manual_cooking">MANUAL COOKING</string>
+    <string name="Download_new_recipes">DOWNLOAD NEW RECIPES</string>
+    <string name="account_or_pwd_error">Incorrect account number or password</string>
+    <string name="login_faild">Incorrect account number or password</string>
+
+    <string name="Automatic_recipes_32">AUTOMATIC RECIPES</string>
+    <string name="Automatic_programmes_32">AUTOMATIC PROGRAMS</string>
+    <string name="Manual_cooking_32">MANUAL\nMODE</string>
+    <string name="Download_new_recipes_32">DOWNLOAD RECIPES</string>
+
+
+
+    <!-- 空炸模式 -->
+    <string name="air_fryer">AIR FRYER</string>
+    <string name="meat">MEAT</string>
+    <string name="fish">FISH</string>
+    <string name="bakc">BAKC</string>
+    <string name="drumsticks">DRUMSTICKS</string>
+    <string name="chicken_wing">CHICKEN WING</string>
+    <string name="vegetable">VEGETABLE</string>
+    <string name="shrimp">SHRIMP</string>
+    <string name="pizza">PIZZA</string>
+    <string name="dehydrate">DEHYDRATE</string>
+    <string name="confirm_change_dev_mode">Confirm change dev mode ?</string>
+    <string name="water_spary">WATER SPARY</string>
+    <string name="error_pot_clover_tips">The current cooking mode is not consistent with the type of pot cover. Do you want to switch to the corresponding cooking mode?</string>
+
+    <string name="egg_msg">Put 500ml of cold water into the main pot and cook up to 5-6 eggs in the steaming basket inside the pot. After cooking, keep it under cold water for about 20 seconds and stop the boiling process.</string>
+    <string name="cook_eggs">COOK EGGS</string>
+    <string name="cook_rice">COOK RICE</string>
+    <string name="mulsify">MULSIFY</string>
+    <string name="puree">PUREE</string>
+    <string name="roast">ROAST</string>
+    <string name="smoothie">SMOOTHIE</string>
+    <string name="sovs_vide">SOVS VIDE</string>
+    <string name="auto_clean">AUTO CLEAN</string>
+    <string name="apk_version_latest">Current version is the latest version.</string>
+    <string name="installing">Installing...</string>
+    <string name="save_success">Save success</string>
+    <string name="reset_password_success">Reset password success!</string>
+    <string name="email_send">Email send</string>
+    <string name="email_not_send">Email not send</string>
+    <string name="send_no_email">Please fill in your  email</string>
+    <string name="the_email_has_been_already_registered">The email has been already registered</string>
+    <string name="please_fill_in_your_email">Please fill in your email</string>
+    <string name="please_fill_in_the_captcha">Please fill in the captcha</string>
+    <string name="please_fill_in_the_password">Please fill in the password</string>
+    <string name="password_uncorrect">Password uncorrect</string>
+    <string name="password">Password</string>
+    <string name="add_to_favourite">Add to favourite</string>
+    <string name="step_pot_error">Please switch the corresponding pot and start again</string>
+    <string name="verify_code_uncorrect">Verify code uncorrect</string>
+    <string name="success">Success</string>
+
+    <string name="e7_errCode">Motor heat dissipation abnormal</string>
+    <string name="e8_errCode">Plug in air fryer attachment</string>
+    <string name="e9_errCode">Air fryer NTC abnormal</string>
+    <string name="e10_errCode">Put air fryer lid into place</string>
+    <string name="e11_errCode">Put air fryer bowl into place</string>
+    <string name="e12_errCode">Air fryer attachment overheat protection. Pls use it after cool down.</string>
+    <string name="e13_errCode">Air fryer water pump abnormal</string>
+    <string name="e14_errCode">Unplug air fryer attachment when in robot cooker mode</string>
+    <string name="e15_errCode">TFT screen dissipation abnormal</string>
+    <string name="e16_errCode">Please put in the correct pot, or end the current program</string>
+
+    <!-- 029兼容翻译 -->
+    <string name="Automatic_recipes_29">Interactive recipes</string>
+    <string name="Manual_cooking_29">Manual cooking</string>
+    <string name="Automatic_programmes_29">Automatic programs</string>
+    <string name="Download_new_recipes_29">Download new recipes</string>
+
+
+    <!-- 011兼容翻译 -->
+    <string name="language_011">LANGUAGE</string>
+    <string name="brightness_011">Screen lock time</string>
+    <string name="reset_011">Resume to default setting</string>
+    <string name="mei_fang_guo_yi_chan_011">Note\n· No mixing bowl detected</string>
+    <string name="lid_unlock_011">Mixing bowl lid not locked properly</string>
+    <string name="notice_011">Notification</string>
+    <string name="empty_notice_011">No notifications</string>
+    <string name="press_the_button_011">Press and hold the button</string>
+    <string name="direction_011">Rotation</string>
+
+
+    <string name="automatic_recipes_011">Recipes</string>
+    <string name="automatic_programmes_011">Automatic\nprograms</string>
+    <string name="manual_cooking_011">Manual\ncooking</string>
+    <string name="download_new_recipes_011">Download</string>
+
+    <string name="adapted_cooking_011">Manual cooking</string>
+    <string name="knead_011">Knead</string>
+    <string name="steam_011">Steam</string>
+    <string name="boil_water_011">Boil</string>
+    <string name="sovs_vide_011">Sous-vide</string>
+    <string name="cook_rice_011">Rice cooking</string>
+    <string name="food_processor_011">Food processor</string>
+    <string name="chop_011">Chop</string>
+    <string name="turbo_011">Turbo</string>
+    <string name="smoothie_011">Smoothie</string>
+    <string name="auto_clean_011">Autowash</string>
+    <string name="wight_011">Scales</string>
+    <string name="dicing_011">Dicing</string>
+    <string name="citrus_juicer_011">Citrus juicer</string>
+    <string name="potato_peeler_011">Potato peeler</string>
+
+
+
+
+    <string name="hours_011">h</string>
+    <string name="min_011">min</string>
+    <string name="sec_011">sec</string>
+
+    <string name="note_title_011">My notes</string>
+    <string name="tare_011">Tare</string>
+    <string name="newest_011">The latest</string>
+    <string name="most_popular_011">Favourites</string>
+
+    <string name="turn_right_011">Right</string>
+    <string name="turn_left_011">Left</string>
+    <string name="preparation_011">Preparation:</string>
+    <string name="ready_in_011">Cooking time:</string>
+
+</resources>

+ 1 - 0
libBase/src/main/java/com/develop/base/ext/GlobaExt.kt

@@ -243,6 +243,7 @@ fun getSN(): String {
 //        return  "062A20030020123010190003"
 //        return "062A20030020123010190004"
 //        return  "063A10390020123010190001"
+//        return  "063B10390020123010190001"
 //        return  "049B10390020123010190001"
 //        return "000A50370020123010190017"
 

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


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

@@ -38,7 +38,7 @@
 
 
 
-    <color name="bg_color">#1A1A1A</color>
+    <color name="bg_color">#FF000000</color>
     <color name="common_title">#ffffff</color>
     <color name="about_app_name">#ffffff</color>
     <color name="about_update_stroke">#ffffff</color>