Browse Source

涂鸦集成

wbspool 1 year ago
parent
commit
0785d7ecf3

+ 14 - 0
BusinessAirFryer/src/main/assets/tuya_config.json

@@ -0,0 +1,14 @@
+{
+  "licences":{
+    "010D10390020123010100032": {
+      "pid": "dquk8axtyy72c1ap",
+      "uid": "uuid50e9e0c707553116",
+      "ak": "MJhcxmQ6LeZDj1tNu6F5kqK5aQJfpdOb"
+    },
+    "011A10390020123010190001": {
+      "pid": "dquk8axtyy72c1ap",
+      "uid": "uuid3092ba821761e92a",
+      "ak": "E1488Uxscw14sRBG3IGeQ1D8Hwin1gYe"
+    }
+  }
+}

+ 1 - 0
BusinessCommon/src/main/AndroidManifest.xml

@@ -2,4 +2,5 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.develop.common">
 
+    <uses-permission android:name="android.permission.REBOOT" />
 </manifest>

+ 4 - 0
BusinessCommon/src/main/java/com/develop/common/bean/TuyaConfig.kt

@@ -0,0 +1,4 @@
+package com.develop.common.bean
+
+
+data class TuyaConfig(var licences: Map<String,Map<String,String>>)

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

@@ -6,6 +6,8 @@ import com.develop.base.util.MMkvUtils
 import com.develop.common.R
 import com.develop.common.data_repo.db.entity.DevRecipe
 import com.develop.common.data_repo.db.entity.UserFavoriteRecipes
+import com.develop.common.utils.ConfigUtils
+import com.develop.common.utils.TuyaUtils
 import com.develop.common.widget.EntranceData
 import com.develop.common.widget.EntranceType
 import com.drake.brv.item.ItemHover
@@ -162,14 +164,14 @@ object DataFactory {
 //            R.drawable.ic_setting_folder,
             R.drawable.ic_setting_reset,
             R.drawable.ic_setting_about,
-            R.drawable.ic_setting_tuya,
             )
+
         val nameList = mutableListOf(
             resource.getString(R.string.language), resource.getString(R.string.wifi),
 //            resource.getString(R.string.sound),
             resource.getString(R.string.brightness), resource.getString(R.string.user_account),
 //            resource.getString(R.string.storage),
-            resource.getString(R.string.reset), resource.getString(R.string.about),resource.getString(R.string.tuya)
+            resource.getString(R.string.reset), resource.getString(R.string.about)
 
         )
         val settingTypeList = mutableListOf(
@@ -177,8 +179,16 @@ object DataFactory {
 //            SettingType.SOUND,
             SettingType.BRIGHTNESS, SettingType.USER_ACCOUNT,
 //            SettingType.STORAGE,
-            SettingType.RESTORE_FACTORY_SETTINGS, SettingType.ABOUT,SettingType.TUYA
+            SettingType.RESTORE_FACTORY_SETTINGS, SettingType.ABOUT
         )
+
+        var tuyaConfig =  ConfigUtils.loadTuyaConfig()
+        if(tuyaConfig != null){
+            settingTypeList.add(SettingType.TUYA)
+            nameList.add(resource.getString(R.string.tuya))
+            resIdList.add(R.drawable.ic_setting_tuya)
+        }
+
         for (i in resIdList.indices) {
             result.add(SettingModel(resIdList[i], nameList[i], settingTypeList[i]))
         }

+ 22 - 0
BusinessCommon/src/main/java/com/develop/common/utils/CommonUtils.kt

@@ -0,0 +1,22 @@
+package com.develop.common.utils
+
+import com.develop.base.ext.navigateTo
+import com.develop.base.util.TopResumedAtyHolder
+import com.develop.common.router.Screens
+import com.develop.common.tag.NUMBER_TAG
+import com.develop.common.tag.SOURCE_TAG
+
+object  CommonUtils {
+
+    fun navigateToRemoteRecipe(number:String){
+        TopResumedAtyHolder.getCurrentActivity()?.navigateTo(Screens.Cook.COOK_DETAIL) {
+            withString(
+                SOURCE_TAG,  "remote"
+
+            )
+            withString(NUMBER_TAG, number)
+
+        }
+    }
+
+}

+ 25 - 0
BusinessCommon/src/main/java/com/develop/common/utils/ConfigUtils.kt

@@ -4,6 +4,7 @@ import android.content.Context
 import com.develop.base.ext.GlobalApp
 import com.develop.base.ext.getSN
 import com.develop.common.bean.CfConfig
+import com.develop.common.bean.TuyaConfig
 import com.develop.common.bean.WorkMode
 import com.google.gson.Gson
 import org.json.JSONObject
@@ -43,6 +44,30 @@ object ConfigUtils {
         }
     }
 
