Browse Source

062代码上传

zhangshenjie 10 months ago
parent
commit
8e0d30fabe
22 changed files with 228 additions and 92 deletions
  1. 17 8
      BusinessCommon/src/main/java/com/develop/common/data_repo/FoodDataProvider.kt
  2. 2 0
      BusinessCommon/src/main/java/com/develop/common/event/CommonEvent.kt
  3. 3 0
      BusinessCommon/src/main/java/com/develop/common/food_sdk/FloatWindowManager.kt
  4. 57 8
      BusinessCommon/src/main/java/com/develop/common/utils/StringUtils.java
  5. 1 1
      BusinessCommon/src/main/res/values-tr/strings.xml
  6. 3 2
      BusinessSetting/src/main/java/com/develop/setting/ui/AboutActivity.kt
  7. 19 6
      BusinessStep/src/main/java/com/develop/step/ui/cook_step/CookStepActivity.kt
  8. 16 0
      BusinessStep/src/main/java/com/develop/step/ui/cook_step/CookStepBaseActivity.kt
  9. 3 0
      BusinessStep/src/main/java/com/develop/step/ui/cook_step/model/CookStepStatus.kt
  10. 7 1
      BusinessStep/src/main/java/com/develop/step/ui/recipes_detail/CookDetailActivity.kt
  11. 1 0
      BusinessStep/src/main/res/layout/activity_cook_detail.xml
  12. 27 6
      BusinessStep/src/main/res/layout/activity_cook_step_base.xml
  13. 1 1
      app/src/main/assets/help/TR/help-white-a.html
  14. 1 1
      app/src/main/assets/help/TR/help-white.html
  15. 1 1
      app/src/main/assets/help/TR/help.html
  16. 3 3
      app/src/main/assets/help/TR/privacy-a.html
  17. 3 3
      app/src/main/assets/help/TR/privacy.html
  18. 3 3
      app/src/main/assets/help/TR/privacy_night-a.html
  19. 44 43
      app/src/main/assets/help/TR/privacy_night.html
  20. 13 2
      app/src/main/java/com/develop/foodcooking/FoodCookingApp.kt
  21. 3 3
      libBase/src/main/java/com/develop/base/ext/GlobaExt.kt
  22. BIN
      libThirdPart/libs/cofar-cooking-device-sdk-0.0.1-SNAPSHOT.jar

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

