MainActivity.kt 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. package com.develop.foodcooking
  2. import android.content.Context
  3. import android.os.Bundle
  4. import android.os.Debug
  5. import android.util.DisplayMetrics
  6. import android.util.Log
  7. import android.view.LayoutInflater
  8. import android.view.WindowManager
  9. import androidx.lifecycle.scopeNetLife
  10. import com.develop.base.ext.appGlobalScope
  11. import com.develop.base.ext.getGoneTuYa
  12. import com.develop.base.ext.globalApp
  13. import com.develop.base.ext.isBrand062
  14. import com.develop.base.ext.navigateTo
  15. import com.develop.base.ext.setScreenHeight
  16. import com.develop.base.ext.setScreenWidth
  17. import com.develop.base.ext.toJson
  18. import com.develop.base.util.MMkvUtils
  19. import com.develop.base.util.ScreenUtils
  20. import com.develop.base.util.SerialportUtils
  21. import com.develop.base.util.SettingKeyBoardUtils
  22. import com.develop.common.data_repo.db.DataFactory
  23. import com.develop.common.data_repo.net.Api
  24. import com.develop.common.data_repo.net.model.request.DeviceInfoBody
  25. import com.develop.common.data_repo.net.model.response.DevInfoResult
  26. import com.develop.common.food_sdk.FloatWindowManager
  27. import com.develop.common.router.Screens
  28. import com.develop.common.tag.CURRENT_LANGUAGE
  29. import com.develop.common.tag.FIRST_IN
  30. import com.develop.common.tag.ISTUYA
  31. import com.develop.common.ui.CommonBindingActivity
  32. import com.develop.common.utils.AppVersionUtil
  33. import com.develop.common.utils.ConfigUtils
  34. import com.develop.common.utils.TuyaUtils
  35. import com.develop.common.utils.TuyaUtilsSo
  36. import com.develop.foodcooking.databinding.ActivityMainBinding
  37. import com.drake.net.Post
  38. import com.drake.net.utils.scopeNetLife
  39. import com.google.gson.Gson
  40. import com.kuyuntech.cofarcooking.device.sdk.util.core.CofarSDK
  41. import kotlinx.coroutines.Dispatchers
  42. import kotlinx.coroutines.launch
  43. import java.io.File
  44. import java.security.cert.X509Certificate
  45. import javax.net.ssl.TrustManager
  46. class MainActivity : CommonBindingActivity<ActivityMainBinding>() {
  47. override fun onCreate(savedInstanceState: Bundle?) {
  48. super.onCreate(savedInstanceState)
  49. //食谱解压
  50. AppVersionUtil.getRecipe(globalApp())
  51. // Log.e("TAG wenjian","json:"+cacheDir.parent)
  52. //
  53. //
  54. // val applicationDirectory = cacheDir.parent?.let { File(it) }
  55. // if (applicationDirectory?.exists() == true) {
  56. //
  57. // val files = applicationDirectory.listFiles() ?: emptyArray()
  58. // for (file in files) {
  59. // Log.e("TAG wenjianasdasd","asd:"+file.name)
  60. //
  61. // }
  62. // }
  63. getScreen()
  64. /**
  65. * 这个代码千万别注释,需要初始化FloatWindowManager
  66. * 由于业务问题,在ModesDetails 的backClick 方法里面有个 FloatWindowManager.hideStepFlowWindow()方法
  67. * 如果第一次打开程序,直接连接涂鸦,然后在涂鸦APP运行了一下后点击STOP了,接着点击ModeDetailsActivity 的back按钮会调用backClick
  68. * 就会调用FloatWindowManager.hideStepFlowWindow(),会导致
  69. * java lang.NoclassDefFoundError:FloatWindowManager
  70. * 因为是FloatWindowManager初始化里面 会getFilterClass,就会导致
  71. * java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
  72. * 如果正常不通过手机APP点开得话,是正常的
  73. * 估在MainActvitiy 初始化FloatWindowManager
  74. * */
  75. FloatWindowManager.hideStepFlowWindow()
  76. CofarSDK.stopNative()
  77. if (MMkvUtils.getBool(FIRST_IN)) {
  78. if (isBrand062()){
  79. navigateTo(Screens.Main.ENTRANCE_CHOSEN_TWO)
  80. }else{
  81. navigateTo(Screens.Main.ENTRANCE_CHOSEN)
  82. }
  83. AppVersionUtil.endRecord("MainActivity")
  84. } else {
  85. //机器首次开机时会出现两段开机动画,这样给用户的感觉开机时长太长了,因此决定去掉后面apk显示的那一段开机动画
  86. navigateTo(Screens.Setting.LANGUAGE)
  87. AppVersionUtil.endRecord("MainActivity")
  88. // navigateTo(Screens.Main.ENTRANCE_CHOSEN)
  89. }
  90. // //涂鸦获取,隐藏的涂鸦不请求
  91. // if (!getGoneTuYa()){
  92. // getDevInfo()
  93. // }else{
  94. // getAppTuya(true)
  95. // }
  96. // getAppTuya(true)
  97. //
  98. getDevInfo()
  99. // getTuyaSo()
  100. }
  101. //获取是否有涂鸦功能
  102. fun getDevInfo() {
  103. println("涂鸦请求")
  104. scopeNetLife {
  105. val result = Post<DevInfoResult>(Api.DEV_INFO) {
  106. body = DeviceInfoBody.genDeviceInfoBody()
  107. }.await()
  108. getInitTuya(result)
  109. }.catch {
  110. println("涂鸦请求 异常")
  111. getAppTuya(true)
  112. }
  113. }
  114. fun getTuyaSo(){
  115. var tuyaConfig = ConfigUtils.loadTuyaConfig()
  116. if (tuyaConfig != null) {
  117. TuyaUtilsSo.getInstance().setmAk(tuyaConfig.get("ak"))
  118. TuyaUtilsSo.getInstance().setmPid(tuyaConfig.get("pid"))
  119. TuyaUtilsSo.getInstance().setmUid(tuyaConfig.get("uid"))
  120. appGlobalScope.launch(Dispatchers.IO) {
  121. TuyaUtilsSo.getInstance().initSDK(globalApp(),"1.0")
  122. }
  123. //涂鸦存值判断有涂鸦功能
  124. MMkvUtils.save(ISTUYA, true)
  125. } else {
  126. //涂鸦存值判断没有涂鸦功能
  127. MMkvUtils.save(ISTUYA, false)
  128. }
  129. finish()
  130. }
  131. fun getAppTuya(isCatch :Boolean){
  132. var tuyaConfig = ConfigUtils.loadTuyaConfig()
  133. if (tuyaConfig != null) {
  134. TuyaUtilsSo.getInstance().setmAk(tuyaConfig.get("ak"))
  135. TuyaUtilsSo.getInstance().setmPid(tuyaConfig.get("pid"))
  136. TuyaUtilsSo.getInstance().setmUid(tuyaConfig.get("uid"))
  137. appGlobalScope.launch(Dispatchers.IO) {
  138. TuyaUtilsSo.getInstance().initSDK(globalApp(),"1.0.0")
  139. }
  140. // TuyaUtils.mAk = tuyaConfig.get("ak")
  141. // TuyaUtils.mPid = tuyaConfig.get("pid")
  142. // TuyaUtils.mUid = tuyaConfig.get("uid")
  143. // TuyaUtils.initSDK(this, "1.0.0")
  144. //涂鸦存值判断有涂鸦功能
  145. MMkvUtils.save(ISTUYA, true)
  146. } else {
  147. //涂鸦存值判断没有涂鸦功能
  148. MMkvUtils.save(ISTUYA, false)
  149. }
  150. //避免异常进来没有关闭页面
  151. if (isCatch){
  152. finish()
  153. }
  154. }
  155. fun getInitTuya(result: DevInfoResult) {
  156. var gson = Gson()
  157. var json = gson.toJson(result)
  158. println("涂鸦请求 成功")
  159. println("涂鸦请求3 : $json")
  160. if (result.tuyaLicense != null) {
  161. result.tuyaLicense?.let {
  162. TuyaUtilsSo.getInstance().setmAk(it.ak.toString().trim())
  163. TuyaUtilsSo.getInstance().setmPid(it.pid.toString().trim())
  164. TuyaUtilsSo.getInstance().setmUid(it.uuid.toString().trim())
  165. appGlobalScope.launch(Dispatchers.IO) {
  166. TuyaUtilsSo.getInstance().initSDK(globalApp(),"1.0.0")
  167. }
  168. //涂鸦存值判断有涂鸦功能
  169. MMkvUtils.save(ISTUYA, true)
  170. //
  171. // TuyaUtils.mAk = it.ak.toString().trim()
  172. // TuyaUtils.mPid = it.pid.toString().trim()
  173. // TuyaUtils.mUid = it.uuid.toString().trim()
  174. // TuyaUtils.initSDK(this, "1.0.0")
  175. // //涂鸦存值判断有涂鸦功能
  176. // MMkvUtils.save(ISTUYA, true)
  177. }
  178. } else {
  179. //如果线上没有涂鸦,再获取本地的
  180. getAppTuya(false)
  181. }
  182. finish()
  183. }
  184. override fun createViewBinding(inflater: LayoutInflater): ActivityMainBinding {
  185. return ActivityMainBinding.inflate(inflater)
  186. }
  187. private fun getScreen() {
  188. var width = ScreenUtils.getScreenWidth(this)
  189. var height = ScreenUtils.getScreenHeight(this)
  190. setScreenWidth(width)
  191. setScreenHeight(height)
  192. }
  193. }