+    fun loadTuyaConfig(): Map<String,String>? {
+        return try {
+            var sn = getSN()
+
+            var inputStream: InputStream? = null
+            inputStream = GlobalApp().assets.open("tuya_config.json")
+
+
+            val size = inputStream.available()
+            val buffer = ByteArray(size)
+            inputStream.read(buffer)
+            inputStream.close()
+
+            val jsonString = String(buffer, Charset.defaultCharset())
+            val gson = Gson()
+            val cfConfig = gson.fromJson(jsonString, TuyaConfig::class.java)
+            cfConfig.licences.get(sn)
+        } catch (ex: IOException) {
+            ex.printStackTrace()
+            null
+        }
+    }
+
+
     fun getMode(type: String): WorkMode? {
         return loadConfig()?.workModes?.find { it.type == type }?.copy()
     }

+ 2 - 0
BusinessCommon/src/main/java/com/develop/common/utils/TuyaDps.java

@@ -42,4 +42,6 @@ public class TuyaDps {
 
     public static final int CUP_SW = 111;
 
+    public static final int RECIPE_NUM = 115;
+
 }

+ 34 - 9
BusinessCommon/src/main/java/com/develop/common/utils/TuyaUtils.java

@@ -2,12 +2,17 @@ package com.develop.common.utils;
 
 import static android.content.Context.MODE_PRIVATE;
 
+import android.app.AlarmManager;
+import android.app.PendingIntent;
 import android.content.Context;
+import android.content.Intent;
 import android.content.SharedPreferences;
+import android.os.PowerManager;
 import android.text.TextUtils;
 import android.view.View;
 
 import com.develop.base.util.MMkvUtils;
+import com.develop.base.util.TopResumedAtyHolder;
 import com.google.gson.Gson;
 import com.kuyuntech.cofarcooking.device.sdk.constant.core.DevStatus;
 import com.kuyuntech.cofarcooking.device.sdk.constant.core.MotorDirections;
@@ -18,6 +23,7 @@ import com.tuya.smartai.iot_sdk.IoTSDKManager;
 import com.tuya.smartai.iot_sdk.Log;
 import com.tuya.smartai.iot_sdk.UpgradeEventCallback;
 
+import org.greenrobot.eventbus.EventBus;
 import org.json.JSONObject;
 
 import java.util.Arrays;
@@ -26,12 +32,13 @@ import java.util.Objects;
 import java.util.stream.Collectors;
 
 public class TuyaUtils {
-
+    public static Context context;
+    public static String version;
     public static final String TAG = "TUYA";
-    public static final String mPid = "dquk8axtyy72c1ap";
-    public static final String mUid = "uuid50e9e0c707553116";
-    public static final String mAk = "MJhcxmQ6LeZDj1tNu6F5kqK5aQJfpdOb";
-    public static  String qrcodeUrl =  MMkvUtils.INSTANCE.getString("tuya_url");
+    public static  String mPid = "dquk8axtyy72c1ap";
+    public static  String mUid = "uuid50e9e0c707553116";
+    public static  String mAk = "MJhcxmQ6LeZDj1tNu6F5kqK5aQJfpdOb";
+    public static  String qrcodeUrl =  "";
     public static IoTSDKManager ioTSDKManager = null;
     
     public static boolean init = false;
@@ -75,9 +82,14 @@ public class TuyaUtils {
         ioTSDKManager.sendDP(dpEvents);
     }
 
-    public static void initSDK(Context ctx,String version) {
+    public static void cancelBind(){
+        init = false;
+        ioTSDKManager.reset();
 
-        Log.init(ctx, "/sdcard/tuya_log/iot_demo/", 3);
+    }
+
+
+    public static void baseInitSDK(Context ctx,String version) {
 
         ioTSDKManager = new IoTSDKManager(ctx) {
             @Override
@@ -100,14 +112,20 @@ public class TuyaUtils {
                     public void onDpEvent(DPEvent event) {
                         if (event != null) {
                             output("收到 dp: " + event);
-
+                            if(event.dpid == TuyaDps.RECIPE_NUM){
+                                CommonUtils.INSTANCE.navigateToRemoteRecipe((String) event.value);
+                            }
                         }
+
+
                     }
 
                     @Override
                     public void onReset() {
 
                         ctx.getSharedPreferences("event_cache", MODE_PRIVATE).edit().clear().commit();
+                        PowerManager pm = (PowerManager) ctx.getSystemService(Context.POWER_SERVICE);
+                        pm.reboot("");
 
                     }
 
@@ -119,7 +137,7 @@ public class TuyaUtils {
                         String url = (String) d.get("shortUrl");
                         qrcodeUrl = url;
                         MMkvUtils.INSTANCE.save("tuya_url",url);
-
+                        EventBus.getDefault().post(new TuyaUtils());
                     }
 
                     @Override
@@ -201,5 +219,12 @@ public class TuyaUtils {
         });
     }
 
+    public static void initSDK(Context ctx,String version) {
+        context = ctx;
+        version = version;
+        Log.init(ctx, "/sdcard/tuya_log/iot_demo/", 3);
+        baseInitSDK(ctx,version);
+    }
+
 
 }

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

@@ -297,4 +297,7 @@ Nanfang plus client is an online information platform developed and operated by
     <string name="no_net_error">Please connect to Wifi</string>
     <string name="no_login">Veuillez saisir les champs ci-dessus pour vous connecter</string>
     <string name="wrong_captcha">Wrong captcha</string>
+    <string name="sao_ma_pei_wang">Please scan the QR code for network configuration.</string>
+    <string name="cancel_tuya_bind">Cancel Bind</string>
+
 </resources>

+ 12 - 8
BusinessSetting/src/main/java/com/develop/setting/ui/TuyaActivity.kt

@@ -17,6 +17,7 @@ import com.tuya.smartai.iot_sdk.IoTSDKManager.IoTCallback
 import kotlinx.serialization.json.Json
 import kotlinx.serialization.json.JsonElement
 import kotlinx.serialization.json.jsonObject
+import org.greenrobot.eventbus.Subscribe
 import org.json.JSONObject
 import java.util.Objects
 import java.util.Observable
@@ -40,30 +41,33 @@ class TuyaActivity : CommonBindingActivity<ActivityTuyaBinding>() {
 
     override fun onCreate(savedInstanceState: Bundle?) {
 
-
-
-
         super.onCreate(savedInstanceState)
         binding.ivClose.setOnClickListener {
 
             finish()
         }
         binding.tvTitle.updateText(getString(com.develop.common.R.string.tuya))
-        binding.tuyaQrcode.setOnClickListener {
-            println("hello")
-            (ioTSDKManager as IoTSDKManager).destroy()
-        }
 
-        if(TuyaUtils.qrcodeUrl != ""){
+        if(TuyaUtils.qrcodeUrl != "" && !TuyaUtils.init){
             ThreadUtils.runOnMainThread {
                 val bitmap = QRCodeUtils.createQRCodeBitmap(TuyaUtils.qrcodeUrl, 500, 500)
                 binding.tuyaQrcode.setImageBitmap(bitmap)
                 binding.tuyaQrcode.visibility = View.VISIBLE
             }
+        }else{
+                binding.cancelWrapper.visibility = View.VISIBLE
+                binding.cancelBtn.setOnClickListener{
+                    TuyaUtils.cancelBind()
+                }
         }
 
 
+    }
+
 
+    @Subscribe
+    fun onTuyaStateChange(event:TuyaUtils){
+        println("adasdasd")
     }
 
 

+ 31 - 0
BusinessSetting/src/main/res/layout/activity_tuya.xml

@@ -29,6 +29,37 @@
         android:gravity="center"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
+
+            <RelativeLayout
+                android:visibility="invisible"
+                android:id="@+id/cancel_wrapper"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content">
+
+                <LinearLayout
+                    android:id="@+id/cancel_btn"
+                    android:layout_width="wrap_content"
+                    android:paddingEnd="@dimen/convert_24px"
+                    android:paddingStart="@dimen/convert_24px"
+                    android:paddingTop="@dimen/convert_12px"
+                    android:paddingBottom="@dimen/convert_12px"
+                    android:layout_height="wrap_content"
+                    android:background="@drawable/search_stroke"
+                    android:layout_marginEnd="@dimen/convert_24px"
+                    android:layout_centerVertical="true"
+                    android:visibility="visible"
+                    android:orientation="horizontal">
+                    <androidx.appcompat.widget.AppCompatTextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/cancel_tuya_bind"
+                        android:textColor="@color/policy_agree_tip"
+                        android:textSize="@dimen/convert_16px" />
+                </LinearLayout>
+
+
+            </RelativeLayout>
+
             <ImageView
                 android:visibility="gone"
                 android:background="@color/white"

+ 8 - 2
app/build.gradle

@@ -12,7 +12,7 @@ ext{
 
     versionCode=Integer.parseInt(new SimpleDateFormat("yyMMddHH").format(new Date()) + 1)
 //    versionCode=230617180
-    brandCode="010D"
+    brandCode="011A"
     model="1039"
 }
 
@@ -61,10 +61,16 @@ android {
     }
     flavorDimensions "platform"
     productFlavors {
+        brand011ATuya {
+            dimension "platform"
+            applicationId "com.develop.foodcooking"
+            buildConfigField("String", "UpdatePlatform", "\"normal\"")
+
+        }
         brand010D {
             dimension "platform"
             applicationId "com.develop.foodcooking"
-            buildConfigField("String", "UpdatePlatform", "\"night\"")
+            buildConfigField("String", "UpdatePlatform", "\"normal\"")
 
         }
 

+ 2 - 2
app/src/main/AndroidManifest.xml

@@ -42,14 +42,14 @@
         android:requestLegacyExternalStorage="true"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
-        android:theme="@style/SplashNightTheme"
+        android:theme="@style/SplashTheme"
         android:largeHeap="true"
         tools:targetApi="31">
         <activity
             android:screenOrientation="landscape"
             android:name=".MainActivity"
             android:exported="true"
-            android:theme="@style/SplashNightTheme">
+            android:theme="@style/SplashTheme">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.HOME" />

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

@@ -13,6 +13,7 @@ import com.develop.base.util.MMkvUtils
 import com.develop.common.router.Screens
 import com.develop.common.tag.FIRST_IN
 import com.develop.common.ui.CommonBindingActivity
+import com.develop.common.utils.ConfigUtils
 import com.develop.common.utils.TuyaUtils
 import com.develop.foodcooking.databinding.ActivityMainBinding
 import com.tuya.smartai.iot_sdk.BuildConfig
@@ -36,7 +37,14 @@ class MainActivity : CommonBindingActivity<ActivityMainBinding>() {
         }
 //        this.initSDK()
         //初始化涂鸦
-        TuyaUtils.initSDK(this,"1.0.0")
+       var tuyaConfig =  ConfigUtils.loadTuyaConfig()
+        if(tuyaConfig != null){
+            TuyaUtils.mAk = tuyaConfig.get("ak")
+            TuyaUtils.mPid = tuyaConfig.get("pid")
+            TuyaUtils.mUid = tuyaConfig.get("uid")
+            TuyaUtils.initSDK(this,"1.0.0")
+        }
+
         finish()
     }