Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	demo/build.gradle
#	demo/src/main/java/com/sybotan/android/demo/activities/GraphyActivity.kt
#	demo/src/main/java/com/sybotan/android/demo/activities/PocActivity.kt
lihao1 3 years ago
parent
commit
66128b9ec3
36 changed files with 405 additions and 266 deletions
  1. 17 8
      build.gradle
  2. 11 8
      cadengine/build.gradle
  3. 44 32
      demo/build.gradle
  4. 4 0
      demo/src/main/java/com/framework/app/api/Api.kt
  5. 3 0
      demo/src/main/java/com/framework/app/base/IRepository.kt
  6. 20 0
      demo/src/main/java/com/framework/app/http/Request.kt
  7. 22 0
      demo/src/main/java/com/framework/app/http/Respose.kt
  8. 2 0
      demo/src/main/java/com/framework/di/Di.kt
  9. 1 11
      demo/src/main/java/com/sybotan/android/demo/activities/BaseActivity.java
  10. 146 31
      demo/src/main/java/com/sybotan/android/demo/activities/GraphyActivity.kt
  11. 2 2
      demo/src/main/java/com/sybotan/android/demo/activities/MainActivity.kt
  12. 2 0
      demo/src/main/java/com/sybotan/android/demo/activities/PocActivity.kt
  13. 2 1
      demo/src/main/java/com/sybotan/android/demo/activities/WebViewActivity.kt
  14. 1 1
      demo/src/main/java/com/sybotan/android/demo/activities/poc/DeviceActivity.kt
  15. 2 2
      demo/src/main/java/com/sybotan/android/demo/activities/poc/RecordInfoActivity.kt
  16. 6 6
      demo/src/main/java/com/sybotan/android/demo/activities/poc/SceneActivity.kt
  17. 2 2
      demo/src/main/java/com/sybotan/android/demo/activities/poc/SpaceActivity.kt
  18. 2 1
      demo/src/main/java/com/sybotan/android/demo/adapter/BaseRecyclerViewAdapter.java
  19. 1 1
      demo/src/main/java/com/sybotan/android/demo/retrofit/IViewModelAction.java
  20. 3 5
      demo/src/main/java/com/sybotan/android/demo/viewmodel/BaseViewModel.java
  21. 2 3
      demo/src/main/java/com/zbar/lib/CaptureActivity.java
  22. 15 14
      demo/src/main/res/layout/activity_device.xml
  23. 4 4
      demo/src/main/res/layout/activity_device_type.xml
  24. 1 1
      demo/src/main/res/layout/activity_graphy.xml
  25. 7 6
      demo/src/main/res/layout/activity_poc.xml
  26. 5 5
      demo/src/main/res/layout/activity_record_info.xml
  27. 6 6
      demo/src/main/res/layout/activity_relation.xml
  28. 6 4
      demo/src/main/res/layout/activity_scene.xml
  29. 4 4
      demo/src/main/res/layout/activity_space.xml
  30. 2 2
      demo/src/main/res/layout/child_expand_space.xml
  31. 2 2
      demo/src/main/res/layout/group_expand_space.xml
  32. 2 2
      demo/src/main/res/layout/item_device.xml
  33. 2 2
      demo/src/main/res/layout/item_relation.xml
  34. 2 2
      demo/src/main/res/layout/item_tree.xml
  35. 51 97
      gradle.properties
  36. 1 1
      gradle/wrapper/gradle-wrapper.properties

+ 17 - 8
build.gradle

