Przeglądaj źródła

优化OTA 更新, 时间控件的bug

zhangshenjie 8 miesięcy temu
rodzic
commit
3656f25390

+ 8 - 1
BusinessCommon/src/main/java/com/develop/common/data_repo/FoodDataProvider.kt

@@ -15,6 +15,7 @@ import com.blankj.utilcode.util.ZipUtils
 import com.develop.base.BuildConfig
 import com.develop.base.app.BaseApp
 import com.develop.base.ext.globalApp
+import com.develop.base.ext.setUpdateRecipeTime
 import com.develop.base.util.FileKit
 import com.develop.base.util.GlobalToast
 import com.develop.base.util.ThreadUtils
@@ -54,13 +55,17 @@ object FoodDataProvider {
     private val RES_DST_PATH = File(TARGET_DST_PARENT, "cofa_cooking")
     private val SUCCESS_FLAG = File(TARGET_DST_PARENT, "success.lock")
     private val OLD_RES_PATH = File(TARGET_DST_PARENT, "cofa")
-
+    private var UPDATE_TIME = ""
     init {
         if (!RES_DST_PARENT.exists()) {
             RES_DST_PARENT.mkdirs()
         }
     }
 
+    fun  setUpdateTime(time:String){
+        this.UPDATE_TIME = time
+    }
+
     /**预先准备好菜品资源包数据*/
     fun prepareData(application: Application) {
         var isSuccess = true
@@ -173,6 +178,8 @@ object FoodDataProvider {
                     val dateFormat = SimpleDateFormat("yyyyMMddhhmmss")
                     val formattedDate = dateFormat.format(currentDate)
                     var fw = FileWriter(SUCCESS_FLAG)
+                    //保存本地更新时间,方便到时候OTA更新
+                    setUpdateRecipeTime(UPDATE_TIME)
                     fw.write(formattedDate)
                     fw.flush()
                     fw.close()

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

@@ -45,6 +45,8 @@ class TimePickerView : ConstraintLayout {
     private val animation: Animation = AlphaAnimation(1f, 0.2f)
     private var isCanChange = true
     private var sn = getSN()
+
+    private var isFirstHour = false  // 判断第一个是否是小时
     constructor(context: Context) : super(context) {}
     constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
         initAttrs(context, attrs)
@@ -170,6 +172,8 @@ class TimePickerView : ConstraintLayout {
                 secondUnit = resources.getString(R.string.mode_min)
             }
 
+            isFirstHour = true
+
         } else {
 
             if (sn.startsWith("011")){
@@ -179,7 +183,7 @@ class TimePickerView : ConstraintLayout {
                 firstUnit = resources.getString(R.string.mode_min)
                 secondUnit = resources.getString(R.string.mode_sec)
             }
-
+            isFirstHour = false
 
 
         }
@@ -248,7 +252,7 @@ class TimePickerView : ConstraintLayout {
         }
         binding.let {
             if (changeSetting) {
-                firstTimePos = if (hours > 0) {
+                firstTimePos = if (hours > 0 || minute >= 60) {
                     59 + firstTime
                 } else {
                     firstTime
@@ -294,7 +298,7 @@ class TimePickerView : ConstraintLayout {
         val maxMinutes = (maxTime / 60 % 60)
         val maxHours = (maxTime / 3600)
         val maxSeconds = maxTime % 60
-        val currentSeconds: Int = if (firstUnit === "hour") {
+        val currentSeconds: Int = if (isFirstHour) {
             val indexRe = firstData[firstTimePos]
             val hours = if (indexRe.startsWith("0")) {
                 indexRe.substring(1, 2).toInt()

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

@@ -281,6 +281,19 @@
     <string name="water_spary">MGIEŁKA WODNA</string>
     <string name="error_pot_clover_tips">Bieżący tryb gotowania nie jest zgodny z typem pokrywy garnka. Przełączyć na odpowiedni tryb gotowania?</string>
 
+    <string name="af_diy">DIY</string>
+    <string name="af_air_fryer">AIR FRYER</string>
+    <string name="af_bake">BAKE</string>
+    <string name="af_drumsticks">DRUMSTICKS</string>
+    <string name="af_egg_tart">EGG TART</string>
+    <string name="af_pizza">PIZZA</string>
+    <string name="af_dehydrate">DEHYDRATE</string>
+    <string name="af_reheat">REHEAT</string>
+    <string name="af_chicken_wing">CHICKEN WING</string>
+    <string name="af_steak">STEAK</string>
+    <string name="af_sea_food">SEAFOOD</string>
+    <string name="af_vegetable">VEGGIES</string>
+    <string name="af_mutton_chop">MUTTON CHOP</string>
 
 
     <string name="cook_eggs">GOTOWANIE JAJEK</string>

+ 5 - 3
BusinessStep/src/main/java/com/develop/step/ui/ModesDetailActivity.kt

@@ -1874,14 +1874,16 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
             }
 
 
-            clSetTime.isTimeCanChange(isTimeChange)
-            clSetTime.setTimeRange(minTime, maxTime)
+
 
             if (!userChanging || focusUpdate) {
                 clCookTime.setConfigValue("--${getTimeStr(targetTime)}--")
-                clSetTime.setTimeInternal(hours, minute, sec, true)
                 clSetTime.setTargetTime("--${getTimeStr(targetTime)}--")
+                clSetTime.setTimeInternal(hours, minute, sec, true)
             }
+
+            clSetTime.isTimeCanChange(isTimeChange)
+            clSetTime.setTimeRange(minTime, maxTime)
         }
 
 

+ 18 - 18
app/build.gradle

@@ -18,9 +18,9 @@ ext {
 
     versionCode = Integer.parseInt(new SimpleDateFormat("yyMMddHH").format(new Date()) + 1)
 //    versionCode=230617180
-    brandCode="011E"
-//    brandCode = "010D"
-    model = "5037"
+//    brandCode="011E"
+    brandCode = "010D"
+    model = "1039"
 
 }
 
@@ -710,25 +710,25 @@ android {
 //            buildConfigField("String", "appCode", "\"1.01\"")
 
 
-            manifestPlaceholders = [channelName: "brand011ETuya"]
-            buildConfigField("String", "UpdatePlatform", "\"011\"")
-            resValue("string", "app_theme", "@style/Splash011ATheme")
-            buildConfigField("String", "model", "\"5037\"")
-            buildConfigField("String", "brandCode", "\"011E\"")
-            //appCode 1.01 指向bug修复,2.01指向功能变更
-            buildConfigField("String", "appCode", "\"1.01\"")
-            buildConfigField("String", "time","\"${getCurrentTime()}\"" )
-
-
-//            manifestPlaceholders = [channelName: "brand010D"]
-//            buildConfigField("String", "UpdatePlatform", "\"night\"")
-//            resValue("string", "app_theme", "@style/Splash010DTheme")
-//            buildConfigField("String", "model", "\"1039\"")
-//            buildConfigField("String", "brandCode", "\"010D\"")
+//            manifestPlaceholders = [channelName: "brand011ETuya"]
+//            buildConfigField("String", "UpdatePlatform", "\"011\"")
+//            resValue("string", "app_theme", "@style/Splash011ATheme")
+//            buildConfigField("String", "model", "\"5037\"")
+//            buildConfigField("String", "brandCode", "\"011E\"")
 //            //appCode 1.01 指向bug修复,2.01指向功能变更
 //            buildConfigField("String", "appCode", "\"1.01\"")
 //            buildConfigField("String", "time","\"${getCurrentTime()}\"" )
 
+
+            manifestPlaceholders = [channelName: "brand010D"]
+            buildConfigField("String", "UpdatePlatform", "\"night\"")
+            resValue("string", "app_theme", "@style/Splash010DTheme")
+            buildConfigField("String", "model", "\"1039\"")
+            buildConfigField("String", "brandCode", "\"010D\"")
+            //appCode 1.01 指向bug修复,2.01指向功能变更
+            buildConfigField("String", "appCode", "\"1.01\"")
+            buildConfigField("String", "time","\"${getCurrentTime()}\"" )
+
 //            manifestPlaceholders = [channelName: "brand002DTuya"]
 //            buildConfigField("String", "UpdatePlatform", "\"normal\"")
 //            resValue("string", "app_theme", "@style/Splash002DTheme")

+ 15 - 0
app/src/brand011ETuya/res/values-pl/strings.xml

@@ -284,6 +284,21 @@
     <string name="error_pot_clover_tips">Aktualny tryb gotowania nie współpracuje z założonym dzbankiem robota. Czy zmienić tryb pracy?</string>
 
 
+    <string name="af_diy">Ustawienia własne</string>
+    <string name="af_air_fryer">Frytkownica beztłuszczowa</string>
+    <string name="af_bake">Pieczenia</string>
+    <string name="af_drumsticks">Pałki z kurczaka</string>
+    <string name="af_egg_tart">Tarta jajeczna</string>
+    <string name="af_pizza">Pizza</string>
+    <string name="af_dehydrate">Suszenie</string>
+    <string name="af_reheat">Podgrzewanie</string>
+    <string name="af_chicken_wing">Skrzydełka z kurczaka</string>
+    <string name="af_steak">Steki</string>
+    <string name="af_sea_food">Owoce morza</string>
+    <string name="af_vegetable">Warzywa</string>
+    <string name="af_mutton_chop">Kotlety jagnięce</string>
+
+
     <string name="cook_eggs">GOTOWANIE JAJEK</string>
     <string name="cook_rice">Gotowanie ryżu</string>
     <string name="mulsify">EMULGOWANIE</string>

+ 44 - 32
app/src/main/java/com/develop/foodcooking/FoodCookingApp.kt

@@ -38,6 +38,7 @@ import com.develop.common.data_repo.net.converter.SerializationConverter
 import com.develop.common.data_repo.net.interceptor.FoodRequestInterceptor
 import com.develop.common.food_sdk.GlobalDevEvent
 import com.develop.common.food_sdk.SerialPortUtils
+import com.develop.common.tag.CURRENT_USER_ID
 import com.develop.common.tag.MODEL
 import com.develop.common.utils.StringUtils
 import com.develop.common.utils.TuyaUtils
@@ -158,40 +159,30 @@ class FoodCookingApp : BaseApp() {
         Thread {
             var isUpdateFile = StringUtils.doesUpdateTxtFileExist()
             //之前根据zip包的md5 更新,现在做一个文本获取进行更新, 先判断是否存在,存在再处理,不存在就走之前的方法
+            Log.d("TAG update", "isUpdateFile  文件: $isUpdateFile")
             if (isUpdateFile) {
                 Log.d("TAG update", "isUpdateFile  文件存在 ")
                 var fileUpdate = StringUtils.getUpdateTime()
-                var roomUpdate  =  getUpdateRecipeTime()
+                var roomUpdate = getUpdateRecipeTime()
 
                 Log.d("TAG update", "fileUpdate :   $fileUpdate")
                 Log.d("TAG update", "roomUpdate :   $roomUpdate")
 
+
+                FoodDataProvider.setUpdateTime(fileUpdate)
                 //当本地时间为空,或者file的文件时间比本地时间大的时候,证明食谱包更新了
-                if (roomUpdate=="" || fileUpdate.toLong()>roomUpdate.toLong()){
+                if (roomUpdate == "" || fileUpdate.toLong() > roomUpdate.toLong()) {
                     Log.d("TAG update", "isUpdateFile1111111--------  文件存在 ")
 
-
-                    //需要删掉
-                    FileUtils.delete(
-                        File(
-                            Environment.getExternalStorageDirectory(),
-                            "cofa_cooking"
-                        )
-                    )
-                    FileUtils.delete(
-                        File(
-                            Environment.getExternalStorageDirectory(),
-                            "success.lock"
-                        )
-                    )
-
+                    //删除room数据库
+                    deleteRoomDb()
+                    //删除sd卡的东西
+                    FoodDataProvider.deleteAll()
                     FoodDataProvider.prepareData(this)
-                }else{
+                } else {
                     FoodDataProvider.prepareData(this)
                 }
 
-                setUpdateRecipeTime(fileUpdate)
-
 
 
             } else {
@@ -214,18 +205,11 @@ class FoodCookingApp : BaseApp() {
                      *  如果MD5的值不一样的,就代表食谱包已经重新更新
                      *  需要先删除sd卡目录下的cofa文件,再重新解压
                      * */
-                    FileUtils.delete(
-                        File(
-                            Environment.getExternalStorageDirectory(),
-                            "cofa_cooking"
-                        )
-                    )
-                    FileUtils.delete(
-                        File(
-                            Environment.getExternalStorageDirectory(),
-                            "success.lock"
-                        )
-                    )
+                    deleteRoomDb()
+
+                    //删除sd卡的东西
+                    FoodDataProvider.deleteAll()
+
 
                     FoodDataProvider.prepareData(this)
                 } else {
@@ -275,6 +259,34 @@ class FoodCookingApp : BaseApp() {
 
     }
 
+    fun deleteRoomDb() {
+
+        FoodDataProvider.getUserDatabase().userInfoDao().apply {
+            removeAllOnlineRecipe(CURRENT_USER_ID)
+            removeAllFavouriteRecipe(CURRENT_USER_ID)
+            removeAllHistoryRecipe(CURRENT_USER_ID)
+            removeAllOnUserTag(CURRENT_USER_ID)
+        }
+
+        FoodDataProvider.getUserDatabase().devConfigDao().apply {
+            removeAllDevVersion()
+        }
+
+        Log.d("TAG 删除room", "删除 FoodDataProvider Dao文件")
+
+        val applicationDirectory = cacheDir.parent?.let { File(it) }
+        if (applicationDirectory?.exists() == true) {
+
+            val files = applicationDirectory.listFiles() ?: emptyArray()
+            for (file in files) {
+                //databases目录放着room 的db文件,重新解压需要删除
+                if (file.name.equals("databases")) {
+                    Log.d("TAG 删除room", "删除 databases的room-db文件")
+                    FileUtils.delete(file)
+                }
+            }
+        }
+    }
 
     fun hookWebView() {
         val TAG = "ASDD"

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

@@ -212,7 +212,7 @@ fun getSN(): String {
 //     return "000A10390020123010170001"
 //     return "000A10390020123010190001"
 //        return "000A50670020123010190005"
-//        return "010D10390020123010190001"
+        return "010D10390020123010190001"
 //        return "010F10390020123010190001"
 //        return "011D10390020123010190001"
 //        return "011A10390020123010190001"
@@ -220,7 +220,7 @@ fun getSN(): String {
 //        return "000A50370020123010190004"
 //        return "011A50370020123010190003"
 //        return "011A50370020123010190006"
-        return "011E50370020123010190001"
+//        return "011E50370020123010190001"
 //    return "007D20020020123010190001"
 //        return "036I21060020123010190007"
 //        return "030A10390020123010190004"

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