@@ -48,7 +48,7 @@ object FoodDataProvider {
     private val preparedLock = CountDownLatch(1)
     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")
 
     init {
         if (!RES_DST_PARENT.exists()) {
@@ -118,11 +118,16 @@ object FoodDataProvider {
                             "------机身内存总大小:"+StringUtils.getRomTotalSize()+
                             "------机身可用内存大小:"+StringUtils.getRomAvailableSize()
                     println(strText)
-
-                    Log.e("TAG jieya", "1111:$strText")
-
-//                    StringUtils.unzipFile(targetZipFile.absolutePath, TARGET_DST_PARENT.absolutePath+"/")
-                    ZipUtils.unzipFile(targetZipFile, TARGET_DST_PARENT)
+                    Log.d("TAG jieya", "1111:$strText")
+                    //blankj 复制文件
+//                    FileUtils.copy(OLD_RES_PATH,TARGET_DST_PARENT)
+                    //自己代码复制文件
+//                    StringUtils.copyFile(OLD_RES_PATH,TARGET_DST_PARENT)
+                    //zip4j 解压文件
+                    StringUtils.unZip(targetZipFile.absolutePath, TARGET_DST_PARENT.absolutePath)
+
+                    //blankj 解压文件
+//                    ZipUtils.unzipFile(targetZipFile, TARGET_DST_PARENT)
                     Log.d(
                         "FoodDataProvider", "cost time:${System.currentTimeMillis() - start}"
                     )
@@ -131,8 +136,11 @@ object FoodDataProvider {
                         // 1s后再重试
                         Thread.sleep(1000)
                         FileUtils.delete(RES_DST_PATH)
+                        StringUtils.unZip(targetZipFile.absolutePath, TARGET_DST_PARENT.absolutePath)
 //                        StringUtils.unzipFile(targetZipFile.absolutePath, TARGET_DST_PARENT.absolutePath+"/")
-                        ZipUtils.unzipFile(targetZipFile, TARGET_DST_PARENT)
+//                        ZipUtils.unzipFile(targetZipFile, TARGET_DST_PARENT)
+//                        StringUtils.copyFile(OLD_RES_PATH,TARGET_DST_PARENT)
+//                        FileUtils.copy(OLD_RES_PATH,TARGET_DST_PARENT)
                     }
                     var strText1 = "总运行内存1:"+StringUtils.getTotalMemoryString(BaseApp.application)+
                             "-----可用运行内存1 :"+StringUtils.getAvailMemory(BaseApp.application)+
@@ -142,12 +150,13 @@ object FoodDataProvider {
                             "------机身可用内存大小1:"+StringUtils.getRomAvailableSize()
                     println(strText1)
 
-                    Log.e("TAG jieya", "22222:$strText1")
+                    Log.d("TAG jieya111", "22222:$strText1")
 
 
                     validateDatabaseFile()
                 } catch (ex: Exception) {
                     ex.printStackTrace()
+                    Log.d("TAG jieya123", "22222:"+ex.message.toString())
                     Log.d("FoodDataProvider", "${ex.message.toString()}")
                     isSuccess = false
                 }

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

@@ -18,4 +18,6 @@ data class CookStepEvent(
     var isMode: Boolean = false,
     var modeName: String = "",
     var modeType: String = "",
+    var detailJson: String = "",
+    var sizelJson: String = "",
 ) {}

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

@@ -116,6 +116,9 @@ object FloatWindowManager {
                     } else {
                         globalApp().navigateTo(Screens.Cook.COOK_STEP2) {
                             withString("number", recipeNumber)
+                            withString("cook_step_detail", event.detailJson)
+                            withString("portionSizelJson", event.sizelJson)
+
                             withInt("stepIndex", step)
                         }
                     }

+ 57 - 8
BusinessCommon/src/main/java/com/develop/common/utils/StringUtils.java

@@ -10,12 +10,10 @@ import android.util.Log;
 
 import com.develop.base.app.BaseApp;
 
+
 import net.lingala.zip4j.ZipFile;
 import net.lingala.zip4j.exception.ZipException;
 
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileInputStream;
@@ -23,12 +21,8 @@ import java.io.FileOutputStream;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStream;
+import java.nio.channels.FileChannel;
 import java.security.MessageDigest;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
 
 public class StringUtils {
     //换行处理
@@ -89,6 +83,61 @@ public class StringUtils {
         return sb.toString();
     }
 
+    public static void unZip(String zipPath,String defPath) throws ZipException {
+
+//        File zipFile = new File(zipPath);
+//        ZipFile zip = new ZipFile(zipFile);
+//        zip.extractAll(defPath);
+
+        try {
+            ZipFile zipFile = new ZipFile(zipPath);
+            if (zipFile.isValidZipFile()) {
+                zipFile.extractAll(defPath);
+            } else {
+                // zip文件无效
+                Log.d("TAG jieya111", "zip文件无效");
+            }
+        } catch (ZipException e) {
+            Log.d("TAG jieya111", "zip异常:"+e.getMessage().toString());
+
+            // 处理异常
+            e.printStackTrace();
+        }
+
+    }
+    public  static  void copyFile(File srcDir, File destDir) throws IOException {
+        if (!srcDir.exists()) {
+            throw new IllegalArgumentException("TAG Source directory does not exist.");
+        }
+        if (!destDir.exists()) {
+            destDir.mkdir();
+            if (!destDir.exists()) {
+                throw new IllegalStateException("TAG Destination directory could not be created.");
+            }
+        }
+        for (File file : srcDir.listFiles()) {
+            if (file.isFile()) {
+                Log.d("TAG jieya000", "name:"+file.getName());
+                File destFile = new File(destDir, file.getName());
+                FileChannel inChannel = new FileInputStream(file).getChannel();
+                FileChannel outChannel = new FileOutputStream(destFile).getChannel();
+                try {
+                    inChannel.transferTo(0, inChannel.size(), outChannel);
+                } finally {
+                    if (inChannel != null) {
+                        inChannel.close();
+                    }
+                    if (outChannel != null) {
+                        outChannel.close();
+                    }
+                }
+            } else if (file.isDirectory()) {
+                // This is a sub-directory, call copyDirectory() again
+                copyFile(file, new File(destDir, file.getName()));
+            }
+        }
+    }
+
     /**
      * 获得SD卡总大小
      *

+ 1 - 1
BusinessCommon/src/main/res/values-tr/strings.xml

@@ -222,7 +222,7 @@ Nanfang Plus Client, Guangdong Nanfang Newspaper Mobile Media Co, Ltd (bundan b
     <string name="pot_clover_not_clost_tips">Kapak kilidi açık. Lütfen önce kapağı kilitledikten sonra çalıştırın.</string>
     <string name="screen_saver_title">Ekran koruyucusunu açmak ister misiniz?</string>
     <string name="sex">Cinsiyet</string>
-    <string name="wight">AĞIRLIK</string>
+    <string name="wight">TARTI</string>
     <string name="running_block_tips">Lütfen çalışan programı durdurun ve başka programları başlatın.</string>
     <string name="unset_target_time">Süre ayarlanmadı.</string>
     <string name="recipe_complete">PİŞİRME TAMAMLANDI</string>

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

@@ -22,6 +22,7 @@ import androidx.databinding.ViewDataBinding
 import com.alibaba.android.arouter.facade.annotation.Route
 import com.azhon.appupdate.listener.OnDownloadListener
 import com.blankj.utilcode.util.AppUtils
+import com.blankj.utilcode.util.FileUtils
 import com.blankj.utilcode.util.KeyboardUtils
 import com.blankj.utilcode.util.KeyboardUtils.hideSoftInput
 import com.develop.base.ext.dimenRes
@@ -267,9 +268,9 @@ class AboutActivity : CommonBVMActivity<ActivityAboutBinding, AboutViewModel>()
         binding.ivClose.setOnClickListener {
 //            var file = File(Environment.getExternalStorageDirectory(),"text.txt")
 //
-//            var ms = StringUtils.getFileMD5(file.absolutePath)
+//            var ms = FileUtils.getFileMD5ToString(file.absolutePath)
 //
-//            Log.e("TAG md5", "file:$ms")
+//            Log.d("TAG about", "file:$ms")
             finish()
         }
 

+ 19 - 6
BusinessStep/src/main/java/com/develop/step/ui/cook_step/CookStepActivity.kt

@@ -2,6 +2,7 @@ package com.develop.step.ui.cook_step
 
 import android.annotation.SuppressLint
 import android.os.Bundle
+import android.text.method.ScrollingMovementMethod
 import android.util.Log
 import android.view.KeyEvent
 import android.view.View
@@ -65,6 +66,8 @@ 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
 import com.kuyuntech.cofarcooking.device.sdk.util.core.CofarSDK
+import kotlinx.serialization.encodeToString
+import kotlinx.serialization.json.Json
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import java.io.File
@@ -214,6 +217,7 @@ class CookStepActivity : CookStepBaseActivity() {
             }
         }
 
+        binding.tvWarningMsg.movementMethod = ScrollingMovementMethod.getInstance()
 
         binding.controller.jiahao.setOnClickListener {
             operateByPhysical(true)
@@ -429,6 +433,7 @@ class CookStepActivity : CookStepBaseActivity() {
                     binding.tvStepName.text = ""
                 } else {
                     binding.tvStepName.text = it.source.description
+                    binding.tvWarningMsg.text = it.source.description
                 }
                 if (stepCount == 1) {
                     binding.ivPrevStep.setGone()
@@ -478,7 +483,9 @@ class CookStepActivity : CookStepBaseActivity() {
                             coverPath = photoPath!!,
                             step = info[1].toInt(),
                             isMode = false,
-                            modeName = this@CookStepActivity.binding.tvTitleStep.text.toString()
+                            modeName = this@CookStepActivity.binding.tvTitleStep.text.toString(),
+                            detailJson = cookStepDetail?:"",
+                            sizelJson = portionSizelJson?:""
 
 
                         )
@@ -510,7 +517,9 @@ class CookStepActivity : CookStepBaseActivity() {
                         coverPath as String,
                         viewModel.stepIndex,
                         isMode = false,
-                        modeName = this@CookStepActivity.binding.tvTitleStep.text.toString()
+                        modeName = this@CookStepActivity.binding.tvTitleStep.text.toString(),
+                        detailJson = cookStepDetail?:"",
+                        sizelJson = portionSizelJson?:""
                     )
                     FloatWindowManager.showStepFlowWindow(cookStepEvent)
                     recordRecipes()
@@ -522,6 +531,9 @@ class CookStepActivity : CookStepBaseActivity() {
             }
         }
         viewModel.recipeLiveData.observe(this) {
+
+
+
             val result = FoodDataProvider.getUserDatabase().userInfoDao()
                 .queryFavoriteRecipes(CURRENT_USER_ID, it.number ?: "")
             if (result.isNotEmpty()) {
@@ -1290,9 +1302,9 @@ class CookStepActivity : CookStepBaseActivity() {
 
                                 DevStatus.STOP.toInt() -> {
                                     //判断是否警告或者详情描述,点击旋钮补显示弹窗
-                                    if (viewModel.displayStep()?.isDescription() == true ||viewModel.displayStep()?.isWarning() == true){
+                                    if (viewModel.displayStep()?.isDescription() == true ||viewModel.displayStep()?.isWarning() == true||viewModel.displayStep()?.isFinalStep() == true){
                                         //下一步
-                                        clickPrevStep()
+//                                        clickPrevStep()
                                     }else{
                                         viewModel.stepUiData.doingModify = false
                                         clickFirstButton(BUTTON_TAG_START)
@@ -1698,8 +1710,9 @@ class CookStepActivity : CookStepBaseActivity() {
                             coverPath = photoPath!!,
                             step = info[1].toInt(),
                             isMode = false,
-                            modeName = this@CookStepActivity.binding.tvTitleStep.text.toString()
-
+                            modeName = this@CookStepActivity.binding.tvTitleStep.text.toString(),
+                            detailJson = cookStepDetail?:"",
+                            sizelJson = portionSizelJson?:""
 
                         )
                         FloatWindowManager.showStepFlowWindow(cookStepEvent)

+ 16 - 0
BusinessStep/src/main/java/com/develop/step/ui/cook_step/CookStepBaseActivity.kt

@@ -385,6 +385,8 @@ abstract class CookStepBaseActivity :
         isWidget = true
         binding.ivTurboView.visibility = View.GONE
         binding.tvStepWarning.visibility = View.GONE
+        binding.tvWarningMsg.visibility = View.GONE
+        binding.tvStepName.visibility = View.VISIBLE
     }
 
     fun changeDescription() {
@@ -393,11 +395,16 @@ abstract class CookStepBaseActivity :
         binding.llWeightView.visibility = View.GONE
         binding.ivTurboView.visibility = View.GONE
         binding.tvStepWarning.visibility = View.GONE
+
+        binding.tvWarningMsg.visibility = View.GONE
+        binding.tvStepName.visibility = View.VISIBLE
     }
 
     fun changeWarning() {
         isWidget = false
         binding.tvStepWarning.visibility = View.VISIBLE
+        binding.tvWarningMsg.visibility = View.VISIBLE
+        binding.tvStepName.visibility = View.GONE
         binding.controller.root.visibility = View.GONE
         binding.llWeightView.visibility = View.GONE
         binding.ivTurboView.visibility = View.GONE
@@ -409,9 +416,18 @@ abstract class CookStepBaseActivity :
         binding.controller.tvRingTempText.visibility = View.VISIBLE
         binding.ivTurboView.visibility = View.GONE
         binding.tvStepWarning.visibility = View.GONE
+
+        binding.tvWarningMsg.visibility = View.GONE
+        binding.tvStepName.visibility = View.VISIBLE
+
     }
 
     fun changeTempSettingPanel() {
+
+        binding.tvWarningMsg.visibility = View.GONE
+        binding.tvStepName.visibility = View.VISIBLE
+
+
         binding.controller.jianhao.setVisible()
         binding.controller.jiahao.setVisible()
         binding.tvStepWarning.visibility = View.GONE

+ 3 - 0
BusinessStep/src/main/java/com/develop/step/ui/cook_step/model/CookStepStatus.kt

@@ -26,6 +26,9 @@ class CookStepStatus(
         return  workMode == "WARNING" || workMode == "AF_WARNING"
     }
 
+    fun  isFinalStep() :Boolean{
+        return  workMode =="Final Step"
+    }
     fun isManualStep(): Boolean {
         return  isWeightMode()
 //        return isWeightMode() || isTurboMode()

+ 7 - 1
BusinessStep/src/main/java/com/develop/step/ui/recipes_detail/CookDetailActivity.kt

@@ -492,7 +492,13 @@ class CookDetailActivity : CommonBVMActivity<ActivityCookDetailBinding, CookDeta
 
         binding.tvFoodTime.text = timeDescBuilder.toString()
         detail.recipe.difficultyLevel?.let {
-            binding.tvEasy.text = resources.getString(resources.getIdentifier(detail.recipe.difficultyLevel?:"easy", "string", this.packageName))
+            var  difficultyLevel = if (it.isEmpty()){
+                "easy"
+            }else{
+                it
+            }
+
+            binding.tvEasy.text = resources.getString(resources.getIdentifier(difficultyLevel, "string", this.packageName))
         }
         binding.startLayout.setCommentNumber(detail.recipe.useNum.toString())
         FoodDataProvider.getUserDatabase().runInTransaction {

+ 1 - 0
BusinessStep/src/main/res/layout/activity_cook_detail.xml

@@ -87,6 +87,7 @@
         android:textSize="@dimen/convert_48px"
         android:textStyle="bold"
         android:scrollbars="vertical"
+        android:maxLines="3"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="@+id/iv_top_banner"
         app:layout_constraintTop_toBottomOf="@+id/start_layout"

+ 27 - 6
BusinessStep/src/main/res/layout/activity_cook_step_base.xml

@@ -96,6 +96,7 @@
                 app:layout_constraintBottom_toBottomOf="parent" />
 
             <View
+                android:id="@+id/view2"
                 android:layout_width="match_parent"
                 android:layout_height="0dp"
                 android:background="@drawable/bg_cook_mask"
@@ -126,21 +127,42 @@
                 android:id="@+id/tv_step_warning"
                 android:layout_width="@dimen/convert_240px"
                 android:layout_height="@dimen/convert_240px"
-                android:layout_marginTop="@dimen/convert_140px"
+                android:layout_marginStart="100dp"
                 android:src="@drawable/tv_step_warning"
-                android:layout_marginStart="@dimen/convert_30px"
-                app:layout_constraintBottom_toTopOf="@id/iv_prev_step"
-                app:layout_constraintTop_toTopOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintTop_toTopOf="parent"
                 android:visibility="gone"
                 />
+            <TextView
+                android:id="@+id/tv_warning_msg"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginEnd="@dimen/convert_140px"
+                android:layout_marginStart="@dimen/convert_480px"
+                android:lineSpacingExtra="@dimen/convert_10px"
+                android:scrollbars="vertical"
+                android:maxLines="7"
+                android:text=""
+                android:visibility="gone"
+                android:textColor="#fff"
+                android:gravity="center"
+                android:textSize="@dimen/convert_32px"
+                app:layout_constraintRight_toLeftOf="@+id/tv_step_warning"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_constraintRight_toRightOf="@+id/iv_next_step"
+
+                />
+
+
 
             <TextView
                 app:layout_constraintTop_toTopOf="parent"
                 android:id="@+id/tv_step_name"
                 android:layout_width="@dimen/convert_479px"
                 android:layout_height="0dp"
-                android:layout_marginStart="@dimen/convert_20px"
+                android:layout_marginStart="@dimen/convert_30px"
                 android:layout_marginTop="@dimen/convert_140px"
                 android:layout_marginEnd="@dimen/convert_99px"
                 android:layout_marginBottom="@dimen/convert_10px"
@@ -149,7 +171,6 @@
                 android:text="Step1:Peel 3 onions(180g)and2garlic cloves,halve the onions andput both in the blender jug."
                 android:textColor="#fff"
                 android:textSize="@dimen/convert_32px"
-                app:layout_constraintLeft_toRightOf="@+id/tv_step_warning"
                 app:layout_constraintBottom_toTopOf="@id/iv_prev_step"
 
                 />

+ 1 - 1
app/src/main/assets/help/TR/help-white-a.html

@@ -64,7 +64,7 @@
 </style>
 
 <body>
-<h2>The FAQ's</h2>
+<h2>Sıkça Sorulan Sorular</h2>
 <div class="item">
   <h3>Bıçak ilk kullanım sonrasında eğrildi.</h3>
   <p>Bıçak herhangi bir hasar görmemiştir, bıçağın kullanım kılavuzundaki spesifik şekline bakarak

+ 1 - 1
app/src/main/assets/help/TR/help-white.html

@@ -56,7 +56,7 @@
 </style>
 
 <body>
-<h2>The FAQ's</h2>
+<h2>Sıkça Sorulan Sorular</h2>
 <div class="item">
   <h3>Bıçak ilk kullanım sonrasında eğrildi.</h3>
   <p>Bıçak herhangi bir hasar görmemiştir, bıçağın kullanım kılavuzundaki spesifik şekline bakarak

+ 1 - 1
app/src/main/assets/help/TR/help.html

@@ -73,7 +73,7 @@
 </style>
 
 <body>
-<h2>The FAQ's</h2>
+<h2>Sıkça Sorulan Sorular</h2>
 <div class="item">
     <h3>Bıçak ilk kullanım sonrasında eğrildi.</h3>
     <p>Bıçak herhangi bir hasar görmemiştir, bıçağın kullanım kılavuzundaki spesifik şekline bakarak

+ 3 - 3
app/src/main/assets/help/TR/privacy-a.html

@@ -37,8 +37,6 @@
   <p>Kişisel verilerinize erişim, düzeltme, aktarma ve/veya silme talebinde bulunma hakkına
     sahipsiniz ve bunların işlenmesini kısıtlama, reddetme, otomatik veri işleme prosedürüne
     tabi olmama ve vefat sonrası verilerinizin akıbetini belirleme hakkına sahipsiniz.</p>
-  <p>Ayrıca Fransız Ulusal Bilişim ve Özgürlük Komisyonu (CNIL)'e şikayette bulunma hakkına da
-    sahipsiniz. </p>
 
   <h3>Şifre sıfırlama formunda yer alması gereken bilgileri belirtin: </h3>
   <p>Verileriniz şifrenizi sıfırlamak için işlenir. </p>
@@ -66,7 +64,9 @@
   <p>Kişisel verilerinize erişim, düzeltme, aktarma ve/veya silme talebinde bulunma hakkına
     sahipsiniz ve bunların işlenmesini kısıtlama, reddetme, otomatik veri işleme prosedürüne
     tabi olmama ve vefat sonrası verilerinizin akıbetini belirleme hakkına sahipsiniz.</p>
-
+  <p>Ayrıca Fransız Ulusal Bilişim ve Özgürlük Komisyonu (CNIL)'e şikayette bulunma hakkına da
+    sahipsiniz.
+  </p>
 
 </div>
 

+ 3 - 3
app/src/main/assets/help/TR/privacy.html

@@ -44,8 +44,6 @@
     <p>Kişisel verilerinize erişim, düzeltme, aktarma ve/veya silme talebinde bulunma hakkına
         sahipsiniz ve bunların işlenmesini kısıtlama, reddetme, otomatik veri işleme prosedürüne
         tabi olmama ve vefat sonrası verilerinizin akıbetini belirleme hakkına sahipsiniz.</p>
-    <p>Ayrıca Fransız Ulusal Bilişim ve Özgürlük Komisyonu (CNIL)'e şikayette bulunma hakkına da
-        sahipsiniz. </p>
 
     <h3>Şifre sıfırlama formunda yer alması gereken bilgileri belirtin: </h3>
     <p>Verileriniz şifrenizi sıfırlamak için işlenir. </p>
@@ -74,7 +72,9 @@
         sahipsiniz ve bunların işlenmesini kısıtlama, reddetme, otomatik veri işleme prosedürüne
         tabi olmama ve vefat sonrası verilerinizin akıbetini belirleme hakkına sahipsiniz.</p>
 
-
+    <p>Ayrıca Fransız Ulusal Bilişim ve Özgürlük Komisyonu (CNIL)'e şikayette bulunma hakkına da
+        sahipsiniz.
+    </p>
 </div>
 
 </body>

+ 3 - 3
app/src/main/assets/help/TR/privacy_night-a.html

@@ -37,8 +37,6 @@
   <p>Kişisel verilerinize erişim, düzeltme, aktarma ve/veya silme talebinde bulunma hakkına
     sahipsiniz ve bunların işlenmesini kısıtlama, reddetme, otomatik veri işleme prosedürüne
     tabi olmama ve vefat sonrası verilerinizin akıbetini belirleme hakkına sahipsiniz.</p>
-  <p>Ayrıca Fransız Ulusal Bilişim ve Özgürlük Komisyonu (CNIL)'e şikayette bulunma hakkına da
-    sahipsiniz. </p>
 
   <h3>Şifre sıfırlama formunda yer alması gereken bilgileri belirtin: </h3>
   <p>Verileriniz şifrenizi sıfırlamak için işlenir. </p>
@@ -67,7 +65,9 @@
     sahipsiniz ve bunların işlenmesini kısıtlama, reddetme, otomatik veri işleme prosedürüne
     tabi olmama ve vefat sonrası verilerinizin akıbetini belirleme hakkına sahipsiniz.</p>
 
-
+  <p>Ayrıca Fransız Ulusal Bilişim ve Özgürlük Komisyonu (CNIL)'e şikayette bulunma hakkına da
+    sahipsiniz.
+  </p>
 </div>
 
 </body>

+ 44 - 43
app/src/main/assets/help/TR/privacy_night.html

@@ -2,9 +2,9 @@
 <html lang="en">
 
 <head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0">
-  <title>MENTION INFORMATION</title>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>MENTION INFORMATION</title>
 </head>
 <style>
   body {
@@ -20,54 +20,55 @@
   p {
     font-size: 16px;
   }
+
 </style>
 
 <body>
 
 <div>
 
-  <h3>Hesap oluşturma formunda yer alması gereken bilgileri belirtin: </h3>
-  <p>Verileriniz, e-posta yoluyla haber bültenleri almanız ve uygulamamızda bir hesap oluşturmanız
-    için işlenir. </p>
-  <p>Bu işlemler sizin izninize tabi olup istediğiniz zaman bu izninizi geri çekebilirsiniz, ancak
-    bu durum izninizi geri çekmeden önce yapılan işlemlerin hukuki açıdan meşruluğunu etkilemez.
-    Doldurulması zorunlu alanlardaki bilgileri (yıldız işaretli) doldurmazsanız, hesap
-    oluşturamazsınız. Alt yüklenicilerimiz haricinde, kişisel verileriniz üçüncü taraflara
-    aktarılmayacaktır.</p>
-  <p>Kişisel verilerinize erişim, düzeltme, aktarma ve/veya silme talebinde bulunma hakkına
-    sahipsiniz ve bunların işlenmesini kısıtlama, reddetme, otomatik veri işleme prosedürüne
-    tabi olmama ve vefat sonrası verilerinizin akıbetini belirleme hakkına sahipsiniz.</p>
-  <p>Ayrıca Fransız Ulusal Bilişim ve Özgürlük Komisyonu (CNIL)'e şikayette bulunma hakkına da
-    sahipsiniz. </p>
-
-  <h3>Şifre sıfırlama formunda yer alması gereken bilgileri belirtin: </h3>
-  <p>Verileriniz şifrenizi sıfırlamak için işlenir. </p>
-  <p>Verilerinizin işlenmesi, verilerinizin güvenliğini sağlamaya yönelik yasal yükümlülüğümüz
-    uyarınca gerçekleşmektedir. Doldurulması zorunlu alanlardaki bilgileri (yıldız işaretli)
-    doldurmazsanız, şifrenizi sıfırlayamazsınız. Alt yüklenicilerimiz haricinde, kişisel
-    verileriniz üçüncü taraflara aktarılmayacaktır.</p>
-  <p>Kişisel verilerinize erişim, düzeltme, aktarma ve/veya silme talebinde bulunma hakkına
-    sahipsiniz ve bunların işlenmesini kısıtlama, reddetme, otomatik veri işleme prosedürüne
-    tabi olmama ve vefat sonrası verilerinizin akıbetini belirleme hakkına sahipsiniz.</p>
-  <p>Ayrıca Fransız Ulusal Bilişim ve Özgürlük Komisyonu (CNIL)'e şikayette bulunma hakkına da
-    sahipsiniz.</p>
-
-  <h3>Çevrimiçi İletişim Formunda yer alacak bilgileri belirtiniz: </h3>
-  <p>Verileriniz, yorumlarınızı paylaşmanız için işlenir.</p>
-  <p>Bu işlemler sizin izninize tabi olup istediğiniz zaman bu izninizi geri çekebilirsiniz, ancak
-    bu durum izninizi geri çekmeden önce yapılan işlemlerin hukuki açıdan meşruluğunu etkilemez.
-    Doldurulması zorunlu alanlardaki bilgileri (yıldız işaretli) doldurmazsanız, yorum
-    yapamazsınız. Alt yüklenicilerimiz hariç olmak üzere, hiçbir kişisel veriniz üçüncü
-    taraflara aktarılmayacaktır.
-  </p>
-  <p>Kullanıcıların okuyabileceği herhangi bir yorumda hassas ve kişisel bilgilerden bahsetmemeniz
-    gereğini önemle hatırlatırız.
-  </p>
-  <p>Kişisel verilerinize erişim, düzeltme, aktarma ve/veya silme talebinde bulunma hakkına
-    sahipsiniz ve bunların işlenmesini kısıtlama, reddetme, otomatik veri işleme prosedürüne
-    tabi olmama ve vefat sonrası verilerinizin akıbetini belirleme hakkına sahipsiniz.</p>
+    <h3>Hesap oluşturma formunda yer alması gereken bilgileri belirtin: </h3>
+    <p>Verileriniz, e-posta yoluyla haber bültenleri almanız ve uygulamamızda bir hesap oluşturmanız
+        için işlenir. </p>
+    <p>Bu işlemler sizin izninize tabi olup istediğiniz zaman bu izninizi geri çekebilirsiniz, ancak
+        bu durum izninizi geri çekmeden önce yapılan işlemlerin hukuki açıdan meşruluğunu etkilemez.
+        Doldurulması zorunlu alanlardaki bilgileri (yıldız işaretli) doldurmazsanız, hesap
+        oluşturamazsınız. Alt yüklenicilerimiz haricinde, kişisel verileriniz üçüncü taraflara
+        aktarılmayacaktır.</p>
+    <p>Kişisel verilerinize erişim, düzeltme, aktarma ve/veya silme talebinde bulunma hakkına
+        sahipsiniz ve bunların işlenmesini kısıtlama, reddetme, otomatik veri işleme prosedürüne
+        tabi olmama ve vefat sonrası verilerinizin akıbetini belirleme hakkına sahipsiniz.</p>
 
+    <h3>Şifre sıfırlama formunda yer alması gereken bilgileri belirtin: </h3>
+    <p>Verileriniz şifrenizi sıfırlamak için işlenir. </p>
+    <p>Verilerinizin işlenmesi, verilerinizin güvenliğini sağlamaya yönelik yasal yükümlülüğümüz
+        uyarınca gerçekleşmektedir. Doldurulması zorunlu alanlardaki bilgileri (yıldız işaretli)
+        doldurmazsanız, şifrenizi sıfırlayamazsınız. Alt yüklenicilerimiz haricinde, kişisel
+        verileriniz üçüncü taraflara aktarılmayacaktır.</p>
+    <p>Kişisel verilerinize erişim, düzeltme, aktarma ve/veya silme talebinde bulunma hakkına
+        sahipsiniz ve bunların işlenmesini kısıtlama, reddetme, otomatik veri işleme prosedürüne
+        tabi olmama ve vefat sonrası verilerinizin akıbetini belirleme hakkına sahipsiniz.</p>
 
+    <h3>Çevrimiçi İletişim Formunda yer alacak bilgileri belirtiniz: </h3>
+    <p>Verileriniz, yorumlarınızı paylaşmanız için işlenir.</p>
+    <p>Bu işlemler sizin izninize tabi olup istediğiniz zaman bu izninizi geri çekebilirsiniz, ancak
+        bu durum izninizi geri çekmeden önce yapılan işlemlerin hukuki açıdan meşruluğunu etkilemez.
+        Doldurulması zorunlu alanlardaki bilgileri (yıldız işaretli) doldurmazsanız, yorum
+        yapamazsınız. Alt yüklenicilerimiz hariç olmak üzere, hiçbir kişisel veriniz üçüncü
+        taraflara aktarılmayacaktır.
+    </p>
+    <p>Kullanıcıların okuyabileceği herhangi bir yorumda hassas ve kişisel bilgilerden bahsetmemeniz
+        gereğini önemle hatırlatırız.
+    </p>
+    <p>Kişisel verilerinize erişim, düzeltme, aktarma ve/veya silme talebinde bulunma hakkına
+        sahipsiniz ve bunların işlenmesini kısıtlama, reddetme, otomatik veri işleme prosedürüne
+        tabi olmama ve vefat sonrası verilerinizin akıbetini belirleme hakkına sahipsiniz.</p>
+    <p>Ayrıca Fransız Ulusal Bilişim ve Özgürlük Komisyonu (CNIL)'e şikayette bulunma hakkına da
+        sahipsiniz.
+    </p>
+    <p>Ayrıca Fransız Ulusal Bilişim ve Özgürlük Komisyonu (CNIL)'e şikayette bulunma hakkına da
+        sahipsiniz.
+    </p>
 </div>
 
 </body>

+ 13 - 2
app/src/main/java/com/develop/foodcooking/FoodCookingApp.kt

@@ -144,9 +144,16 @@ class FoodCookingApp : BaseApp() {
         Thread {
             val md5 = getOtaFileMd5()
             val sn = getSN()
+            Log.d("TAG md5","time :"+System.currentTimeMillis())
             //大概50秒才获取到
-            val zipMd5 = StringUtils.getFileMD5("system/media/cofa_cooking.zip")
-
+//            val zipMd2 = StringUtils.getFileMD5("system/media/cofa_cooking.zip")
+            Log.d("TAG md5", "md5 :$md5")
+            var zipMd5 = ""
+            if (md5.isNotEmpty()){
+                zipMd5  = FileUtils.getFileMD5ToString("system/media/cofa_cooking.zip")
+            }
+            Log.d("TAG md5","time2222 :"+System.currentTimeMillis())
+            Log.d("TAG md5", "string :$zipMd5")
             //处理ota食谱更新问题
             if (sn.startsWith("010") && (md5.isEmpty() || md5 != zipMd5)) {
                 /**
@@ -163,6 +170,10 @@ class FoodCookingApp : BaseApp() {
             }
             //010 每一次都把md5的值set进去
             if (sn.startsWith("010")) {
+                //优化启动程序
+                if (zipMd5.isEmpty()){
+                    zipMd5 = FileUtils.getFileMD5ToString("system/media/cofa_cooking.zip")
+                }
                 setOtaFileMd5(zipMd5)
             }
 

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

@@ -207,10 +207,10 @@ fun getSN(): String {
     if (BuildConfig.DEBUG) {
 //        return "045A21030020123010190001"
 //        return "000A30150020123010190001"
-//     return "002A30150020123010190001"
+//     return "000A10390020123010170001"
 //     return "000A10390020123010190001"
 //        return "000A50670020123010190005"
-        return "010D10390020123010190001"
+//        return "010D10390020123010190001"
 //        return "010F10390020123010190001"
 
 //        return "011A10390020123010190001"
@@ -232,7 +232,7 @@ fun getSN(): String {
 //        return "033G20020020123010190001"
 //        return  "014A19050020123010190002"
 //        return "029C21010020123010190001"
-//        return  "062A10390020123010190001"
+        return  "062A10390020123010190001"
 //        return "062A20030020123010190001"
 //        return  "063A10390020123010190001"
 //        return "000A50370020123010190017"

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