Przeglądaj źródła

062 011 WiFi处理

zhangshenjie 9 miesięcy temu
rodzic
commit
9b93349505
39 zmienionych plików z 490 dodań i 104 usunięć
  1. 2 2
      BusinessAirFryer/src/main/assets/lang_config_011.json
  2. 2 2
      BusinessCommon/src/main/java/com/develop/common/data_repo/db/DataFactory.kt
  3. 16 2
      BusinessCommon/src/main/java/com/develop/common/widget/FoodContentView.kt
  4. 12 6
      BusinessCommon/src/main/java/com/develop/common/widget/HomeFilterSortSearchView.kt
  5. 1 1
      BusinessCommon/src/main/java/com/develop/common/widget/WifiContentView.kt
  6. BIN
      BusinessCommon/src/main/res/drawable-xxxhdpi/ic_detail_people.png
  7. 4 0
      BusinessCommon/src/main/res/layout/dialog_pot_cover_unlocked.xml
  8. 55 22
      BusinessCommon/src/main/res/layout/food_content_view.xml
  9. 2 0
      BusinessCommon/src/main/res/values-pl/strings.xml
  10. 1 1
      BusinessCommon/src/main/res/values-tr/strings.xml
  11. 1 1
      BusinessCommon/src/main/res/values-uk/strings.xml
  12. 11 2
      BusinessCommon/src/main/res/values/themes.xml
  13. 6 1
      BusinessMain/src/main/java/com/develop/main/ui/RecipesFragment.kt
  14. 6 0
      BusinessSetting/src/main/java/com/develop/setting/ui/AboutActivity.kt
  15. 12 1
      BusinessSetting/src/main/java/com/develop/setting/ui/ScreensaverActivity.kt
  16. 42 23
      BusinessSetting/src/main/java/com/develop/setting/ui/WifiListActivity.kt
  17. 1 1
      BusinessSetting/src/main/res/layout/activity_wifi_list.xml
  18. 14 1
      BusinessStep/src/main/java/com/develop/step/ui/cook_step/CookStepActivity.kt
  19. 1 0
      BusinessStep/src/main/java/com/develop/step/ui/cook_step/CookStepBaseActivity.kt
  20. 14 8
      BusinessStep/src/main/java/com/develop/step/ui/recipes_detail/CookDetailActivity.kt
  21. 12 2
      BusinessStep/src/main/java/com/develop/step/ui/recipes_detail/CookDetailSourceFragment.kt
  22. 1 1
      BusinessStep/src/main/res/layout/activity_cook_detail.xml
  23. 22 0
      BusinessStep/src/main/res/layout/activity_cook_step_base.xml
  24. 8 1
      BusinessStep/src/main/res/layout/fragment_detail_cook_desc.xml
  25. 7 1
      BusinessStep/src/main/res/layout/fragment_detail_cook_source.xml
  26. 2 0
      BusinessStep/src/main/res/layout/item_cook_source.xml
  27. 1 1
      app/src/brand011ATuya/res/values-en/strings.xml
  28. 5 5
      app/src/brand011ATuya/res/values-pl/strings.xml
  29. 2 2
      app/src/brand011ATuya/res/values-uk/strings.xml
  30. 1 1
      app/src/brand011DTuya/res/values-en/strings.xml
  31. 5 5
      app/src/brand011DTuya/res/values-pl/strings.xml
  32. 2 2
      app/src/brand011DTuya/res/values-uk/strings.xml
  33. BIN
      app/src/main/assets/skins/zeroOneOne.skin
  34. 181 0
      app/src/main/java/com/develop/foodcooking/CatchException.java
  35. 11 0
      app/src/main/java/com/develop/foodcooking/FoodCookingApp.kt
  36. 2 2
      libBase/src/main/java/com/develop/base/ext/GlobaExt.kt
  37. 23 5
      libBase/src/main/java/com/develop/base/manager/WifiHelp.kt
  38. 2 2
      skin-zeroOneOne/src/main/res/drawable/dialog_ok_bg.xml
  39. BIN
      skin-zeroOneOne/src/main/res/drawable/ic_turbo_selected.webp

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

@@ -54,7 +54,7 @@
       "value": "EN",
       "icon": "icon_lang_en",
       "showName": "English",
-      "show": true
+      "show": false
     },
     {
       "name": "Greek(希腊语)",
@@ -131,7 +131,7 @@
       "value": "UK",
       "icon": "icon_lang_uk",
       "showName": "Українська",
-      "show": true
+      "show": false
     },
     {
       "name": "Arabic(阿拉伯语)",

+ 2 - 2
BusinessCommon/src/main/java/com/develop/common/data_repo/db/DataFactory.kt

@@ -1032,8 +1032,8 @@ fun getTime(hour: Int, minute: Int): String {
     var hourStr = ""
     var minuteStr = ""
 
-    var baseHour =  if (dataSn.startsWith("011"))BaseApp.application.resources.getString(R.string.hours_011) else BaseApp.application.resources.getString(R.string.food_hour)
-    var baseMin =  if (dataSn.startsWith("011"))BaseApp.application.resources.getString(R.string.min_011) else BaseApp.application.resources.getString(R.string.food_minutes)
+    var baseHour =  if (dataSn.startsWith("011"))" "+BaseApp.application.resources.getString(R.string.hours_011) else BaseApp.application.resources.getString(R.string.food_hour)
+    var baseMin =  if (dataSn.startsWith("011"))" "+BaseApp.application.resources.getString(R.string.min_011) else BaseApp.application.resources.getString(R.string.food_minutes)
 
 
     if (hour != 0) {

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

@@ -241,13 +241,27 @@ class FoodContentView : ConstraintLayout {
 
             starView.apply {
                 if (is033||foodSn.startsWith("011")) {
-                    starView.visibility = View.INVISIBLE
+                    starView.visibility = View.GONE
                 } else {
+                    starView.visibility = View.VISIBLE
                     setCommentNumber(content.useNum.toString())
                     setCommentTextColorGray()
                 }
 
             }
+            if (foodSn.startsWith("011")){
+                binding.easyLayout.visibility = View.VISIBLE
+                content.level.let {
+                    var  difficultyLevel = if (it.isEmpty()){
+                        "easy"
+                    }else{
+                        it
+                    }
+
+                    binding.tvEasy.text = resources.getString(resources.getIdentifier(difficultyLevel, "string",context.packageName))
+                }
+            }
+
             Log.d("------", "---777---")
             tvTimeAndLevel.updateText(content.time)
             if (isNetRecipes) {
@@ -270,7 +284,7 @@ class FoodContentView : ConstraintLayout {
             if (numberList.contains(mFoodContent?.foodId ?:"00000000")){
                 ivContentNew.visibility = View.VISIBLE
             }else{
-                ivContentNew.visibility = View.INVISIBLE
+                ivContentNew.visibility = View.GONE
             }
 
 

+ 12 - 6
BusinessCommon/src/main/java/com/develop/common/widget/HomeFilterSortSearchView.kt

@@ -20,7 +20,7 @@ import com.develop.common.databinding.HomeSortFilterSearchViewBinding
 
 class HomeFilterSortSearchView : RelativeLayout {
     private var binding: HomeSortFilterSearchViewBinding
-
+    private  var sn  = getSN()
     var onFunctionCallback: OnFunctionCallback? = null
 
     constructor(context: Context?) : super(context) {}
@@ -35,7 +35,7 @@ class HomeFilterSortSearchView : RelativeLayout {
     init {
         val root = View.inflate(context, R.layout.home_sort_filter_search_view, this)
         binding = HomeSortFilterSearchViewBinding.bind(root)
-        if (getSN().startsWith("011")){
+        if (sn.startsWith("011")){
             binding.downloadLayout.visibility = View.INVISIBLE
             binding.onlineLayout.visibility = View.INVISIBLE
         }else{
@@ -121,14 +121,20 @@ class HomeFilterSortSearchView : RelativeLayout {
     }
 
     fun onLineState(isOnLineState: Boolean){
-        if (isOnLineState){
+        if (sn.startsWith("011")){
             binding.onlineLayout.setGone()
-            binding.recipesLayout.setVisible()
-        }else{
-            binding.onlineLayout.setVisible()
             binding.recipesLayout.setGone()
+        }else{
+            if (isOnLineState){
+                binding.onlineLayout.setGone()
+                binding.recipesLayout.setVisible()
+            }else{
+                binding.onlineLayout.setVisible()
+                binding.recipesLayout.setGone()
+            }
         }
 
+
     }
 
     fun hideOnlineLayout(isOnLineState: Boolean) {

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

@@ -58,8 +58,8 @@ class WifiContentView : RelativeLayout {
             wifiData?.apply {
                 wifiData?.password = pwd
                 showInputView(false, this)
+                binding.etPwd.setText("")
                 onOkClickListener?.onOkClick(this)
-//                binding.etPwd.setText("")
             }
         }
 

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


+ 4 - 0
BusinessCommon/src/main/res/layout/dialog_pot_cover_unlocked.xml

@@ -45,6 +45,10 @@
                 android:text="@string/lid_unlock"
                 android:textSize="@dimen/convert_24px"
                 android:textColor="#6B6B6B"
+                android:layout_gravity="center"
+                android:gravity="center"
+                android:layout_marginLeft="@dimen/convert_14px"
+                android:layout_marginRight="@dimen/convert_14px"
                 android:includeFontPadding="false"
                 android:layout_marginTop="@dimen/convert_30px"
                 android:layout_centerHorizontal="true"/>

+ 55 - 22
BusinessCommon/src/main/res/layout/food_content_view.xml

@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tool="http://schemas.android.com/tools"
     android:id="@+id/content_layout"
@@ -22,7 +21,7 @@
         android:layout_marginTop="@dimen/convert_13px"
         android:layout_marginEnd="@dimen/convert_15px"
         app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintTop_toTopOf="parent"/>
+        app:layout_constraintTop_toTopOf="parent" />
 
     <ImageView
         android:id="@+id/iv_like"
@@ -58,51 +57,85 @@
         android:ellipsize="marquee"
         android:focusable="true"
         android:focusableInTouchMode="true"
-        android:marqueeRepeatLimit="marquee_forever"
         android:includeFontPadding="false"
+        android:marqueeRepeatLimit="marquee_forever"
         android:singleLine="true"
         android:textColor="@color/food_name"
         android:textSize="@dimen/convert_30px"
-        app:layout_constraintBottom_toTopOf="@+id/tv_time_and_level"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toEndOf="@+id/iv_net"
+        app:layout_constraintTop_toBottomOf="@+id/iv_cover"
         tool:text="Guacamole" />
 
+
     <androidx.appcompat.widget.AppCompatTextView
         android:id="@+id/tv_time_and_level"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginStart="@dimen/convert_22px"
+        android:layout_marginTop="@dimen/convert_6px"
         android:layout_marginEnd="@dimen/convert_10px"
         android:layout_marginBottom="@dimen/convert_8px"
         android:ellipsize="end"
         android:singleLine="true"
         android:textColor="@color/color_A3A3A2"
         android:textSize="@dimen/convert_26px"
-        app:layout_constraintBottom_toTopOf="@+id/star_view"
+        app:layout_constraintTop_toBottomOf="@+id/tv_food_name"
+
         tool:text="5min・Easy" />
 
-    <com.develop.common.widget.StarView
-        android:id="@+id/star_view"
-        android:layout_width="wrap_content"
+    <LinearLayout
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginStart="@dimen/convert_22px"
-        android:layout_marginBottom="@dimen/convert_20px"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintStart_toStartOf="parent" />
+        android:layout_marginTop="@dimen/convert_6px"
+        android:orientation="horizontal"
+        app:layout_constraintTop_toBottomOf="@+id/tv_time_and_level"
 
-    <ImageView
+        >
+
+        <com.develop.common.widget.StarView
+            android:id="@+id/star_view"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="@dimen/convert_22px"
+            android:visibility="gone"
+            />
+
+        <ImageView
             android:id="@+id/iv_content_new"
-        android:layout_width="@dimen/convert_26px"
-        android:layout_height="@dimen/convert_26px"
+            android:layout_width="@dimen/convert_26px"
+            android:layout_height="@dimen/convert_26px"
+            android:layout_marginStart="@dimen/convert_22px"
+            android:src="@drawable/recipe_content_new"
+            android:visibility="gone"
+            />
+
+    <LinearLayout
+        android:id="@+id/easy_layout"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:visibility="gone"
         android:layout_marginStart="@dimen/convert_22px"
-        android:src="@drawable/recipe_content_new"
-        android:visibility="invisible"
-        app:layout_constraintBottom_toBottomOf="parent"
-        android:layout_marginBottom="@dimen/convert_22px"
-        app:layout_constraintLeft_toRightOf="@+id/star_view"
 
-        />
+        >
+        <View
+            android:layout_width="@dimen/convert_40px"
+            android:layout_height="@dimen/convert_40px"
+            android:background="@drawable/ic_detail_easy"
+
+            />
+        <TextView
+            android:id="@+id/tv_easy"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textColor="@color/cook_detail_info"
+            android:textSize="@dimen/convert_26px"
+
+            />
+
+    </LinearLayout>
+    </LinearLayout>
 
 
 </androidx.constraintlayout.widget.ConstraintLayout>

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

@@ -381,6 +381,8 @@
 
     <string name="turn_left_011">W lewo</string>
     <string name="turn_right_011">W prawo</string>
+
+
     <string name="preparation_011">Przygotowanie:</string>
     <string name="ready_in_011">Czas gotowania:</string>
 

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

@@ -97,7 +97,7 @@ Nanfang Plus Client, Guangdong Nanfang Newspaper Mobile Media Co, Ltd (bundan b
     <string name="yes">EVET</string>
     <string name="restore_factory_settings">Fabrika ayarlarına geri dön</string>
     <string name="connected_successfully">Bağlantı başarılı</string>
-    <string name="wifi_loading_text">Connecting…</string>
+    <string name="wifi_loading_text">Bağlanma…</string>
     <string name="network_wifi_status_connected_no_internet">Bağlantı kuruldu, ancak İnternet’e erişilemiyor</string>
     <string name="network_wifi_status_saved">Kaydedildi</string>
     <string name="network_wifi_status_idle" />

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

@@ -342,7 +342,7 @@ Nanfang plus client is an online information platform developed and operated by
     <!-- 011兼容翻译 -->
     <string name="brightness_011">Час блокування екрана</string>
     <string name="reset_011">Відновити заводські налаштування</string>
-    <string name="mei_fang_guo_yi_chan_011">Примітка\n· контейнер не виявлено</string>
+    <string name="mei_fang_guo_yi_chan_011">Примітка: контейнер не виявлено</string>
     <string name="lid_unlock_011">Кришка робота не була закрита належним чином</string>
     <string name="notice_011">Сповіщення</string>
     <string name="empty_notice_011">Без сповіщень</string>

+ 11 - 2
BusinessCommon/src/main/res/values/themes.xml

@@ -88,8 +88,17 @@
 
     <style name="Splash011ATheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
         <!-- 这里的trans自己写一个#00000000即可-->
-<!--        <item name="android:windowBackground">@drawable/splash_011a_logo</item>-->
-        <item name="android:windowBackground">@color/color_fff</item>
+        <item name="android:windowBackground">@drawable/ic_screensaver_011a</item>
+<!--        <item name="android:windowBackground">@color/color_fff</item>-->
+        <item name="windowNoTitle">true</item>
+        <item name="windowActionBar">false</item>
+        <item name="android:windowFullscreen">true</item>
+    </style>
+
+    <style name="Splash011DTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
+        <!-- 这里的trans自己写一个#00000000即可-->
+        <item name="android:windowBackground">@drawable/ic_screensaver_011d</item>
+        <!--        <item name="android:windowBackground">@color/color_fff</item>-->
         <item name="windowNoTitle">true</item>
         <item name="windowActionBar">false</item>
         <item name="android:windowFullscreen">true</item>

+ 6 - 1
BusinessMain/src/main/java/com/develop/main/ui/RecipesFragment.kt

@@ -579,7 +579,12 @@ class RecipesFragment : CommonBVMFragment<FragmentCommeListBinding, HomeViewMode
                 if (viewModel.recipesType == RecipesType.ONLINE) {
                     binding.tvName.updateText(name)
                 } else {
-                    binding.tvName.updateText("$name($size)")
+                    if (viewModel.snModel.startsWith("011")){
+                        binding.tvName.updateText("$name ($size)")
+                    }else{
+                        binding.tvName.updateText("$name($size)")
+
+                    }
                 }
 
             } else {

+ 6 - 0
BusinessSetting/src/main/java/com/develop/setting/ui/AboutActivity.kt

@@ -240,6 +240,12 @@ class AboutActivity : CommonBVMActivity<ActivityAboutBinding, AboutViewModel>()
             if (isBrand036I()) {
                 binding.ivLogo.setBackgroundResource(com.develop.common.R.drawable.ic_logo_036i)
             }else if (sn.startsWith("011")){
+
+                ivLogoParam.apply {
+                    width = dimenRes(com.develop.common.R.dimen.convert_321px)
+                    height = dimenRes(com.develop.common.R.dimen.convert_95px)
+                    marginStart = dimenRes(com.develop.common.R.dimen.convert_135px)
+                }
                 binding.ivLogo.setBackgroundResource(com.develop.common.R.drawable.ic_logo_011)
 //                ivLogoParam.width = dimenRes(com.develop.common.R.dimen.convert_180px)
 //                ivLogoParam.height = dimenRes(com.develop.common.R.dimen.convert_180px)

+ 12 - 1
BusinessSetting/src/main/java/com/develop/setting/ui/ScreensaverActivity.kt

@@ -1,6 +1,7 @@
 package com.develop.setting.ui
 
 import android.os.Bundle
+import android.util.Log
 import android.view.LayoutInflater
 import android.view.View
 import androidx.recyclerview.widget.RecyclerView
@@ -11,6 +12,7 @@ import com.develop.base.ext.isBrand054A
 import com.develop.base.ext.isNightTheme
 import com.develop.base.ext.setGone
 import com.develop.base.mvvm.BaseBindingActivity
+import com.develop.base.util.AppActivityManager
 import com.develop.common.router.Screens
 import com.develop.common.ui.CommonBindingActivity
 import com.develop.setting.R
@@ -52,7 +54,6 @@ class ScreensaverActivity : CommonBindingActivity<ActivityScreensaverBinding>()
         )
         val bannerAdapter = ScreenBannerAdapter(if (sn.startsWith("011A")) dataList011A else if (sn.startsWith("011D")) dataList011D else if (isBrand054A()) dataList054 else if (sn.startsWith("045")) dataList045 else dataList)
         binding.bannerView.adapter = bannerAdapter
-
         binding.circleRecycler.apply {
             linear(RecyclerView.HORIZONTAL)
             setup {
@@ -67,6 +68,16 @@ class ScreensaverActivity : CommonBindingActivity<ActivityScreensaverBinding>()
                 }
             }
         }.models =if (isBrand011A()) dataList011A else dataList
+
+
+
+        //处理wifi进来屏保导致配置配置问题,估在这处理finish
+        AppActivityManager.getInstance().activityList().forEach {
+            if (it is WifiListActivity){
+                it.finish()
+            }
+        }
+
         if (isNightTheme()){
             binding.circleRecycler.setGone()
         }

+ 42 - 23
BusinessSetting/src/main/java/com/develop/setting/ui/WifiListActivity.kt

@@ -70,6 +70,9 @@ class WifiListActivity : CommonBindingActivity<ActivityWifiListBinding>(),
 
 
 
+
+
+
     private val loadingDialog by lazy {
         PlainDialogView(this, com.develop.common.R.layout.dialog_wifi_loading)
     }
@@ -105,6 +108,15 @@ class WifiListActivity : CommonBindingActivity<ActivityWifiListBinding>(),
 
     private fun initView() {
         isFromMainSetting = intent.extras?.getBoolean(WIFI_FROM_MAIN_SETTING) ?: false
+        //
+        AndPermission.with(this).runtime().permission(
+            Permission.ACCESS_FINE_LOCATION,
+            Permission.ACCESS_BACKGROUND_LOCATION,
+            Permission.ACCESS_COARSE_LOCATION
+        ).onGranted {
+            wifiHelp.scan()
+        }.start()
+
 
         if (isBrand036I()) {
             binding.ivBanner.setBackgroundResource(com.develop.common.R.drawable.guide_bg_036i)
@@ -179,6 +191,7 @@ class WifiListActivity : CommonBindingActivity<ActivityWifiListBinding>(),
                             isWifiDialog = false
                             wifiBean = wifiData
                             wifiHelp.setConnectWifiDate(wifiData)
+                            wifiHelp.setIsWifiLoading(true)
 //                            wifiHelp.connect(wifiData, wifiData.password)
                             wifiHelp.connectNew(wifiData, wifiData.password)
                             //倒计时30秒
@@ -198,7 +211,13 @@ class WifiListActivity : CommonBindingActivity<ActivityWifiListBinding>(),
                                 showloadingDialog()
                                 isWifiConnected = false
                                 isWifiDialog = false
+                                wifiBean = clickModel
+                                wifiHelp.setConnectWifiDate(clickModel)
+                                wifiHelp.setIsWifiLoading(true)
                                 wifiHelp.connect(clickModel, true)
+                                //倒计时30秒
+                                countDownTimer()
+
                             } else {
                                 updateSelectionPos(absoluteAdapterPosition)
                             }
@@ -223,6 +242,7 @@ class WifiListActivity : CommonBindingActivity<ActivityWifiListBinding>(),
 
     }
 
+
     private fun initListener() {
         binding.tvSkin.setOnClickListener {
             if (NetworkUtils.isConnected()) {
@@ -264,29 +284,27 @@ class WifiListActivity : CommonBindingActivity<ActivityWifiListBinding>(),
         }
 
         wifiHelp = WifiHelp.Build(this).setErrorAuthenticating {
-            Log.e("TAG WIFI","setErrorAuthenticating---setErrorAuthenticating---setErrorAuthenticating")
-
 //            dismissPlainDialog()
         }.setScanCallback {
-            if (!isWifiDialog){
-                return@setScanCallback
-            }
+//            if (!isWifiDialog){
+//                return@setScanCallback
+//            }
+//
+//            if (SystemClock.elapsedRealtime() - mWifiScanCallTime < 500) {
+//                return@setScanCallback
+//            }
+            Log.e("TAG WIFI","重新刷新 :------------------")
             it?.apply {
                 wifiDataList.clear()
                 wifiDataList.addAll(it)
+                binding.wifiRecycler.models = wifiDataList
+                selectedPosition = -2
 //                //重连机制
 //                countDownTimer()
             }
-            if (SystemClock.elapsedRealtime() - mWifiScanCallTime < 500) {
-                return@setScanCallback
-            }
 
-            Log.e("TAG WIFI","重新刷新 :------------------")
 //            binding.swipeRefreshLayout.isRefreshing = false
-            binding.wifiRecycler.models = wifiDataList
-            selectedPosition = -2
-
-            mWifiScanCallTime = SystemClock.elapsedRealtime()
+//            mWifiScanCallTime = SystemClock.elapsedRealtime()
             dismissPlainDialog()
         }.setWifiStateChangedListener {
             dismissPlainDialog()
@@ -298,7 +316,7 @@ class WifiListActivity : CommonBindingActivity<ActivityWifiListBinding>(),
             //AUTHENTICATING
             if (it == NetworkInfo.DetailedState.CONNECTED) {
                 /**
-                 * 当前如果有save 保存的wifi ,在输入多个错误的wifi,会导致连接上的wifi FAILED 掉
+                 * 当前如果有save 保存的wifi ,在输入多个错误的wifi,会导致连接上的wifi 需要FAILED 掉
                  * 估在这做处理,判断点击ok连接的wifi 如果没有连接上,需要remove掉,其他的话就保存
                  * 由于CONNECTED 回调会走几次,估多一个isWifiConnected开关来避免重复
                  * */
@@ -316,10 +334,11 @@ class WifiListActivity : CommonBindingActivity<ActivityWifiListBinding>(),
                 timer?.let { timer->
                     timer.cancel()
                 }
-
+                isWifiDialog = true
                 var time : Long = if (isWifiConnected) 2200 else 1500
                 Handler().postDelayed({
-                    isWifiDialog = true
+                    wifiHelp.setIsWifiLoading(false)
+                    wifiHelp.refreshWifiData()
                     dismissloadingDialog()
                 }, time)
             }
@@ -380,13 +399,12 @@ class WifiListActivity : CommonBindingActivity<ActivityWifiListBinding>(),
 
     override fun onResume() {
         super.onResume()
-        AndPermission.with(this).runtime().permission(
-            Permission.ACCESS_FINE_LOCATION,
-            Permission.ACCESS_BACKGROUND_LOCATION,
-            Permission.ACCESS_COARSE_LOCATION
-        ).onGranted {
-            wifiHelp.scan()
-        }.start()
+
+//        //屏保页面回到来,重新刷新wifi
+//        wifiHelp.let {
+//            wifiHelp.refreshWifiData()
+//        }
+
     }
 
     companion object {
@@ -424,6 +442,7 @@ class WifiListActivity : CommonBindingActivity<ActivityWifiListBinding>(),
 //                    num = 30
                 } else {
                     num--
+
                 }
 
             }

+ 1 - 1
BusinessSetting/src/main/res/layout/activity_wifi_list.xml

@@ -6,6 +6,7 @@
     android:layout_height="match_parent">
 
 
+
     <ImageView
         android:id="@+id/iv_banner"
         android:layout_width="@dimen/convert_480px"
@@ -76,5 +77,4 @@
 
 
 
-
 </RelativeLayout>

+ 14 - 1
BusinessStep/src/main/java/com/develop/step/ui/cook_step/CookStepActivity.kt

@@ -337,6 +337,7 @@ class CookStepActivity : CookStepBaseActivity() {
                 cookProgressDrawable.setStepState(stepIndex, stepCount)
                 binding.tvStepName.text = getText(R.string.engjoy_your_meal)
                 binding.tvStepName.setGone()
+                binding.tvStepMsg.setGone()
                 binding.tvTitleStep.text = getText(R.string.recipe_complete)
                 binding.viewChangeCrush.setGone()
                 binding.viewChangeWeight.setGone()
@@ -370,6 +371,7 @@ class CookStepActivity : CookStepBaseActivity() {
                 }
             } else {
                 binding.tvStepName.setVisible()
+                binding.tvStepMsg.setGone() //处理 011 步骤
                 binding.tvTitleStep.text = titleName
                 binding.viewChangeCrush.setVisible()
                 binding.viewChangeWeight.setVisible()
@@ -436,7 +438,16 @@ class CookStepActivity : CookStepBaseActivity() {
 //                        "${temperature}°C/${minute}m${second}s/V${rotateSpeed}/${if (rotateDirection == MotorDirections.FORWARD.toString()) "R" else "L"}";
                     binding.tvStepName.text = ""
                 } else {
-                    binding.tvStepName.text = it.source.description
+
+
+                    if (baseSn.startsWith("011")&&it.workMode =="DESCRIPTION"){
+                        binding.tvStepName.setGone()
+                        binding.tvStepMsg.setVisible()
+                        binding.tvStepMsg.text = it.source.description
+                    }else{
+                        binding.tvStepName.text = it.source.description
+
+                    }
                     binding.tvWarningMsg.text = it.source.description
                 }
                 if (stepCount == 1) {
@@ -644,6 +655,7 @@ class CookStepActivity : CookStepBaseActivity() {
         }
         viewModel.nextStep()
         binding.tvStepName.scrollTo(0,0)
+        binding.tvStepMsg.scrollTo(0,0)
         initStepData() //初始化步骤参数
         whereIndex = -1
         binding.controller.clSetTime.stopAlphaAnim()
@@ -662,6 +674,7 @@ class CookStepActivity : CookStepBaseActivity() {
             pendingCookStep = true
         }
         binding.tvStepName.scrollTo(0,0)
+        binding.tvStepMsg.scrollTo(0,0)
         whereIndex = -1
         binding.controller.clSetTime.stopAlphaAnim()
         viewModel.prevStep()

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

@@ -149,6 +149,7 @@ abstract class CookStepBaseActivity :
             viewIconSpeed.background_drawable = R.drawable.cook_speed_selector
         }
         binding.tvStepName.movementMethod = ScrollingMovementMethod.getInstance()
+        binding.tvStepMsg.movementMethod = ScrollingMovementMethod.getInstance()
         binding.viewProgress.background = cookProgressDrawable
 //        binding.tvTitleStep.setOnClickListener {
 //            if (!isNightTheme()){

+ 14 - 8
BusinessStep/src/main/java/com/develop/step/ui/recipes_detail/CookDetailActivity.kt

@@ -173,10 +173,15 @@ class CookDetailActivity : CommonBVMActivity<ActivityCookDetailBinding, CookDeta
             binding.tvEasy.visibility = View.VISIBLE
         }
         if (sn.startsWith("017A") || sn.startsWith("062A")||sn.startsWith("029")) {
+            if (sn.startsWith("029")){
+                binding.viewIcon3.visibility = View.VISIBLE
+            }else{
+                binding.viewIcon3.visibility = View.INVISIBLE
+            }
             binding.tvJarCount.visibility = View.VISIBLE
-            binding.viewIcon3.visibility = View.VISIBLE
         } else {
             binding.tvJarCount.visibility = View.INVISIBLE
+            binding.viewIcon3.visibility = View.INVISIBLE
         }
         //如果是黑色或者062的时候
         if (isNightTheme() || isBrand062()) {
@@ -508,17 +513,18 @@ class CookDetailActivity : CommonBVMActivity<ActivityCookDetailBinding, CookDeta
         binding.ivTopBanner.load(bannerImg)
         binding.tvFoodName.text = detail.recipe.name
         binding.tvFoodName.movementMethod = ScrollingMovementMethod.getInstance()
+        binding.tvFoodName.isScrollbarFadingEnabled = false
         val timeDescBuilder = StringBuilder()
-        timeDescBuilder.append(if (sn.startsWith("011")) getString(com.develop.common.R.string.preparation_011)else getString(com.develop.common.R.string.preparation))
+        timeDescBuilder.append(if (sn.startsWith("011")) " "+getString(com.develop.common.R.string.preparation_011)else getString(com.develop.common.R.string.preparation))
         timeDescBuilder.append(" ")
         if (detail.recipe.prepareHours.isPositive()) {
             timeDescBuilder.append(detail.recipe.prepareHours)
-            timeDescBuilder.append(if (sn.startsWith("011"))getString(com.develop.common.R.string.hours_011) else getString(com.develop.common.R.string.hours))
+            timeDescBuilder.append(if (sn.startsWith("011"))" "+getString(com.develop.common.R.string.hours_011) else getString(com.develop.common.R.string.hours))
             timeDescBuilder.append(" ")
         }
         if (detail.recipe.prepareMinutes.isPositive()) {
             timeDescBuilder.append(detail.recipe.prepareMinutes)
-            timeDescBuilder.append(if (sn.startsWith("011")) getString(com.develop.common.R.string.min_011) else getString(com.develop.common.R.string.min))
+            timeDescBuilder.append(if (sn.startsWith("011")) " "+getString(com.develop.common.R.string.min_011) else getString(com.develop.common.R.string.min))
 
         }
         timeDescBuilder.append("\n")
@@ -526,12 +532,12 @@ class CookDetailActivity : CommonBVMActivity<ActivityCookDetailBinding, CookDeta
         timeDescBuilder.append(" ")
         if (detail.recipe.makeHours.isPositive()) {
             timeDescBuilder.append(detail.recipe.makeHours)
-            timeDescBuilder.append(if (sn.startsWith("011"))getString(com.develop.common.R.string.hours_011) else getString(com.develop.common.R.string.hours))
+            timeDescBuilder.append(if (sn.startsWith("011"))" "+getString(com.develop.common.R.string.hours_011) else getString(com.develop.common.R.string.hours))
             timeDescBuilder.append(" ")
         }
         if (detail.recipe.makeMinutes.isPositive()) {
             timeDescBuilder.append(detail.recipe.makeMinutes)
-            timeDescBuilder.append(if (sn.startsWith("011")) getString(com.develop.common.R.string.min_011) else getString(com.develop.common.R.string.min))
+            timeDescBuilder.append(if (sn.startsWith("011")) " "+getString(com.develop.common.R.string.min_011) else getString(com.develop.common.R.string.min))
         }
         if (sn.startsWith("033")){
             timeDescBuilder.append("\n")
@@ -539,12 +545,12 @@ class CookDetailActivity : CommonBVMActivity<ActivityCookDetailBinding, CookDeta
             timeDescBuilder.append(" ")
             if (detail.recipe.restHours.isPositive()) {
                 timeDescBuilder.append(detail.recipe.restHours)
-                timeDescBuilder.append(if (sn.startsWith("011"))getString(com.develop.common.R.string.hours_011) else getString(com.develop.common.R.string.hours))
+                timeDescBuilder.append(if (sn.startsWith("011"))" "+getString(com.develop.common.R.string.hours_011) else getString(com.develop.common.R.string.hours))
                 timeDescBuilder.append(" ")
             }
             if (detail.recipe.restMinutes.isPositive()) {
                 timeDescBuilder.append(detail.recipe.restMinutes)
-                timeDescBuilder.append(if (sn.startsWith("011")) getString(com.develop.common.R.string.min_011) else getString(com.develop.common.R.string.min))
+                timeDescBuilder.append(if (sn.startsWith("011")) " "+getString(com.develop.common.R.string.min_011) else getString(com.develop.common.R.string.min))
             }
 
 

+ 12 - 2
BusinessStep/src/main/java/com/develop/step/ui/recipes_detail/CookDetailSourceFragment.kt

@@ -20,6 +20,7 @@ import java.math.BigDecimal
 
 class CookDetailSourceFragment :
     CommonBVMFragment<FragmentDetailCookSourceBinding, CookDetailViewModel>() {
+    private var sn = getSN()
     override fun createViewModel(): CookDetailViewModel {
         return getViewModelOfActivity(CookDetailViewModel::class.java)
     }
@@ -33,9 +34,8 @@ class CookDetailSourceFragment :
 
     override fun onPostCreateView() {
         super.onPostCreateView()
-        if (getSN().startsWith("033")){
+        if (sn.startsWith("033")){
             binding.sourceScroll.visibility = View.VISIBLE
-
             viewModel.getRecipeLiveData().observe(viewLifecycleOwner) {
                 var  foodDescription = it.recipe.foodDescription
                 if (foodDescription.isNullOrEmpty()){
@@ -55,6 +55,16 @@ class CookDetailSourceFragment :
         }else{
             binding.rvList.visibility = View.VISIBLE
             binding.rvList.apply {
+                /**
+                 * recycler.setScrollbarFadingEnabled(false);
+                 * recycler.setScrollBarFadeDuration(0);
+                 *
+                 * */
+//                if (sn.startsWith("011")){
+//                    isScrollbarFadingEnabled = false
+//                    scrollBarFadeDuration = 0
+//
+//                }
                 linear()
                 setup {
                     addType<CookSourceItem>(R.layout.item_cook_source)

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

@@ -88,9 +88,9 @@
         android:textStyle="bold"
         android:scrollbars="vertical"
         android:maxLines="3"
+        android:fadeScrollbars="false"
         android:scrollbarSize="@dimen/convert_8px"
         android:scrollbarThumbVertical="@color/color_CCAAAAAA"
-
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="@+id/iv_top_banner"
         app:layout_constraintTop_toBottomOf="@+id/start_layout"

+ 22 - 0
BusinessStep/src/main/res/layout/activity_cook_step_base.xml

@@ -174,6 +174,28 @@
                 app:layout_constraintBottom_toTopOf="@id/iv_prev_step"
 
                 />
+            <TextView
+                android:id="@+id/tv_step_msg"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginBottom="@dimen/convert_10px"
+                android:lineSpacingExtra="@dimen/convert_10px"
+                android:scrollbars="vertical"
+                android:visibility="gone"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_constraintBottom_toBottomOf="parent"
+                android:textColor="#fff"
+                android:text="Step1:Peel 3 onions(180g)and2garlic cloves,halve the onions andput both in the blender jug."
+                android:maxLines="8"
+                android:textSize="@dimen/convert_32px"
+                android:layout_marginLeft="@dimen/convert_250px"
+                android:layout_marginRight="@dimen/convert_250px"
+
+
+                />
+
 
 
             <ImageView

+ 8 - 1
BusinessStep/src/main/res/layout/fragment_detail_cook_desc.xml

@@ -5,7 +5,13 @@
     android:layout_height="match_parent"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:paddingHorizontal="@dimen/convert_50px"
-    android:paddingTop="@dimen/convert_40px">
+    android:paddingTop="@dimen/convert_40px"
+    android:fadeScrollbars="false"
+    android:scrollbars="vertical"
+    android:scrollbarSize="@dimen/convert_8px"
+    android:scrollbarThumbVertical="@color/color_CCAAAAAA"
+
+    >
 
     <TextView
         android:id="@+id/tv_step_detail"
@@ -13,6 +19,7 @@
         android:layout_height="wrap_content"
         android:text="MAKES 2 JARS (300 ML EACH)"
         android:textSize="@dimen/convert_28px"
+        android:layout_marginRight="@dimen/convert_26px"
         android:textColor="@color/step_detail"
         android:paddingBottom="@dimen/convert_5px"
         android:lineSpacingExtra="@dimen/convert_30px"

+ 7 - 1
BusinessStep/src/main/res/layout/fragment_detail_cook_source.xml

@@ -4,7 +4,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:paddingHorizontal="@dimen/convert_40px">
+   >
 
     <ScrollView
         android:visibility="gone"
@@ -12,6 +12,8 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:paddingHorizontal="@dimen/convert_50px"
+        android:scrollbarSize="@dimen/convert_8px"
+        android:scrollbarThumbVertical="@color/color_CCAAAAAA"
         android:paddingTop="@dimen/convert_40px">
 
         <TextView
@@ -47,6 +49,10 @@
         android:layout_width="match_parent"
         android:layout_height="0dp"
         android:visibility="gone"
+        android:fadeScrollbars="false"
+        android:scrollbars="vertical"
+        android:scrollbarSize="@dimen/convert_8px"
+        android:scrollbarThumbVertical="@color/color_CCAAAAAA"
         android:layout_marginTop="@dimen/convert_5px"
         app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
         app:layout_constraintTop_toBottomOf="@+id/tv_step_title"

+ 2 - 0
BusinessStep/src/main/res/layout/item_cook_source.xml

@@ -4,6 +4,8 @@
     android:layout_height="@dimen/convert_83px"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:paddingStart="@dimen/convert_7px"
+    android:layout_marginRight="@dimen/convert_26px"
+    android:layout_marginLeft="@dimen/convert_26px"
     xmlns:tools="http://schemas.android.com/tools">
 
     <com.develop.common.widget.MarqueeTextView

+ 1 - 1
app/src/brand011ATuya/res/values-en/strings.xml

@@ -381,7 +381,7 @@ Nanfang plus client is an online information platform developed and operated by
     <!-- 011兼容翻译 -->
     <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="mei_fang_guo_yi_chan_011">Note: 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>

+ 5 - 5
app/src/brand011ATuya/res/values-pl/strings.xml

@@ -129,8 +129,8 @@
     <string name="cancel">ANULUJ</string>
     <string name="confirm">POTWIERDŹ</string>
     <string name="stop">STOP</string>
-    <string name="turn_right">W lewo</string>
-    <string name="turn_left">W prawo</string>
+    <string name="turn_right">Lewo</string>
+    <string name="turn_left">Prawo</string>
     <string name="temperature">TEMPERATURA</string>
     <string name="time">CZAS</string>
     <string name="speed">PRĘDKOŚĆ</string>
@@ -367,7 +367,7 @@
 
     <string name="brightness_011">Czas blokady ekranu</string>
     <string name="reset_011">Przywróć ustawienia fabryczne</string>
-    <string name="mei_fang_guo_yi_chan_011">Uwaga\n· Nie wykryto dzbanka</string>
+    <string name="mei_fang_guo_yi_chan_011">Uwaga: Nie wykryto dzbanka</string>
     <string name="lid_unlock_011">Pokrywa robota nie została prawidłowo zamknięta</string>
     <string name="notice_011">Powiadomienia</string>
     <string name="empty_notice_011">Brak powiadomień</string>
@@ -381,8 +381,8 @@
     <string name="tare_011">Zeruj</string>
     <string name="note_title_011">Moje notatki</string>
 
-    <string name="turn_left_011">W lewo</string>
-    <string name="turn_right_011">W prawo</string>
+    <string name="turn_left_011">Lewo</string>
+    <string name="turn_right_011">Prawo</string>
     <string name="preparation_011">Przygotowanie:</string>
     <string name="ready_in_011">Czas gotowania:</string>
 

+ 2 - 2
app/src/brand011ATuya/res/values-uk/strings.xml

@@ -398,8 +398,8 @@
     <string name="automatic_programmes_011">АВТОMATИЧHI\nПPOГPAMИ</string>
     <string name="manual_cooking_011">Manual\nHAЛAШTУBAHHЯ</string>
     <string name="download_new_recipes_011">OHOBЛEHHЯ\nPEЦEПTIB </string>
-    <string name="hours_011">год</string>
-    <string name="min_011">хв</string>
+    <string name="hours_011">год.</string>
+    <string name="min_011">хв.</string>
     <string name="sec_011">с</string>
     <string name="note_title_011">Мої нотатки</string>
     <string name="tare_011">Таруванья</string>

+ 1 - 1
app/src/brand011DTuya/res/values-en/strings.xml

@@ -381,7 +381,7 @@ Nanfang plus client is an online information platform developed and operated by
     <!-- 011兼容翻译 -->
     <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="mei_fang_guo_yi_chan_011">Note: 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>

+ 5 - 5
app/src/brand011DTuya/res/values-pl/strings.xml

@@ -129,8 +129,8 @@
     <string name="cancel">ANULUJ</string>
     <string name="confirm">POTWIERDŹ</string>
     <string name="stop">STOP</string>
-    <string name="turn_right">W lewo</string>
-    <string name="turn_left">W prawo</string>
+    <string name="turn_right">Lewo</string>
+    <string name="turn_left">Prawo</string>
     <string name="temperature">TEMPERATURA</string>
     <string name="time">CZAS</string>
     <string name="speed">PRĘDKOŚĆ</string>
@@ -367,7 +367,7 @@
 
     <string name="brightness_011">Czas blokady ekranu</string>
     <string name="reset_011">Przywróć ustawienia fabryczne</string>
-    <string name="mei_fang_guo_yi_chan_011">Uwaga\n· Nie wykryto dzbanka</string>
+    <string name="mei_fang_guo_yi_chan_011">Uwaga: Nie wykryto dzbanka</string>
     <string name="lid_unlock_011">Pokrywa robota nie została prawidłowo zamknięta</string>
     <string name="notice_011">Powiadomienia</string>
     <string name="empty_notice_011">Brak powiadomień</string>
@@ -381,8 +381,8 @@
     <string name="tare_011">Zeruj</string>
     <string name="note_title_011">Moje notatki</string>
 
-    <string name="turn_left_011">W lewo</string>
-    <string name="turn_right_011">W prawo</string>
+    <string name="turn_left_011">Lewo</string>
+    <string name="turn_right_011">Prawo</string>
     <string name="preparation_011">Przygotowanie:</string>
     <string name="ready_in_011">Czas gotowania:</string>
 

+ 2 - 2
app/src/brand011DTuya/res/values-uk/strings.xml

@@ -398,8 +398,8 @@
     <string name="automatic_programmes_011">АВТОMATИЧHI\nПPOГPAMИ</string>
     <string name="manual_cooking_011">Manual\nHAЛAШTУBAHHЯ</string>
     <string name="download_new_recipes_011">OHOBЛEHHЯ\nPEЦEПTIB </string>
-    <string name="hours_011">год</string>
-    <string name="min_011">хв</string>
+    <string name="hours_011">год.</string>
+    <string name="min_011">хв.</string>
     <string name="sec_011">с</string>
     <string name="note_title_011">Мої нотатки</string>
     <string name="tare_011">Таруванья</string>

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


+ 181 - 0
app/src/main/java/com/develop/foodcooking/CatchException.java

@@ -0,0 +1,181 @@
+package com.develop.foodcooking;
+
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.os.Environment;
+import android.os.Looper;
+import android.util.Log;
+import android.widget.Toast;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.lang.reflect.Field;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+public class CatchException implements Thread.UncaughtExceptionHandler {
+    public static final String TAG = "CatchException";
+
+    //系统默认的UncaughtException处理类
+    private Thread.UncaughtExceptionHandler mDefaultHandler;
+    //CrashHandler实例
+    private static CatchException INSTANCE = new CatchException();
+    //程序的Context对象
+    private Context mContext;
+    //用来存储设备信息和异常信息
+    private Map<String, String> infos = new HashMap<String, String>();
+
+    //用于格式化日期,作为日志文件名的一部分
+    private DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+    //私有化构造器
+    private CatchException() {
+    }
+
+    /**
+     * 获取CrashHandler实例 ,单例模式
+     */
+    public static CatchException getInstence() {
+        return INSTANCE;
+    }
+
+    /**
+     * 初始化
+     *
+     * @param context
+     */
+    public void init(Context context) {
+        mContext = context;
+        //获取系统默认的UncaughtException处理器
+        mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
+        //设置该CrashHandler为程序的默认处理器
+        Thread.setDefaultUncaughtExceptionHandler(this);
+    }
+
+    /**
+     * 当UncaughtException发生时会转入该函数来处理
+     */
+    @Override
+    public void uncaughtException(Thread thread, Throwable e) {
+        if (!handleException(e) && mDefaultHandler != null) {
+            //如果用户没有处理则让系统默认的异常处理器来处理
+            mDefaultHandler.uncaughtException(thread, e);
+        } else {
+            try {
+                Thread.sleep(3000);
+            } catch (InterruptedException e1) {
+                Log.e(TAG, "error : ", e1);
+            }
+            //退出程序
+            android.os.Process.killProcess(android.os.Process.myPid());
+            System.exit(1);
+        }
+    }
+
+    /**
+     * 自定义错误处理,收集错误信息 发送错误报告等操作均在此完成.
+     * @param ex
+     * @return true:如果处理了该异常信息;否则返回false.
+     */
+    private boolean handleException(Throwable ex) {
+        if (ex == null) {
+            return false;
+        }
+        //使用Toast来显示异常信息
+        new Thread() {
+            @Override
+            public void run() {
+                Looper.prepare();
+                Toast.makeText(mContext, "很抱歉,程序出现异常,即将退出.", Toast.LENGTH_LONG).show();
+                Looper.loop();
+            }
+        }.start();
+        //收集设备参数信息
+        collectDeviceInfo(mContext);
+        //保存日志文件
+        saveCrashInfo2File(ex);
+        return true;
+    }
+
+    /**
+     * 收集设备参数信息
+     * @param ctx
+     */
+    public void collectDeviceInfo(Context ctx) {
+        try {
+            PackageManager pm = ctx.getPackageManager();
+            PackageInfo pi = pm.getPackageInfo(ctx.getPackageName(), PackageManager.GET_ACTIVITIES);
+            if (pi != null) {
+                String versionName = pi.versionName == null ? "null" : pi.versionName;
+                String versionCode = pi.versionCode + "";
+                infos.put("versionName", versionName);
+                infos.put("versionCode", versionCode);
+            }
+        } catch (PackageManager.NameNotFoundException e) {
+            Log.e(TAG, "an error occured when collect package info", e);
+        }
+        Field[] fields = Build.class.getDeclaredFields();
+        for (Field field : fields) {
+            try {
+                field.setAccessible(true);
+                infos.put(field.getName(), field.get(null).toString());
+                Log.d(TAG, field.getName() + " : " + field.get(null));
+            } catch (Exception e) {
+                Log.e(TAG, "an error occured when collect crash info", e);
+            }
+        }
+    }
+
+    /**
+     * 保存错误信息到文件中
+     * @param ex
+     * @return 返回文件名称, 便于将文件传送到服务器
+     */
+    private String saveCrashInfo2File(Throwable ex) {
+
+        StringBuffer sb = new StringBuffer();
+        for (Map.Entry<String, String> entry : infos.entrySet()) {
+            String key = entry.getKey();
+            String value = entry.getValue();
+            sb.append(key + "=" + value + "\n");
+        }
+        Writer writer = new StringWriter();
+        PrintWriter printWriter = new PrintWriter(writer);
+        ex.printStackTrace(printWriter);
+        Throwable cause = ex.getCause();
+        while (cause != null) {
+            cause.printStackTrace(printWriter);
+            cause = cause.getCause();
+        }
+        printWriter.close();
+        String result = writer.toString();
+        sb.append(result);
+        try {
+            String time = formatter.format(new Date());
+            String fileName = "/crash-" + time + ".txt";
+            if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
+                String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/cofa_applog";
+                File dir = new File(path);
+                if (!dir.exists()) {
+                    dir.mkdirs();
+                }
+                FileOutputStream fos = new FileOutputStream(path + fileName);
+                fos.write(sb.toString().getBytes());
+                fos.close();
+            }
+            return fileName;
+        } catch (Exception e) {
+            Log.e(TAG, "an error occured while writing file...", e);
+        }
+        return null;
+    }
+
+}

+ 11 - 0
app/src/main/java/com/develop/foodcooking/FoodCookingApp.kt

@@ -60,11 +60,15 @@ import org.alee.component.skin.service.ThemeSkinService
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import java.io.File
+import java.io.FileWriter
+import java.io.PrintWriter
+import java.io.StringWriter
 import java.lang.reflect.Method
 import java.security.cert.X509Certificate
 import java.util.Locale
 import java.util.concurrent.TimeUnit
 import javax.net.ssl.TrustManager
+import kotlin.system.exitProcess
 
 
 class FoodCookingApp : BaseApp() {
@@ -97,6 +101,11 @@ class FoodCookingApp : BaseApp() {
         //FoodDataProvider.initFoodDataBase()
 
 
+//        收集崩溃问题
+//        CatchException.getInstence().init(this)
+
+
+
         WindowManager.getInstance().init(this, OptionFactory())
 
 
@@ -277,6 +286,8 @@ class FoodCookingApp : BaseApp() {
         super.attachBaseContext(base)
         //把这个方法放到onCreate 处理ota问题
 //        FoodDataProvider.prepareData(this)
+
+
     }
 
 

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

@@ -214,12 +214,12 @@ fun getSN(): String {
 //        return "010D10390020123010190001"
 //        return "010F10390020123010190001"
 //        return "011D10390020123010190001"
-//        return "011A10390020123010190001"
+        return "011A10390020123010190001"
 //        return "000A50370020123010190004"
 //        return "011A50370020123010190003"
 //        return "011A50370020123010190006"
 //    return "007D20020020123010190001"
-        return "036I21060020123010190007"
+//        return "036I21060020123010190007"
 //        return "030A10390020123010190004"
 //    return  "017A20060020123010190001"
 //        return  "017A10390020123010190001"

+ 23 - 5
libBase/src/main/java/com/develop/base/manager/WifiHelp.kt

@@ -29,6 +29,8 @@ class WifiHelp {
 
     private var mDISCONNECTEDTime: Long = 0
 
+    private var isWifiLoading = false;
+
     private fun init(build: Build) {
         mWifiManager =
             build.mContext?.applicationContext?.getSystemService(Context.WIFI_SERVICE) as WifiManager
@@ -603,11 +605,19 @@ class WifiHelp {
                 val networkInfo: NetworkInfo = parcelableExtra as NetworkInfo
                 mBuild?.mNetworkStateChangedListener?.invoke(networkInfo.detailedState)
                 //在每次连接成功or连接失败后更新一次数据
-                refreshWifiData()
+
+                //loading 的时候不刷新wifi列表
+                if (!isWifiLoading){
+                    refreshWifiData()
+                }
                 if (networkInfo.detailedState == NetworkInfo.DetailedState.CONNECTED) {
                     println("connected successfully connected successfully")
 //                    mBuild?.mErrorAuthenticating?.invoke("connected successfully")
                 }
+
+                //正在进行验证
+                if (networkInfo.detailedState == NetworkInfo.DetailedState.AUTHENTICATING){
+                }
                 if (networkInfo.detailedState == NetworkInfo.DetailedState.DISCONNECTED) {
 
 
@@ -616,8 +626,6 @@ class WifiHelp {
 //                    }
                     Log.e("TAG WIFI","DISCONNECTED---DISCONNECTED---DISCONNECTED")
 //                    mBuild?.mErrorAuthenticating?.invoke("failed to connect")
-
-//                    println("failed to connect :"+)
                     if (wifiData!=null&&wifiData?.ssid==currWifiSSID){
                         Log.e("TAG WIFI","进来了 ---- currWifiSSID :"+currWifiSSID)
                         if (currWifiSSID==""){
@@ -657,9 +665,12 @@ class WifiHelp {
                 }
                 if (networkInfo.detailedState == NetworkInfo.DetailedState.FAILED) {
                     mBuild?.mErrorAuthenticating?.invoke("failed to connect")
-                    currWifiSSID?.apply {
-                        removeSaveSSIDWifi(this)
+                    currWifiSSID.let {
+                        removeSaveSSIDWifi(it)
                     }
+//                    currWifiSSID?.apply {
+//                        removeSaveSSIDWifi(this)
+//                    }
                 }
             }
             //信号变化
@@ -778,6 +789,13 @@ class WifiHelp {
         return this.wifiData
     }
 
+
+    fun  setIsWifiLoading(isWifiLoading : Boolean){
+        this.isWifiLoading = isWifiLoading
+    }
+    fun  getIsWifiLoading() :Boolean{
+        return isWifiLoading
+    }
 }
 
 

+ 2 - 2
skin-zeroOneOne/src/main/res/drawable/dialog_ok_bg.xml

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

BIN
skin-zeroOneOne/src/main/res/drawable/ic_turbo_selected.webp