@@ -27,9 +27,9 @@ version SAGA_ANDROID_VERSION
 buildscript {
     repositories {
 
-        maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
+      /*  maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
         maven { url 'https://maven.aliyun.com/repository/google' }
-        maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
+        maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }*/
         mavenCentral()
         jcenter()
         google()
@@ -37,9 +37,12 @@ buildscript {
 
     }
     dependencies {
-        classpath group: 'com.android.tools.build', name: 'gradle', version: GRADLE_VERSION
-        classpath group: 'org.jetbrains.kotlin', name: 'kotlin-gradle-plugin', version: KOTLIN_VERSION
-        classpath group: 'org.jetbrains.kotlin', name: 'kotlin-android-extensions', version: KOTLIN_VERSION
+        classpath "com.android.tools.build:gradle:7.0.2"
+        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31"
+
+        // classpath group: 'com.android.tools.build', name: 'gradle', version: GRADLE_VERSION
+        // classpath group: 'org.jetbrains.kotlin', name: 'kotlin-gradle-plugin', version: KOTLIN_VERSION
+        // classpath group: 'org.jetbrains.kotlin', name: 'kotlin-android-extensions', version: KOTLIN_VERSION
         classpath group: 'org.jetbrains.dokka', name: 'dokka-android-gradle-plugin', version: DOKKA_VERSION
     }
 }
@@ -47,10 +50,16 @@ buildscript {
 allprojects {
     repositories {
         mavenCentral()
-        maven { url MAVEN_REPO_PUBLIC_URL }
-        maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
+        maven {
+            allowInsecureProtocol = true
+            url MAVEN_REPO_PUBLIC_URL }
+        maven {
+            allowInsecureProtocol = true
+            url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
         maven { url 'https://maven.aliyun.com/repository/google' }
-        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
+        maven {
+            allowInsecureProtocol = true
+            url 'http://maven.aliyun.com/nexus/content/groups/public/' }
 
         jcenter()
         google()

+ 11 - 8
cadengine/build.gradle

@@ -29,11 +29,10 @@ apply plugin: 'kotlin-android'
 apply plugin: 'kotlin-android-extensions'
 
 apply plugin: 'org.jetbrains.dokka-android'
-apply plugin: 'maven'
+//apply plugin: 'maven'
 
 android {
     compileSdkVersion ANDROID_SDK_VERSION.toInteger()
-    buildToolsVersion ANDROID_BUILD_TOOLS_VERSION
 
 
     defaultConfig {
@@ -42,7 +41,7 @@ android {
         versionCode SAGA_CODE.toInteger()
         versionName SAGA_ANDROID_VERSION
 
-        testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
+        testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
 
     }
 
@@ -72,10 +71,14 @@ dependencies {
 
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // android支持
-    implementation group: 'com.android.support', name: 'appcompat-v7', version: ANDROID_SUPPORT_VERSION
-    implementation group: 'com.android.support', name: 'design', version: ANDROID_SUPPORT_VERSION
+    implementation 'androidx.core:core-ktx:1.5.0'
+    implementation 'androidx.appcompat:appcompat:1.3.1'
+    implementation 'com.google.android.material:material:1.3.0'
+    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+    // implementation group: 'androidx.appcompat', name: 'appcompat', version: ANDROID_SUPPORT_VERSION
+    // implementation group: 'com.google.android.material', name: 'material', version: ANDROID_SUPPORT_VERSION
     // implementation group: 'com.android.support', name: 'support-v4', version: ANDROID_SUPPORT_VERSION
-    implementation group: 'com.android.support.constraint', name: 'constraint-layout', version: CONSTRAINT_VERSION
+    // implementation group: 'androidx.constraintlayout', name: 'constraintlayout', version: CONSTRAINT_VERSION
 
     // anko依赖
     // https://mvnrepository.com/artifact/org.jetbrains.anko/anko-commons
@@ -137,7 +140,7 @@ artifacts {
     // archives javadocJar
 }
 
-uploadArchives {
+/*uploadArchives {
     repositories {
         mavenDeployer {
             pom.groupId = project.group
@@ -169,4 +172,4 @@ uploadArchives {
             }
         }
     }
-}
+}*/

+ 44 - 32
demo/build.gradle

@@ -21,21 +21,30 @@
  * ********************************************************************************************************************
  */
 
-apply plugin: 'com.android.application'
+/*apply plugin: 'com.android.application'
 apply plugin: 'kotlin-android'
-apply plugin: 'kotlin-android-extensions'
+apply plugin: 'kotlin-android-extensions'*/
+plugins {
+    id 'com.android.application'
+    id 'kotlin-android'
+   /// id 'kotlin-android-extensions'
+    // kotlin("kapt")
+    id 'org.jetbrains.kotlin.kapt'
+    id 'kotlin-parcelize'
+    id 'org.jetbrains.kotlin.plugin.serialization' version '1.5.31'
+}
 
 android {
-    compileSdkVersion ANDROID_SDK_VERSION.toInteger()
-    buildToolsVersion ANDROID_BUILD_TOOLS_VERSION
+    compileSdkVersion 30
+    // buildToolsVersion ANDROID_BUILD_TOOLS_VERSION
 
     defaultConfig {
-        minSdkVersion ANDROID_MIN_SDK_VERSION.toInteger()
-        targetSdkVersion ANDROID_SDK_VERSION.toInteger()
+        minSdkVersion 28
+        targetSdkVersion 30
         versionCode SAGA_CODE.toInteger()
         versionName SAGA_ANDROID_VERSION
 
-        testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
+        testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
         vectorDrawables.useSupportLibrary = true
         multiDexEnabled true
         ndk {
@@ -76,11 +85,9 @@ android {
 
 dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
-    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
     implementation files('libs/zbardecoder.jar')
-    implementation files('libs/tbs_sdk_thirdapp_v4.3.0.67_43967_sharewithdownloadwithfile_withoutGame_obfs_20200923_120452.jar')
     testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: JUNIT_VERSION
-    androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.2', {
+    androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', {
         exclude group: 'com.android.support', module: 'support-annotations'
     })
 
@@ -90,10 +97,15 @@ dependencies {
 
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // android支持
-    implementation group: 'com.android.support', name: 'appcompat-v7', version: ANDROID_SUPPORT_VERSION
-    implementation group: 'com.android.support', name: 'design', version: ANDROID_SUPPORT_VERSION
-    implementation group: 'com.android.support', name: 'support-v4', version: ANDROID_SUPPORT_VERSION
-    implementation group: 'com.android.support.constraint', name: 'constraint-layout', version: CONSTRAINT_VERSION
+    implementation 'androidx.core:core-ktx:1.5.0'
+    implementation 'androidx.appcompat:appcompat:1.3.1'
+    implementation 'com.google.android.material:material:1.3.0'
+    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+
+    // implementation group: 'androidx.appcompat', name: 'appcompat', version: ANDROID_SUPPORT_VERSION
+    // implementation group: 'com.google.android.material', name: 'material', version: ANDROID_SUPPORT_VERSION
+    // implementation group: 'androidx.legacy', name: 'legacy-support-v4', version: ANDROID_SUPPORT_VERSION
+    // implementation group: 'androidx.constraintlayout', name: 'constraintlayout', version: CONSTRAINT_VERSION
 
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // anko依赖
@@ -148,20 +160,20 @@ dependencies {
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // Sybotan依赖
     implementation group: 'cn.sagacloud', name: 'saga-kotlin-base', version: SAGA_KOTLIN_VERSION
-    implementation project(':sybotan-android-base')
-    implementation project(':sybotan-android-database')
-    implementation project(':sybotan-android-devices')
-    implementation project(':sybotan-android-views')
-    implementation project(':sybotan-android-graphy')
-    implementation project(':sybotan-android-works')
+//    implementation project(':sybotan-android-base')
+//    implementation project(':sybotan-android-database')
+//    implementation project(':sybotan-android-devices')
+//    implementation project(':sybotan-android-views')
+//    implementation project(':sybotan-android-graphy')
+//    implementation project(':sybotan-android-works')
     implementation project(':cadengine')
     // Sybotan依赖
-//    implementation group: 'cn.sagacloud', name: 'saga-kotlin-database', version: SAGA_KOTLIN_VERSION
-//    implementation group: 'cn.sagacloud', name: 'sybotan-android-base', version: SYBOTAN_ANDROID_VERSION
-//    implementation group: 'cn.sagacloud', name: 'sybotan-android-graphy', version: SYBOTAN_ANDROID_VERSION
-    implementation 'androidx.multidex:multidex:2.0.0'
-    implementation 'io.reactivex.rxjava2:rxjava:2.1.1'
-    implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
+    implementation group: 'cn.sagacloud', name: 'saga-kotlin-database', version: SAGA_KOTLIN_VERSION
+    implementation group: 'cn.sagacloud', name: 'sybotan-android-base', version: SYBOTAN_ANDROID_VERSION
+    implementation group: 'cn.sagacloud', name: 'sybotan-android-graphy', version: SYBOTAN_ANDROID_VERSION
+    implementation 'androidx.multidex:multidex:2.0.1'
+    implementation 'io.reactivex.rxjava2:rxjava:2.2.9'
+    implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
     implementation 'com.trello.rxlifecycle2:rxlifecycle:2.2.1'
     implementation 'com.trello.rxlifecycle2:rxlifecycle-android:2.2.1'
     implementation 'com.trello.rxlifecycle2:rxlifecycle-components:2.2.1'
@@ -170,10 +182,10 @@ dependencies {
     implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
     implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0'
 
-    implementation 'com.arashivision.sdk:sdkcamera:1.3.10'
-    implementation 'com.arashivision.sdk:sdkmedia:1.3.10'
-    implementation 'com.lzy.net:okgo:3.0.4'
-    implementation 'com.afollestad.material-dialogs:core:0.9.6.0'
-//    implementation 'com.yanzhenjie.permission:x:2.0.1'
-//    implementation 'me.rosuh:AndroidFilePicker:0.6.7-x'
+    implementation 'org.kodein.di:kodein-di:7.8.0'
+    implementation 'org.kodein.di:kodein-di-framework-android-support:7.8.0'
+    //implementation 'org.kodein.di:kodein-di-framework-android-x-viewmodel:7.8.0'
+    implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.0-RC'
+
+
 }

+ 4 - 0
demo/src/main/java/com/framework/app/api/Api.kt

@@ -0,0 +1,4 @@
+package com.framework.app.api
+
+interface Api {
+}

+ 3 - 0
demo/src/main/java/com/framework/app/base/IRepository.kt

@@ -0,0 +1,3 @@
+package com.framework.app.base
+
+interface IRepository

+ 20 - 0
demo/src/main/java/com/framework/app/http/Request.kt

@@ -0,0 +1,20 @@
+package com.framework.app.http
+
+
+/**
+ * 发起网络请求, 封装返回结果
+ *
+ * @param         block : 实际请求数据的函数, 是挂起函数
+ * @return  Response<T> : 封装 block() 结果
+ * */
+suspend fun <T> request(block: suspend () -> T): Response<T> {
+    var result: Response<T> = EmptyResponse()
+    runCatching {
+        block()
+    }.onSuccess {
+        result = Response.create(it)
+    }.onFailure {
+        result = Response.create(it)
+    }
+    return result
+}

+ 22 - 0
demo/src/main/java/com/framework/app/http/Respose.kt

@@ -0,0 +1,22 @@
+package com.framework.app.http
+
+/**
+ * 封装网络返回的数据
+ */
+sealed class Response<T> {
+    companion object {
+        fun <T> create(t: Throwable): FailureResponse<T> {
+            return FailureResponse(t.message ?: "you know nothing")
+        }
+
+        fun <T> create(data: T): Response<T> {
+            return SuccessResponse(data)
+        }
+
+        fun <T> create(): Response<T> = EmptyResponse()
+    }
+}
+
+class EmptyResponse<T> : Response<T>()
+data class SuccessResponse<T>(val data: T) : Response<T>()
+data class FailureResponse<T>(val msg: String) : Response<T>()

+ 2 - 0
demo/src/main/java/com/framework/di/Di.kt

@@ -0,0 +1,2 @@
+package com.framework.di
+

+ 1 - 11
demo/src/main/java/com/sybotan/android/demo/activities/BaseActivity.java

@@ -1,19 +1,9 @@
 package com.sybotan.android.demo.activities;
 
-import android.annotation.TargetApi;
-import android.content.pm.ActivityInfo;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.text.TextUtils;
-import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
-import android.widget.Toast;
 
 import com.trello.rxlifecycle2.components.support.RxAppCompatActivity;
 
-import java.util.List;
-
 /**
  * Created by lihao.
  * Date: 2021/6/8
@@ -21,7 +11,7 @@ import java.util.List;
 public class BaseActivity extends RxAppCompatActivity {
 
     @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
+    protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
     }

+ 146 - 31
demo/src/main/java/com/sybotan/android/demo/activities/GraphyActivity.kt

@@ -40,6 +40,10 @@ import android.webkit.WebView
 import android.webkit.WebViewClient
 import android.widget.TextView
 import android.widget.Toast
+import android.widget.*
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import cn.sagacloud.android.cadengine.FloorScene
 import cn.sagacloud.android.cadengine.Lasso
 import cn.sagacloud.android.cadengine.Opt
@@ -61,11 +65,12 @@ import com.sybotan.android.demo.adapter.PipeAdapter
 import com.sybotan.android.demo.bean.result.*
 import com.sybotan.android.demo.retrofit.BaseViewModelInterface
 import com.sybotan.android.demo.tools.DensityUtils
+import com.sybotan.android.demo.tools.WordWrapView
 import com.sybotan.android.demo.tools.NetworkManager
 import com.sybotan.android.demo.viewmodel.GraphyVM
+import com.sybotan.android.graphy.SGraphyView
 import com.sybotan.android.graphy.events.SGraphyViewMoveEvent
 import com.zbar.lib.CaptureActivity
-import kotlinx.android.synthetic.main.activity_graphy.*
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import org.jetbrains.anko.doAsync
@@ -137,6 +142,53 @@ class GraphyActivity : BaseActivity(), ICaptureStatusListener, ICameraChangedCal
 
     } // test()
 
+    private lateinit var graphyView: SGraphyView
+    private lateinit var quesDetail: RelativeLayout
+    private lateinit var spaceStructure: LinearLayout
+    private lateinit var spaceName: TextView
+    private lateinit var spaceName2: TextView
+    private lateinit var equipLl:LinearLayout
+    private lateinit var drawLl:LinearLayout
+    private lateinit var equipLocation:TextView
+    private lateinit var qrcodeLl:LinearLayout
+    private lateinit var addDot:TextView
+    private lateinit var nfc:TextView
+    private lateinit var qrcodeLocation:TextView
+    private lateinit var modelCheckBox: CheckBox
+    private lateinit var modelSubmit: TextView
+    private lateinit var sceneCheckBox: CheckBox
+    private lateinit var sceneSubmit: TextView
+    private lateinit var codeEdit: EditText
+    private lateinit var qrcode: TextView
+    private lateinit var qrcodeCancel: TextView
+    private lateinit var pipeCancel: TextView
+    private lateinit var pipeLl: LinearLayout
+    private lateinit var qrcodeNext: TextView
+    private lateinit var pipeNext: TextView
+    private lateinit var pipeEdit: EditText
+    private lateinit var drawEquip: EditText
+    private lateinit var drawPipe: TextView
+    private lateinit var piprRv: RecyclerView
+    private lateinit var equipCancel: TextView
+    private lateinit var equipNext: TextView
+    private lateinit var equipEdit: EditText
+    private lateinit var equipRg: RadioGroup
+    private lateinit var eqSpServe: TextView
+    private lateinit var eqEqCtrl: TextView
+    private lateinit var eqEqSs: TextView
+    private lateinit var eqEqPower: TextView
+    private lateinit var eqEqVv: TextView
+    private lateinit var eqPipeCnct: TextView
+    private lateinit var equipWwv: WordWrapView
+    private lateinit var pipeWwv: WordWrapView
+    private lateinit var roof : RadioButton
+    private lateinit var floor: RadioButton
+    private lateinit var wall: RadioButton
+    private lateinit var air: RadioButton
+    private lateinit var quesTv: TextView
+    private lateinit var quesSubmit: TextView
+    private lateinit var qrcodeEdit: EditText
+
     /**
      * 创建Activity时的回调函数
      *
@@ -147,6 +199,8 @@ class GraphyActivity : BaseActivity(), ICaptureStatusListener, ICameraChangedCal
         setContentView(R.layout.activity_graphy)
         // 注册eventbus
         EventBus.getDefault().register(this)
+        initView()
+
         /** 初始化数据 */
         initData()
         InstaCameraManager.getInstance().registerCameraChangedCallback(this)
@@ -255,15 +309,66 @@ class GraphyActivity : BaseActivity(), ICaptureStatusListener, ICameraChangedCal
     }
 
 
+    private fun initView() {
+        graphyView = findViewById(R.id.graphyView)
+        quesDetail = findViewById(R.id.quesDetail)
+        quesDetail = findViewById(R.id.quesDetail)
+        spaceStructure = findViewById(R.id.spaceStructure)
+        spaceName = findViewById(R.id.spaceName)
+        spaceName2 = findViewById(R.id.spaceName2)
+        equipLl = findViewById(R.id.equipLl)
+        drawLl = findViewById(R.id.drawLl)
+        equipLocation = findViewById(R.id.equipLocation)
+        qrcodeLl = findViewById(R.id.qrcodeLl)
+        addDot = findViewById(R.id.addDot)
+        nfc = findViewById(R.id.nfc)
+        qrcodeLocation = findViewById(R.id.qrcodeLocation)
+        modelCheckBox = findViewById(R.id.modelCheckBox)
+        modelSubmit = findViewById(R.id.modelSubmit)
+        sceneCheckBox = findViewById(R.id.sceneCheckBox)
+        sceneSubmit = findViewById(R.id.sceneSubmit)
+        codeEdit = findViewById(R.id.codeEdit)
+        qrcode = findViewById(R.id.qrcode)
+        qrcodeCancel = findViewById(R.id.qrcodeCancel)
+        pipeCancel = findViewById(R.id.pipeCancel)
+        pipeLl = findViewById(R.id.pipeLl)
+        qrcodeNext = findViewById(R.id.qrcodeNext)
+        pipeNext = findViewById(R.id.pipeNext)
+        pipeEdit = findViewById(R.id.pipeEdit)
+        drawEquip = findViewById(R.id.drawEquip)
+        drawPipe = findViewById(R.id.drawPipe)
+        piprRv = findViewById(R.id.piprRv)
+        equipCancel = findViewById(R.id.equipCancel)
+        equipNext = findViewById(R.id.equipNext)
+        equipEdit = findViewById(R.id.equipEdit)
+        equipRg = findViewById(R.id.equipRg)
+        eqSpServe = findViewById(R.id.eqSpServe)
+        eqEqCtrl = findViewById(R.id.eqEqCtrl)
+        eqEqSs = findViewById(R.id.eqEqSs)
+        eqEqPower = findViewById(R.id.eqEqPower)
+        eqEqVv = findViewById(R.id.eqEqVv)
+        eqPipeCnct = findViewById(R.id.eqPipeCnct)
+        equipWwv = findViewById(R.id.equipWwv)
+        pipeWwv = findViewById(R.id.pipeWwv)
+        roof = findViewById(R.id.roof)
+        floor= findViewById(R.id.floor)
+        wall= findViewById(R.id.wall)
+        air = findViewById(R.id.air)
+        quesTv = findViewById(R.id.quesTv)
+        quesSubmit = findViewById(R.id.quesSubmit)
+        qrcodeEdit = findViewById(R.id.qrcodeEdit)
+
+    }
+
     /**
      * 初始化数据
      */
     private fun initData() {
-        val floor = intent.getBundleExtra("floor")
-        buildingId = floor.getString("buildingId")
-        floorId = floor.getString("floorId")
-        floorMap = floor.getString("floorMap")
-        from = floor.getString("from")
+        val floor = intent.getBundleExtra("floor")!!
+        buildingId = floor.getString("buildingId")!!
+        floorId = floor.getString("floorId")!!
+        floorMap = floor.getString("floorMap")!!
+        from = floor.getString("from")!!
     }
 
 
@@ -389,10 +494,10 @@ class GraphyActivity : BaseActivity(), ICaptureStatusListener, ICameraChangedCal
                     realDistance = distance * scene.defaultPointScale / graphyView.scale
                     for (point in scene.pointItemList) {
                         val sqrt = Math.sqrt(
-                                Math.pow(
-                                        Math.abs(x - point.data.mX).toDouble(),
-                                        2.0
-                                ) + Math.pow(Math.abs(y - point.data.mY).toDouble(), 2.0)
+                            Math.pow(
+                                Math.abs(x - point.data.mX).toDouble(),
+                                2.0
+                            ) + Math.pow(Math.abs(y - point.data.mY).toDouble(), 2.0)
                         ).toInt()
                         if (sqrt < realDistance) {
                             showDotDetail(point)
@@ -402,13 +507,17 @@ class GraphyActivity : BaseActivity(), ICaptureStatusListener, ICameraChangedCal
 
                     for (point in scene.equipList) {
                         val sqrt = Math.sqrt(
-                                Math.pow(
-                                        Math.abs(x - point.data.mX).toDouble(),
-                                        2.0
-                                ) + Math.pow(Math.abs(y - point.data.mY).toDouble(), 2.0)
+                            Math.pow(
+                                Math.abs(x - point.data.mX).toDouble(),
+                                2.0
+                            ) + Math.pow(Math.abs(y - point.data.mY).toDouble(), 2.0)
                         ).toInt()
                         if (sqrt < realDistance) {
-                            Toast.makeText(this@GraphyActivity, "${point.data.type}\n${point.data.remark}\n${point.data.position}", Toast.LENGTH_LONG).show()
+                            Toast.makeText(
+                                this@GraphyActivity,
+                                "${point.data.type}\n${point.data.remark}\n${point.data.position}",
+                                Toast.LENGTH_LONG
+                            ).show()
                             break
                         }
                     }
@@ -792,10 +901,12 @@ class GraphyActivity : BaseActivity(), ICaptureStatusListener, ICameraChangedCal
                             setOnClickListener {
                                 model.isCheck = !model.isCheck
                                 if (model.isCheck) {
-                                    textview.background = resources.getDrawable(R.drawable.shape_filter_normal)
+                                    textview.background =
+                                        resources.getDrawable(R.drawable.shape_filter_normal)
                                     textview.textColor = resources.getColor(R.color.grey_900)
                                 } else {
-                                    textview.background = resources.getDrawable(R.drawable.shape_filter_selected)
+                                    textview.background =
+                                        resources.getDrawable(R.drawable.shape_filter_selected)
                                     textview.textColor = resources.getColor(R.color.white)
                                 }
                                 refreshEquip(list)
@@ -846,19 +957,23 @@ class GraphyActivity : BaseActivity(), ICaptureStatusListener, ICameraChangedCal
                         textview.textSize = 12f
                         textview.height = DensityUtils.dp2px(this, 30f)
                         if (model.isCheck) {
-                            textview.background = resources.getDrawable(R.drawable.shape_filter_normal)
+                            textview.background =
+                                resources.getDrawable(R.drawable.shape_filter_normal)
                             textview.textColor = resources.getColor(R.color.grey_900)
                         } else {
-                            textview.background = resources.getDrawable(R.drawable.shape_filter_selected)
+                            textview.background =
+                                resources.getDrawable(R.drawable.shape_filter_selected)
                             textview.textColor = resources.getColor(R.color.white)
                         }
                         textview.setOnClickListener {
                             model.isCheck = !model.isCheck
                             if (model.isCheck) {
-                                textview.background = resources.getDrawable(R.drawable.shape_filter_normal)
+                                textview.background =
+                                    resources.getDrawable(R.drawable.shape_filter_normal)
                                 textview.textColor = resources.getColor(R.color.grey_900)
                             } else {
-                                textview.background = resources.getDrawable(R.drawable.shape_filter_selected)
+                                textview.background =
+                                    resources.getDrawable(R.drawable.shape_filter_selected)
                                 textview.textColor = resources.getColor(R.color.white)
                             }
                             refreshPipe(spacePipeModel)
@@ -1047,11 +1162,11 @@ class GraphyActivity : BaseActivity(), ICaptureStatusListener, ICameraChangedCal
         spaceStructure.visibility = View.GONE
         quesDetail.visibility = View.VISIBLE
         quesTv.setText(
-                "这是描述问题的文本,左侧是拍照图片。" +
-                        "\n问题编码:${point.data.id}" +
-                        "\nx轴:${point.data.mX}" +
-                        "\ny轴:${point.data.mY}" +
-                        "\n点击下方“问题已解决”按钮后可关闭该问题点。"
+            "这是描述问题的文本,左侧是拍照图片。" +
+                    "\n问题编码:${point.data.id}" +
+                    "\nx轴:${point.data.mX}" +
+                    "\ny轴:${point.data.mY}" +
+                    "\n点击下方“问题已解决”按钮后可关闭该问题点。"
         )
         quesTv.setOnClickListener {
 //            Toast.makeText(this@GraphyActivity, InstaCameraManager.getInstance(). + "======", Toast.LENGTH_LONG).show()
@@ -1085,13 +1200,13 @@ class GraphyActivity : BaseActivity(), ICaptureStatusListener, ICameraChangedCal
                     if (data != null) {
                         //获取扫描结果
                         val bundle = data.extras
-                        val result = bundle.getString(CaptureActivity.EXTRA_STRING)
+                        val result = bundle?.getString(CaptureActivity.EXTRA_STRING)
                         Log.e("tag", "扫描结果:$result")
                         graphyVM.bindQrcode(
-                                scene.choseSpace,
-                                result,
-                                scene.point,
-                                qrcodeEdit.text.toString()
+                            scene.choseSpace,
+                            result,
+                            scene.point,
+                            qrcodeEdit.text.toString()
                         )
                     }
                 }

+ 2 - 2
demo/src/main/java/com/sybotan/android/demo/activities/MainActivity.kt

@@ -26,10 +26,10 @@ package com.sybotan.android.demo.activities
 import android.Manifest
 import android.content.Intent
 import android.os.Bundle
+import android.widget.Button
 import com.sybotan.android.base.activities.SBaseActivity
 import com.sybotan.android.base.extensions.immersive
 import com.sybotan.android.demo.R
-import kotlinx.android.synthetic.main.activity_main.*
 import org.jetbrains.anko.startActivity
 
 class MainActivity : BaseActivity() {
@@ -57,7 +57,7 @@ class MainActivity : BaseActivity() {
 //                Manifest.permission.WRITE_EXTERNAL_STORAGE,
 //                Manifest.permission.INTERNET))
 
-        qrcode.setOnClickListener {
+        findViewById<Button>(R.id.qrcode).setOnClickListener {
 //            startActivity<SQrCodeActivity>()
 //            startActivity<SAboutActivity>()
             startActivity<GraphyActivity>()

+ 2 - 0
demo/src/main/java/com/sybotan/android/demo/activities/PocActivity.kt

@@ -5,6 +5,8 @@ import android.os.Bundle
 import android.support.constraint.ConstraintLayout
 import android.support.v4.app.ActivityCompat
 import android.support.v7.app.AppCompatActivity
+import androidx.appcompat.app.AppCompatActivity
+import androidx.constraintlayout.widget.ConstraintLayout
 import com.sybotan.android.demo.R
 import com.sybotan.android.demo.activities.poc.SceneActivity
 import com.sybotan.android.demo.activities.poc.SpaceActivity

+ 2 - 1
demo/src/main/java/com/sybotan/android/demo/activities/WebViewActivity.kt

@@ -24,9 +24,10 @@
 package com.sybotan.android.demo.activities
 
 import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
 import com.sybotan.android.demo.R
+
 //import com.sybotan.android.devices.printer.SLPrinter
-import kotlinx.android.synthetic.main.activity_web_view.*
 
 /**
  * WebView扩展测试Activity

+ 1 - 1
demo/src/main/java/com/sybotan/android/demo/activities/poc/DeviceActivity.kt

@@ -2,11 +2,11 @@ package com.sybotan.android.demo.activities.poc
 
 import android.content.Intent
 import android.os.Bundle
-import android.support.constraint.ConstraintLayout
 import android.view.View
 import android.widget.Button
 import android.widget.ImageView
 import android.widget.TextView
+import androidx.constraintlayout.widget.ConstraintLayout
 import com.sybotan.android.demo.R
 import com.sybotan.android.demo.activities.BaseActivity
 import com.sybotan.android.demo.bean.request.ReqDeviceJob

+ 2 - 2
demo/src/main/java/com/sybotan/android/demo/activities/poc/RecordInfoActivity.kt

@@ -2,10 +2,10 @@ package com.sybotan.android.demo.activities.poc
 
 import android.content.Intent
 import android.os.Bundle
-import android.support.v7.app.AppCompatActivity
-import android.support.v7.widget.AppCompatEditText
 import android.widget.Button
 import android.widget.ImageView
+import androidx.appcompat.app.AppCompatActivity
+import androidx.appcompat.widget.AppCompatEditText
 import com.sybotan.android.demo.R
 import com.sybotan.android.demo.base.SimpleTextWatcher
 

+ 6 - 6
demo/src/main/java/com/sybotan/android/demo/activities/poc/SceneActivity.kt

@@ -3,6 +3,7 @@ package com.sybotan.android.demo.activities.poc
 import android.content.Intent
 import android.os.Bundle
 import android.widget.ExpandableListView
+import android.widget.ImageView
 import com.sybotan.android.demo.R
 import com.sybotan.android.demo.activities.BaseActivity
 import com.sybotan.android.demo.activities.GraphyActivity
@@ -11,17 +12,17 @@ import com.sybotan.android.demo.entitiies.Build
 import com.sybotan.android.demo.entitiies.Floor
 import com.sybotan.android.demo.retrofit.BaseViewModelInterface
 import com.sybotan.android.demo.viewmodel.BuildVM
-import kotlinx.android.synthetic.main.activity_scene.*
 
 class SceneActivity : BaseActivity() {
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_scene)
         val expandLV = findViewById<ExpandableListView>(R.id.expandLv)
         expandLV.setGroupIndicator(null)
-        expandLv.divider = null
+        expandLV.divider = null
 
-        expandLv.setOnChildClickListener { parent, v, groupPosition, childPosition, id ->
+        expandLV.setOnChildClickListener { parent, v, groupPosition, childPosition, id ->
             val floor = mBuilds[groupPosition].floor[childPosition]
             val intent = Intent(this, GraphyActivity::class.java)
             val bundle = Bundle()
@@ -33,8 +34,7 @@ class SceneActivity : BaseActivity() {
             startActivity(intent)
             true
         }
-
-        backIv.setOnClickListener {
+        findViewById<ImageView>(R.id.backIv).setOnClickListener {
             finish()
         }
 
@@ -48,7 +48,7 @@ class SceneActivity : BaseActivity() {
             mBuilds = params as List<Build>
             val floors = sep(mBuilds)
             val adapter = ExpandAdapter(this, mBuilds, floors)
-            expandLv.setAdapter(adapter)
+            findViewById<ExpandableListView>(R.id.expandLv).setAdapter(adapter)
 
         }, this)
         vm.getBuilds()

+ 2 - 2
demo/src/main/java/com/sybotan/android/demo/activities/poc/SpaceActivity.kt

@@ -3,6 +3,7 @@ package com.sybotan.android.demo.activities.poc
 import android.content.Intent
 import android.os.Bundle
 import android.widget.ExpandableListView
+import android.widget.ImageView
 import com.sybotan.android.demo.R
 import com.sybotan.android.demo.activities.BaseActivity
 import com.sybotan.android.demo.activities.GraphyActivity
@@ -11,7 +12,6 @@ import com.sybotan.android.demo.entitiies.Build
 import com.sybotan.android.demo.entitiies.Floor
 import com.sybotan.android.demo.retrofit.BaseViewModelInterface
 import com.sybotan.android.demo.viewmodel.BuildVM
-import kotlinx.android.synthetic.main.activity_scene.*
 
 class SpaceActivity : BaseActivity() {
     private lateinit var expandLv: ExpandableListView
@@ -35,7 +35,7 @@ class SpaceActivity : BaseActivity() {
             startActivity(intent)
             true
         }
-        backIv.setOnClickListener {
+        findViewById<ImageView>(R.id.backIv).setOnClickListener {
             finish()
         }
 

+ 2 - 1
demo/src/main/java/com/sybotan/android/demo/adapter/BaseRecyclerViewAdapter.java

@@ -1,7 +1,6 @@
 package com.sybotan.android.demo.adapter;
 
 import android.content.Context;
-import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
 import android.util.SparseArray;
 import android.view.LayoutInflater;
@@ -12,6 +11,8 @@ import android.view.animation.DecelerateInterpolator;
 import android.widget.TextView;
 
 
+import androidx.recyclerview.widget.RecyclerView;
+
 import java.util.List;
 
 /**

+ 1 - 1
demo/src/main/java/com/sybotan/android/demo/retrofit/IViewModelAction.java

@@ -1,7 +1,7 @@
 package com.sybotan.android.demo.retrofit;
 
 
-import android.arch.lifecycle.MutableLiveData;
+import androidx.lifecycle.MutableLiveData;
 
 /**
  * Created by weimo on 2020/7/13.

+ 3 - 5
demo/src/main/java/com/sybotan/android/demo/viewmodel/BaseViewModel.java

@@ -1,10 +1,9 @@
 package com.sybotan.android.demo.viewmodel;
 
-import android.arch.lifecycle.LifecycleOwner;
-import android.arch.lifecycle.MutableLiveData;
-import android.arch.lifecycle.ViewModel;
-import android.text.TextUtils;
 
+import androidx.lifecycle.LifecycleOwner;
+import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.ViewModel;
 
 import com.google.gson.Gson;
 import com.sybotan.android.demo.activities.BaseActivity;
@@ -15,7 +14,6 @@ import com.sybotan.android.demo.retrofit.BaseViewModelInterface;
 import com.sybotan.android.demo.retrofit.IViewModelAction;
 import com.trello.rxlifecycle2.LifecycleTransformer;
 
-import org.json.JSONException;
 import org.json.JSONObject;
 
 import java.util.ArrayList;

+ 2 - 3
demo/src/main/java/com/zbar/lib/CaptureActivity.java

@@ -14,8 +14,8 @@ import android.os.Binder;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.content.PermissionChecker;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.PermissionChecker;
 import android.util.Log;
 import android.view.SurfaceHolder;
 import android.view.SurfaceView;
@@ -24,7 +24,6 @@ import android.view.animation.Animation;
 import android.view.animation.TranslateAnimation;
 import android.widget.ImageView;
 import android.widget.RelativeLayout;
-import android.widget.TextView;
 
 import com.sybotan.android.demo.R;
 import com.zbar.lib.camera.CameraManager;

+ 15 - 14
demo/src/main/res/layout/activity_device.xml

@@ -1,12 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     tools:context=".activities.poc.DeviceActivity">
 
-    <android.support.constraint.ConstraintLayout
+    <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/topBarCl"
         android:layout_width="match_parent"
         android:layout_height="48dp"
@@ -38,9 +39,9 @@
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
 
-    </android.support.constraint.ConstraintLayout>
+    </androidx.constraintlayout.widget.ConstraintLayout>
 
-    <android.support.constraint.ConstraintLayout
+    <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/bodyCl"
         android:layout_width="0dp"
         android:layout_height="0dp"
@@ -49,7 +50,7 @@
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@id/topBarCl">
 
-        <android.support.constraint.ConstraintLayout
+        <androidx.constraintlayout.widget.ConstraintLayout
             android:id="@+id/positionCl"
             android:layout_width="0dp"
             android:layout_height="48dp"
@@ -113,9 +114,9 @@
                 app:layout_constraintBottom_toBottomOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent" />
-        </android.support.constraint.ConstraintLayout>
+        </androidx.constraintlayout.widget.ConstraintLayout>
 
-        <android.support.constraint.ConstraintLayout
+        <androidx.constraintlayout.widget.ConstraintLayout
             android:id="@+id/deviceCl"
             android:layout_width="0dp"
             android:layout_height="48dp"
@@ -177,9 +178,9 @@
                 app:layout_constraintBottom_toBottomOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent" />
-        </android.support.constraint.ConstraintLayout>
+        </androidx.constraintlayout.widget.ConstraintLayout>
 
-        <android.support.constraint.ConstraintLayout
+        <androidx.constraintlayout.widget.ConstraintLayout
             android:id="@+id/qrCl"
             android:layout_width="0dp"
             android:layout_height="48dp"
@@ -241,9 +242,9 @@
                 app:layout_constraintBottom_toBottomOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent" />
-        </android.support.constraint.ConstraintLayout>
+        </androidx.constraintlayout.widget.ConstraintLayout>
 
-        <android.support.constraint.ConstraintLayout
+        <androidx.constraintlayout.widget.ConstraintLayout
 
             android:id="@+id/infoCl"
             android:layout_width="0dp"
@@ -312,7 +313,7 @@
                 app:layout_constraintBottom_toBottomOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent" />
-        </android.support.constraint.ConstraintLayout>
+        </androidx.constraintlayout.widget.ConstraintLayout>
 
         <Button
             android:id="@+id/saveBtn"
@@ -326,7 +327,7 @@
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent" />
 
-    </android.support.constraint.ConstraintLayout>
+    </androidx.constraintlayout.widget.ConstraintLayout>
 
 
-</android.support.constraint.ConstraintLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 4 - 4
demo/src/main/res/layout/activity_device_type.xml

@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     tools:context=".activities.poc.DeviceTypeActivity">
 
-    <android.support.constraint.ConstraintLayout
+    <androidx.constraintlayout.ConstraintLayout
         android:id="@+id/topBarCl"
         android:layout_width="match_parent"
         android:layout_height="48dp"
@@ -38,7 +38,7 @@
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
 
-    </android.support.constraint.ConstraintLayout>
+    </androidx.constraintlayout.ConstraintLayout>
 
     <ListView
         android:id="@+id/typeLv"
@@ -63,4 +63,4 @@
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@id/typeLv" />
-</android.support.constraint.ConstraintLayout>
+</androidx.constraintlayout.ConstraintLayout>

+ 1 - 1
demo/src/main/res/layout/activity_graphy.xml

@@ -689,7 +689,7 @@
                 android:textColor="@color/grey_900"
                 android:textSize="16sp" />
 
-            <android.support.v7.widget.RecyclerView
+            <androidx.recyclerview.widget.RecyclerView
                 android:id="@+id/piprRv"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content" />

+ 7 - 6
demo/src/main/res/layout/activity_poc.xml

@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-    <android.support.constraint.ConstraintLayout
+    <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/spaceCL"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
@@ -47,9 +48,9 @@
             app:layout_constraintTop_toTopOf="@+id/strIV" />
 
 
-    </android.support.constraint.ConstraintLayout>
+    </androidx.constraintlayout.widget.ConstraintLayout>
 
-    <android.support.constraint.ConstraintLayout
+    <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/sceneCL"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
@@ -91,7 +92,7 @@
             android:textSize="12sp"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintTop_toTopOf="@+id/surIV" />
-    </android.support.constraint.ConstraintLayout>
+    </androidx.constraintlayout.widget.ConstraintLayout>
 
 
-</android.support.constraint.ConstraintLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 5 - 5
demo/src/main/res/layout/activity_record_info.xml

@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     tools:context=".activities.poc.RecordInfoActivity">
 
-    <android.support.constraint.ConstraintLayout
+    <androidx.constraintlayout.ConstraintLayout
         android:id="@+id/topBarCl"
         android:layout_width="match_parent"
         android:layout_height="48dp"
@@ -38,9 +38,9 @@
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
 
-    </android.support.constraint.ConstraintLayout>
+    </androidx.constraintlayout.ConstraintLayout>
 
-    <android.support.v7.widget.AppCompatEditText
+    <androidx.appcompat.widget.AppCompatEditText
         android:id="@+id/recordEt"
         android:layout_width="match_parent"
         android:layout_height="184dp"
@@ -68,4 +68,4 @@
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent" />
-</android.support.constraint.ConstraintLayout>
+</androidx.constraintlayout.ConstraintLayout>

+ 6 - 6
demo/src/main/res/layout/activity_relation.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout
+<androidx.constraintlayout.ConstraintLayout
         xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:tools="http://schemas.android.com/tools"
         xmlns:app="http://schemas.android.com/apk/res-auto"
@@ -7,7 +7,7 @@
         android:layout_height="match_parent"
         tools:context=".activities.poc.RelationActivity">
 
-    <android.support.constraint.ConstraintLayout
+    <androidx.constraintlayout.ConstraintLayout
             android:id="@+id/topBarTv"
             android:layout_width="match_parent"
             android:layout_height="48dp"
@@ -39,9 +39,9 @@
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent"/>
 
-    </android.support.constraint.ConstraintLayout>
+    </androidx.constraintlayout.ConstraintLayout>
 
-    <android.support.constraint.ConstraintLayout
+    <androidx.constraintlayout.ConstraintLayout
             android:id="@+id/relationCl"
             android:layout_width="match_parent"
             android:layout_height="0dp"
@@ -104,7 +104,7 @@
                 app:layout_constraintBottom_toBottomOf="parent"
                 tools:listitem="@layout/item_relation"
         />
-    </android.support.constraint.ConstraintLayout>
+    </androidx.constraintlayout.ConstraintLayout>
 
     <Button
             android:id="@+id/addBtn"
@@ -122,4 +122,4 @@
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintBottom_toBottomOf="parent"
     />
-</android.support.constraint.ConstraintLayout>
+</androidx.constraintlayout.ConstraintLayout>

+ 6 - 4
demo/src/main/res/layout/activity_scene.xml

@@ -1,12 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout
+
+    xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     tools:context=".activities.poc.SpaceActivity">
 
-    <android.support.constraint.ConstraintLayout
+    <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/topBarTv"
         android:layout_width="match_parent"
         android:layout_height="48dp"
@@ -37,7 +39,7 @@
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
 
-    </android.support.constraint.ConstraintLayout>
+    </androidx.constraintlayout.widget.ConstraintLayout>
 
     <ExpandableListView
         android:id="@+id/expandLv"
@@ -48,4 +50,4 @@
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/topBarTv" />
-</android.support.constraint.ConstraintLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 4 - 4
demo/src/main/res/layout/activity_space.xml

@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     tools:context=".activities.poc.SpaceActivity">
 
-    <android.support.constraint.ConstraintLayout
+    <androidx.constraintlayout.ConstraintLayout
         android:id="@+id/topBarTv"
         android:layout_width="match_parent"
         android:layout_height="48dp"
@@ -37,7 +37,7 @@
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
 
-    </android.support.constraint.ConstraintLayout>
+    </androidx.constraintlayout.ConstraintLayout>
 
     <ExpandableListView
         android:id="@+id/expandLv"
@@ -48,4 +48,4 @@
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/topBarTv" />
-</android.support.constraint.ConstraintLayout>
+</androidx.constraintlayout.ConstraintLayout>

+ 2 - 2
demo/src/main/res/layout/child_expand_space.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="48dp">
@@ -40,4 +40,4 @@
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent" />
-</android.support.constraint.ConstraintLayout>
+</androidx.constraintlayout.ConstraintLayout>

+ 2 - 2
demo/src/main/res/layout/group_expand_space.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="wrap_content"
     android:layout_height="56dp">
@@ -17,4 +17,4 @@
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
-</android.support.constraint.ConstraintLayout>
+</androidx.constraintlayout.ConstraintLayout>

+ 2 - 2
demo/src/main/res/layout/item_device.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="48dp">
@@ -15,4 +15,4 @@
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
 
-</android.support.constraint.ConstraintLayout>
+</androidx.constraintlayout.ConstraintLayout>

+ 2 - 2
demo/src/main/res/layout/item_relation.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
                                              android:layout_width="match_parent"
                                              android:layout_height="wrap_content"
                                              xmlns:app="http://schemas.android.com/apk/res-auto">
@@ -23,4 +23,4 @@
           app:layout_constraintEnd_toEndOf="parent"
           android:layout_marginEnd="16dp"
     />
-</android.support.constraint.ConstraintLayout>
+</androidx.constraintlayout.ConstraintLayout>

+ 2 - 2
demo/src/main/res/layout/item_tree.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="48dp">
@@ -15,4 +15,4 @@
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
-</android.support.constraint.ConstraintLayout>
+</androidx.constraintlayout.ConstraintLayout>

+ 51 - 97
gradle.properties

@@ -1,99 +1,53 @@
+## For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
 #
-# *********************************************************************************************************************
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx1024m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
 #
-#               iFHS7.
-#              ;BBMBMBMc                  rZMBMBR              BMB
-#              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
-#     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
-#     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
-#      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
-#     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
-#     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
-#     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
-#         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
-#     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
-#      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
-#         i0BM: SWKHKGO  MBDv
-#           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  \u65AF\u4F2F\u5766\u673A\u5668\u4EBA
-#              ,  XMW  ..
-#                  r                                                                     All rights reserved.
-#
-# *********************************************************************************************************************
-#
-org.gradle.jvmargs = -Xmx1536m
-#org.gradle.configureondemand=false
-
-SAGA_URL = http://www.sagaloud.cn
-SAGA_KOTLIN_VERSION = 1.4.105
-SYBOTAN_KOTLIN_VERSION = 1.2.42
-SYBOTAN_ANDROID_VERSION = 1.2.52
-SAGA_SERVICE_VERSION = 1.4.140
-SAGA_ANDROID_VERSION = 1.2.49
-SAGA_CODE = 5
-SAGA_GROUP = cn.sagacloud
-
-
-#SYBOTAN_URL = http://www.sybotan.com
-#SYBOTAN_KOTLIN_VERSION = 1.4.64
-#SYBOTAN_ANDROID_VERSION = 1.2.36
-#SYBOTAN_CODE = 5
-#SYBOTAN_GROUP = com.sybotan
-
-MAVEN_REPO_PUBLIC_URL = http://dev.dp.sagacloud.cn:8082/repository/maven-public/
-MAVEN_REPO_RELEASE_URL = http://dev.dp.sagacloud.cn:8082/repository/maven-releases/
-MAVEN_REPO_SNAPSHOT_URL = http://dev.dp.sagacloud.cn:8082/repository/maven-snapshots/
-NEXUS_USERNAME = saga
-NEXUS_PASSWORD = saga
-
-#MAVEN_REPO_PUBLIC_URL = http://maven.sybotan.com/repository/sybotan-public/
-#MAVEN_REPO_RELEASE_URL = http://maven.sybotan.com/repository/sybotan-releases/
-#MAVEN_REPO_SNAPSHOT_URL = http://maven.sybotan.com/repository/sybotan-snapshots/
-#NEXUS_USERNAME = andy
-#NEXUS_PASSWORD = 123456
-
-LICENSE_NAME = The Apache Software License, Version 2.0
-LICENSE_URL = http://www.apache.org/licenses/LICENSE-2.0.txt
-
-DEVELOPER_ID = Andy.Sybotan
-DEVELOPER_NAME = Andy
-
-JVM_TARGET = 1.8
-JDK_VERSION = 8
-
-ANDROID_SDK_VERSION = 28
-ANDROID_MIN_SDK_VERSION = 21
-ANDROID_BUILD_TOOLS_VERSION = 28.0.3
-
-# https://mvnrepository.com/artifact/com.android.support/appcompat-v7
-ANDROID_SUPPORT_VERSION = 28.0.0
-#27.1.1
-# https://mvnrepository.com/artifact/org.jetbrains.anko/anko-common
-ANKO_VERSION = 0.10.8
-# https://mvnrepository.com/artifact/com.android.support.constraint/constraint-layout
-CONSTRAINT_VERSION = 2.0.0-alpha2
-# https://mvnrepository.com/artifact/org.jetbrains.dokka/dokka-gradle-plugin
-DOKKA_VERSION = 0.9.16
-# https://mvnrepository.com/artifact/pub.devrel/easypermissions
-EASYPERMISSIONS_VERSION = 1.2.0
-# https://mvnrepository.com/artifact/org.greenrobot/eventbus
-EVENTBUS_VERSION = 3.1.1
-# https://mvnrepository.com/artifact/com.alibaba/fastjson
-FASTJSON_VERSION = 1.1.70.android
-# https://mvnrepository.com/artifact/com.android.tools.build/gradle
-GRADLE_VERSION = 3.2.1
-## https://mvnrepository.com/artifact/com.google.code.gson/gson
-#GSON_VERSION = 2.8.5
-# https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core
-JACKSON_VERSION = 2.9.8
-# https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api
-JUNIT_VERSION = 5.3.1
-# https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib-jdk8
-KOTLIN_VERSION = 1.3.72
-# https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp
-OKHTTP_VERSION = 3.11.0
-# https://mvnrepository.com/artifact/javax.persistence/persistence-api
-PERSISTENCE_VERSION = 1.0.2
-# https://mvnrepository.com/artifact/com.squareup.picasso/picasso
-PICASSO_VERSION = 2.5.2
-# https://mvnrepository.com/artifact/com.google.zxing/core
-ZXING_VERSION = 3.3.0
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+#Thu Sep 23 18:06:59 CST 2021
+LICENSE_URL=http\://www.apache.org/licenses/LICENSE-2.0.txt
+ANDROID_MIN_SDK_VERSION=21
+SAGA_SERVICE_VERSION=1.4.140
+MAVEN_REPO_RELEASE_URL=http\://dev.dp.sagacloud.cn\:8082/repository/maven-releases/
+EVENTBUS_VERSION=3.1.1
+EASYPERMISSIONS_VERSION=1.2.0
+SAGA_ANDROID_VERSION=1.2.49
+JUNIT_VERSION=5.3.1
+KOTLIN_VERSION=1.5.31
+SAGA_GROUP=cn.sagacloud
+SYBOTAN_KOTLIN_VERSION=1.2.42
+android.useAndroidX=true
+LICENSE_NAME=The Apache Software License, Version 2.0
+SAGA_CODE=5
+MAVEN_REPO_SNAPSHOT_URL=http\://dev.dp.sagacloud.cn\:8082/repository/maven-snapshots/
+NEXUS_USERNAME=saga
+DEVELOPER_ID=Andy.Sybotan
+JACKSON_VERSION=2.9.8
+ANDROID_SDK_VERSION=28
+GRADLE_VERSION=3.2.1
+SAGA_URL=http\://www.sagaloud.cn
+PICASSO_VERSION=2.5.2
+org.gradle.jvmargs=-Xmx1536m
+MAVEN_REPO_PUBLIC_URL=http\://dev.dp.sagacloud.cn\:8082/repository/maven-public/
+android.enableJetifier=true
+ANDROID_SUPPORT_VERSION=28.0.0
+FASTJSON_VERSION=1.1.70.android
+DEVELOPER_NAME=Andy
+JDK_VERSION=8
+ANDROID_BUILD_TOOLS_VERSION=28.0.3
+CONSTRAINT_VERSION=2.0.0-alpha2
+NEXUS_PASSWORD=saga
+ANKO_VERSION=0.10.8
+DOKKA_VERSION=0.9.16
+JVM_TARGET=1.8
+OKHTTP_VERSION=3.11.0
+ZXING_VERSION=3.3.0
+SAGA_KOTLIN_VERSION=1.4.105
+SYBOTAN_ANDROID_VERSION=1.2.52
+PERSISTENCE_VERSION=1.0.2

+ 1 - 1
gradle/wrapper/gradle-wrapper.properties

@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip