Browse Source

apk版本编写规则,网络请求信任证书,涂鸦图片修改

zhangshenjie 1 year ago
parent
commit
7c88b8f076
34 changed files with 1097 additions and 38 deletions
  1. 1 1
      BusinessAirFryer/src/main/assets/config_062.json
  2. 1 1
      BusinessCommon/src/main/java/com/develop/common/ui/CommonBindingActivity.kt
  3. BIN
      BusinessCommon/src/main/res/drawable-xxxhdpi/ic_setting_tuya.png
  4. 1 0
      BusinessCommon/src/main/res/layout/cook_card_view.xml
  5. 3 1
      BusinessCommon/src/main/res/layout/home_sort_filter_search_view.xml
  6. 1 0
      BusinessCommon/src/main/res/values-cz/strings.xml
  7. 1 0
      BusinessCommon/src/main/res/values-de/strings.xml
  8. 1 0
      BusinessCommon/src/main/res/values-en/strings.xml
  9. 1 0
      BusinessCommon/src/main/res/values-es/strings.xml
  10. 1 0
      BusinessCommon/src/main/res/values-fr/strings.xml
  11. 1 0
      BusinessCommon/src/main/res/values-hu/strings.xml
  12. 1 0
      BusinessCommon/src/main/res/values-it/strings.xml
  13. 318 0
      BusinessCommon/src/main/res/values-nl/strings.xml
  14. 1 0
      BusinessCommon/src/main/res/values-pl/strings.xml
  15. 1 0
      BusinessCommon/src/main/res/values-pt/strings.xml
  16. 318 0
      BusinessCommon/src/main/res/values-ru/strings.xml
  17. 6 2
      BusinessSetting/src/main/java/com/develop/setting/ui/AboutActivity.kt
  18. 16 2
      BusinessSetting/src/main/java/com/develop/setting/ui/RestoreActivity.kt
  19. 8 8
      BusinessStep/src/main/java/com/develop/step/ui/ModesDetailActivity.kt
  20. 1 1
      BusinessStep/src/main/java/com/develop/step/ui/recipes_detail/CookDetailSourceFragment.kt
  21. 16 16
      app/build.gradle
  22. 7 0
      app/src/main/AndroidManifest.xml
  23. 9 1
      app/src/main/java/com/develop/foodcooking/FoodCookingApp.kt
  24. 10 1
      app/src/main/java/com/develop/foodcooking/MainActivity.kt
  25. 37 0
      app/src/main/java/com/develop/foodcooking/glidessl/OkHttpGlideModule.java
  26. 101 0
      app/src/main/java/com/develop/foodcooking/glidessl/OkHttpStreamFetcher.java
  27. 76 0
      app/src/main/java/com/develop/foodcooking/glidessl/OkHttpUrlLoader.java
  28. 55 0
      app/src/main/java/com/develop/foodcooking/glidessl/SSHUtil.java
  29. 9 0
      app/src/main/java/com/develop/foodcooking/glidessl/SSLParams.java
  30. 6 0
      libBase/src/main/java/com/develop/base/app/BaseApp.kt
  31. 14 4
      libBase/src/main/java/com/develop/base/ext/GlobaExt.kt
  32. 75 0
      libBase/src/main/java/com/develop/base/util/Utils.java
  33. BIN
      skin-blue/src/main/res/drawable/ic_screensaver.png
  34. BIN
      skin-blue/src/main/res/drawable/ic_screensaver.webp

+ 1 - 1
BusinessAirFryer/src/main/assets/config_062.json

@@ -57,7 +57,7 @@
       "bg": "ic_mode_cook_eggs_bg_062",
       "icon": "ic_grid_cooking_eggs_062",
       "devMode": "SOUP",
-      "listShow": false
+      "listShow": true
     },
     {
       "type": "SOVS_VIDE",

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

@@ -324,7 +324,7 @@ abstract class CommonBindingActivity<T : ViewBinding> : BaseBindingActivity<T>()
         //如果电子称重异常弹窗,恢复正常以后需要自动关闭
         if (lastMsg == "dian_zi_cheng_tong_xin_yi_chan" && CofarSDK.devInfo().errCode.toInt() == 0) {
             cancelConfirmDialog.let {
-                if (it.isShow && it.isAdded) {
+                if (it.isShow || it.isAdded) {
                     lastMsg = ""
                     it.removeSelf()
                     return

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


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

@@ -19,6 +19,7 @@
         android:id="@+id/tv_change_value"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/convert_15px"
         android:layout_marginEnd="@dimen/convert_21px"
         android:layout_marginBottom="@dimen/convert_8px"
         android:includeFontPadding="false"

+ 3 - 1
BusinessCommon/src/main/res/layout/home_sort_filter_search_view.xml

@@ -207,7 +207,8 @@
         android:layout_marginTop="@dimen/convert_40px"
         android:layout_marginEnd="@dimen/convert_290px"
         android:layout_marginBottom="@dimen/convert_60px"
-        android:visibility="gone">
+        android:visibility="gone"
+        >
 
         <EditText
             android:id="@+id/et_search"
@@ -219,6 +220,7 @@
             android:hint="@string/enter_search"
             android:paddingStart="@dimen/convert_40px"
             android:singleLine="true"
+            android:paddingRight="@dimen/convert_120px"
             android:textColor="@color/color_1A1A1A"
             android:textColorHint="@color/color_1A1A1A"
             android:textSize="@dimen/convert_45px" />

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

@@ -89,6 +89,7 @@ neshromažďujeme žádné vaše osobní údaje.</string>
     <string name="storage">ÚLOŽIŠTĚ</string>
     <string name="reset">ÚLOŽIŠTĚ</string>
     <string name="about">O</string>
+    <string name="tuya">APP Stáhnout</string>
     <string name="weight">HMOTNOST</string>
     <string name="local_recipes">Místní recepty</string>
     <string name="download">Ke stažení</string>

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

@@ -56,6 +56,7 @@ Nanfang plus client ist eine Online-Informationsplattform, die von Guangdong Nan
     <string name="storage">LAGERUNG</string>
     <string name="reset">EINSTELLUNGEN DER RESTORFABRIK</string>
     <string name="about">ÜBER</string>
+    <string name="tuya">APP Laden</string>
     <string name="weight">GEWICHT</string>
     <string name="local_recipes">Lokale Rezepte</string>
     <string name="download">Laden</string>

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

@@ -55,6 +55,7 @@ Nanfang plus client is an online information platform developed and operated by
     <string name="storage">STORAGE</string>
     <string name="reset">RESTORE FACTORY SETTINGS</string>
     <string name="about">ABOUT</string>
+    <string name="tuya">App  Download</string>
     <string name="weight">WEIGHT</string>
     <string name="local_recipes">Local recipes</string>
     <string name="download">Download</string>

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

@@ -56,6 +56,7 @@ El cliente Southern plus es una plataforma de información en línea desarrollad
     <string name="storage">Memoria</string>
     <string name="reset">Restaurar la configuración de fábrica</string>
     <string name="about">Sobre</string>
+    <string name="tuya">Aplicaciones Descargar</string>
     <string name="weight">Peso</string>
     <string name="local_recipes">Recetas locales</string>
     <string name="download">Descargar</string>

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

@@ -56,6 +56,7 @@ Southern plus client est une plate - forme d’information en ligne développée
     <string name="storage">Mémoire</string>
     <string name="reset">Restaurer les paramètres d’usine</string>
     <string name="about">À propos</string>
+    <string name="tuya">Applications Télécharger</string>
     <string name="weight">Poids</string>
     <string name="local_recipes">Recettes locales</string>
     <string name="download">Télécharger</string>

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

@@ -58,6 +58,7 @@
     <string name="storage">HÁTTÉR</string>
     <string name="reset">HÁTTÉR</string>
     <string name="about">O</string>
+    <string name="tuya">APP letöltéseM</string>
     <string name="weight">MASS</string>
     <string name="local_recipes">Helyi receptek</string>
     <string name="download">Letöltések</string>

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

@@ -56,6 +56,7 @@ Nanfang plus client è una piattaforma di informazioni online sviluppata e gesti
     <string name="storage">CONSERVAZIONE</string>
     <string name="reset">IMPOSTAZIONI DELLA FABBRICA DI RESTAURO</string>
     <string name="about">A PROPOSITO</string>
+    <string name="tuya">APP Scarica</string>
     <string name="weight">PESO</string>
     <string name="local_recipes">Ricette locali</string>
     <string name="download">Scarica</string>

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

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

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

@@ -55,6 +55,7 @@
     <string name="storage">PRZECHOWYWANIE</string>
     <string name="reset">PRZYWRÓCIĆ USTAWIENIA FABRYCZNE</string>
     <string name="about">O urządzeniu</string>
+    <string name="tuya">APP Pobierz</string>
     <string name="weight">WAGA</string>
     <string name="local_recipes">Lokalne przepisy kulinarne</string>
     <string name="download">Pobierz</string>

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

@@ -55,6 +55,7 @@ Nanfang mais cliente é uma plataforma de informação on-line desenvolvida e op
     <string name="storage">ARMAZENAMENTO</string>
     <string name="reset">CONJUNTO DA FÁBRICA DE RESTORAÇÃO</string>
     <string name="about">SOBRE</string>
+    <string name="tuya">Transferência de APP</string>
     <string name="weight">PESO</string>
     <string name="local_recipes">Receitas locais</string>
     <string name="download">Transferir</string>

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

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

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

@@ -23,6 +23,7 @@ import com.azhon.appupdate.listener.OnDownloadListener
 import com.blankj.utilcode.util.AppUtils
 import com.develop.base.R
 import com.develop.base.ext.dimenRes
+import com.develop.base.ext.getAppCode
 import com.develop.base.ext.getSN
 import com.develop.base.ext.isBrand036I
 import com.develop.base.ext.isBrand054A
@@ -404,11 +405,14 @@ class AboutActivity : CommonBVMActivity<ActivityAboutBinding, AboutViewModel>()
         }
 
         binding.tvAppName.text = "FoodCooking_Android"
-        binding.tvAppVersion.text = "v${AppUtils.getAppVersionName()}"
+        var appName = AppUtils.getAppVersionName()
+        var (name , code) = appName.split("_")
+        var appCodeName = name + "_V"+ getAppCode()+"_"+code
+//        binding.tvAppVersion.text = "v${AppUtils.getAppVersionName()}"
 
+        binding.tvAppVersion.text = appCodeName
         viewModel.devInfoLiveData.observe(this) {
 
-            println("TAG 涂鸦 onResume :"+ it.toString())
             updateApkUrl = it?.apkUrl ?: ""
             if (it?.apkUpdate == true) {
 //                binding.tvUpdate.visibility = View.VISIBLE

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

@@ -18,6 +18,8 @@ import com.develop.common.tag.FIRST_IN
 import com.develop.setting.R
 import com.develop.setting.databinding.ActivityRestoreBinding
 import com.drake.net.utils.withMain
+import com.kuyuntech.cofarcooking.device.sdk.constant.core.DevStatus
+import com.kuyuntech.cofarcooking.device.sdk.util.core.CofarSDK
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.launch
 import java.io.File
@@ -27,7 +29,9 @@ class RestoreActivity : CommonBindingActivity<ActivityRestoreBinding>() {
     private val recipesConfirmDialog by lazy {
         CancelConfirmDialog()
     }
-
+    private val cancelConfirmDialog by lazy {
+        CancelConfirmDialog()
+    }
     override fun createViewBinding(inflater: LayoutInflater): ActivityRestoreBinding {
         return ActivityRestoreBinding.inflate(layoutInflater)
     }
@@ -53,7 +57,17 @@ class RestoreActivity : CommonBindingActivity<ActivityRestoreBinding>() {
 
         }
         binding.tvYea.setOnClickListener {
-            dialog.showDialog(supportFragmentManager, "confirm")
+            if (CofarSDK.devInfo().status == DevStatus.RUNNING.toInt()) {
+                cancelConfirmDialog.title = getString(com.develop.common.R.string.change_lang_tips)
+                cancelConfirmDialog.apply {
+                    showCancel = false
+                    showDialog(supportFragmentManager, "confirm")
+                }
+                return@setOnClickListener
+            }else{
+                dialog.showDialog(supportFragmentManager, "confirm")
+
+            }
         }
         binding.tvNo.setOnClickListener {
             finish()

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

@@ -2256,7 +2256,7 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
             1 -> {//小
                 when (hardness) {
                     1 -> {//软
-                        time = 8 * 60
+                        time = 6 * 60
                     }
 
                     2 -> {//中
@@ -2264,7 +2264,7 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
                     }
 
                     3 -> {//硬
-                        time = 15 * 60
+                        time = 13 * 60
                     }
 
                     else -> {
@@ -2278,16 +2278,16 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
             2 -> {//中
                 when (hardness) {
                     1 -> {//软
-                        time = 10 * 60
+                        time = 7 * 60
 
                     }
 
                     2 -> {//中
-                        time = 12 * 60
+                        time = 10 * 60
                     }
 
                     3 -> {//硬
-                        time = 18 * 60
+                        time = 14 * 60
                     }
 
                     else -> {
@@ -2300,15 +2300,15 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
             3 -> {//大
                 when (hardness) {
                     1 -> {//软
-                        time = 11 * 60
+                        time = 8 * 60
                     }
 
                     2 -> {//中
-                        time = 13 * 60
+                        time = 11 * 60
                     }
 
                     3 -> {//硬
-                        time = 18 * 60
+                        time = 15 * 60
                     }
 
                     else -> {

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

@@ -62,7 +62,7 @@ class CookDetailSourceFragment :
                 }
                 val jarCount = size?.portionSize?.toIntOrNull() ?: 1
                 val string = if (jarCount > 1) {
-                    getString(com.develop.common.R.string.make_n_jars, jarCount.toString())
+                    getString(com.develop.common.R.string.make_n_jars) ?: jarCount.toString()
                 } else {
                     getString(com.develop.common.R.string.make_1_jar)
                 }

+ 16 - 16
app/build.gradle

@@ -8,13 +8,13 @@ plugins {
 }
 
 
-ext{
+ext {
 
-    versionCode=Integer.parseInt(new SimpleDateFormat("yyMMddHH").format(new Date()) + 1)
+    versionCode = Integer.parseInt(new SimpleDateFormat("yyMMddHH").format(new Date()) + 1)
 //    versionCode=230617180
 //    brandCode="036I"
-    brandCode="000A"
-    model="5037"
+    brandCode = "030A"
+    model = "1039"
 
 }
 
@@ -28,14 +28,12 @@ android {
     }
 
 
-
-
     defaultConfig {
         applicationId "com.develop.foodcooking"
         minSdk 21
         targetSdk 31
         versionCode project.ext.versionCode
-        versionName "${project.ext.model}.${project.ext.brandCode}.${project.ext.versionCode}"
+        versionName "${project.ext.brandCode}${project.ext.model}_${project.ext.versionCode}"
         archivesBaseName = "cofar-cooking_${versionName}"
         javaCompileOptions {
             annotationProcessorOptions {
@@ -215,7 +213,7 @@ android {
             resValue("string", "app_theme", "@style/Splash054ATheme")
         }
 
-        brand062A {
+        brand062ATuya {
             dimension "platform"
             applicationId "com.develop.foodcooking"
             resValue("string", "app_theme", "@style/Splash062ATheme")
@@ -272,17 +270,13 @@ android {
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
         }
 
-        debug{
+        debug {
             debuggable true
             productFlavors.brand032DTuya.signingConfig signingConfigs.debug
 //            buildConfigField("String", "UpdatePlatform", "\"054A\"")
 //////            buildConfigField("String", "FLAVOR", "\"brand054ATuya\"")
 //            resValue("string", "app_theme", "@style/Splash054ATheme")
 
-//            buildConfigField("String", "UpdatePlatform", "\"011A\"")
-//            resValue("string", "app_theme", "@style/Splash011A5037Theme")
-//            buildConfigField("String", "model", "\"5037\"")
-//            buildConfigField("String", "brandCode", "\"011A\"")
 
 //            buildConfigField("String", "UpdatePlatform", "\"normal\"")
 //            resValue("string", "app_theme", "@style/SplashTheme")
@@ -312,16 +306,22 @@ android {
             buildConfigField("String", "UpdatePlatform", "\"normal\"")
             resValue("string", "app_theme", "@style/SplashTheme")
             buildConfigField("String", "model", "\"1039\"")
-            buildConfigField("String", "brandCode", "\"030A\"")
+            buildConfigField("String", "brandCode", "\"011A\"")
             //appCode 1.01 指向bug修复,2.01指向功能变更
             buildConfigField("String", "appCode", "\"1.01\"")
+//            buildConfigField("String", "appCode", "\"2.01\"")
+
+//             buildConfigField("String", "UpdatePlatform", "\"011A\"")
+//            resValue("string", "app_theme", "@style/Splash011A5037Theme")
+//            buildConfigField("String", "model", "\"5037\"")
+//            buildConfigField("String", "brandCode", "\"011A\"")
+//            //appCode 1.01 指向bug修复,2.01指向功能变更
+//            buildConfigField("String", "appCode", "\"1.01\"")
 //            buildConfigField("String", "appCode", "\"2.01\"")
         }
     }
 
 
-
-
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_8
         targetCompatibility JavaVersion.VERSION_1_8

+ 7 - 0
app/src/main/AndroidManifest.xml

@@ -45,6 +45,13 @@
         android:theme="@string/app_theme"
         android:largeHeap="true"
         tools:targetApi="31">
+
+
+
+        <meta-data
+            android:name="com.develop.foodcooking.glidessl.OkHttpGlideModule"
+            android:value="GlideModule" />
+
         <activity
             android:screenOrientation="landscape"
             android:name=".MainActivity"

+ 9 - 1
app/src/main/java/com/develop/foodcooking/FoodCookingApp.kt

@@ -15,6 +15,7 @@ import com.blankj.utilcode.util.ResourceUtils
 import com.blankj.utilcode.util.Utils
 import com.develop.base.app.BaseApp
 import com.develop.base.ext.getBrandNum
+import com.develop.base.ext.setAppCode
 import com.develop.base.ext.setIsBrand011A
 import com.develop.base.ext.setIsBrand036I
 import com.develop.base.ext.setIsBrand054A
@@ -52,8 +53,10 @@ import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import java.io.File
 import java.lang.reflect.Method
+import java.security.cert.X509Certificate
 import java.util.Locale
 import java.util.concurrent.TimeUnit
+import javax.net.ssl.TrustManager
 
 
 class FoodCookingApp : BaseApp() {
@@ -78,9 +81,10 @@ class FoodCookingApp : BaseApp() {
     private  var heartBeatInterval :Interval?=null
     var ledLock = false
     override fun onCreate() {
-
         hookWebView()
         super.onCreate()
+
+
         //处理崩溃问题
 //        CrashHandler.getInstance().init(this);
         //FoodDataProvider.initFoodDataBase()
@@ -93,6 +97,7 @@ class FoodCookingApp : BaseApp() {
             SKIN_PACK_PATH + NIGHT_SKIN_PACK_NAME
         )
         WindowManager.getInstance().init(this, OptionFactory())
+        setAppCode(BuildConfig.appCode)
         val isNight = BuildConfig.UpdatePlatform.equals("night")
         val is062 = BuildConfig.UpdatePlatform.equals("062A")
         setIsBrand036I(BuildConfig.UpdatePlatform.equals("036I"))
@@ -186,6 +191,9 @@ class FoodCookingApp : BaseApp() {
         return Api.HOST
     }
 
+
+
+
     override fun createRequestInterceptor(): RequestInterceptor {
         return FoodRequestInterceptor()
     }

+ 10 - 1
app/src/main/java/com/develop/foodcooking/MainActivity.kt

@@ -11,6 +11,7 @@ import com.develop.base.ext.isBrand062
 import com.develop.base.ext.navigateTo
 import com.develop.base.ext.setScreenHeight
 import com.develop.base.ext.setScreenWidth
+import com.develop.base.ext.toJson
 import com.develop.base.util.MMkvUtils
 import com.develop.base.util.ScreenUtils
 import com.develop.base.util.SerialportUtils
@@ -29,6 +30,9 @@ import com.develop.common.utils.TuyaUtils
 import com.develop.foodcooking.databinding.ActivityMainBinding
 import com.drake.net.Post
 import com.drake.net.utils.scopeNetLife
+import com.google.gson.Gson
+import java.security.cert.X509Certificate
+import javax.net.ssl.TrustManager
 
 
 class MainActivity : CommonBindingActivity<ActivityMainBinding>() {
@@ -43,7 +47,6 @@ class MainActivity : CommonBindingActivity<ActivityMainBinding>() {
 
             }else{
                 navigateTo(Screens.Main.ENTRANCE_CHOSEN)
-
             }
         } else {
             //设置语言
@@ -84,12 +87,14 @@ class MainActivity : CommonBindingActivity<ActivityMainBinding>() {
     }
     //获取是否有涂鸦功能
     fun getDevInfo() {
+        println("涂鸦请求")
         scopeNetLife {
             val result = Post<DevInfoResult>(Api.DEV_INFO) {
                 body = DeviceInfoBody.genDeviceInfoBody()
             }.await()
             getInitTuya(result)
         }.catch {
+            println("涂鸦请求 异常")
             getAppTuya(true)
         }
     }
@@ -113,7 +118,11 @@ class MainActivity : CommonBindingActivity<ActivityMainBinding>() {
 
     }
 
+
     fun getInitTuya(result: DevInfoResult) {
+        var gson = Gson()
+        println("涂鸦请求 成功")
+        println("涂鸦请求3 : "+gson.toJson(result))
         if (result.tuyaLicense != null) {
             result.tuyaLicense?.let {
                 TuyaUtils.mAk = it.ak

+ 37 - 0
app/src/main/java/com/develop/foodcooking/glidessl/OkHttpGlideModule.java

@@ -0,0 +1,37 @@
+package com.develop.foodcooking.glidessl;
+
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.GlideBuilder;
+import com.bumptech.glide.Registry;
+import com.bumptech.glide.load.model.GlideUrl;
+import com.bumptech.glide.module.GlideModule;
+
+import java.io.InputStream;
+import java.util.concurrent.TimeUnit;
+
+import okhttp3.Call;
+import okhttp3.OkHttpClient;
+
+//Glide 忽略证书
+public class OkHttpGlideModule implements GlideModule {
+    @Override
+    public void applyOptions(Context context, GlideBuilder builder) {
+        // Do nothing.
+    }
+
+    @Override
+    public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
+        OkHttpClient okhttpClient = new OkHttpClient.Builder()
+                .retryOnConnectionFailure(true) // 设置出现错误进行重新连接。
+                .connectTimeout(15, TimeUnit.SECONDS)
+                .readTimeout(60 * 1000, TimeUnit.MILLISECONDS)
+                .sslSocketFactory(SSHUtil.getSslSocketFactory().sSLSocketFactory)
+                .hostnameVerifier(SSHUtil.getHostnameVerifier())
+                .build();
+        registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory((Call.Factory) okhttpClient));
+    }
+}

+ 101 - 0
app/src/main/java/com/develop/foodcooking/glidessl/OkHttpStreamFetcher.java

@@ -0,0 +1,101 @@
+package com.develop.foodcooking.glidessl;
+
+import android.util.Log;
+
+import com.bumptech.glide.Priority;
+import com.bumptech.glide.load.DataSource;
+import com.bumptech.glide.load.HttpException;
+import com.bumptech.glide.load.data.DataFetcher;
+import com.bumptech.glide.load.model.GlideUrl;
+import com.bumptech.glide.util.ContentLengthInputStream;
+import com.bumptech.glide.util.Synthetic;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Map;
+
+import okhttp3.Call;
+import okhttp3.Request;
+import okhttp3.Response;
+import okhttp3.ResponseBody;
+
+public class OkHttpStreamFetcher implements DataFetcher<InputStream> {
+    private static final String TAG = "OkHttpFetcher";
+    private final Call.Factory client;
+    private final GlideUrl url;
+    @Synthetic
+    InputStream stream;
+    @Synthetic
+    ResponseBody responseBody;
+    private volatile Call call;
+
+    public OkHttpStreamFetcher(Call.Factory client, GlideUrl url) {
+        this.client = client;
+        this.url = url;
+    }
+
+    @Override
+    public void loadData(Priority priority, final DataCallback<? super InputStream> callback) {
+        Request.Builder requestBuilder = new Request.Builder().url(url.toStringUrl());
+        for (Map.Entry<String, String> headerEntry : url.getHeaders().entrySet()) {
+            String key = headerEntry.getKey();
+            requestBuilder.addHeader(key, headerEntry.getValue());
+        }
+        Request request = requestBuilder.build();
+
+        call = client.newCall(request);
+        call.enqueue(new okhttp3.Callback() {
+            @Override
+            public void onFailure(Call call, IOException e) {
+                if (Log.isLoggable(TAG, Log.DEBUG)) {
+                    Log.d(TAG, "OkHttp failed to obtain result", e);
+                }
+                callback.onLoadFailed(e);
+            }
+
+            @Override
+            public void onResponse(Call call, Response response) throws IOException {
+                responseBody = response.body();
+                if (response.isSuccessful()) {
+                    long contentLength = responseBody.contentLength();
+                    stream = ContentLengthInputStream.obtain(responseBody.byteStream(), contentLength);
+                    callback.onDataReady(stream);
+                } else {
+                    callback.onLoadFailed(new HttpException(response.message(), response.code()));
+                }
+            }
+        });
+    }
+
+    @Override
+    public void cleanup() {
+        try {
+            if (stream != null) {
+                stream.close();
+            }
+        } catch (IOException e) {
+            // Ignored
+        }
+        if (responseBody != null) {
+            responseBody.close();
+        }
+    }
+
+    @Override
+    public void cancel() {
+        Call local = call;
+        if (local != null) {
+            local.cancel();
+        }
+    }
+
+    @Override
+    public Class<InputStream> getDataClass() {
+        return InputStream.class;
+    }
+
+    @Override
+    public DataSource getDataSource() {
+        return DataSource.REMOTE;
+    }
+}

+ 76 - 0
app/src/main/java/com/develop/foodcooking/glidessl/OkHttpUrlLoader.java

@@ -0,0 +1,76 @@
+package com.develop.foodcooking.glidessl;
+
+import com.bumptech.glide.load.Options;
+import com.bumptech.glide.load.model.GlideUrl;
+import com.bumptech.glide.load.model.ModelLoader;
+import com.bumptech.glide.load.model.ModelLoaderFactory;
+import com.bumptech.glide.load.model.MultiModelLoaderFactory;
+
+import java.io.InputStream;
+
+import okhttp3.Call;
+import okhttp3.OkHttpClient;
+
+public class OkHttpUrlLoader implements ModelLoader<GlideUrl, InputStream> {
+    private final Call.Factory client;
+
+    public OkHttpUrlLoader(Call.Factory client) {
+        this.client = client;
+    }
+
+    @Override
+    public boolean handles(GlideUrl url) {
+        return true;
+    }
+
+    @Override
+    public LoadData<InputStream> buildLoadData(GlideUrl model, int width, int height,
+                                               Options options) {
+        return new LoadData<>(model, new OkHttpStreamFetcher(client, model));
+    }
+
+    /**
+     * The default factory for {@link OkHttpUrlLoader}s.
+     */
+    public static class Factory implements ModelLoaderFactory<GlideUrl, InputStream> {
+        private static volatile Call.Factory internalClient;
+        private Call.Factory client;
+
+        private static Call.Factory getInternalClient() {
+            if (internalClient == null) {
+                synchronized (Factory.class) {
+                    if (internalClient == null) {
+                        internalClient = (Call.Factory) new OkHttpClient();
+                    }
+                }
+            }
+            return internalClient;
+        }
+
+        /**
+         * Constructor for a new Factory that runs requests using a static singleton client.
+         */
+        public Factory() {
+            this(getInternalClient());
+        }
+
+        /**
+         * Constructor for a new Factory that runs requests using given client.
+         *
+         * @param client this is typically an instance of {@code OkHttpClient}.
+         */
+        public Factory(Call.Factory client) {
+            this.client = client;
+        }
+
+        @Override
+        public ModelLoader<GlideUrl, InputStream> build(MultiModelLoaderFactory multiFactory) {
+            return new OkHttpUrlLoader(client);
+        }
+
+        @Override
+        public void teardown() {
+            // Do nothing, this instance doesn't own the client.
+        }
+    }
+}

+ 55 - 0
app/src/main/java/com/develop/foodcooking/glidessl/SSHUtil.java

@@ -0,0 +1,55 @@
+package com.develop.foodcooking.glidessl;
+
+import java.security.SecureRandom;
+import java.security.cert.X509Certificate;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+public class SSHUtil {
+    public static SSLParams getSslSocketFactory() {
+        SSLParams sslParams = new SSLParams();
+        sslParams.trustManager = createX509TrustManager();
+        sslParams.sSLSocketFactory = createSSLSocketFactory(sslParams.trustManager);
+        return sslParams;
+    }
+
+    public static HostnameVerifier getHostnameVerifier() {
+        return (hostname, session) -> true;
+    }
+
+    private static X509TrustManager createX509TrustManager() {
+        return new X509TrustManager() {
+            @Override
+            public void checkClientTrusted(X509Certificate[] chain,
+                                           String authType) {
+            }
+
+            @Override
+            public void checkServerTrusted(X509Certificate[] chain,
+                                           String authType) {
+            }
+
+            @Override
+            public X509Certificate[] getAcceptedIssuers() {
+                return new X509Certificate[0];
+            }
+        };
+    }
+
+    private static SSLSocketFactory createSSLSocketFactory(X509TrustManager x509TrustManager) {
+        SSLSocketFactory sslSocketFactory = null;
+        final TrustManager[] trustAllCerts = new TrustManager[]{x509TrustManager};
+        try {
+            final SSLContext sslContext = SSLContext.getInstance("SSL");
+            sslContext.init(null, trustAllCerts, new SecureRandom());
+            sslSocketFactory = sslContext.getSocketFactory();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return sslSocketFactory;
+    }
+}

+ 9 - 0
app/src/main/java/com/develop/foodcooking/glidessl/SSLParams.java

@@ -0,0 +1,9 @@
+package com.develop.foodcooking.glidessl;
+
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.X509TrustManager;
+
+public class SSLParams {
+    public SSLSocketFactory sSLSocketFactory;
+    public X509TrustManager trustManager;
+}

+ 6 - 0
libBase/src/main/java/com/develop/base/app/BaseApp.kt

@@ -9,6 +9,7 @@ import com.develop.base.ext.GlobalApp
 import com.develop.base.ext.getSN
 import com.develop.base.util.MMkvUtils
 import com.develop.base.util.TopResumedAtyHolder
+import com.develop.base.util.Utils
 import com.drake.net.NetConfig
 import com.drake.net.convert.NetConverter
 import com.drake.net.cookie.PersistentCookieJar
@@ -19,6 +20,7 @@ import com.drake.net.okhttp.setConverter
 import com.drake.net.okhttp.setDebug
 import com.drake.net.okhttp.setErrorHandler
 import com.drake.net.okhttp.setRequestInterceptor
+import com.drake.net.okhttp.trustSSLCertificate
 import com.github.moduth.blockcanary.BlockCanary
 import com.github.moduth.blockcanary.BlockCanaryContext
 import com.scwang.smart.refresh.footer.ClassicsFooter
@@ -90,6 +92,10 @@ abstract class BaseApp : Application() {
             //全局错误处理
             setErrorHandler(createErrorHandle())
 
+            //信任所有证书
+            trustSSLCertificate()
+//            sslSocketFactory(Utils.createSSLSocketFactory())
+
             // 自定义全局加载对话框
             // setDialogFactory()
         }

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

@@ -208,12 +208,13 @@ fun getSN(): String {
 //     return "000A10390020123010190001"
 //        return "000A50370020123010190005"/
 //    return "010D10390020123010190001"
-//    return "011A50370020123010190001"
+    return "011A10390020123010190001"
 //        return "000A50370020123010190004"
-//        return "011A50370020123010190001"
+//        return "011A50370020123010190003"
+//        return "011A50370020123010190004"
 //    return "007D20020020123010190001"
 //    return "036I21060020123010190003"
-//    return  "030A10390020123010190001"
+//        return "030A10390020123010190001"
 //    return  "017A20060020123010190001"
 //        return  "017A10390020123010190001"
 //    return "010D10390020123010190001"
@@ -223,7 +224,8 @@ fun getSN(): String {
 //    return  "030A10390020123010190002"
 //        return "029C21010020123010190001"
 //        return  "062A10390020123010190002"
-        return "000A50370020123010190018"
+//        return "000A50370020123010190018"
+//        return  "000A10390020123010190023"
     } else {
         //通过反射获取sn号
         try {
@@ -239,6 +241,7 @@ fun getSN(): String {
         }
 
         return serial
+
     }
 
 
@@ -299,6 +302,13 @@ fun setScreenHeight(height: Int) {
     MMkvUtils.save("screen_height", height)
 }
 
+fun setAppCode(code :String){
+    MMkvUtils.save("appCode", code)
+}
+fun getAppCode() :String {
+    return MMkvUtils.getString("appCode") ?: "1.01"
+}
+
 fun isNightTheme(): Boolean {
     return MMkvUtils.getBool("nightTheme", false)
 }

+ 75 - 0
libBase/src/main/java/com/develop/base/util/Utils.java

@@ -0,0 +1,75 @@
+package com.develop.base.util;
+
+import android.util.Log;
+
+import java.security.SecureRandom;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+public class Utils {
+    public static void trustAllHosts() {
+        // Create a trust manager that does not validate certificate chains
+        TrustManager[] trustAllCerts;
+        trustAllCerts = new TrustManager[]{new X509TrustManager() {
+            @Override
+            public X509Certificate[] getAcceptedIssuers() {
+                return new X509Certificate[]{};
+            }
+
+            @Override
+            public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
+                Log.i("skyapp", "checkClientTrusted");
+            }
+
+            @Override
+            public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
+                Log.i("skyapp", "checkServerTrusted");
+            }
+        }};
+        // Install the all-trusting trust manager
+        try {
+            SSLContext sc = SSLContext.getInstance("TLS");
+            sc.init(null, trustAllCerts, new java.security.SecureRandom());
+            HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static  SSLSocketFactory createSSLSocketFactory() {
+        SSLSocketFactory ssfFactory = null;
+        try {
+            MyTrustManager   mMyTrustManager = new MyTrustManager();
+            SSLContext sc = SSLContext.getInstance("TLS");
+            sc.init(null, new TrustManager[]{mMyTrustManager}, new SecureRandom());
+            ssfFactory = sc.getSocketFactory();
+        } catch (Exception ignored) {
+            ignored.printStackTrace();
+        }
+
+        return ssfFactory;
+    }
+
+    //实现X509TrustManager接口
+    public static class MyTrustManager implements X509TrustManager {
+        @Override
+        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
+        }
+
+        @Override
+        public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
+        }
+
+        @Override
+        public X509Certificate[] getAcceptedIssuers() {
+            return new X509Certificate[0];
+        }
+    }
+
+}

BIN
skin-blue/src/main/res/drawable/ic_screensaver.png


BIN
skin-blue/src/main/res/drawable/ic_screensaver.webp