Преглед изворни кода

1.android 版本升级到android x
2.硬件自适应
3。一些界面效果

XIAOZHI пре 2 година
родитељ
комит
c353bebece
99 измењених фајлова са 948 додато и 651 уклоњено
  1. 16 3
      app/build.gradle
  2. 2 0
      app/src/main/code/com/wdkl/app/ncs/activity/SchemeActivity.kt
  3. 16 54
      app/src/main/code/com/wdkl/app/ncs/application/Application.kt
  4. 0 3
      bedlib/build.gradle
  5. 8 10
      build.gradle
  6. 29 17
      callingdoor/build.gradle
  7. 1 1
      callingdoor/src/main/AndroidManifest.xml
  8. 3 14
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/activity/CallingdoorActivationActivity.kt
  9. 36 84
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/activity/CallingdoorActivity.kt
  10. 3 1
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/adapter/BedItemAdapter.java
  11. 3 2
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/adapter/CostItemAdapter.kt
  12. 6 2
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/adapter/DeviceMenuapter.kt
  13. 2 2
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/adapter/NewFrameRoomAdapter.kt
  14. 2 1
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/adapter/NurseConfigAdpter.kt
  15. 2 1
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/fragment/BaseCallFragment.kt
  16. 3 2
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/fragment/MainFragment.kt
  17. 14 26
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/fragment/NursingWorkFragment.kt
  18. 32 56
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/hardware/HardTools.java
  19. 15 8
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/hardware/HardWareFactroy.java
  20. 105 0
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/hardware/imp/W3288HardTools.java
  21. 119 66
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/hardware/imp/Z3128HardTools.java
  22. 154 0
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/hardware/imp/Z3368HardTools.java
  23. 5 4
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/helper/AppUpdateHelper.java
  24. 3 1
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/helper/CallbedDialogHelper.java
  25. 2 4
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/helper/SOSHelper.java
  26. 8 8
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/helper/SerialPortHelper.java
  27. 2 5
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/helper/XCrashUtils.java
  28. 1 1
      callingdoor/src/main/res/drawable/shape_bed_nurse_bg.xml
  29. 1 1
      callingdoor/src/main/res/layout/call_bed_dialog_lay.xml
  30. 15 14
      callingdoor/src/main/res/layout/callingdoor_main_new.xml
  31. 1 0
      callingdoor/src/main/res/layout/item_bed.xml
  32. 24 10
      callingdoor/src/main/res/layout/item_icon_lay.xml
  33. 28 0
      callingdoor/src/main/res/layout/layout_nodate.xml
  34. 8 5
      callingdoor/src/main/res/layout/main_view_layout.xml
  35. 5 3
      callingdoor/src/main/res/layout/nursing_work_lay.xml
  36. 2 2
      callingdoor/src/main/res/layout/sky_voice_call_layout.xml
  37. 0 2
      callingdoor/src/main/res/layout/view_title_layout.xml
  38. 3 3
      callingdoor/src/main/res/layout/webciew_lay.xml
  39. BIN
      callingdoor/src/main/res/mipmap-mdpi/back_press.png
  40. BIN
      callingdoor/src/main/res/mipmap-mdpi/fang_bg.png
  41. BIN
      callingdoor/src/main/res/mipmap-mdpi/no_conven_img.png
  42. BIN
      callingdoor/src/main/res/mipmap-xhdpi/jr.png
  43. 18 17
      common/build.gradle
  44. 1 1
      common/src/main/code/com/wdkl/ncs/android/lib/adapter/BaseDelegateAdapter.kt
  45. 3 3
      common/src/main/code/com/wdkl/ncs/android/lib/adapter/ListViewBaseAdapter.kt
  46. 5 5
      common/src/main/code/com/wdkl/ncs/android/lib/adapter/TextViewDelegateAdapter.kt
  47. 1 1
      common/src/main/code/com/wdkl/ncs/android/lib/adapter/VlayoutHolderAdapter.kt
  48. 3 3
      common/src/main/code/com/wdkl/ncs/android/lib/base/BaseActivity.kt
  49. 1 1
      common/src/main/code/com/wdkl/ncs/android/lib/base/BaseApplication.kt
  50. 6 6
      common/src/main/code/com/wdkl/ncs/android/lib/base/BaseFragment.kt
  51. 5 5
      common/src/main/code/com/wdkl/ncs/android/lib/base/GalleryActivity.kt
  52. 3 3
      common/src/main/code/com/wdkl/ncs/android/lib/base/GalleryFragment.kt
  53. 10 12
      common/src/main/code/com/wdkl/ncs/android/lib/bind/BaseBindingHelper.kt
  54. 7 7
      common/src/main/code/com/wdkl/ncs/android/lib/core/framework/ActivityLifeController.kt
  55. 6 6
      common/src/main/code/com/wdkl/ncs/android/lib/utils/AppTool.kt
  56. 5 5
      common/src/main/code/com/wdkl/ncs/android/lib/utils/AutoClearValue.kt
  57. 5 4
      common/src/main/code/com/wdkl/ncs/android/lib/utils/BaseRecyclerViewHolder.kt
  58. 2 2
      common/src/main/code/com/wdkl/ncs/android/lib/utils/EcodeHelper.kt
  59. 16 10
      common/src/main/code/com/wdkl/ncs/android/lib/utils/ExtendMethods.kt
  60. 8 8
      common/src/main/code/com/wdkl/ncs/android/lib/utils/GalleryHelper.kt
  61. 3 3
      common/src/main/code/com/wdkl/ncs/android/lib/utils/NoAlphaItemAnimator.kt
  62. 8 8
      common/src/main/code/com/wdkl/ncs/android/lib/utils/RecycleViewScrollHelper.kt
  63. 3 3
      common/src/main/code/com/wdkl/ncs/android/lib/utils/TangramPlugin.kt
  64. 5 5
      common/src/main/code/com/wdkl/ncs/android/lib/widget/AutoPollRecyclerView.kt
  65. 8 7
      common/src/main/code/com/wdkl/ncs/android/lib/widget/CommonActionBar.kt
  66. 2 2
      common/src/main/code/com/wdkl/ncs/android/lib/widget/OnegoGridLayoutManager.kt
  67. 3 6
      common/src/main/code/com/wdkl/ncs/android/lib/widget/PopCommonView.kt
  68. 8 8
      common/src/main/code/com/wdkl/ncs/android/lib/widget/SaleProgressView.kt
  69. 3 3
      common/src/main/code/com/wdkl/ncs/android/lib/widget/StarView.kt
  70. 2 2
      common/src/main/code/com/wdkl/ncs/android/lib/widget/VerificationCodeView.kt
  71. 2 2
      common/src/main/res/layout/menu_dialog_lay.xml
  72. 4 4
      common/src/main/res/layout/menu_item_lay.xml
  73. 3 3
      common/src/main/res/layout/pop_common_lay.xml
  74. 2 2
      common/src/main/res/layout/text_adapter_lay.xml
  75. 6 5
      gradle.properties
  76. 3 12
      middleware/build.gradle
  77. 2 5
      middleware/src/main/code/com/wdkl/ncs/android/middleware/bind/DataBindingHelper.kt
  78. 4 1
      middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constant.java
  79. 2 1
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/CartGoodsItemViewModel.kt
  80. 2 1
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/CartShopItemViewModel.kt
  81. 3 2
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/CouponViewModel.kt
  82. 2 1
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/GoodsFilterViewModel.kt
  83. 2 1
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/MemberAddressViewModel.kt
  84. 3 2
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/OrderCreatePriceViewModel.kt
  85. 0 1
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/OrderDetailViewModel.kt
  86. 2 1
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/ParentCategoryViewModel.kt
  87. 3 2
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/PayShipTimeViewModel.kt
  88. 8 8
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/PostCommentViewModel.kt
  89. 3 2
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/ReceiptViewModel.kt
  90. 3 2
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/SingleIntViewModel.kt
  91. 3 2
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/SingleStringViewModel.kt
  92. 2 2
      middleware/src/main/code/com/wdkl/ncs/android/middleware/router/RouterInterceptor.kt
  93. 3 1
      middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/channel/DeviceUtil.java
  94. 23 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/utils/AppUtil.java
  95. 12 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/utils/CommonUtils.java
  96. 8 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/utils/SettingsUtil.kt
  97. 3 5
      resource/build.gradle
  98. BIN
      resource/src/main/res/mipmap-xhdpi/weicome.png
  99. 6 21
      welcome/build.gradle

+ 16 - 3
app/build.gradle

@@ -42,6 +42,7 @@ android {
         versionCode app_version_code
         versionName app_version
         multiDexEnabled true
+        flavorDimensions "app"
         dataBinding {
             enabled = true
         }
@@ -52,7 +53,18 @@ android {
         }
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
+    productFlavors {
 
+        rk3128 {//自研
+            dimension "app"
+            buildConfigField 'String', 'flag', '"1"'
+        }
+
+        rk3288 {//自研
+            dimension "app"
+            buildConfigField 'String', 'flag', '"2"'
+        }
+    }
     buildTypes {
         release {
             signingConfig signingConfigs.release
@@ -61,7 +73,7 @@ android {
             // android studio3.0之后,输出名称定义,输出名称配置采用该配置
             android.applicationVariants.all { variant ->
                 variant.outputs.all {
-                    outputFileName = "wd_${app_device_type}_v${app_version}_${app_version_code}_${releaseTime()}.apk"
+                    outputFileName = "wd_v${app_version}_${app_version_code}_${releaseTime()}.apk"
                 }
             }
         }
@@ -71,7 +83,7 @@ android {
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
             android.applicationVariants.all { variant ->
                 variant.outputs.all {
-                    outputFileName = "wd_${app_device_type}_v${app_version}_${app_version_code}_${releaseTime()}.apk"
+                    outputFileName = "wd_v${app_version}_${app_version_code}_${releaseTime()}.apk"
                 }
             }
         }
@@ -147,7 +159,8 @@ dependencies {
     /**
      *  constraint-layout布局依赖
      */
-    compile 'com.android.support.constraint:constraint-layout:1.1.0-beta5'
+//    compile 'com.android.support.constraint:constraint-layout:1.1.0-beta5'
+    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
 
 }
 

+ 2 - 0
app/src/main/code/com/wdkl/app/ncs/activity/SchemeActivity.kt

@@ -5,6 +5,7 @@ import android.support.v7.app.AppCompatActivity
 import com.enation.javashop.android.jrouter.JRouter
 import com.enation.javashop.android.jrouter.logic.datainfo.Postcard
 import com.enation.javashop.android.jrouter.logic.listener.NavListener
+import com.wdkl.app.ncs.BuildConfig
 
 /**
  * Created by LDD on 2017/9/10.
@@ -16,6 +17,7 @@ class SchemeActivity:AppCompatActivity() {
         val uri = intent.data
         JRouter.prepare().create(uri).seek(this,object:NavListener(){
             override fun onArrival(postcard: Postcard?) {
+
                 finish()
             }
         })

+ 16 - 54
app/src/main/code/com/wdkl/app/ncs/application/Application.kt

@@ -9,6 +9,7 @@ import com.wdkl.ncs.android.lib.base.BaseApplication
 import com.enation.javashop.net.engine.config.NetEngineConfig
 import com.enation.javashop.net.engine.plugin.exception.RestfulExceptionInterceptor
 import com.enation.javashop.utils.base.config.BaseConfig
+import com.wdkl.app.ncs.callingdoor.hardware.HardWareFactroy
 import com.wdkl.app.ncs.callingdoor.helper.LocaleMangerUtils
 //import com.enation.javashop.utils.base.config.BaseConfig
 //import com.wdkl.app.ncs.callingdoor.helper.AnrFcExceptionUtil
@@ -88,36 +89,10 @@ class Application : BaseApplication() {
 
         //init
         NetHelper.getInstance().init()
-
-        //open serial port
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
-            SerialPortUtil.getInstance().openSerialPort()
-
-            //打开433串口0
-            SerialPortUtil433.getInstance().openSerialPort()
-
-            //卸载原来二代系统apk
-            if (uninstallApk) {
-                Thread {
-                    if (checkAppExist()) {
-                        uninstallApp()
-                    }
-                }.start()
-            }
-        }
-
-        //屏幕适配方案
-        /*if ("rk3288".equals(Build.MODEL)) {
-            AutoSizeConfig.getInstance()
-                .setDesignWidthInDp(1080)
-                .setDesignHeightInDp(1920)
-        } else {
-            AutoSizeConfig.getInstance()
-                .setDesignWidthInDp(1024)
-                .setDesignHeightInDp(600)
-        }*/
-
-
+        //初始化串口
+        HardWareFactroy.getHardTools().init()
+        //是否卸载旧版本apk
+        HardWareFactroy.getHardTools().uninstallApp(this,uninstallApk,APP_NAME)
         //anr catcher
         //AnrFcExceptionUtil.getInstance(this).initFCException()
 
@@ -127,33 +102,20 @@ class Application : BaseApplication() {
         Utils.checkCameraSupport()
     }
 
-    private fun checkAppExist() : Boolean {
-        val packageInfo = packageManager.getInstalledPackages(0)
-        var appExist = false
-        for (pInfo in packageInfo) {
-            if (APP_NAME == pInfo.packageName) {
-                appExist = true
-                break
+        private fun checkAppExist() : Boolean {
+            val packageInfo = packageManager.getInstalledPackages(0)
+            var appExist = false
+            for (pInfo in packageInfo) {
+                if (APP_NAME == pInfo.packageName) {
+                    appExist = true
+                    break
+                }
             }
+            Log.e(TAG, "callingdoor app exist: " + appExist)
+            return appExist
         }
-        Log.e(TAG, "callingdoor app exist: " + appExist)
-        return appExist
-    }
 
-    private fun uninstallApp() {
-        val process: Process
-        val printWriter: PrintWriter
-        try {
-            process = Runtime.getRuntime().exec("su")
-            printWriter = PrintWriter(process.outputStream)
-            printWriter.println("pm uninstall " + APP_NAME)
-            printWriter.flush()
-            printWriter.close()
-            Log.e(TAG, "uninstall end")
-        } catch (e: java.lang.Exception) {
-            Log.e(TAG, "uninstall e:" + e.message)
-        }
-    }
+
 
     override fun attachBaseContext(base: Context) {
         val languageId: Int = SettingConfig.getLanguageId(base)

+ 0 - 3
bedlib/build.gradle

@@ -15,9 +15,6 @@ android {
 
 dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
-    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
-        exclude group: 'com.android.support', module: 'support-annotations'
-    })
     compile 'com.android.support.constraint:constraint-layout:1.0.2'
     testCompile 'junit:junit:4.12'
 }

+ 8 - 10
build.gradle

@@ -2,7 +2,7 @@ buildscript {
     /**
      * Kotlin统一版本
      */
-    ext.kotlin_version = '1.3.21'
+    ext.kotlin_version = '1.5.10'
 
     /**
      * Aop编制版本
@@ -32,17 +32,17 @@ buildscript {
     /**
      * SDK目标支持版本
      */
-    ext.target_sdk_version = 28
+    ext.target_sdk_version = 30
 
     /**
      * SDK编译版本
      */
-    ext.build_tools_version = "26.0.2"
+    ext.build_tools_version = "30.0.2"
 
     /**
      * 支持库版本
      */
-    ext.support_library_version = "26.1.0"
+    ext.support_library_version = "28.0.0"
 
     /**
      * APP版本码
@@ -73,7 +73,7 @@ buildscript {
         /**
          * Gradle插件
          */
-        classpath 'com.android.tools.build:gradle:3.0.1'
+        classpath 'com.android.tools.build:gradle:4.2.2'
 
         /**
          * Kawo组件化插件
@@ -100,12 +100,10 @@ buildscript {
         maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
         maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
         maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
-
+        maven { url "https://jitpack.io" }
         jcenter()
         mavenCentral()
         google()
-
-        maven { url "https://jitpack.io" }
     }
 }
 /**
@@ -116,12 +114,12 @@ allprojects {
         maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
         maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
         maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
-
+        maven { url "https://jitpack.io" }
         jcenter()
         mavenCentral()
         google()
 
-        maven { url "https://jitpack.io" }
+
     }
     tasks.withType(Javadoc) { // 新增
         options.addStringOption('Xdoclint:none', '-quiet')

+ 29 - 17
callingdoor/build.gradle

@@ -30,13 +30,25 @@ android {
         targetSdkVersion target_sdk_version
         versionCode app_version_code
         versionName app_version
+        flavorDimensions "app"
         dataBinding {
             enabled = true
         }
         buildConfigField "String", "BUILD_TIME", getDate()
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
     }
+    productFlavors {
 
+        rk3128 {//自研
+            dimension "app"
+            buildConfigField 'String', 'flag', '"1"'
+        }
+
+        rk3288 {//自研
+            dimension "app"
+            buildConfigField 'String', 'flag', '"2"'
+        }
+    }
     lintOptions {
         abortOnError false
     }
@@ -61,22 +73,22 @@ static String getDate() {
     return dates
 }
 dependencies {
-    compile fileTree(dir: 'libs', include: ['*.jar'])
-    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
-        exclude group: 'com.android.support', module: 'support-annotations'
-    })
+//    compile fileTree(dir: 'libs', include: ['*.jar'])
+//    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
+//        exclude group: 'com.android.support', module: 'support-annotations'
+//    })
     /**
      * 单元测试
      */
     testCompile 'junit:junit:4.12'
 
-    /**
-     *  Android基础依赖库
-     */
-    compile "com.android.support:design:$support_library_version"
-    compile "com.android.support:support-v4:$support_library_version"
-    compile "com.android.support:cardview-v7:$support_library_version"
-    compile "com.android.support:appcompat-v7:$support_library_version"
+//    /**
+//     *  Android基础依赖库
+//     */
+//    compile "com.android.support:design:$support_library_version"
+//    compile "com.android.support:support-v4:$support_library_version"
+//    compile "com.android.support:cardview-v7:$support_library_version"
+//    compile "com.android.support:appcompat-v7:$support_library_version"
 
     /**
      * 公共库依赖
@@ -86,11 +98,11 @@ dependencies {
     compile project(':welcome')
     compile project(':janus')
 
-    if(componentTag){
-        debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.1'
-        releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
-        testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
-    }
+//    if(componentTag){
+//        debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.1'
+//        releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
+//        testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
+//    }
 
     /**
      * Dagger编译依赖
@@ -110,7 +122,7 @@ dependencies {
     /**
      *  constraint-layout布局依赖
      */
-    compile 'com.android.support.constraint:constraint-layout:1.1.0-beta5'
+    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
 
     //compile 'com.github.anrwatchdog:anrwatchdog:1.3.0'
 

+ 1 - 1
callingdoor/src/main/AndroidManifest.xml

@@ -37,7 +37,7 @@
             android:screenOrientation="landscape"
             android:launchMode="singleTask"/>
         <provider
-            android:name="android.support.v4.content.FileProvider"
+            android:name="androidx.core.content.FileProvider"
             android:authorities="${applicationId}.provider"
             tools:replace="android:authorities"
             android:grantUriPermissions="true"

+ 3 - 14
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/activity/CallingdoorActivationActivity.kt

@@ -14,6 +14,7 @@ import com.wdkl.app.ncs.callingdoor.databinding.CallingdoorActivationBinding
 import com.wdkl.app.ncs.callingdoor.dialog.RebootDialogHelper
 import com.wdkl.app.ncs.callingdoor.dialog.ServicesDialogHelper
 import com.wdkl.app.ncs.callingdoor.dialog.SystemDialogHelper
+import com.wdkl.app.ncs.callingdoor.hardware.HardWareFactroy
 import com.wdkl.app.ncs.callingdoor.helper.AppUpdateHelper
 import com.wdkl.app.ncs.callingdoor.helper.NetHelper
 import com.wdkl.app.ncs.callingdoor.launch.CallingdoorLaunch
@@ -101,21 +102,9 @@ class CallingdoorActivationActivity  : BaseActivity<CallingdoorActivationPresent
             activation_title_msg.setText("设置右侧参数后激活")
             activation_title.setTextColor(resources.getColor(R.color.white))
         }
-        //rk3288使用序列号注册,其他使用mac地址注册
-        if ("rk3288".equals(Build.MODEL)) {
-            val yfRk3288ApiManager = YF_RK3288_API_Manager(activity)
-            //获取设备序列号
-            Constant.DEVICE_SN = yfRk3288ApiManager.yfgetSerialNumber()
-            Constant.DEVICE_REGISTER_ID = Constant.DEVICE_SN
+        //注册方式
+        HardWareFactroy.getHardTools().Registration(this)
 
-            //点亮屏幕并设置为永不休眠
-            yfRk3288ApiManager.yfSetLCDOn()
-            AppTool.Setting.setScreenOffTimeOut(activity, 2147483647)
-        } else {
-            //获取mac地址
-            Constant.LOCAL_MAC = NetHelper.getInstance().macAddress
-            Constant.DEVICE_REGISTER_ID = Constant.LOCAL_MAC
-        }
         activation_v.text =  BuildConfig.VERSION_NAME + "_" + BuildConfig.VERSION_CODE + "_" + Build.MODEL
         activation_ip.text = NetHelper.getInstance().localIP
         activation_wg.text = NetHelper.getInstance().gateway()

+ 36 - 84
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/activity/CallingdoorActivity.kt

@@ -1,21 +1,17 @@
 package com.wdkl.app.ncs.callingdoor.activity
 
-import android.app.AlarmManager
 import android.content.*
-import android.graphics.Color
 import android.net.ConnectivityManager
 import android.os.*
-import android.support.v4.app.Fragment
+
 import android.text.TextUtils
 import android.util.Log
-import android.view.Gravity
 import android.view.View
-import android.widget.TextView
+import androidx.fragment.app.Fragment
 import com.alibaba.fastjson.JSON
 import com.alibaba.fastjson.JSONObject
 import com.enation.javashop.android.jrouter.external.annotation.Router
 import com.enation.javashop.net.engine.model.NetState
-import com.example.yf_rk3288_api.YF_RK3288_API_Manager
 import com.google.gson.Gson
 import com.wdkl.app.ncs.callingdoor.BuildConfig
 import com.wdkl.app.ncs.callingdoor.R
@@ -24,6 +20,7 @@ import com.wdkl.app.ncs.callingdoor.bean.CallingItem
 import com.wdkl.app.ncs.callingdoor.bean.Trans433Data
 import com.wdkl.app.ncs.callingdoor.databinding.CallingdoorMainNewBinding
 import com.wdkl.app.ncs.callingdoor.fragment.*
+import com.wdkl.app.ncs.callingdoor.hardware.HardWareFactroy
 import com.wdkl.app.ncs.callingdoor.helper.*
 import com.wdkl.app.ncs.callingdoor.launch.CallingdoorLaunch
 import com.wdkl.app.ncs.callingdoor.settings.SettingConfig
@@ -38,7 +35,6 @@ import com.wdkl.ncs.android.middleware.common.SipStatus
 import com.wdkl.ncs.android.middleware.logic.contract.callingdoor.CallingdoorActivityContract
 import com.wdkl.ncs.android.middleware.logic.presenter.callingdoor.CallingdoorActivityPresenter
 import com.wdkl.ncs.android.middleware.model.ServerInfo
-import com.wdkl.ncs.android.middleware.model.ThirdServerInfo
 import com.wdkl.ncs.android.middleware.model.dos.AppVersionDO
 import com.wdkl.ncs.android.middleware.model.dos.PartSettingDO
 import com.wdkl.ncs.android.middleware.model.dto.TcpSeverDTO
@@ -46,34 +42,23 @@ import com.wdkl.ncs.android.middleware.model.vo.DeviceRoomInfoVO
 import com.wdkl.ncs.android.middleware.model.vo.FrameBedVO
 import com.wdkl.ncs.android.middleware.model.vo.InteractionVO
 import com.wdkl.ncs.android.middleware.tcp.TcpClient
-import com.wdkl.ncs.android.middleware.tcp.channel.DeviceChannel
 import com.wdkl.ncs.android.middleware.tcp.channel.OtherUtil
 import com.wdkl.ncs.android.middleware.tcp.channel.VoiceUtil
 import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpAction
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpType
-import com.wdkl.ncs.android.middleware.udp.ServerInfoUtil
 import com.wdkl.ncs.android.middleware.utils.AppUtil
 import com.wdkl.ncs.android.middleware.utils.CommonUtils
 import com.wdkl.ncs.android.middleware.utils.StringUtil
 import com.wdkl.ncs.android.middleware.utils.Util
 import com.wdkl.ncs.janus.util.JanusConstant
 import kotlinx.android.synthetic.main.callingdoor_main_lay.*
-import kotlinx.android.synthetic.main.callingdoor_main_lay.app_version
-import kotlinx.android.synthetic.main.callingdoor_main_lay.room_action_call
-import kotlinx.android.synthetic.main.callingdoor_main_lay.room_action_call_bed
 import kotlinx.android.synthetic.main.callingdoor_main_lay.room_action_nurse
-import kotlinx.android.synthetic.main.callingdoor_main_lay.room_action_support
-import kotlinx.android.synthetic.main.callingdoor_main_lay.room_cancel_call
-import kotlinx.android.synthetic.main.callingdoor_main_lay.room_action_language_set
 import kotlinx.android.synthetic.main.callingdoor_main_lay.tv_room_name
-import kotlinx.android.synthetic.main.callingdoor_main_lay.view_flipper
 import kotlinx.android.synthetic.main.callingdoor_main_lay_rk3288.*
 import kotlinx.android.synthetic.main.callingdoor_main_new.*
 import kotlinx.android.synthetic.main.view_bed_name.*
 import kotlinx.android.synthetic.main.view_title_layout.*
-import okhttp3.OkHttpClient
-import okhttp3.Request
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
@@ -81,7 +66,6 @@ import serialporttest.utils.SerialPortUtil
 import serialporttest.utils.SerialPortUtil433
 import serialporttest.utils.StringUtils
 import java.io.*
-import java.lang.Process
 import java.util.*
 import java.util.concurrent.Executors
 import java.util.concurrent.TimeUnit
@@ -170,31 +154,8 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
 
         //更新状态图标
         updateNetState()
-
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
-            AppTool.Time.delay(1500) {
-                //串口监听
-                setSerialListener()
-                //打开MIC
-                SerialPortHelper.setMIC(false)
-                SerialPortHelper.setHandsFree(true)
-                SerialPortHelper.setSosLight("0")
-                //默认门灯白色
-                //SerialPortHelper.setDoorLight(1, "111")
-                //护理状态
-//                Constant.inNursing = SettingConfig.getInNursing(activity)
-//                if (Constant.inNursing) {
-//                    nursingInteId = SettingConfig.getNursingId(activity)
-//                    enterNursing()
-//                } else {
-//                    SerialPortHelper.setDoorLight(0, "000")
-//                }
-            }
-
-            //设置默认时区为中国标准时间
-            //val alarmManager = getSystemService(ALARM_SERVICE) as AlarmManager
-            //alarmManager.setTimeZone("Asia/Shanghai")
-        }
+        //串口设置
+        HardWareFactroy.getHardTools().setSerial(this)
 
         //tts初始化
         SpeechUtil.getInstance().init(activity) {
@@ -205,10 +166,6 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         }
         SpeechUtil.getInstance().setSpeechLoopCount(3)
 
-//        app_version.text = "V" + BuildConfig.VERSION_NAME
-//        //显示二维码界面
-//        switchFragment(R.id.callingdoor_main_frame, QrCodeFragment(), qrFragment)
-
         //记录app启动时间
         val lastTime = SettingConfig.getAppStartTime(activity)
         val currentTime = TimeHandle.getDateTime(System.currentTimeMillis(), "MM-dd HH:mm:ss")
@@ -344,9 +301,10 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
 
     fun addCallFragment(fragment: Fragment) {
         skyCallFragment = fragment
+        call_frame_new.bringToFront()
         supportFragmentManager.beginTransaction()
             .setCustomAnimations(R.anim.slide_down_in, R.anim.slide_up_out)
-            .add(R.id.call_frame, fragment)
+            .add(R.id.call_frame_new, fragment)
             .commit()
     }
 
@@ -367,9 +325,8 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
     }
 
     private fun enterNursing() {
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
-            SerialPortHelper.setDoorLight(1, Constant.nursingColor) //绿色
-        }
+        //绿色门灯
+        HardWareFactroy.getHardTools().setDoorLight(1)
         //room_action_nurse.text = "退出护理"
         room_action_nurse.setBackgroundResource(R.mipmap.ic_bottom_btn_bg)
         if (TextUtils.isEmpty(Constant.NursingTitle)) {
@@ -381,10 +338,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
     }
 
     private fun exitNursing() {
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
-            //SerialPortHelper.setDoorLight(1, "111") //白色
-            DoorLightHelper.resetDoorLight()
-        }
+        HardWareFactroy.getHardTools().setDoorLight(2)
         //room_action_nurse.text = "进入护理"
         room_action_nurse.setBackgroundResource(R.mipmap.bg_bottom_btn)
         tv_room_name.text = Constant.ROOM_NAME
@@ -588,10 +542,10 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
     //开启网络调试
     private fun openNetwrokDebug() {
         val commands = arrayListOf(
-            "/system/bin/sh",
-            "setprop service.adb.tcp.port 5555",
-            "stop adbd",
-            "start adbd"
+                "/system/bin/sh",
+                "setprop service.adb.tcp.port 5555",
+                "stop adbd",
+                "start adbd"
         )
         try {
             RunAsRoot(commands)
@@ -606,7 +560,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         val os = DataOutputStream(p.outputStream)
         for (tmpCmd in cmds) {
             os.writeBytes(
-                """
+                    """
             $tmpCmd
             
             """.trimIndent()
@@ -617,12 +571,12 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
     }
 
     //设置串口监听
-    private fun setSerialListener() {
+     fun setSerialListener() {
+        // 串口监听
         SerialPortUtil.getInstance().setOnDataReceiveListener(this)
         SerialPortUtil.getInstance().setOnDataReceiveStringListener(this)
         //开启串口心跳
         SerialPortUtil.getInstance().startHeartBeat()
-
         SerialPortUtil433.getInstance().setOn433DataReceiveListener(this)
     }
 
@@ -651,11 +605,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         }
         MediaPlayHelper.getInstance().stopMusic()
 
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
-            SerialPortUtil.getInstance().closeHeart()
-            SerialPortUtil.getInstance().closeSerialPort()
-            SerialPortUtil433.getInstance().closeSerialPort()
-        }
+        HardWareFactroy.getHardTools().unInit()
     }
 
     //数据加载错误
@@ -680,9 +630,9 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
     override fun networkMonitor(state: NetState) {
         state.filter(onMobile = {
 
-        },onWifi = {
+        }, onWifi = {
 
-        },offline = {
+        }, offline = {
 
         })
     }
@@ -958,7 +908,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
     }
 
     override fun serialPortBedOnclick(buffer: ByteArray) {
-        Log.d("serialPortBedOnclick", "面板按键: " + buffer[0])
+//        Log.d("serialPortBedOnclick", "面板按键: " + buffer[0])
         //测试模式
         if (testFragment == curFragment) {
             if (buffer[0].toInt() == 1 || buffer[0].toInt() == 2) {
@@ -990,7 +940,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                 runOnUiThread {
                     clickSosTime = System.currentTimeMillis()
                     if (Constant.TCP_CONNECTED) {
-                        SOSHelper.sosStart()
+                        HardWareFactroy.getHardTools().setSOSStart()
                     }
                 }
             }
@@ -1005,7 +955,8 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                 runOnUiThread {
                     clickSosTime = System.currentTimeMillis()
                     if (Constant.TCP_CONNECTED) {
-                        SOSHelper.sosStart()
+
+                        HardWareFactroy.getHardTools().setSOSStart()
                     }
                 }
             }
@@ -1015,7 +966,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
     override fun serialPortBedOnclickString(str: String) {
         try {
             val newStr = str.substring(str.indexOf("$") + 1, str.indexOf("#"))
-            Log.d("serialPortBedString", "newStr==$newStr")
+//            Log.d("serialPortBedString", "newStr==$newStr")
             if (newStr.startsWith("V")) {
                 Constant.MCU_VERSION_NUMBER = newStr.substring(newStr.indexOf(",") + 1, 16)
             }
@@ -1035,7 +986,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                 //当前系统时间
                 val curTime = System.currentTimeMillis()
                 //收到的按键数据掐头去尾: fdb50831df --> b50831
-                val cmd = receiveData.substring(2,  receiveData.indexOf("df"))
+                val cmd = receiveData.substring(2, receiveData.indexOf("df"))
                 if (trans433Data != null) {
                     //如果与上次数据相同,1500毫秒内不再重复发
                     if (trans433Data!!.cmd == cmd && curTime - trans433Data!!.time < 1500) {
@@ -1159,7 +1110,8 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                     } else if (tcpModel.type == TcpType.SOS) {
                         if (tcpModel.action == TcpAction.SOSAction.CANCEL) {
                             //紧急呼叫已处理
-                            SOSHelper.sosStop()
+
+                            HardWareFactroy.getHardTools().setSOSStop()
                         }
                     } else if (tcpModel.type == TcpType.DEVICE) {
                         //检查APP版本
@@ -1206,12 +1158,12 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                             }*/
                             callControl(tcpModel)
                         }
-                    } else if(tcpModel.action == TcpAction.TimeAction.SYNC && tcpModel.type==TcpType.TIME){
+                    } else if (tcpModel.action == TcpAction.TimeAction.SYNC && tcpModel.type == TcpType.TIME) {
                         var time = 0L
-                        var timeZone="Asia/Shanghai"
+                        var timeZone = "Asia/Shanghai"
                         if (canParseJson(tcpModel.data.toString())) {
                             val json = JSON.parseObject(tcpModel.data.toString())
-                            time = json.getLong("time")*1000
+                            time = json.getLong("time") * 1000
                             timeZone = json.getString("time_zone")
                         } else {
                             time = tcpModel.data.toString().toLong() * 1000
@@ -1252,12 +1204,12 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         }
     }
 
-    private fun canParseJson(str:String) : Boolean {
+    private fun canParseJson(str: String) : Boolean {
         var result = false
         try {
             JSON.parseObject(str)
             result=true
-        }catch (e:java.lang.Exception){
+        }catch (e: java.lang.Exception){
             result=false
         }
         return result
@@ -1507,9 +1459,9 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
 
         //白天起始时间戳
         var date = TimeHandle.getDateTime("yyyy-MM-dd")
-        var dayStartTimeStamp = TimeHandle.dateToStamp(date+" "+SettingConfig.getInitialDayTime(this)+":00", "yyyy-MM-dd HH:mm:ss")
+        var dayStartTimeStamp = TimeHandle.dateToStamp(date + " " + SettingConfig.getInitialDayTime(this) + ":00", "yyyy-MM-dd HH:mm:ss")
         //白天结束时间戳
-        var endOfDayTimeStamp = TimeHandle.dateToStamp(date+" "+SettingConfig.getEndOfDay(this)+":00", "yyyy-MM-dd HH:mm:ss")
+        var endOfDayTimeStamp = TimeHandle.dateToStamp(date + " " + SettingConfig.getEndOfDay(this) + ":00", "yyyy-MM-dd HH:mm:ss")
 
         val curInday = dayStartTimeStamp < currentTimestamp && currentTimestamp < endOfDayTimeStamp
         if (curInday) {
@@ -1560,7 +1512,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                     }
                 } else if (TextUtils.isEmpty(Constant.TCP_SERVER_URL)) {
                     //还未连接tcp服务器
-                    //presenter.loadTcpServerHost()
+//                    presenter.loadTcpServerHost()
                 }
             } else if (intent.action == ConnectivityManager.CONNECTIVITY_ACTION) {
                 updateNetState()

+ 3 - 1
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/adapter/BedItemAdapter.java

@@ -1,7 +1,7 @@
 package com.wdkl.app.ncs.callingdoor.adapter;
 
 import android.content.Context;
-import android.support.v7.widget.RecyclerView;
+
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -15,6 +15,8 @@ import com.wdkl.ncs.android.middleware.utils.CommonUtils;
 
 import java.util.ArrayList;
 
+import androidx.recyclerview.widget.RecyclerView;
+
 public class BedItemAdapter extends RecyclerView.Adapter<BedItemAdapter.BedViewHolder> {
 
     private Context context;

+ 3 - 2
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/adapter/CostItemAdapter.kt

@@ -1,12 +1,13 @@
 package com.wdkl.app.ncs.callingdoor.adapter
 
 import android.content.Context
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
+
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import com.wdkl.app.ncs.callingdoor.R
 import com.wdkl.ncs.android.middleware.model.vo.CustomerFeeConfigByGroupNameVO
 import com.wdkl.ncs.android.middleware.model.vo.CustomerFeeConfigVO

+ 6 - 2
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/adapter/DeviceMenuapter.kt

@@ -1,12 +1,13 @@
 package com.wdkl.app.ncs.callingdoor.adapter
 
 import android.content.Context
-import android.support.v7.widget.RecyclerView
+
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.ImageView
 import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
 import com.bumptech.glide.Glide
 import com.bumptech.glide.load.engine.DiskCacheStrategy
 import com.wdkl.app.ncs.callingdoor.R
@@ -53,12 +54,13 @@ class DeviceMenuapter : RecyclerView.Adapter<DeviceMenuapter.ViewHolder>{
         }
         if (data?.get(position).icon_src!=null && !data?.get(position).icon_src.equals("")){
             Glide.with(holder.imageView.context)
-                    .load(urlManager.base + data?.get(position).icon_src)
+                    .load( data?.get(position).icon_src)
                     .diskCacheStrategy(DiskCacheStrategy.ALL)
                     .into(holder.imageView)
         }else{
             holder.imageView.visibility=View.GONE
         }
+        holder.imageView1.visibility=View.VISIBLE
         holder.actionView.setOnClickListener {
             onItemClickListener?.onItemClick(holder.itemView, position)
 //            onItemClickListener?.onItemClick(holder.itemView, data?.get(position).id)
@@ -70,11 +72,13 @@ class DeviceMenuapter : RecyclerView.Adapter<DeviceMenuapter.ViewHolder>{
         var actionView : View
         var textView : TextView
         var imageView : ImageView
+        var imageView1 : ImageView
 
         constructor(itemView: View): super(itemView) {
             actionView = itemView.findViewById(R.id.ll_menu_bt)
             textView = itemView.findViewById(R.id.tx_menu)
             imageView = itemView.findViewById(R.id.img_menu)
+            imageView1 = itemView.findViewById(R.id.img_menu1)
         }
     }
 

+ 2 - 2
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/adapter/NewFrameRoomAdapter.kt

@@ -2,8 +2,7 @@ package com.wdkl.app.ncs.callingdoor.adapter
 
 import android.content.Context
 import android.graphics.drawable.Drawable
-import android.support.v4.content.ContextCompat
-import android.support.v7.widget.RecyclerView
+
 import android.text.TextUtils
 import android.view.LayoutInflater
 import android.view.View
@@ -11,6 +10,7 @@ import android.view.ViewGroup
 import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
 import android.widget.RelativeLayout
 import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
 import com.libra.Color
 import com.wdkl.app.ncs.callingdoor.R
 import com.wdkl.app.ncs.callingdoor.util.HorizantalAutoBrLayout

+ 2 - 1
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/adapter/NurseConfigAdpter.kt

@@ -2,11 +2,12 @@ package com.wdkl.app.ncs.callingdoor.adapter
 
 import android.content.Context
 import android.graphics.Color
-import android.support.v7.widget.RecyclerView
+
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
 import com.wdkl.app.ncs.callingdoor.R
 import com.wdkl.ncs.android.middleware.model.dto.NurseConfigDto
 import java.lang.Exception

+ 2 - 1
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/fragment/BaseCallFragment.kt

@@ -2,12 +2,13 @@ package com.wdkl.app.ncs.callingdoor.fragment
 
 import android.os.Bundle
 import android.os.CountDownTimer
-import android.support.v4.app.Fragment
+
 import android.view.LayoutInflater
 import android.view.MotionEvent
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.fragment.app.Fragment
 import com.enation.javashop.utils.base.tool.BaseToolActivity
 import com.wdkl.app.ncs.callingdoor.R
 import com.wdkl.app.ncs.callingdoor.helper.RingPlayHelper

+ 3 - 2
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/fragment/MainFragment.kt

@@ -1,9 +1,10 @@
 package com.wdkl.app.ncs.callingdoor.fragment
 
 import android.os.Build
-import android.support.v7.widget.DefaultItemAnimator
-import android.support.v7.widget.GridLayoutManager
+
 import android.text.TextUtils
+import androidx.recyclerview.widget.DefaultItemAnimator
+import androidx.recyclerview.widget.GridLayoutManager
 import com.enation.javashop.net.engine.model.NetState
 import com.wdkl.app.ncs.callingdoor.R
 import com.wdkl.app.ncs.callingdoor.adapter.FrameRoomAdapter

+ 14 - 26
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/fragment/NursingWorkFragment.kt

@@ -2,13 +2,13 @@ package com.wdkl.app.ncs.callingdoor.fragment
 
 import android.content.Intent
 import android.os.CountDownTimer
-import android.support.v7.widget.GridLayoutManager
-import android.text.TextUtils
+
 import android.util.Log
 import android.view.View
+import androidx.recyclerview.widget.GridLayoutManager
 import com.enation.javashop.net.engine.model.NetState
-import com.wdkl.app.ncs.callingdoor.BuildConfig
 import com.wdkl.app.ncs.callingdoor.R
+import com.wdkl.app.ncs.callingdoor.activity.SystemActivity
 import com.wdkl.app.ncs.callingdoor.activity.WebviewActivity
 import com.wdkl.app.ncs.callingdoor.adapter.DeviceMenuapter
 import com.wdkl.app.ncs.callingdoor.databinding.NursingWorkLayBinding
@@ -21,10 +21,7 @@ import com.wdkl.ncs.android.middleware.common.MessageEvent
 import com.wdkl.ncs.android.middleware.logic.contract.callingdoor.NursingWorkFragmentContract
 import com.wdkl.ncs.android.middleware.logic.presenter.callingdoor.NursingWorkFragmentPresenter
 import com.wdkl.ncs.android.middleware.model.vo.DeviceMenulist
-import com.wdkl.ncs.android.middleware.tcp.TcpClient
 import kotlinx.android.synthetic.main.nursing_work_lay.*
-import kotlinx.android.synthetic.main.view_bed_name.*
-import kotlinx.android.synthetic.main.view_bed_name.tv_bed_name
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
@@ -59,26 +56,12 @@ class NursingWorkFragment : BaseFragment<NursingWorkFragmentPresenter, NursingWo
         if (part_id!=null){
             presenter.DeviceMenulist(part_id!!, 4)
         }
-        time()
     }
     //点击事件
     override fun bindEvent() {
 
     }
-   private fun time(){
-       timer = object : CountDownTimer(100000, 100000) {
-           override fun onTick(millisUntilFinished: Long) {
-               // 每个计时周期结束时调用该方法
-
-           }
 
-           override fun onFinish() {
-               // 倒计时结束时调用该方法
-               EventBus.getDefault().post(MessageEvent("Return_to", Constant.EVENT_SIGNIN_MSG))
-//               println("倒计时结束!")
-           }
-       }
-   }
     override fun destory() {
 
     }
@@ -122,11 +105,9 @@ class NursingWorkFragment : BaseFragment<NursingWorkFragmentPresenter, NursingWo
     }
 
     override fun onResume() {
-        timer.start()
         super.onResume()
     }
     override fun onPause() {
-        timer.cancel()
         super.onPause()
     }
     override fun onStop() {
@@ -159,10 +140,10 @@ class NursingWorkFragment : BaseFragment<NursingWorkFragmentPresenter, NursingWo
     val regexs = "\\{\\{([A-Za-z]+)\\?(.*?)\\}\\}".toRegex()
     override fun onItemClick(view: View, keyId: Int) {
         try {
-            if (allOrders.get(keyId ).type.equals("URL")){
-                name =allOrders.get(keyId ).name
-                var url =allOrders.get(keyId ).url
-                var text = allOrders.get(keyId ).url_params_temp
+            if (allOrders.get(keyId).type.equals("URL")){
+                name =allOrders.get(keyId).name
+                var url =allOrders.get(keyId).url
+                var text = allOrders.get(keyId).url_params_temp
                 if (!text.equals("")){
                     regexs.findAll(text).forEach { matchResult ->
                         val key = matchResult.groupValues[1]
@@ -203,6 +184,13 @@ class NursingWorkFragment : BaseFragment<NursingWorkFragmentPresenter, NursingWo
                 activity.startActivity(intent)
                 // 输出结果
     //            showMessage(text)
+            }else if (allOrders.get(keyId).type.equals("activity")){
+                if (allOrders.get(keyId).act_name.equals("SystemActivity")){
+                    val intent = Intent()
+                    intent.setClass(activity, SystemActivity::class.java)
+                    activity.startActivity(intent)
+                }
+
             }
         } catch (e: Exception) {
            showMessage("结果异常,请在后台设置")

+ 32 - 56
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/hardware/HardTools.java

@@ -1,81 +1,57 @@
 package com.wdkl.app.ncs.callingdoor.hardware;
 
 
-import android.os.Handler;
+import android.app.Application;
+import android.content.Context;
+
+import com.wdkl.app.ncs.callingdoor.activity.AppUpdateActivity;
+import com.wdkl.app.ncs.callingdoor.activity.CallingdoorActivity;
 
 public  class HardTools {
 
     public HardTools() {
 
     }
-
-    public Handler mHandler = null;
-    public void setHandler(Handler handler) {
-        this.mHandler = handler;
-    }
-
-    private boolean isReadStart;
-
-    public boolean isReadStart() {
-        return isReadStart;
-    }
-
-    public void setReadStart(boolean readStart) {
-        isReadStart = readStart;
-    }
-
-    public void EvenRead() {
-
-    }
-    //
-
-
-
-    public interface  IdCardReadListener{
-//        void getIdInfoSucess(UserInfo userInfo, String token);
-        void beginIdRead();
-        void getIdInfoFail();
-    }
-    public  IdCardReadListener idCardReadListener;
-
-    public  void setIdCardReadListener(IdCardReadListener idCardReadListener) {
-        this.idCardReadListener = idCardReadListener;
-    }
-
- public Handler getmHandler() {
-  return mHandler;
- }
-
- public void setmHandler(Handler mHandler) {
-  this.mHandler = mHandler;
- }
-
+    //初始化
     public void init(){}
+    //退出
     public void unInit(){}
+    //是否卸载旧版本
+    public void uninstallApp(Context context , boolean isuninstall, String name){}
+    //串口设置
+    public void setSerial(CallingdoorActivity callingdoorActivity){}
+    //检查launch版本
+    public void checkLaunch(){}
+    //紧急按钮Start
+    public void setSOSStart(){}
+    //紧急按钮Stop
+    public void setSOSStop(){}
+    //门灯颜色
+    public void setDoorLight(int type){}
+    //重置设备
+    public void resetDevice(){}
+    //重置设备 XCrashUtils
+    public void resetDevicex(Application application){}
+    //注册方式
+    public void Registration(Context context ){}
+    //安装方式1
+    public void installApk(AppUpdateActivity context ){}
+    //安装方式2
+    public void startInstallApk(AppUpdateActivity context ){}
+
 
     //提供卡号
     public  void offerCardData(String data){}
     //提供按键数据
     public void offerKeyBoardData(String data){}
-    //是否开启喂狗
-    public  void enableWatchDog(boolean isEnable){}
-     //喂狗
-     public  void feedDog(){}
     //是否开启灯光
     public  void enableLed(boolean isEnable){}
     public  void enableIRLed(boolean isEnable){}
     public  void enableControlLed(boolean isEnable,int id){}
-    //开关门继电器控制
-    public void enalbeDoor(boolean isEnable,boolean isShowLight){}
-    public void sendGetHumanTemp(long delayTime){}
-    public void startGetHumanTemp(){}//开始收集体温
-    public void endGetHumanTemp(){}//结束收集体温
-    public boolean GetHumanTempIsStart(){return false;}//开始收集体温
+    //麦克风
+    //
 
     public void enalbeNet(boolean isEnable){}
-    //获取人脸识别service名称
-    public String getFaceServiceName(){return "com.ldhl.face.face.facedeter.FeterService";}
-
     //设置voip 初始化配置
     public void setVoipConfig(){}
 

+ 15 - 8
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/hardware/HardWareFactroy.java

@@ -1,4 +1,12 @@
 package com.wdkl.app.ncs.callingdoor.hardware;
+
+import com.darsh.multipleimageselect.helpers.Constants;
+import com.wdkl.app.ncs.callingdoor.BuildConfig;
+import com.wdkl.app.ncs.callingdoor.hardware.imp.W3288HardTools;
+import com.wdkl.app.ncs.callingdoor.hardware.imp.Z3128HardTools;
+import com.wdkl.app.ncs.callingdoor.hardware.imp.Z3368HardTools;
+import com.wdkl.ncs.android.middleware.common.Constant;
+
 /**
  * 硬件设备控制适配类
  *
@@ -8,14 +16,13 @@ public  class HardWareFactroy {
     private static HardTools hardTools;
     public static HardTools getHardTools() {
         if(null == hardTools) {
-//            if( BuildConfig.flag.equals(Constants.DEV_GKTC)|| BuildConfig.flag.equals(Constants.DEV_SMTC))
-//                hardTools = GKTCHardTools.getInstance();
-//            else if(BuildConfig.flag.equals(Constants.DEV_JDZCX)){
-//                hardTools = JDZCXHardTools.getInstance();
-//            }else if(BuildConfig.flag.equals(Constants.DEV_HYZN)){//华壹智能
-//                hardTools = HTZN8CHardTools.getInstance();
-//            }
-
+            if( BuildConfig.flag.equals(Constant.DEV_Z_RK3128))
+                hardTools = Z3128HardTools.getInstance();
+            else if(BuildConfig.flag.equals(Constant.DEV_W_RK3288)){
+                hardTools = W3288HardTools.getInstance();
+            } else if(BuildConfig.flag.equals(Constant.DEV_Z_RK3368)){
+                hardTools = Z3368HardTools.getInstance();
+            }
         }
         return hardTools ;
     }

+ 105 - 0
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/hardware/imp/W3288HardTools.java

@@ -0,0 +1,105 @@
+package com.wdkl.app.ncs.callingdoor.hardware.imp;
+
+
+import android.app.AlarmManager;
+import android.app.Application;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.util.Log;
+
+import com.example.yf_rk3288_api.YF_RK3288_API_Manager;
+import com.wdkl.app.ncs.callingdoor.hardware.HardTools;
+import com.wdkl.app.ncs.callingdoor.helper.AppUpdateHelper;
+import com.wdkl.app.ncs.callingdoor.helper.NetHelper;
+import com.wdkl.app.ncs.callingdoor.helper.SOSHelper;
+import com.wdkl.app.ncs.callingdoor.helper.SerialPortHelper;
+import com.wdkl.ncs.android.component.welcome.activity.WelcomeActivity;
+import com.wdkl.ncs.android.lib.utils.AppTool;
+import com.wdkl.ncs.android.middleware.common.Constant;
+import com.wdkl.ncs.android.middleware.utils.AppUtil;
+
+import java.util.List;
+
+/**
+ * Z-3128硬件控制类
+ *
+ * */
+public class W3288HardTools extends HardTools {
+
+    public static final String HARDWDT_SERVICE = "Z3128HardTools";
+
+
+
+
+    private static class Z3128HardToolsHolder{
+        private final  static W3288HardTools z3128HardTools = new W3288HardTools();
+    }
+
+    public static W3288HardTools getInstance(){
+        return Z3128HardToolsHolder.z3128HardTools;
+    }
+
+    @Override
+    public void init() {
+
+    }
+
+    @Override
+    public void unInit() {
+
+    }
+    @Override
+    public void setSOSStart() {
+
+    }
+
+    @Override
+    public void setSOSStop() {
+
+    }
+    @Override
+    public void setDoorLight(int type) {
+
+    }
+    @Override
+    public void resetDevice() {
+
+    }
+    @Override
+    public void resetDevicex(Application application) {
+        //重新启动app
+        Intent mStartActivity = new Intent(application.getApplicationContext(), WelcomeActivity.class);
+        mStartActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+        int mPendingIntentId = 123456;
+        PendingIntent mPendingIntent = PendingIntent.getActivity(application.getApplicationContext(), mPendingIntentId, mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);
+        AlarmManager mgr = (AlarmManager) application.getApplicationContext().getSystemService(Context.ALARM_SERVICE);
+        mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 2000, mPendingIntent);
+
+        android.os.Process.killProcess(android.os.Process.myPid());
+        System.exit(0);
+    }
+    @Override
+    public void Registration(Context context) {
+        //获取mac地址
+        Constant.LOCAL_MAC = NetHelper.getInstance().getMacAddress();
+        Constant.DEVICE_REGISTER_ID = Constant.LOCAL_MAC;
+
+        YF_RK3288_API_Manager yfRk3288ApiManager = new YF_RK3288_API_Manager(context);
+        //获取设备序列号
+        Constant.DEVICE_SN = yfRk3288ApiManager.yfgetSerialNumber();
+        Constant.DEVICE_REGISTER_ID = Constant.DEVICE_SN;
+
+        //点亮屏幕并设置为永不休眠
+        yfRk3288ApiManager.yfSetLCDOn();
+        AppTool.Setting.setScreenOffTimeOut(context, 2147483647);
+    }
+    @Override
+    public void uninstallApp(Context context, boolean isuninstall, String name) {
+
+    }
+
+
+}

+ 119 - 66
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/hardware/imp/Z3128HardTools.java

@@ -1,116 +1,169 @@
 package com.wdkl.app.ncs.callingdoor.hardware.imp;
 
+import android.app.Application;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.provider.Settings;
+import android.util.Log;
+
+
+import com.umeng.socialize.net.e;
+import com.wdkl.app.ncs.callingdoor.activity.AppUpdateActivity;
+import com.wdkl.app.ncs.callingdoor.activity.CallingdoorActivity;
 import com.wdkl.app.ncs.callingdoor.hardware.HardTools;
+import com.wdkl.app.ncs.callingdoor.helper.AppUpdateHelper;
+import com.wdkl.app.ncs.callingdoor.helper.NetHelper;
+import com.wdkl.app.ncs.callingdoor.helper.SOSHelper;
+import com.wdkl.app.ncs.callingdoor.helper.SerialPortHelper;
+import com.wdkl.ncs.android.lib.utils.AppTool;
+import com.wdkl.ncs.android.middleware.common.Constant;
+import com.wdkl.ncs.android.middleware.utils.AppUtil;
+
+import java.util.List;
+
+import serialporttest.utils.SerialPortUtil;
+import serialporttest.utils.SerialPortUtil433;
+
+import static com.google.common.collect.ComparisonChain.start;
 
 /**
  * Z-3128硬件控制类
  *
  * */
-public class Z3128HardTools  extends HardTools {
+public class Z3128HardTools extends HardTools {
 
-    public static final String HARDWDT_SERVICE = "hardwdt";
-    private boolean isReadStart;
+    public static final String HARDWDT_SERVICE = "Z3128HardTools";
+    private Application app;
 
-    public boolean isReadStart() {
-        return isReadStart;
-    }
-
-    public void setReadStart(boolean readStart) {
-        isReadStart = readStart;
-    }
-
-    public void EvenRead() {
-        if (!bopen) {
-            OnBnOpen();
-            return;
-        }
-    }
 
     private static class Z3128HardToolsHolder{
-        private final  static Z3128HardTools zhkj7HardTools = new Z3128HardTools();
+        private final  static Z3128HardTools z3128HardTools = new Z3128HardTools();
     }
 
     public static Z3128HardTools getInstance(){
-        return Z3128HardToolsHolder.zhkj7HardTools;
+        return Z3128HardToolsHolder.z3128HardTools;
     }
 
     @Override
     public void init() {
-
+        SerialPortUtil.getInstance().openSerialPort();
+        //打开433串口0
+        SerialPortUtil433.getInstance().openSerialPort();
     }
 
-    private TaskThread task;
-    private boolean bopen;
-
-    public void OnBnOpen() {
-
+    @Override
+    public void unInit() {
+        SerialPortUtil.getInstance().closeHeart();
+        SerialPortUtil.getInstance().closeSerialPort();
+        SerialPortUtil433.getInstance().closeSerialPort();
     }
 
-    public void OnBnClose()
-    {
-        isReadStart = false;
+    @Override
+    public void resetDevice() {
+        SerialPortHelper.resetDevice();
     }
-    private boolean isEexit;
     @Override
-    public void unInit() {
-
+    public void resetDevicex(Application application) {
+        AppUpdateHelper.reboot(application);
     }
-
     @Override
-    public void enableLed(boolean isEnable) {
-
+    public void Registration(Context context) {
+        //获取mac地址
+        Constant.LOCAL_MAC = NetHelper.getInstance().getMacAddress();
+        Constant.DEVICE_REGISTER_ID = Constant.LOCAL_MAC;
     }
 
     @Override
-    public void enalbeDoor(boolean isEnable,boolean isShowLight) {
-
+    public void setSerial(CallingdoorActivity callingdoorActivity) {
+        try {
+            Thread.sleep(1500); // 延时1500毫秒 (1.5秒)
+            // 串口监听
+            callingdoorActivity.setSerialListener();
+            // 打开MICsetSerialListener
+            SerialPortHelper.setMIC(false);
+            SerialPortHelper.setHandsFree(true);
+            SerialPortHelper.setSosLight("0");
+            // 默认门灯白色
+            // SerialPortHelper.setDoorLight(1, "111");
+            //护理状态
+//                Constant.inNursing = SettingConfig.getInNursing(activity)
+//                if (Constant.inNursing) {
+//                    nursingInteId = SettingConfig.getNursingId(activity)
+//                    enterNursing()
+//                } else {
+//                    SerialPortHelper.setDoorLight(0, "000")
+//                }
+            //设置默认时区为中国标准时间
+            //val alarmManager = getSystemService(ALARM_SERVICE) as AlarmManager
+            //alarmManager.setTimeZone("Asia/Shanghai")
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
     }
 
     @Override
-    public void enalbeNet(boolean isEnable) {
-
+    public void uninstallApp(Context context, boolean isuninstall, String name) {
+        //卸载原来二代系统apk
+        if (isuninstall) {
+            Thread thread = new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    // 在子线程中执行的代码
+                    if (checkAppExist(context,name)) {
+                        AppUtil.uninstallApp(name);
+                    }
+                }
+            });
+        }
     }
 
     @Override
-    public void enableWatchDog(boolean isEnable) {
+    public void setSOSStart() {
+        SOSHelper.sosStart();
     }
 
     @Override
-    public void feedDog() {
-
+    public void setSOSStop() {
+        SOSHelper.sosStop();
+    }
+    @Override
+    public void setDoorLight(int type) {
+        if (type==1){
+            //绿色
+            SerialPortHelper.setDoorLight(1, Constant.nursingColor);
+        }else if (type==2){
+            //白色
+            SerialPortHelper.setDoorLight(1, "111"); //白色
+        }else if (type==3){
+            //红色
+            SerialPortHelper.setDoorLight(1, "200"); //红色闪烁
+        }else if (type==4){
+            //红色
+            SerialPortHelper.setDoorLight(0, "000"); //关闭
+        }
     }
 
-    public void OnBnRead()
-    {
-
+    @Override
+    public void installApk(AppUpdateActivity context) {
     }
 
-    public void Authenticate()
-    {
+    @Override
+    public void startInstallApk(AppUpdateActivity context) {
 
     }
 
-    public class TaskThread extends  Thread{
-        private boolean isRunning = true;
-        public synchronized void setRunning(boolean isRunning) {
-            this.isRunning = isRunning;
-        }
-
-        @Override
-        public void run() {
-            while(isRunning){
-                try {
-                    Thread.sleep(500);
-                } catch (InterruptedException e) {
-                    e.printStackTrace();
-                }
-                OnBnRead();
-                try {
-                    Thread.sleep(200);
-                } catch (InterruptedException e) {
-                    e.printStackTrace();
-                }
+    private boolean checkAppExist(Context context, String name) {
+        PackageManager packageManager = context.getPackageManager();
+        List<PackageInfo> packageInfoList = packageManager.getInstalledPackages(0);
+        boolean appExist = false;
+        for (PackageInfo pInfo : packageInfoList) {
+            if (name.equals(pInfo.packageName)) {
+                appExist = true;
+                break;
             }
         }
+        Log.e("wdkl_app", "callingdoor app exist: " + appExist);
+        return appExist;
     }
 }

+ 154 - 0
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/hardware/imp/Z3368HardTools.java

@@ -0,0 +1,154 @@
+package com.wdkl.app.ncs.callingdoor.hardware.imp;
+
+import android.app.Application;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.util.Log;
+
+import com.wdkl.app.ncs.callingdoor.activity.CallingdoorActivity;
+import com.wdkl.app.ncs.callingdoor.hardware.HardTools;
+import com.wdkl.app.ncs.callingdoor.helper.AppUpdateHelper;
+import com.wdkl.app.ncs.callingdoor.helper.NetHelper;
+import com.wdkl.app.ncs.callingdoor.helper.SOSHelper;
+import com.wdkl.app.ncs.callingdoor.helper.SerialPortHelper;
+import com.wdkl.ncs.android.middleware.common.Constant;
+import com.wdkl.ncs.android.middleware.utils.AppUtil;
+
+import java.util.List;
+
+import serialporttest.utils.SerialPortUtil;
+import serialporttest.utils.SerialPortUtil433;
+
+/**
+ * Z-3128硬件控制类
+ *
+ * */
+public class Z3368HardTools extends HardTools {
+
+    public static final String HARDWDT_SERVICE = "Z3128HardTools";
+
+
+
+    private static class Z3128HardToolsHolder{
+        private final  static Z3368HardTools z3128HardTools = new Z3368HardTools();
+    }
+
+    public static Z3368HardTools getInstance(){
+        return Z3128HardToolsHolder.z3128HardTools;
+    }
+
+    @Override
+    public void init() {
+        SerialPortUtil.getInstance().openSerialPort();
+        //打开433串口0
+        SerialPortUtil433.getInstance().openSerialPort();
+    }
+
+    @Override
+    public void unInit() {
+        SerialPortUtil.getInstance().closeHeart();
+        SerialPortUtil.getInstance().closeSerialPort();
+        SerialPortUtil433.getInstance().closeSerialPort();
+    }
+    @Override
+    public void setSOSStart() {
+        SOSHelper.sosStart();
+    }
+
+    @Override
+    public void setSOSStop() {
+        SOSHelper.sosStop();
+    }
+    @Override
+    public void resetDevice() {
+
+    }
+    @Override
+    public void Registration(Context context) {
+        //获取mac地址
+        Constant.LOCAL_MAC = NetHelper.getInstance().getMacAddress();
+        Constant.DEVICE_REGISTER_ID = Constant.LOCAL_MAC;
+    }
+    @Override
+    public void resetDevicex(Application application) {
+        AppUpdateHelper.reboot(application);
+    }
+    @Override
+    public void setDoorLight(int type) {
+        if (type==1){
+            //绿色
+            SerialPortHelper.setDoorLight(1, Constant.nursingColor);
+        }else if (type==2){
+            //白色
+            SerialPortHelper.setDoorLight(1, "111"); //白色
+        }else if (type==3){
+            //红色
+            SerialPortHelper.setDoorLight(1, "200"); //红色闪烁
+        }else if (type==4){
+            //红色
+            SerialPortHelper.setDoorLight(0, "000"); //关闭
+        }
+    }
+
+    @Override
+    public void setSerial(CallingdoorActivity callingdoorActivity) {
+        try {
+            Thread.sleep(1500); // 延时1500毫秒 (1.5秒)
+            // 串口监听
+            callingdoorActivity.setSerialListener();
+            // 打开MICsetSerialListener
+            SerialPortHelper.setMIC(false);
+            SerialPortHelper.setHandsFree(true);
+            SerialPortHelper.setSosLight("0");
+            // 默认门灯白色
+            // SerialPortHelper.setDoorLight(1, "111");
+            //护理状态
+//                Constant.inNursing = SettingConfig.getInNursing(activity)
+//                if (Constant.inNursing) {
+//                    nursingInteId = SettingConfig.getNursingId(activity)
+//                    enterNursing()
+//                } else {
+//                    SerialPortHelper.setDoorLight(0, "000")
+//                }
+            //设置默认时区为中国标准时间
+            //val alarmManager = getSystemService(ALARM_SERVICE) as AlarmManager
+            //alarmManager.setTimeZone("Asia/Shanghai")
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+    }
+    @Override
+    public void uninstallApp(Context context, boolean isuninstall, String name) {
+        super.uninstallApp(context, isuninstall, name);
+        //卸载原来二代系统apk
+        if (isuninstall) {
+            Thread thread = new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    // 在子线程中执行的代码
+                    if (checkAppExist(context,name)) {
+                        AppUtil.uninstallApp(name);
+                    }
+                }
+            });
+        }
+    }
+
+
+
+    private boolean checkAppExist(Context context, String name) {
+        PackageManager packageManager = context.getPackageManager();
+        List<PackageInfo> packageInfoList = packageManager.getInstalledPackages(0);
+        boolean appExist = false;
+        for (PackageInfo pInfo : packageInfoList) {
+            if (name.equals(pInfo.packageName)) {
+                appExist = true;
+                break;
+            }
+        }
+        Log.e("wdkl_app", "callingdoor app exist: " + appExist);
+        return appExist;
+    }
+
+}

+ 5 - 4
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/helper/AppUpdateHelper.java

@@ -10,9 +10,10 @@ import android.content.pm.PackageManager;
 import android.net.Uri;
 import android.os.Build;
 import android.os.Environment;
-import android.support.v4.content.FileProvider;
+
 import android.util.Log;
 
+import com.wdkl.app.ncs.callingdoor.hardware.HardWareFactroy;
 import com.wdkl.ncs.android.component.welcome.activity.WelcomeActivity;
 
 import java.io.BufferedReader;
@@ -22,6 +23,8 @@ import java.io.PrintWriter;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
 
+import androidx.core.content.FileProvider;
+
 public class AppUpdateHelper {
     private final static String TAG = "AppUpdate";
 
@@ -213,9 +216,7 @@ public class AppUpdateHelper {
             intent.putExtra("interval", 1);
             intent.putExtra("window", 0);
             context.sendBroadcast(intent);
-            if ("rk3128".equals(Build.MODEL)) {
-                SerialPortHelper.resetDevice();
-            }
+            HardWareFactroy.getHardTools().resetDevice();
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 3 - 1
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/helper/CallbedDialogHelper.java

@@ -2,7 +2,7 @@ package com.wdkl.app.ncs.callingdoor.helper;
 
 import android.app.Activity;
 import android.app.AlertDialog;
-import android.support.v7.widget.RecyclerView;
+
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -15,6 +15,8 @@ import com.wdkl.app.ncs.callingdoor.R;
 import com.wdkl.app.ncs.callingdoor.adapter.BedItemAdapter;
 import com.wdkl.ncs.android.middleware.model.vo.FrameBedVO;
 
+import androidx.recyclerview.widget.RecyclerView;
+
 public class CallbedDialogHelper {
 
     private static AlertDialog alertDialog;

+ 2 - 4
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/helper/SOSHelper.java

@@ -22,7 +22,7 @@ public class SOSHelper {
     };
 
     public static void sosStart() {
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
+
             SerialPortHelper.setSosLight("2");
             OtherUtil.sendSosCall(Constant.DEVICE_ID);
             SerialPortHelper.setDoorLight(1, "200"); //红色闪烁
@@ -31,11 +31,10 @@ public class SOSHelper {
 
             //5min之后紧急按钮灯自动复位
             handler.sendEmptyMessageDelayed(110, 300000);
-        }
+
     }
 
     public static void sosStop() {
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
             handler.removeCallbacksAndMessages(null);
             if (Constant.day_state == 1) {
                 SerialPortHelper.setSosLight("1");
@@ -52,6 +51,5 @@ public class SOSHelper {
                 //SerialPortHelper.setDoorLight(1, "111"); //白色
                 DoorLightHelper.resetDoorLight();
             }
-        }
     }
 }

+ 8 - 8
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/helper/SerialPortHelper.java

@@ -10,26 +10,26 @@ public class SerialPortHelper {
      * 麦克风切换控制
      */
     public static void setMIC(boolean mainMIC) {
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
+
             if (mainMIC) {
                 SerialPortUtil.getInstance().sendCommand(SerialPortUtil.MIC, "0", "F");
             } else {
                 SerialPortUtil.getInstance().sendCommand(SerialPortUtil.MIC, "1", "F");
             }
-        }
+
     }
 
     /**
      * 设置免提
      */
     public static void setHandsFree(boolean isHandsFree) {
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
+
             if (isHandsFree) {
                 SerialPortUtil.getInstance().sendCommand(SerialPortUtil.AUDIO, "0", "F");
             } else {
                 SerialPortUtil.getInstance().sendCommand(SerialPortUtil.AUDIO, "1", "F");
             }
-        }
+
     }
 
     /**
@@ -54,16 +54,16 @@ public class SerialPortHelper {
      * 设置卫生间紧急按钮灯状态: 0关闭1打开2闪烁
      */
     public static void setSosLight(String state) {
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
+
             SerialPortUtil.getInstance().sendCommand(SerialPortUtil.ULED, state, "F");
-        }
+
     }
 
     //重置设备
     public static void resetDevice() {
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
+
             //SerialPortUtil.getInstance().sendCommand(SerialPortUtil.NET_STATUS , "1", "F");
             SerialPortUtil.getInstance().systemRestart();
-        }
+
     }
 }

+ 2 - 5
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/helper/XCrashUtils.java

@@ -9,6 +9,7 @@ import android.os.Build;
 import android.util.Log;
 
 import com.wdkl.app.ncs.callingdoor.BuildConfig;
+import com.wdkl.app.ncs.callingdoor.hardware.HardWareFactroy;
 import com.wdkl.ncs.android.component.welcome.activity.WelcomeActivity;
 import com.wdkl.ncs.android.middleware.api.UrlManager;
 
@@ -94,12 +95,8 @@ public class XCrashUtils {
 
                 debug(logPath, null);
             }*/
+            HardWareFactroy.getHardTools().resetDevicex(app);
 
-            if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
-                AppUpdateHelper.reboot(app);
-            } else {
-                restartApp();
-            }
         }
     };
 

+ 1 - 1
callingdoor/src/main/res/drawable/shape_bed_nurse_bg.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android">
-    <solid android:color="#F5F8FF"
+    <solid android:color="#EBF1FE"
         />
     <corners
         android:topLeftRadius="@dimen/d10"

+ 1 - 1
callingdoor/src/main/res/layout/call_bed_dialog_lay.xml

@@ -13,7 +13,7 @@
         android:text="@string/str_cancel"
         android:textColor="#2F9DF1"/>
 
-    <android.support.v7.widget.RecyclerView
+    <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/recycler_bed_list"
         android:layout_width="match_parent"
         android:layout_height="match_parent"

+ 15 - 14
callingdoor/src/main/res/layout/callingdoor_main_new.xml

@@ -1,21 +1,24 @@
 <?xml version="1.0" encoding="utf-8"?>
 
 <layout xmlns:android="http://schemas.android.com/apk/res/android">
-    <LinearLayout
+    <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:orientation="horizontal"
-        android:background="#F7F7F7">
+        android:background="#E6E6E6">
 
+
+        <!--通话界面-->
+        <FrameLayout
+            android:id="@+id/call_frame_new"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            />
         <!--右侧按钮区域-->
-<!--        <ScrollView-->
-<!--            android:id="@+id/room_actions"-->
-<!--            android:layout_width="120dp"-->
-<!--            android:layout_height="match_parent"-->
-<!--            android:layout_below="@id/ll_room_name"-->
-<!--            android:layout_alignParentLeft="true">-->
+
 
             <RelativeLayout
+                android:id="@+id/main_rl_1"
                 android:layout_width="120dp"
                 android:layout_height="match_parent"
                 android:background="@mipmap/bg"
@@ -132,8 +135,10 @@
 <!--        </ScrollView>-->
 
         <RelativeLayout
+            android:id="@+id/main_rl_2"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
+            android:layout_toRightOf="@+id/main_rl_1"
             android:background="#EAF2F9">
 
             <include
@@ -150,10 +155,6 @@
                 />
         </RelativeLayout>
 
-        <!--通话界面-->
-        <FrameLayout
-            android:id="@+id/call_frame"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent" />
-    </LinearLayout>
+
+    </RelativeLayout>
 </layout>

+ 1 - 0
callingdoor/src/main/res/layout/item_bed.xml

@@ -6,6 +6,7 @@
     android:paddingLeft="4dp"
     android:background="@drawable/shape_bed_bg"
     android:padding="@dimen/d12"
+    android:layout_marginRight="@dimen/d15"
     android:orientation="vertical">
 
     <RelativeLayout

+ 24 - 10
callingdoor/src/main/res/layout/item_icon_lay.xml

@@ -6,30 +6,44 @@
     </data>
 
     <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        >
 
         <LinearLayout
             android:id="@+id/ll_menu_bt"
-            android:layout_width="120dp"
-            android:layout_height="120dp"
+            android:layout_width="267dp"
+            android:layout_height="126dp"
             android:orientation="horizontal"
-            android:gravity="center"
+            android:gravity="center_vertical"
+            android:layout_marginRight="@dimen/d28"
             android:background="@drawable/shape_bed_bg"
             android:layout_below="@+id/tv_nursing_code">
 
             <ImageView
                 android:id="@+id/img_menu"
-                android:layout_width="80dp"
-                android:layout_height="80dp" />
+                android:layout_width="67dp"
+                android:layout_height="67dp"
+                android:layout_marginLeft="@dimen/d34"
+                />
 
             <TextView
                 android:id="@+id/tx_menu"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:textColor="@color/white"
-                android:layout_marginTop="2dp"
-                android:textSize="@dimen/font_size_20" />
+                android:textColor="@color/black"
+                android:textStyle="bold"
+                android:layout_marginLeft="@dimen/d21"
+                android:text="设备信息"
+                android:textSize="17sp" />
+
+            <ImageView
+                android:id="@+id/img_menu1"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d34"
+                android:background="@mipmap/jr"
+                />
         </LinearLayout>
 
     </LinearLayout>

+ 28 - 0
callingdoor/src/main/res/layout/layout_nodate.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/layout_no_date"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:id="@+id/linear_parking"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="#F1F2F4"
+        android:gravity="center"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@+id/no_date_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:drawablePadding="20dip"
+            android:drawableTop="@mipmap/no_conven_img"
+            android:textColor="#333333"
+            android:textSize="14dip" />
+
+    </LinearLayout>
+
+</LinearLayout>

+ 8 - 5
callingdoor/src/main/res/layout/main_view_layout.xml

@@ -1,10 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
-<layout >
+<layout xmlns:android="http://schemas.android.com/apk/res/android">
     <LinearLayout
-        xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:background="@color/white"
+        android:background="#EAEAEA"
         android:orientation="vertical">
 
         <LinearLayout
@@ -18,6 +17,7 @@
                 android:layout_width="600dp"
                 android:layout_height="match_parent"
                 android:gravity="center_vertical"
+                android:layout_marginLeft="@dimen/d18"
                 android:background="@mipmap/fang_bg">
 
                 <ImageView
@@ -47,6 +47,8 @@
             <RelativeLayout
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
+                android:layout_marginLeft="@dimen/d12"
+                android:layout_marginRight="@dimen/d15"
                 android:background="@drawable/shape_bed_bg">
 
                 <TextView
@@ -121,9 +123,10 @@
             android:id="@+id/rv_bed_view"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
+            android:layout_marginTop="@dimen/d15"
             android:overScrollMode="never"
-            android:paddingLeft="2dp"
-            android:paddingRight="2dp" />
+            android:paddingRight="@dimen/d10"
+            />
 
     </LinearLayout>
 </layout>

+ 5 - 3
callingdoor/src/main/res/layout/nursing_work_lay.xml

@@ -7,13 +7,15 @@
 
     <RelativeLayout
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        android:background="#F7F7F7"
+        >
 
-            <android.support.v7.widget.RecyclerView
+            <androidx.recyclerview.widget.RecyclerView
                 android:id="@+id/recycler"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:background="@color/white"
+                android:background="#F7F7F7"
                 android:clipChildren="true"
                 android:padding="@dimen/font_size_20"
                 />

+ 2 - 2
callingdoor/src/main/res/layout/sky_voice_call_layout.xml

@@ -3,7 +3,7 @@
     <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:background="@color/gray_deep">
+        android:background="@mipmap/call_bg">
         <!--全屏视频画面-->
         <FrameLayout
             android:id="@+id/fullscreen_video_frame"
@@ -40,7 +40,7 @@
                     android:layout_height="120dp"
                     android:layout_marginTop="80dp"
                     android:scaleType="centerInside"
-                    android:src="@drawable/ic_nurse" />
+                    android:src="@mipmap/call_haed" />
 
                 <TextView
                     android:id="@+id/sky_voice_call_calling_text"

+ 0 - 2
callingdoor/src/main/res/layout/view_title_layout.xml

@@ -2,8 +2,6 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="42dp"
-    android:background="#FFFFFF"
-
    >
 
 

+ 3 - 3
callingdoor/src/main/res/layout/webciew_lay.xml

@@ -35,7 +35,7 @@
                 android:gravity="center"
                 android:text="点餐"
                 android:textColor="@color/text_room_color"
-                android:textSize="@dimen/font_size_25" />
+                android:textSize="25sp" />
 
         </RelativeLayout>
 
@@ -51,7 +51,7 @@
             android:layout_height="2dp" />
 
 
-        <android.support.v4.widget.NestedScrollView
+        <androidx.core.widget.NestedScrollView
             android:id="@+id/customerScrollView1"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
@@ -63,7 +63,7 @@
                 android:layout_height="match_parent"
                 />
 
-        </android.support.v4.widget.NestedScrollView>
+        </androidx.core.widget.NestedScrollView>
 
 
         <include

BIN
callingdoor/src/main/res/mipmap-mdpi/back_press.png


BIN
callingdoor/src/main/res/mipmap-mdpi/fang_bg.png


BIN
callingdoor/src/main/res/mipmap-mdpi/no_conven_img.png


BIN
callingdoor/src/main/res/mipmap-xhdpi/jr.png


+ 18 - 17
common/build.gradle

@@ -12,6 +12,7 @@ android {
         versionCode app_version_code
         versionName app_version
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+        multiDexEnabled true
         dataBinding {
             enabled = true
         }
@@ -48,10 +49,16 @@ android {
 
 dependencies {
     compile fileTree(include: ['*.jar'], dir: 'libs')
-    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
-        exclude group: 'com.android.support', module: 'support-annotations'
-    })
-
+    /**
+     *   Android基础依赖库
+     */
+    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
+    implementation 'androidx.core:core-ktx:1.3.1'
+    implementation 'androidx.appcompat:appcompat:1.2.0'
+    implementation 'com.google.android.material:material:1.2.1'
+    //testImplementation 'junit:junit:4.+'
+    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
+    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
     /**
      * UI适配
      */
@@ -96,6 +103,7 @@ dependencies {
      *  JavaShop_Android 路由
      */
     compile 'com.enation.geamtear:jrouter-logic:1.0.3'
+    compile 'com.enation.geamtear:jrouter-annotation:1.0.1'
 
     /**
      *  JavaShop_Android 图片选择工具库
@@ -110,18 +118,11 @@ dependencies {
      */
     compile 'com.enation.geamtear.util:logger:1.0.7'
 
-    /**
-     *   Android基础依赖库
-     */
-    compile "com.android.support:design:$support_library_version"
-    compile "com.android.support:support-v4:$support_library_version"
-    compile "com.android.support:cardview-v7:$support_library_version"
-    testCompile 'junit:junit:4.12'
 
     /**
      *   突破方法数限制
      */
-    compile 'com.android.support:multidex:1.0.2'
+    implementation("androidx.multidex:multidex:2.0.1")
 
 
     compile 'com.github.1002326270xc:LayoutManager-FlowLayout:v1.7'
@@ -142,10 +143,10 @@ dependencies {
     compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
     compile 'org.jetbrains.kotlinx:kotlinx-coroutines-core:0.27.0'
 
-    /**
-     *  Databinding
-     */
-    kapt "com.android.databinding:compiler:2.3.3"
+//    /**
+//     *  Databinding
+//     */
+//    kapt "com.android.databinding:compiler:2.3.3"
 
     /**
      *  Dagger依赖
@@ -186,7 +187,7 @@ dependencies {
     /**
      *  constraint-layout布局依赖
      */
-    compile 'com.android.support.constraint:constraint-layout:1.1.0-beta5'
+    implementation("androidx.constraintlayout:constraintlayout:2.1.4")
 
     /**
      * 指示器

+ 1 - 1
common/src/main/code/com/wdkl/ncs/android/lib/adapter/BaseDelegateAdapter.kt

@@ -1,7 +1,7 @@
 package com.wdkl.ncs.android.lib.adapter
 
-import android.support.v7.widget.RecyclerView
 import android.widget.ImageView
+import androidx.recyclerview.widget.RecyclerView
 import com.alibaba.android.vlayout.DelegateAdapter
 import com.bumptech.glide.Glide
 import com.bumptech.glide.load.engine.DiskCacheStrategy

+ 3 - 3
common/src/main/code/com/wdkl/ncs/android/lib/adapter/ListViewBaseAdapter.kt

@@ -1,12 +1,12 @@
 package com.wdkl.ncs.android.lib.adapter
 
 import android.content.Context
-import android.databinding.ViewDataBinding
 import android.view.View
 import android.view.ViewGroup
 import android.widget.BaseAdapter
-import android.databinding.DataBindingUtil
 import android.view.LayoutInflater
+import androidx.databinding.DataBindingUtil
+import androidx.databinding.ViewDataBinding
 
 /**
  * @author LDD
@@ -14,7 +14,7 @@ import android.view.LayoutInflater
  * @From   com.wdkl.ncs.android.lib.utils
  * @Note   listView单一种类Item 快速适配器
  */
-abstract class ListViewBaseAdapter<DataType, in BindingType:ViewDataBinding>constructor(private val context: Context, private val layout:Int, var datas : List<DataType>) : BaseAdapter() {
+abstract class ListViewBaseAdapter<DataType, in BindingType: ViewDataBinding>constructor(private val context: Context, private val layout:Int, var datas : List<DataType>) : BaseAdapter() {
 
     /**
      * @Name  binding

+ 5 - 5
common/src/main/code/com/wdkl/ncs/android/lib/adapter/TextViewDelegateAdapter.kt

@@ -44,7 +44,7 @@ class TextViewDelegateAdapter(val text :String,val textLineCount :Int ,val textC
      * @Date   2018/4/19 下午3:18
      * @Note   构建ViewHolder
      */
-    override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): BaseRecyclerViewHolder<TextAdapterLayBinding> {
+    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseRecyclerViewHolder<TextAdapterLayBinding> {
         return BaseRecyclerViewHolder.build(parent, R.layout.text_adapter_lay)
     }
 
@@ -77,7 +77,7 @@ class TextViewDelegateAdapter(val text :String,val textLineCount :Int ,val textC
      * @Date   2018/4/19 下午3:20
      * @Note   绑定数据
      */
-    override fun onBindViewHolder(holder: BaseRecyclerViewHolder<TextAdapterLayBinding>?, position: Int) {
+    override fun onBindViewHolder(holder: BaseRecyclerViewHolder<TextAdapterLayBinding>, position: Int) {
 
         holder?.bind {
             binding ->
@@ -123,7 +123,7 @@ class TextViewListDelegateAdapter(val text :ArrayList<String>,val textLineCount
      * @Date   2018/4/19 下午3:18
      * @Note   构建ViewHolder
      */
-    override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): BaseRecyclerViewHolder<TextAdapterLayBinding> {
+    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseRecyclerViewHolder<TextAdapterLayBinding> {
         return BaseRecyclerViewHolder.build(parent, R.layout.text_adapter_lay)
     }
 
@@ -156,9 +156,9 @@ class TextViewListDelegateAdapter(val text :ArrayList<String>,val textLineCount
      * @Date   2018/4/19 下午3:20
      * @Note   绑定数据
      */
-    override fun onBindViewHolder(holder: BaseRecyclerViewHolder<TextAdapterLayBinding>?, position: Int) {
+    override fun onBindViewHolder(holder: BaseRecyclerViewHolder<TextAdapterLayBinding>, position: Int) {
 
-        holder?.bind {
+        holder.bind {
             binding ->
             binding.count = textLineCount
             binding.textview.setTextColor(textColor)

+ 1 - 1
common/src/main/code/com/wdkl/ncs/android/lib/adapter/VlayoutHolderAdapter.kt

@@ -1,8 +1,8 @@
 package com.wdkl.ncs.android.lib.adapter
 
-import android.support.v7.widget.RecyclerView
 import android.view.View
 import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
 import com.alibaba.android.vlayout.DelegateAdapter
 import com.alibaba.android.vlayout.LayoutHelper
 

+ 3 - 3
common/src/main/code/com/wdkl/ncs/android/lib/base/BaseActivity.kt

@@ -2,8 +2,8 @@ package com.wdkl.ncs.android.lib.base
 
 import android.content.Context
 import android.content.Intent
-import android.databinding.DataBindingUtil
-import android.databinding.ViewDataBinding
+import androidx.databinding.DataBindingUtil
+import androidx.databinding.ViewDataBinding
 import android.os.Bundle
 import android.view.View
 import android.view.Window
@@ -89,7 +89,7 @@ abstract class BaseActivity<PresenterType : BaseContract.BasePresenter, DataBind
         /**创建根视图*/
         val rootView = layoutInflater.inflate(getLayId(), null, false)
         /**初始化Databinding对象*/
-        mViewBinding = DataBindingUtil.bind(rootView)
+        mViewBinding = DataBindingUtil.bind(rootView)!!
         /**设置根视图到Activity*/
         setContentView(rootView)
         /**执行抽象方法初始化Dagger相应操作*/

+ 1 - 1
common/src/main/code/com/wdkl/ncs/android/lib/base/BaseApplication.kt

@@ -4,7 +4,7 @@ import android.annotation.SuppressLint
 import android.app.Application
 import android.content.Context
 import android.content.Intent
-import android.support.multidex.MultiDexApplication
+import androidx.multidex.MultiDexApplication
 import com.wdkl.ncs.android.lib.core.framework.Framework
 import com.wdkl.ncs.android.lib.core.hack.AndroidHack
 import com.wdkl.ncs.android.lib.core.runtime.ClassNotFoundInterceptor

+ 6 - 6
common/src/main/code/com/wdkl/ncs/android/lib/base/BaseFragment.kt

@@ -1,12 +1,12 @@
 package com.wdkl.ncs.android.lib.base
 
-import android.databinding.DataBindingUtil
-import android.databinding.ViewDataBinding
 import android.os.Bundle
-import android.support.v4.app.Fragment
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.databinding.DataBindingUtil
+import androidx.databinding.ViewDataBinding
+import androidx.fragment.app.Fragment
 import com.wdkl.ncs.android.lib.utils.errorLog
 import com.enation.javashop.utils.base.tool.BaseInterface
 import com.enation.javashop.utils.base.tool.BaseToolActivity
@@ -18,7 +18,7 @@ import javax.inject.Inject
  * @From   com.wdkl.ncs.android.lib.base
  * @Note   Fragment基类
  */
-  abstract class BaseFragment<PresenterType : BaseContract.BasePresenter, DataBindingType : ViewDataBinding> : Fragment(),BaseControl {
+abstract class BaseFragment<PresenterType : BaseContract.BasePresenter, DataBindingType : ViewDataBinding> : Fragment(),BaseControl {
 
     /**
      * @Name  layout
@@ -73,7 +73,7 @@ import javax.inject.Inject
         /**初始化根视图及DataBinding*/
         if (layout == null) {
             layout = inflater.inflate(getLayId(), null)
-            mViewDataBinding = DataBindingUtil.bind(layout)
+            mViewDataBinding = DataBindingUtil.bind(layout!!)!!
         }
 
         /**初始化宿主Activity*/
@@ -87,7 +87,7 @@ import javax.inject.Inject
      * @Data   2017/12/26 上午11:43
      * @Note   在Fragment视图创建完毕后调用
      */
-    override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
 
         /**执行生命周期监听*/

+ 5 - 5
common/src/main/code/com/wdkl/ncs/android/lib/base/GalleryActivity.kt

@@ -2,11 +2,11 @@ package com.wdkl.ncs.android.lib.base
 
 import android.content.Context
 import android.content.Intent
-import android.databinding.DataBindingUtil
-import android.databinding.ViewDataBinding
 import android.os.Bundle
 import android.view.View
 import android.view.inputmethod.InputMethodManager
+import androidx.databinding.DataBindingUtil
+import androidx.databinding.ViewDataBinding
 import com.enation.javashop.android.jrouter.JRouter
 import com.wdkl.ncs.android.lib.utils.debugLog
 import com.enation.javashop.photoutils.app.TakePhoto
@@ -28,7 +28,7 @@ import javax.inject.Inject
  * @From   com.wdkl.ncs.android.lib.base
  * @Note   带有相册功能的Activity基类
  */
- abstract class GalleryActivity<PresenterType : BaseContract.BasePresenter, DataBindingType : ViewDataBinding>: BaseToolActivity(),BaseControl , TakePhoto.TakeResultListener, InvokeListener, TakePhotoinf {
+abstract class GalleryActivity<PresenterType : BaseContract.BasePresenter, DataBindingType : ViewDataBinding>: BaseToolActivity(),BaseControl , TakePhoto.TakeResultListener, InvokeListener, TakePhotoinf {
 
 
     /**
@@ -94,7 +94,7 @@ import javax.inject.Inject
         /**创建根视图*/
         val rootView = layoutInflater.inflate(getLayId(), null, false)
         /**初始化Databinding对象*/
-        mViewBinding = DataBindingUtil.bind(rootView)
+        mViewBinding = DataBindingUtil.bind(rootView!!)!!
         /**设置根视图到Activity*/
         setContentView(rootView)
         /**执行抽象方法初始化Dagger相应操作*/
@@ -323,7 +323,7 @@ import javax.inject.Inject
      * @Data   2017/12/26 下午12:12
      * @Note   保存参数,防止丢失
      */
-    override fun onSaveInstanceState(outState: Bundle?) {
+    override fun onSaveInstanceState(outState: Bundle) {
         getTakePhoto()!!.onSaveInstanceState(outState)
         super.onSaveInstanceState(outState)
     }

+ 3 - 3
common/src/main/code/com/wdkl/ncs/android/lib/base/GalleryFragment.kt

@@ -1,8 +1,8 @@
 package com.wdkl.ncs.android.lib.base
 
 import android.content.Intent
-import android.databinding.ViewDataBinding
 import android.os.Bundle
+import androidx.databinding.ViewDataBinding
 import com.enation.javashop.photoutils.app.TakePhoto
 import com.enation.javashop.photoutils.app.TakePhotoImpl
 import com.enation.javashop.photoutils.model.InvokeParam
@@ -19,7 +19,7 @@ import com.enation.javashop.photoutils.uitl.TakePhotoinf
  * @From   com.wdkl.ncs.android.lib.base
  * @Note   带有相册功能的Fragment基类
  */
- abstract class GalleryFragment<PresenterType : BaseContract.BasePresenter, DataBindingType : ViewDataBinding> : BaseFragment<PresenterType,DataBindingType>(), TakePhoto.TakeResultListener, InvokeListener, TakePhotoinf {
+abstract class GalleryFragment<PresenterType : BaseContract.BasePresenter, DataBindingType : ViewDataBinding> : BaseFragment<PresenterType,DataBindingType>(), TakePhoto.TakeResultListener, InvokeListener, TakePhotoinf {
 
     /**
      * @Name  takePhoto
@@ -52,7 +52,7 @@ import com.enation.javashop.photoutils.uitl.TakePhotoinf
      * @Data   2017/12/26 下午12:12
      * @Note   保存参数,防止丢失
      */
-    override fun onSaveInstanceState(outState: Bundle?) {
+    override fun onSaveInstanceState(outState: Bundle) {
         getTakePhoto()!!.onSaveInstanceState(outState)
         super.onSaveInstanceState(outState)
     }

+ 10 - 12
common/src/main/code/com/wdkl/ncs/android/lib/bind/BaseBindingHelper.kt

@@ -1,8 +1,6 @@
 package com.wdkl.ncs.android.lib.bind
 
-import android.databinding.BindingAdapter
 import android.os.Build
-import android.support.constraint.ConstraintLayout
 import android.text.SpannableStringBuilder
 import android.text.Spanned
 import android.text.style.AbsoluteSizeSpan
@@ -10,14 +8,14 @@ import android.util.TypedValue
 import android.view.View
 import android.widget.ImageView
 import android.widget.TextView
+import androidx.constraintlayout.widget.ConstraintLayout
+import androidx.databinding.BindingAdapter
 import com.bumptech.glide.Glide
 import com.bumptech.glide.load.engine.DiskCacheStrategy
-import com.wdkl.ncs.android.lib.base.BaseApplication
-import com.wdkl.ncs.android.lib.utils.errorLog
-import com.wdkl.ncs.android.lib.utils.getColorCompatible
-import com.wdkl.ncs.android.lib.utils.then
 import com.enation.javashop.imagepluin.R
 import com.enation.javashop.utils.base.tool.ScreenTool
+import com.wdkl.ncs.android.lib.base.BaseApplication
+import com.wdkl.ncs.android.lib.utils.then
 
 /**
  * @author LDD
@@ -34,7 +32,7 @@ object BaseBindingHelper {
      * @param  imageView 需要加载图片的ImageView
      * @param  url       图片Url
      */
-    @BindingAdapter(value = ["bind:url"],requireAll = false)
+    @BindingAdapter(value = ["url"],requireAll = false)
     @JvmStatic fun loadImage(imageView: ImageView?, url: String?) {
         if(imageView == null || url == null ||url == ""){
             return
@@ -42,7 +40,7 @@ object BaseBindingHelper {
         Glide.with(imageView.context).load(url).thumbnail(0.1f).diskCacheStrategy(DiskCacheStrategy.ALL).placeholder(R.drawable.image_loading).error(R.drawable.image_error).into(imageView)
     }
 
-    @BindingAdapter(value = ["bind:url_without_holder"],requireAll = false)
+    @BindingAdapter(value = ["url_without_holder"],requireAll = false)
     @JvmStatic fun loadImageWithoutHoldlder(imageView: ImageView?, url: String?) {
         if(imageView == null || url == null ||url == ""){
             return
@@ -56,7 +54,7 @@ object BaseBindingHelper {
      * @Note   显示价格大小
      * @param  value 价格
      */
-    @BindingAdapter(value = ["bind:price_text"], requireAll = false)
+    @BindingAdapter(value = ["price_text"], requireAll = false)
     @JvmStatic
     fun setPriceText(view: TextView, value: Double) {
         view.text = SpannableStringBuilder("¥$value").then { self ->
@@ -71,7 +69,7 @@ object BaseBindingHelper {
      * @Date   2018/1/30 下午3:05
      * @Note   透明渐变
      */
-    @BindingAdapter(value = ["bind:alpha"],requireAll = false)
+    @BindingAdapter(value = ["alpha"],requireAll = false)
     @JvmStatic fun backgroundGradient(view: ConstraintLayout, value:Int){
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
             var alpha = value
@@ -91,12 +89,12 @@ object BaseBindingHelper {
      * @Date   2018/2/28 上午9:34
      * @Note   解决ConstraintLayout 无法上色
      */
-    @BindingAdapter(value = ["bind:backgroundColor"],requireAll = false)
+    @BindingAdapter(value = ["backgroundColor"],requireAll = false)
     @JvmStatic fun setBackgroundColor(view : View, value: Int){
         view.setBackgroundColor(value)
     }
 
-    @BindingAdapter(value = ["bind:text_count_for_line"],requireAll = true)
+    @BindingAdapter(value = ["text_count_for_line"],requireAll = true)
     @JvmStatic fun setTextSize(tv :TextView , textCount :Int){
         tv.setTextSize(TypedValue.COMPLEX_UNIT_PX,ScreenTool.getScreenWidth(BaseApplication.appContext)/textCount)
     }

+ 7 - 7
common/src/main/code/com/wdkl/ncs/android/lib/core/framework/ActivityLifeController.kt

@@ -39,7 +39,7 @@ class ActivityLifeController :Application.ActivityLifecycleCallbacks {
      * @Note   Activity处于不显示或者半透明状态
      * @return Activity
      */
-    override fun onActivityPaused(p0: Activity?) {
+    override fun onActivityPaused(p0: Activity) {
 
     }
 
@@ -50,11 +50,11 @@ class ActivityLifeController :Application.ActivityLifecycleCallbacks {
      * @Note   Activity处于完全显示状态
      * @return Activity
      */
-    override fun onActivityResumed(p0: Activity?) {
+    override fun onActivityResumed(p0: Activity) {
 
     }
 
-    override fun onActivityStarted(p0: Activity?) {
+    override fun onActivityStarted(p0: Activity) {
 
     }
 
@@ -65,7 +65,7 @@ class ActivityLifeController :Application.ActivityLifecycleCallbacks {
      * @Note   Activity销毁方法
      * @return 销毁的Activity
      */
-    override fun onActivityDestroyed(p0: Activity?) {
+    override fun onActivityDestroyed(p0: Activity) {
         if (p0 != null && isOpenAutoClear) {
             AutoClearHelper.intance.destory(p0.localClassName)
         }
@@ -74,11 +74,11 @@ class ActivityLifeController :Application.ActivityLifecycleCallbacks {
         }
     }
 
-    override fun onActivitySaveInstanceState(p0: Activity?, p1: Bundle?) {
+    override fun onActivitySaveInstanceState(p0: Activity, p1: Bundle) {
 
     }
 
-    override fun onActivityStopped(p0: Activity?) {
+    override fun onActivityStopped(p0: Activity) {
 
     }
 
@@ -89,7 +89,7 @@ class ActivityLifeController :Application.ActivityLifecycleCallbacks {
      * @Note   Activity创建回调
      * @param  p0 创建的Activity
      */
-    override fun onActivityCreated(p0: Activity?, p1: Bundle?) {
+    override fun onActivityCreated(p0: Activity, p1: Bundle?) {
         if (p0 != null) {
             JavaShopActivityTask.instance.pushToActivityStack(p0)
         }

+ 6 - 6
common/src/main/code/com/wdkl/ncs/android/lib/utils/AppTool.kt

@@ -9,8 +9,6 @@ import android.graphics.Color
 import android.os.Build
 import android.os.Handler
 import android.provider.Settings
-import android.support.v4.widget.DrawerLayout
-import android.support.v7.app.AppCompatActivity
 import android.view.View
 import android.view.ViewGroup
 import android.view.WindowManager
@@ -20,6 +18,8 @@ import android.view.animation.AnimationSet
 import android.view.animation.TranslateAnimation
 import android.view.inputmethod.InputMethodManager
 import android.widget.LinearLayout
+import androidx.appcompat.app.AppCompatActivity
+import androidx.drawerlayout.widget.DrawerLayout
 import com.wdkl.ncs.android.lib.base.BaseApplication
 import com.enation.javashop.net.engine.utils.ThreadFromUtils
 import com.enation.javashop.utils.base.tool.ScreenTool
@@ -288,8 +288,8 @@ object AppTool {
             try {
                 if (!"rk3128".equals(Build.MODEL) && !"rk3368".equals(Build.MODEL)) {
                     Settings.System.putInt(
-                        context.contentResolver,
-                        Settings.System.SCREEN_OFF_TIMEOUT, timeout
+                            context.contentResolver,
+                            Settings.System.SCREEN_OFF_TIMEOUT, timeout
                     )
                 }
             } catch (e: java.lang.Exception) {
@@ -485,8 +485,8 @@ object AppTool {
         fun hideKeyBoard(context: Activity) {
             val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
             if (imm.isActive && context.currentFocus != null) {
-                if (context.currentFocus.windowToken != null) {
-                    imm.hideSoftInputFromWindow(context.currentFocus.windowToken, InputMethodManager.HIDE_NOT_ALWAYS)
+                if (context.currentFocus!!.windowToken != null) {
+                    imm.hideSoftInputFromWindow(context.currentFocus!!.windowToken, InputMethodManager.HIDE_NOT_ALWAYS)
                 }
             }
         }

+ 5 - 5
common/src/main/code/com/wdkl/ncs/android/lib/utils/AutoClearValue.kt

@@ -1,9 +1,9 @@
 package com.wdkl.ncs.android.lib.utils
 
 import android.app.Activity
-import android.support.v4.app.Fragment
-import android.support.v4.app.FragmentManager
 import android.util.Log
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentManager
 
 /**
  * @author  LDD
@@ -27,9 +27,9 @@ class AutoClearValue<ValueType> {
      * @Note   在Fragment中使用的构造方法构造方法
      * @param  fragment 所在的Fragment
      */
-    constructor(fragment :Fragment , value: ValueType?) {
-        fragment.fragmentManager.registerFragmentLifecycleCallbacks(object : FragmentManager.FragmentLifecycleCallbacks(){
-            override fun onFragmentDestroyed(fm: FragmentManager?, f: Fragment?) {
+    constructor(fragment : Fragment, value: ValueType?) {
+        fragment.fragmentManager!!.registerFragmentLifecycleCallbacks(object : FragmentManager.FragmentLifecycleCallbacks(){
+            override fun onFragmentDestroyed(fm: FragmentManager, f: Fragment) {
                 if (f == fragment) {
                     this@AutoClearValue.value = null
                     if (fm != null) {

+ 5 - 4
common/src/main/code/com/wdkl/ncs/android/lib/utils/BaseRecyclerViewHolder.kt

@@ -1,10 +1,11 @@
 package com.wdkl.ncs.android.lib.utils
 
-import android.databinding.DataBindingUtil
-import android.databinding.ViewDataBinding
-import android.support.v7.widget.RecyclerView
+
 import android.view.LayoutInflater
 import android.view.ViewGroup
+import androidx.databinding.DataBindingUtil
+import androidx.databinding.ViewDataBinding
+import androidx.recyclerview.widget.RecyclerView
 
 /**
  * @author LDD
@@ -24,7 +25,7 @@ class BaseRecyclerViewHolder<out BindType:ViewDataBinding>(val databinding:BindT
          * @param  layoutId 布局ID
          */
         fun <BindType:ViewDataBinding>build(parent: ViewGroup?,layoutId : Int) : BaseRecyclerViewHolder<BindType>{
-            return BaseRecyclerViewHolder(DataBindingUtil.bind(LayoutInflater.from(parent?.context).inflate(layoutId,parent,false)))
+            return BaseRecyclerViewHolder(DataBindingUtil.bind(LayoutInflater.from(parent?.context).inflate(layoutId,parent,false))!!)
         }
     }
 

+ 2 - 2
common/src/main/code/com/wdkl/ncs/android/lib/utils/EcodeHelper.kt

@@ -33,7 +33,7 @@ class EcodeHelper {
             //容错级别
             hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H)
             //设置空白边距的宽度
-            // hints.put(EncodeHintType.MARGIN, 2); //default is 4
+            hints.put(EncodeHintType.MARGIN, 1) //default is 4
 
             // 图像数据转换,使用了矩阵转换
             val bitMatrix = QRCodeWriter().encode(content, BarcodeFormat.QR_CODE, heightPix, heightPix, hints)
@@ -97,7 +97,7 @@ class EcodeHelper {
         val scaleFactor = srcWidth * 1.0f / 5f / logoWidth.toFloat()
         var bitmap: Bitmap? = Bitmap.createBitmap(srcWidth, srcHeight, Bitmap.Config.ARGB_8888)
         try {
-            val canvas = Canvas(bitmap)
+            val canvas = Canvas(bitmap!!)
             canvas.drawBitmap(src, 0f, 0f, null)
             canvas.scale(scaleFactor, scaleFactor, (srcWidth / 2).toFloat(), (srcHeight / 2).toFloat())
             canvas.drawBitmap(logo, ((srcWidth - logoWidth) / 2).toFloat(), ((srcHeight - logoHeight) / 2).toFloat(), null)

+ 16 - 10
common/src/main/code/com/wdkl/ncs/android/lib/utils/ExtendMethods.kt

@@ -8,22 +8,22 @@ package com.wdkl.ncs.android.lib.utils
  */
 
 import android.app.Activity
-import android.app.Fragment
+import android.app.Service
 import android.content.Context
 import android.content.Intent
-import android.databinding.ObservableField
 import android.os.Looper
-import android.support.v4.content.ContextCompat
-import android.support.v7.app.AppCompatActivity
 import android.view.View
 import android.view.ViewGroup
 import android.view.animation.Animation
 import android.widget.Toast
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import androidx.databinding.ObservableField
+import androidx.fragment.app.Fragment
 import com.alibaba.android.vlayout.DelegateAdapter
 import com.alibaba.android.vlayout.VirtualLayoutManager
 import com.enation.javashop.android.jrouter.JRouter
 import com.enation.javashop.android.jrouter.logic.datainfo.Postcard
-import com.wdkl.ncs.android.lib.R
 import com.wdkl.ncs.android.lib.adapter.BaseDelegateAdapter
 import com.wdkl.ncs.android.lib.base.BaseApplication
 import com.wdkl.ncs.android.lib.base.DisposableManager
@@ -31,6 +31,7 @@ import com.enation.javashop.net.engine.plugin.rxbus.RxBus
 import com.enation.javashop.utils.base.tool.CommonTool
 import com.enation.javashop.utils.base.tool.ScreenTool
 import com.enation.javashop.utils.logger.LoggerFactory
+import com.wdkl.ncs.android.lib.R
 import io.reactivex.disposables.Disposable
 import okhttp3.ResponseBody
 import org.json.JSONArray
@@ -131,7 +132,7 @@ fun <T> acquireInstance(path: String): T {
  * @param  _block 更多操作
  * @param  requstCode 返回码
  */
-fun AppCompatActivity.push(path: String, _block: ((Postcard) -> Unit)? = null, requstCode: Int = -1 , isNeedLogin :Boolean = false) {
+fun AppCompatActivity.push(path: String, _block: ((Postcard) -> Unit)? = null, requstCode: Int = -1, isNeedLogin :Boolean = false) {
     if (isNeedLogin){
         JRouter.prepare().create("/member/login/main").withTransition(R.anim.push_left_in, R.anim.push_left_out).then { postcard ->
             _block?.invoke(postcard)
@@ -174,6 +175,11 @@ fun Activity.push(path: String, _block: ((Postcard) -> Unit)? = null, requstCode
     }
 }
 
+fun Service.push(path: String, _block: ((Postcard) -> Unit)? = null) {
+    JRouter.prepare().create(path).withTransition(R.anim.push_left_in, R.anim.push_left_out).then { postcard ->
+        _block?.invoke(postcard)
+    }.seek(this)
+}
 
 /**
  * @author  LDD
@@ -183,7 +189,7 @@ fun Activity.push(path: String, _block: ((Postcard) -> Unit)? = null, requstCode
  * @param  path Activity注册到JRouter中的路径
  * @param  _block 更多操作
  */
-fun android.support.v4.app.Fragment.push(path: String, _block: ((Postcard) -> Unit)? = null , isNeedLogin :Boolean = false) {
+fun Fragment.push(path: String, _block: ((Postcard) -> Unit)? = null, isNeedLogin :Boolean = false) {
     if (isNeedLogin){
         JRouter.prepare().create("/member/login/main").withTransition(R.anim.push_left_in, R.anim.push_left_out).then { postcard ->
             _block?.invoke(postcard)
@@ -203,7 +209,7 @@ fun android.support.v4.app.Fragment.push(path: String, _block: ((Postcard) -> Un
  * @param  _block 更多操作
  * @param  path Activity注册到JRouter中的路径
  */
-fun Fragment.push(path: String, _block: ((Postcard) -> Unit)? = null , isNeedLogin :Boolean = false) {
+/*fun Fragment.push(path: String, _block: ((Postcard) -> Unit)? = null , isNeedLogin :Boolean = false) {
     if (isNeedLogin){
         JRouter.prepare().create("/member/login/main").withTransition(R.anim.push_left_in, R.anim.push_left_out).then { postcard ->
             _block?.invoke(postcard)
@@ -213,7 +219,7 @@ fun Fragment.push(path: String, _block: ((Postcard) -> Unit)? = null , isNeedLog
     JRouter.prepare().create(path).withTransition(R.anim.push_left_in, R.anim.push_left_out).then { postcard ->
         _block?.invoke(postcard)
     }.seek(activity)
-}
+}*/
 
 /**
  * @author  LDD
@@ -595,7 +601,7 @@ fun <T> Intent.getObjectForGson(key: String, cls: Class<T>): T? {
     return if (hasExtra(key)) {
         val json = getStringExtra(key)
         try {
-            JsonTranforHelper.toObject(json, cls)
+            JsonTranforHelper.toObject(json!!, cls)
         } catch (e: Exception) {
             null
         }

+ 8 - 8
common/src/main/code/com/wdkl/ncs/android/lib/utils/GalleryHelper.kt

@@ -3,13 +3,13 @@ package com.wdkl.ncs.android.lib.utils
 import android.content.Context
 import android.media.Image
 import android.os.Handler
-import android.support.v4.view.PagerAdapter
-import android.support.v4.view.ViewPager
 import android.util.AttributeSet
 import android.util.SparseArray
 import android.view.View
 import android.view.ViewGroup
 import android.widget.ImageView
+import androidx.viewpager.widget.PagerAdapter
+import androidx.viewpager.widget.ViewPager
 import com.bumptech.glide.Glide
 import com.bumptech.glide.load.engine.DiskCacheStrategy
 import com.enation.javashop.imagepluin.R
@@ -105,7 +105,7 @@ class GalleryHelper<DataType> {
 
             private var images = SparseArray<ImageView>()
 
-            override fun isViewFromObject(view: View?, data: Any?): Boolean {
+            override fun isViewFromObject(view: View, data: Any): Boolean {
                 return view === data as View
             }
 
@@ -113,12 +113,12 @@ class GalleryHelper<DataType> {
                 return galleryList.size
             }
 
-            override fun destroyItem(container: ViewGroup?, position: Int, view: Any?) {
+            override fun destroyItem(container: ViewGroup, position: Int, view: Any) {
                 images.remove(position)
-                container?.removeView(view as View)
+                container.removeView(view as View)
             }
 
-            override fun instantiateItem(container: ViewGroup?, position: Int): Any {
+            override fun instantiateItem(container: ViewGroup, position: Int): Any {
                 val imageView = SquareImageView(viewPager.get()?.context!!)
                 imageView.scaleType = ImageView.ScaleType.CENTER_CROP
                 Glide.with(viewPager.get()?.context)
@@ -133,7 +133,7 @@ class GalleryHelper<DataType> {
                 itemCallback2?.more { call -> imageView.setOnClickListener(OnClickListenerAntiViolence({
                     call.invoke(position,imageView,images)
                 }))}
-                container?.addView(imageView, 0)
+                container.addView(imageView, 0)
                 images.append(position,imageView)
                 return imageView
             }
@@ -299,7 +299,7 @@ class GalleryHelper<DataType> {
 
 }
 
-class SquareImageView: ImageView {
+class SquareImageView: androidx.appcompat.widget.AppCompatImageView {
 
     constructor(context: Context) : this(context,null)
 

+ 3 - 3
common/src/main/code/com/wdkl/ncs/android/lib/utils/NoAlphaItemAnimator.kt

@@ -4,9 +4,9 @@ import android.animation.Animator
 import android.animation.AnimatorListenerAdapter
 import android.animation.TimeInterpolator
 import android.animation.ValueAnimator
-import android.support.v4.view.ViewCompat
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.SimpleItemAnimator
+import androidx.core.view.ViewCompat
+import androidx.recyclerview.widget.RecyclerView
+import androidx.recyclerview.widget.SimpleItemAnimator
 import java.util.ArrayList
 
 /**

+ 8 - 8
common/src/main/code/com/wdkl/ncs/android/lib/utils/RecycleViewScrollHelper.kt

@@ -1,7 +1,7 @@
 package com.wdkl.ncs.android.lib.utils
 
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.LinearLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 
 
 /**
@@ -42,9 +42,9 @@ class RecycleViewScrollHelper
         mScrollPositionChangedListener = listener
     }
 
-    override fun onScrollStateChanged(recyclerView: RecyclerView?,
+    override fun onScrollStateChanged(recyclerView: RecyclerView,
                                       newState: Int) {
-        if (mScrollPositionChangedListener == null || recyclerView!!.adapter == null || recyclerView.childCount <= 0) {
+        if (mScrollPositionChangedListener == null || recyclerView.adapter == null || recyclerView.childCount <= 0) {
             return
         }
         val layoutManager = recyclerView.layoutManager
@@ -56,7 +56,7 @@ class RecycleViewScrollHelper
                 //判断顶部/底部检测的优先顺序
                 if (!mIsCheckTopFirstBottomAfter) {
                     //先检测底部
-                    if (this.checkIfScrollToBottom(recyclerView, lastItemPosition, adapter.itemCount)) {
+                    if (this.checkIfScrollToBottom(recyclerView, lastItemPosition, adapter!!.itemCount)) {
                         //若检测滑动到底部时,判断是否需要同时检测滑动到顶部
                         if (mIsCheckTopBottomTogether) {
                             //检测是否滑动到顶部
@@ -76,13 +76,13 @@ class RecycleViewScrollHelper
                     if (this.checkIfScrollToTop(recyclerView, firstItemPosition)) {
                         if (mIsCheckTopBottomTogether) {
                             //检测是否滑动到底部
-                            this.checkIfScrollToBottom(recyclerView, lastItemPosition, adapter.itemCount)
+                            this.checkIfScrollToBottom(recyclerView, lastItemPosition, adapter!!.itemCount)
                             return
                         } else {
                             //若不需要同时检测,直接返回
                             return
                         }
-                    } else if (this.checkIfScrollToBottom(recyclerView, lastItemPosition, adapter.itemCount)) {
+                    } else if (this.checkIfScrollToBottom(recyclerView, lastItemPosition, adapter!!.itemCount)) {
                         //当未检测滑动到底部时,再检测是否滑动到底部
                         return
                     }
@@ -170,7 +170,7 @@ class RecycleViewScrollHelper
         return false
     }
 
-    override fun onScrolled(recyclerView: RecyclerView?, dx: Int, dy: Int) {
+    override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
         if (mScrollDirectionChangedListener != null) {
             if (dx == 0 && dy == 0) {
                 mScrollDirectionChangedListener!!.onScrollDirectionChanged(0, 0)

+ 3 - 3
common/src/main/code/com/wdkl/ncs/android/lib/utils/TangramPlugin.kt

@@ -1,9 +1,9 @@
 package com.wdkl.ncs.android.lib.utils
 
 import android.app.Activity
-import android.support.v7.widget.RecyclerView
 import android.view.View
 import android.widget.ImageView
+import androidx.recyclerview.widget.RecyclerView
 import com.bumptech.glide.Glide
 import com.bumptech.glide.load.engine.DiskCacheStrategy
 import com.wdkl.ncs.android.lib.base.BaseApplication
@@ -108,7 +108,7 @@ class TangramPlugin :TangramIInter{
         return this
     }
 
-    override fun bindRecyclerView(view:RecyclerView):TangramPlugin{
+    override fun bindRecyclerView(view: RecyclerView):TangramPlugin{
         initEngine()
         engine?.bindView(view)
         return this
@@ -117,7 +117,7 @@ class TangramPlugin :TangramIInter{
     override fun onScrolled():TangramPlugin{
         initEngine()
         engine?.contentView?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
-            override fun onScrolled(recyclerView: RecyclerView?, dx: Int, dy: Int) {
+            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
                 super.onScrolled(recyclerView, dx, dy)
                 engine?.onScrolled()
             }

+ 5 - 5
common/src/main/code/com/wdkl/ncs/android/lib/widget/AutoPollRecyclerView.kt

@@ -1,10 +1,10 @@
 package com.wdkl.ncs.android.lib.widget
 
 import android.content.Context
-import android.support.v7.widget.GridLayoutManager
-import android.support.v7.widget.RecyclerView
 import android.util.AttributeSet
 import android.view.MotionEvent
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import java.lang.ref.WeakReference
 
 /**
@@ -16,7 +16,7 @@ class AutoPollRecyclerView : RecyclerView {
     private var running: Boolean = false //标示是否正在自动轮询
     private var canRun: Boolean = false//标示是否可以自动轮询,可在不需要的是否置false
 
-    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {
+    constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
         autoPollTask = AutoPollTask(this)
     }
 
@@ -34,12 +34,12 @@ class AutoPollRecyclerView : RecyclerView {
                 recyclerView.postDelayed(recyclerView.autoPollTask, recyclerView.TIME_AUTO_POLL)
 
                 if (recyclerView.layoutManager is OnegoGridLayoutManager) {
-                    if ((recyclerView.layoutManager as OnegoGridLayoutManager).findLastVisibleItemPosition() == recyclerView.layoutManager.itemCount - 1) {
+                    if ((recyclerView.layoutManager as OnegoGridLayoutManager).findLastVisibleItemPosition() == recyclerView.layoutManager!!.itemCount - 1) {
                         recyclerView.scrollToPosition(0)
                         (recyclerView.layoutManager as OnegoGridLayoutManager).scrollToPositionWithOffset(0, 0)
                     }
                 } else if (recyclerView.layoutManager is GridLayoutManager) {
-                    if ((recyclerView.layoutManager as GridLayoutManager).findLastVisibleItemPosition() == recyclerView.layoutManager.itemCount - 1) {
+                    if ((recyclerView.layoutManager as GridLayoutManager).findLastVisibleItemPosition() == recyclerView.layoutManager!!.itemCount - 1) {
                         recyclerView.scrollToPosition(0)
                         (recyclerView.layoutManager as GridLayoutManager).scrollToPositionWithOffset(0, 0)
                     }

+ 8 - 7
common/src/main/code/com/wdkl/ncs/android/lib/widget/CommonActionBar.kt

@@ -6,10 +6,6 @@ import android.content.res.TypedArray
 import android.graphics.Color
 import android.graphics.drawable.Drawable
 import android.os.Build
-import android.support.annotation.*
-import android.support.annotation.IntRange
-import android.support.constraint.ConstraintLayout
-import android.support.v4.widget.TextViewCompat
 import android.util.AttributeSet
 import android.util.TypedValue
 import android.view.Gravity
@@ -17,13 +13,18 @@ import android.view.View
 import android.widget.ImageView
 import android.widget.TextView
 import com.wdkl.ncs.android.lib.R
-import android.support.constraint.ConstraintSet
 import android.view.LayoutInflater
+import androidx.annotation.ColorInt
+import androidx.annotation.ColorRes
+import androidx.annotation.DrawableRes
+import androidx.annotation.FloatRange
+import androidx.constraintlayout.widget.ConstraintLayout
+import androidx.constraintlayout.widget.ConstraintSet
+import androidx.core.widget.TextViewCompat
 import com.bumptech.glide.Glide
 import com.bumptech.glide.load.engine.DiskCacheStrategy
 import com.wdkl.ncs.android.lib.utils.*
 import com.enation.javashop.utils.base.tool.ScreenTool
-import com.enation.javashop.utils.base.tool.SystemTool
 
 
 /**
@@ -669,7 +670,7 @@ class CommonActionBar : ConstraintLayout {
      * @Note   设置背景透明度  0-255区间  当背景为image时 无效
      * @param  aplha 透明度
      */
-    fun setBackgroundAlpha(@IntRange(from = 0, to = 255) aplha:Int):CommonActionBar{
+    fun setBackgroundAlpha(aplha:Int):CommonActionBar{
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
             backgroundImageView.imageAlpha = aplha
         }

+ 2 - 2
common/src/main/code/com/wdkl/ncs/android/lib/widget/OnegoGridLayoutManager.kt

@@ -1,10 +1,10 @@
 package com.wdkl.ncs.android.lib.widget
 
 import android.content.Context
-import android.support.v7.widget.GridLayoutManager
-import android.support.v7.widget.RecyclerView
 import android.util.AttributeSet
 import android.util.Log
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 
 class OnegoGridLayoutManager : GridLayoutManager {
 

+ 3 - 6
common/src/main/code/com/wdkl/ncs/android/lib/widget/PopCommonView.kt

@@ -1,18 +1,15 @@
 package com.wdkl.ncs.android.lib.widget
 
 import android.app.Activity
-import android.databinding.DataBindingUtil
 import android.graphics.drawable.BitmapDrawable
-import android.support.v7.app.AppCompatActivity
 import android.util.DisplayMetrics
 import android.view.MotionEvent
 import android.view.View
-import android.view.ViewGroup
-import android.view.WindowManager
+import androidx.appcompat.app.AppCompatActivity
+import androidx.databinding.DataBindingUtil
 import com.alibaba.android.vlayout.DelegateAdapter
 import com.alibaba.android.vlayout.VirtualLayoutManager
 import com.wdkl.ncs.android.lib.R
-import com.wdkl.ncs.android.lib.adapter.BaseDelegateAdapter
 import com.wdkl.ncs.android.lib.core.runtime.JavaShopActivityTask
 import com.wdkl.ncs.android.lib.databinding.PopCommonLayBinding
 import com.wdkl.ncs.android.lib.utils.*
@@ -119,7 +116,7 @@ class PopCommonView : PopWindowCompatible{
      */
     private fun createUI(){
         contentView = activity.layoutInflater.inflate(R.layout.pop_common_lay,null)
-        binding = DataBindingUtil.bind(contentView)
+        binding = DataBindingUtil.bind(contentView)!!
         /**初始化LayoutMannager*/
         virtualLayoutManager = VirtualLayoutManager(this.activity)
         /**初始化适配器*/

+ 8 - 8
common/src/main/code/com/wdkl/ncs/android/lib/widget/SaleProgressView.kt

@@ -149,7 +149,7 @@ class SaleProgressView :View {
 
     //绘制背景边框
     private fun drawSide(canvas: Canvas) {
-        canvas.drawRoundRect(bgRectF, radius, radius, sidePaint)
+        canvas.drawRoundRect(bgRectF!!, radius, radius, sidePaint)
     }
 
     //绘制背景
@@ -157,7 +157,7 @@ class SaleProgressView :View {
         if (bgBitmap == null) {
             bgBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888)
         }
-        val bgCanvas = Canvas(bgBitmap)
+        val bgCanvas = Canvas(bgBitmap!!)
         if (bgSrc == null) {
             if (onlyColor != null) {
                 bgSrc = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
@@ -166,13 +166,13 @@ class SaleProgressView :View {
                 bgSrc = BitmapFactory.decodeResource(resources, R.drawable.sale_progress_view_bg)
             }
         }
-        bgCanvas.drawRoundRect(bgRectF, radius, radius, srcPaint)
+        bgCanvas.drawRoundRect(bgRectF!!, radius, radius, srcPaint)
 
         srcPaint.xfermode = mPorterDuffXfermode
 
-        bgCanvas.drawBitmap(bgSrc, null, bgRectF, srcPaint)
+        bgCanvas.drawBitmap(bgSrc!!, null, bgRectF!!, srcPaint)
 
-        canvas.drawBitmap(bgBitmap, 0f, 0f, null)
+        canvas.drawBitmap(bgBitmap!!, 0f, 0f, null)
 
         srcPaint.xfermode = null
     }
@@ -200,7 +200,7 @@ class SaleProgressView :View {
                 radius, radius, srcPaint)
 
         srcPaint.xfermode = mPorterDuffXfermode
-        fgCanvas.drawBitmap(fgSrc, null, bgRectF, srcPaint)
+        fgCanvas.drawBitmap(fgSrc!!, null, bgRectF!!, srcPaint)
 
         canvas.drawBitmap(fgBitmap, 0f, 0f, null)
         srcPaint.xfermode = null
@@ -232,10 +232,10 @@ class SaleProgressView :View {
             textCanvas.drawText(saleText, dp2px(10f), baseLineY, textPaint)
             textCanvas.drawText(scaleText, mWidth - scaleTextWidth - dp2px(10f), baseLineY, textPaint)
         } else if (scale < 1.0f) {
-            textCanvas.drawText(nearOverText, mWidth / 2 - nearOverTextWidth / 2, baseLineY, textPaint)
+            textCanvas.drawText(nearOverText!!, mWidth / 2 - nearOverTextWidth / 2, baseLineY, textPaint)
             textCanvas.drawText(scaleText, mWidth - scaleTextWidth - dp2px(10f), baseLineY, textPaint)
         } else {
-            textCanvas.drawText(overText, mWidth / 2 - overTextWidth / 2, baseLineY, textPaint)
+            textCanvas.drawText(overText!!, mWidth / 2 - overTextWidth / 2, baseLineY, textPaint)
         }
 
         textPaint.xfermode = mPorterDuffXfermode

+ 3 - 3
common/src/main/code/com/wdkl/ncs/android/lib/widget/StarView.kt

@@ -50,18 +50,18 @@ class StarView :View{
         star = typeArray?.getInt(R.styleable.StarView_star,5) ?: 5
 
         if (typeArray?.hasValue(R.styleable.StarView_selectImage)!!){
-            selectedBitmap = drawableToBitmap(typeArray.getDrawable(R.styleable.StarView_selectImage))
+            selectedBitmap = drawableToBitmap(typeArray.getDrawable(R.styleable.StarView_selectImage)!!)
         }else{
             selectedBitmap = BitmapFactory.decodeResource(context.resources, R.drawable.javashop_icon_star_selected)
         }
         if (typeArray.hasValue(R.styleable.StarView_nomalImage)){
-            nomalBitmap = drawableToBitmap(typeArray.getDrawable(R.styleable.StarView_nomalImage))
+            nomalBitmap = drawableToBitmap(typeArray.getDrawable(R.styleable.StarView_nomalImage)!!)
         }else{
             nomalBitmap = BitmapFactory.decodeResource(context.resources, R.drawable.javashop_icon_star_nomal)
         }
 
         if(context is BaseControl){
-            context.addLifeCycleListener { 
+            context.addLifeCycleListener {
                 state ->
                 if (state == LIFE_CYCLE_DESTORY){
                     selectedBitmap.recycle()

+ 2 - 2
common/src/main/code/com/wdkl/ncs/android/lib/widget/VerificationCodeView.kt

@@ -6,8 +6,6 @@ import android.graphics.Color
 import android.graphics.Paint
 import android.graphics.Paint.ANTI_ALIAS_FLAG
 import android.graphics.drawable.Drawable
-import android.support.v4.content.ContextCompat
-import android.support.v7.widget.AppCompatTextView
 import android.text.Editable
 import android.text.InputFilter
 import android.text.TextUtils
@@ -21,6 +19,8 @@ import android.view.View
 import android.widget.EditText
 import android.widget.LinearLayout
 import android.widget.RelativeLayout
+import androidx.appcompat.widget.AppCompatTextView
+import androidx.core.content.ContextCompat
 import com.wdkl.ncs.android.lib.R
 import com.enation.javashop.utils.base.tool.ScreenTool
 

+ 2 - 2
common/src/main/res/layout/menu_dialog_lay.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout
+<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"
@@ -105,4 +105,4 @@
         app:layout_constraintRight_toRightOf="@id/vcode_dialog_bg"
         app:layout_constraintWidth_percent="0.4"
         tools:ignore="MissingPrefix" />
-</android.support.constraint.ConstraintLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 4 - 4
common/src/main/res/layout/menu_item_lay.xml

@@ -5,13 +5,13 @@
             name="data"
             type="com.wdkl.ncs.android.lib.vo.MenuVo"/>
     </data>
-    <android.support.constraint.ConstraintLayout
+    <androidx.constraintlayout.widget.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"
         xmlns:tools="http://schemas.android.com/tools">
-        <android.support.constraint.ConstraintLayout
+        <androidx.constraintlayout.widget.ConstraintLayout
             android:layout_width="match_parent"
             android:layout_height="0dp"
             app:layout_constraintDimensionRatio="h,3.8:1"
@@ -58,6 +58,6 @@
                 android:background="#e4e6e5"
                 app:layout_constraintBottom_toBottomOf="parent"
                 />
-        </android.support.constraint.ConstraintLayout>
-    </android.support.constraint.ConstraintLayout>
+        </androidx.constraintlayout.widget.ConstraintLayout>
+    </androidx.constraintlayout.widget.ConstraintLayout>
 </layout>

+ 3 - 3
common/src/main/res/layout/pop_common_lay.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout>
-    <android.support.constraint.ConstraintLayout
+    <androidx.constraintlayout.widget.ConstraintLayout
         xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
@@ -60,7 +60,7 @@
             android:visibility="visible"
             app:layout_constraintBottom_toBottomOf="parent"
             />
-        <android.support.v7.widget.RecyclerView
+        <androidx.recyclerview.widget.RecyclerView
             android:id="@+id/pop_common_rv"
             android:layout_width="0dp"
             android:layout_height="0dp"
@@ -76,5 +76,5 @@
             android:background="@color/color_gray"
             app:layout_constraintTop_toBottomOf="@id/pop_common_title_tv"
             />
-    </android.support.constraint.ConstraintLayout>
+    </androidx.constraintlayout.widget.ConstraintLayout>
 </layout>

+ 2 - 2
common/src/main/res/layout/text_adapter_lay.xml

@@ -8,7 +8,7 @@
             name="count"
             type="Integer"/>
     </data>
-    <android.support.constraint.ConstraintLayout
+    <androidx.constraintlayout.widget.ConstraintLayout
         xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:bind="http://schemas.android.com/apk/res-auto"
         android:layout_width="match_parent"
@@ -21,5 +21,5 @@
             android:text="@{text}"
             android:gravity="center_vertical"
             />
-    </android.support.constraint.ConstraintLayout>
+    </androidx.constraintlayout.widget.ConstraintLayout>
 </layout>

+ 6 - 5
gradle.properties

@@ -13,13 +13,14 @@
 # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
 # org.gradle.parallel=true
 #Wed Sep 27 17:07:24 CST 2017
-systemProp.http.proxyHost=mirrors.neusoft.edu.cn
-systemProp.http.proxyPort=80
+#systemProp.http.proxyHost=mirrors.neusoft.edu.cn
+#systemProp.http.proxyPort=80
 
 org.gradle.jvmargs=-XX\:MaxHeapSize\=4096m -Xmx4096m
 org.gradle.daemon=true
 org.gradle.parallel=true
 org.gradle.configureondemand=true
-#android.enableAapt2=false
-#android.useAndroidX=true
-#android.enableJetifier=true
+android.useAndroidX=true
+android.enableJetifier=true
+android.enableAapt2=true
+android.injected.testOnly=false

+ 3 - 12
middleware/build.gradle

@@ -18,7 +18,6 @@ android {
         targetSdkVersion target_sdk_version
         versionCode app_version_code
         versionName app_version
-        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
         dataBinding {
             enabled = true
         }
@@ -51,9 +50,7 @@ android {
 dependencies {
     compile fileTree(include: ['*.jar'], dir: 'libs')
     testCompile 'junit:junit:4.12'
-    androidTestCompile('com.android.support.test.espresso:espresso-core:3.0.1', {
-        exclude group: 'com.android.support', module: 'support-annotations'
-    })
+
 
     compile project(':common')
     compile project(':resource')
@@ -63,20 +60,14 @@ dependencies {
      */
     kapt 'com.google.dagger:dagger-compiler:2.7'
 
-    /**
-     * Kotlin依赖
-     */
-    kapt 'com.android.databinding:compiler:2.3.3'
+
 
     /**
      * 路由注解处理器
      */
     kapt "com.enation.geamtear:jrouter-compiler:$router_version"
 
-    /**
-     *  constraint-layout布局依赖
-     */
-    compile 'com.android.support.constraint:constraint-layout:1.1.0-beta5'
+
 
     compile 'com.fasterxml.jackson.core:jackson-databind:2.9.5'
 

+ 2 - 5
middleware/src/main/code/com/wdkl/ncs/android/middleware/bind/DataBindingHelper.kt

@@ -1,10 +1,6 @@
 package com.wdkl.ncs.android.middleware.bind
 
-import android.databinding.BindingAdapter
 import android.graphics.Color
-import android.support.constraint.ConstraintLayout
-import android.support.v4.app.Fragment
-import android.support.v7.app.AppCompatActivity
 import android.text.SpannableStringBuilder
 import android.text.Spanned
 import android.text.style.AbsoluteSizeSpan
@@ -13,6 +9,7 @@ import android.text.style.StrikethroughSpan
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.databinding.BindingAdapter
 import com.enation.javashop.android.jrouter.JRouter
 import com.wdkl.ncs.android.lib.base.BaseApplication
 import com.wdkl.ncs.android.lib.utils.*
@@ -184,7 +181,7 @@ object DataBindingHelper {
     @BindingAdapter(value = ["bind:text_num_count_percent"],requireAll = true)
     @JvmStatic
     fun textNumCountPercent(view :TextView ,text :ObserableString){
-        view.text = "${text.get().length}/500"
+        view.text = "${text.get()!!.length}/500"
     }
 
     /**

+ 4 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constant.java

@@ -10,7 +10,10 @@ public class Constant {
     public static String APP_ACTIVATION = "APP_ACTIVATION";
 
     public static final String PREFERENCE_USER = "USER_DATA";
-
+    //设备区分
+    public static final String DEV_Z_RK3128= "1";//自研rk3128
+    public static final String DEV_W_RK3288 = "2";//外购rk3288
+    public static final String DEV_Z_RK3368 = "3";//自研rk3368
     //TCP服务器地址:
     public static String TCP_SERVER_URL = "";
 

+ 2 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/CartGoodsItemViewModel.kt

@@ -1,6 +1,7 @@
 package com.wdkl.ncs.android.middleware.model
 
-import android.databinding.ObservableField
+
+import androidx.databinding.ObservableField
 import com.wdkl.ncs.android.lib.utils.*
 import org.json.JSONObject
 

+ 2 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/CartShopItemViewModel.kt

@@ -1,6 +1,7 @@
 package com.wdkl.ncs.android.middleware.model
 
-import android.databinding.ObservableField
+
+import androidx.databinding.ObservableField
 import com.wdkl.ncs.android.lib.utils.valueInt
 import com.wdkl.ncs.android.lib.utils.valueString
 import org.json.JSONObject

+ 3 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/CouponViewModel.kt

@@ -1,6 +1,7 @@
 package com.wdkl.ncs.android.middleware.model
 
-import android.databinding.ObservableField
+import androidx.databinding.ObservableField
+
 
 /**
  * @author LDD
@@ -30,7 +31,7 @@ data class CouponViewModel(val price : Double,          /**抵用的价格*/
                  id : Int,                /**优惠券ID*/
                  useDate :String,         /**使用时间区间*/
                  shopId :Int ,            /**所属店铺ID*/
-                 describe:String         /**额外描述*/) : this(price,basePrice,shopName,isReceive,isUseed,isDateed,id,useDate,shopId,describe,ObservableField(-1 ),false)
+                 describe:String         /**额外描述*/) : this(price,basePrice,shopName,isReceive,isUseed,isDateed,id,useDate,shopId,describe, ObservableField(-1 ),false)
 
     constructor(price: Double, basePrice: Double, shopName: String, isReceive: Boolean, isUseed: Boolean, isDateed: Boolean, id: Int, useDate: String, shopId: Int, describe: String, isGet: Boolean) : this(price,basePrice,shopName,isReceive,isUseed,isDateed,id,useDate,shopId,describe,ObservableField(-1 ),isGet)
 

+ 2 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/GoodsFilterViewModel.kt

@@ -1,6 +1,7 @@
 package com.wdkl.ncs.android.middleware.model
 
-import android.databinding.ObservableField
+import androidx.databinding.ObservableField
+
 
 /**
  * @author LDD

+ 2 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/MemberAddressViewModel.kt

@@ -1,6 +1,7 @@
 package com.wdkl.ncs.android.middleware.model
 
-import android.databinding.ObservableField
+import androidx.databinding.ObservableField
+
 
 /**
  * @author LDD

+ 3 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/OrderCreatePriceViewModel.kt

@@ -1,6 +1,7 @@
 package com.wdkl.ncs.android.middleware.model
 
-import android.databinding.ObservableField
+
+import androidx.databinding.ObservableField
 import com.wdkl.ncs.android.lib.utils.bindingParams
 import com.wdkl.ncs.android.lib.utils.valueDouble
 import com.wdkl.ncs.android.lib.utils.valueInt
@@ -12,7 +13,7 @@ import org.json.JSONObject
  * @From   com.wdkl.ncs.android.middleware.model
  * @Note   订单创建时价格详细
  */
-data class OrderCreatePriceViewModel(val goodsPrice :ObservableField<String>,
+data class OrderCreatePriceViewModel(val goodsPrice : ObservableField<String>,
                                      val discountPrice :ObservableField<String>,
                                      val shipPrice :ObservableField<String>,
                                      val pointPrice :ObservableField<String>,

+ 0 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/OrderDetailViewModel.kt

@@ -1,6 +1,5 @@
 package com.wdkl.ncs.android.middleware.model
 
-import android.databinding.ObservableField
 
 /**
  * @author LDD

+ 2 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/ParentCategoryViewModel.kt

@@ -1,6 +1,7 @@
 package com.wdkl.ncs.android.middleware.model
 
-import android.databinding.ObservableField
+
+import androidx.databinding.ObservableField
 import com.wdkl.ncs.android.lib.utils.valueInt
 import com.wdkl.ncs.android.lib.utils.valueString
 import org.json.JSONObject

+ 3 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/PayShipTimeViewModel.kt

@@ -1,6 +1,7 @@
 package com.wdkl.ncs.android.middleware.model
 
-import android.databinding.ObservableField
+import androidx.databinding.ObservableField
+
 
 /**
  * @author LDD
@@ -8,4 +9,4 @@ import android.databinding.ObservableField
  * @From   com.wdkl.ncs.android.middleware.model
  * @Note   订单创建页面支付方式itemViewModel
  */
-data class PayShipTimeViewModel(val payName :ObservableField<String> ,val payShip :ObservableField<String>)
+data class PayShipTimeViewModel(val payName : ObservableField<String>, val payShip :ObservableField<String>)

+ 8 - 8
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/PostCommentViewModel.kt

@@ -9,7 +9,7 @@ import com.wdkl.ncs.android.lib.utils.ObserableString
  * @Note   评论页面 ViewModel
  */
 data class PostCommentViewModel(val sn :String,                                        /**店铺ID*/
-                                var desStar :Int,                                       /**描述相符*/
+var desStar :Int,                                       /**描述相符*/
                                 var logisticsStar :Int,                                 /**物流相符*/
                                 var serviceStar :Int,                                   /**服务相符*/
                                 val goodsList :ArrayList<PostCommentGoodsViewModel>)    /**商品信息列表*/{
@@ -18,7 +18,7 @@ data class PostCommentViewModel(val sn :String,
         val goods = ArrayList<PostGoodsModel>()
         goodsList.forEach {
             val item = PostGoodsModel()
-            item.content = it.commentContent.get()
+            item.content = it.commentContent.get()!!
             if (it.goodsStar < 3) {
                 item.grade = "bad"
             } else if (it.goodsStar == 3 || it.goodsStar == 4) {
@@ -42,22 +42,22 @@ data class PostCommentViewModel(val sn :String,
 }
 
 data class PostCommentGoodsViewModel(val goodsImage :String,                    /**商品图片*/
-                                     var goodsStar :Int,                        /**商品评论星级*/
+var goodsStar :Int,                        /**商品评论星级*/
                                      val goodsSkuId :Int,                       /**商品SkuId*/
                                      var commentContent :ObserableString,                /**商品评论内容*/
                                      val commentImages :ArrayList<String>)      /**评论图片集合*/
 
 data class PostCommentModel (
 
-    var delivery_score : Int = 5,
+        var delivery_score : Int = 5,
 
-    var description_score : Int = 5,
+        var description_score : Int = 5,
 
-    var order_sn :String = "",
+        var order_sn :String = "",
 
-    var service_score :Int = 5,
+        var service_score :Int = 5,
 
-    var comments : ArrayList<PostGoodsModel> = ArrayList()
+        var comments : ArrayList<PostGoodsModel> = ArrayList()
 )
 
 data class PostGoodsModel (

+ 3 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/ReceiptViewModel.kt

@@ -1,6 +1,7 @@
 package com.wdkl.ncs.android.middleware.model
 
-import android.databinding.ObservableField
+
+import androidx.databinding.ObservableField
 import com.wdkl.ncs.android.lib.utils.bindingParams
 import com.wdkl.ncs.android.lib.utils.judge
 import com.wdkl.ncs.android.lib.utils.valueInt
@@ -14,7 +15,7 @@ import org.json.JSONObject
  * @Note   发票ViewModel
  */
 data class ReceiptViewModel(var id :Int = 0,/**ID*/
-                            var duty_invoice :ObservableField<String> = ObservableField(""),/**纳税人税号*/
+                            var duty_invoice : ObservableField<String> = ObservableField(""),/**纳税人税号*/
                             var receipt_content:String = "",/**发票内容*/
                             var receipt_title:ObservableField<String> = ObservableField(""),/**发票抬头*/
                             var receipt_type:String = "")        /**发票类型*/

+ 3 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/SingleIntViewModel.kt

@@ -1,6 +1,7 @@
 package com.wdkl.ncs.android.middleware.model
 
-import android.databinding.ObservableField
+import androidx.databinding.ObservableField
+
 
 /**
  * @author LDD
@@ -8,4 +9,4 @@ import android.databinding.ObservableField
  * @From   com.wdkl.ncs.android.middleware.model
  * @Note   单个IntVM
  */
-data class SingleIntViewModel(val state :ObservableField<Int>)
+data class SingleIntViewModel(val state : ObservableField<Int>)

+ 3 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/SingleStringViewModel.kt

@@ -1,6 +1,7 @@
 package com.wdkl.ncs.android.middleware.model
 
-import android.databinding.ObservableField
+import androidx.databinding.ObservableField
+
 
 /**
  * @author LDD
@@ -8,4 +9,4 @@ import android.databinding.ObservableField
  * @From   com.wdkl.ncs.android.middleware.model
  * @Note   单个StringVM
  */
-data class SingleStringViewModel(val text :ObservableField<String>)
+data class SingleStringViewModel(val text : ObservableField<String>)

+ 2 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/router/RouterInterceptor.kt

@@ -1,8 +1,8 @@
 package com.wdkl.ncs.android.middleware.router
 
 import android.content.Context
-import android.support.v4.app.ActivityCompat
-import android.support.v4.content.ContextCompat
+import androidx.core.app.ActivityCompat
+import androidx.core.content.ContextCompat
 import com.enation.javashop.android.jrouter.external.annotation.Interceptor
 import com.enation.javashop.android.jrouter.logic.datainfo.Postcard
 import com.enation.javashop.android.jrouter.logic.listener.InterceptorListener

+ 3 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/channel/DeviceUtil.java

@@ -2,11 +2,13 @@ package com.wdkl.ncs.android.middleware.tcp.channel;
 
 import android.os.Build;
 
+import com.wdkl.ncs.android.lib.base.BaseApplication;
 import com.wdkl.ncs.android.middleware.BuildConfig;
 import com.wdkl.ncs.android.middleware.tcp.dto.DeviceConnectDTO;
 import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel;
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpAction;
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpType;
+import com.wdkl.ncs.android.middleware.utils.CommonUtils;
 
 public class DeviceUtil {
     public static TcpModel deviceConnect(String mac){
@@ -14,7 +16,7 @@ public class DeviceUtil {
         DeviceConnectDTO connectDTO = new DeviceConnectDTO();
         connectDTO.setIdentification(mac);
         connectDTO.setHardware_version(Build.PRODUCT.toLowerCase());
-        connectDTO.setSoftware_version("V"+ BuildConfig.VERSION_NAME);
+        connectDTO.setSoftware_version("V"+ CommonUtils.getAppVersionName(BaseApplication.appContext));
         connectDTO.setModel(Build.MODEL);
         connectDTO.setCode(Build.SERIAL);
         tcpModel.setType(TcpType.DEVICE);

+ 23 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/utils/AppUtil.java

@@ -2,11 +2,17 @@ package com.wdkl.ncs.android.middleware.utils;
 
 import android.app.AlarmManager;
 import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Environment;
 import android.text.TextUtils;
+import android.util.Log;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
+import java.io.PrintWriter;
 import java.util.Calendar;
+import java.util.List;
 
 public class AppUtil {
 
@@ -91,4 +97,21 @@ public class AppUtil {
         alarmManager.setTimeZone(timeZone);
         alarmManager.setTime(timeMills);
     }
+
+    public static void uninstallApp(String name) {
+        Process process;
+        PrintWriter printWriter;
+        try {
+            process = Runtime.getRuntime().exec("su");
+            printWriter = new PrintWriter(process.getOutputStream());
+            printWriter.println("pm uninstall " + name);
+            printWriter.flush();
+            printWriter.close();
+            Log.e("wdkl_app", "uninstall end");
+        } catch (Exception e) {
+            Log.e("wdkl_app", "uninstall e:" + e.getMessage());
+        }
+    }
+    // 检查launch版本
+
 }

+ 12 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/utils/CommonUtils.java

@@ -2,6 +2,7 @@ package com.wdkl.ncs.android.middleware.utils;
 
 import android.content.Context;
 import android.content.SharedPreferences;
+import android.content.pm.PackageInfo;
 import android.text.TextUtils;
 
 public class CommonUtils {
@@ -36,6 +37,17 @@ public class CommonUtils {
             return origin;
         }
     }
+
+    public static String getAppVersionName(Context context) {
+        try {
+            PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
+            return info.versionName;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return "unknown";
+    }
     /**
      * 床号字符串截取
      * */

+ 8 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/utils/SettingsUtil.kt

@@ -0,0 +1,8 @@
+package com.wdkl.ncs.android.middleware.utils
+
+import android.util.Log
+
+class SettingsUtil {
+
+
+}

+ 3 - 5
resource/build.gradle

@@ -1,8 +1,8 @@
 apply plugin: 'com.android.library'
 
 android {
-    compileSdkVersion 26
-    buildToolsVersion "26.0.2"
+    compileSdkVersion target_sdk_version
+    buildToolsVersion build_tools_version
 
 
     defaultConfig {
@@ -22,9 +22,7 @@ android {
         }
     }
    dependencies{
-       compile "com.android.support:design:$support_library_version"
-       compile "com.android.support:support-v4:$support_library_version"
-       compile "com.android.support:cardview-v7:$support_library_version"
+
        /**
         * 单元测试
         */

BIN
resource/src/main/res/mipmap-xhdpi/weicome.png


+ 6 - 21
welcome/build.gradle

@@ -64,20 +64,15 @@ android {
 
 dependencies {
     compile fileTree(include: ['*.jar'], dir: 'libs')
-    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
-        exclude group: 'com.android.support', module: 'support-annotations'
-    })
+    /**
+     *  constraint-layout布局依赖
+     */
+    implementation("androidx.constraintlayout:constraintlayout:2.1.4")
     /**
      * 单元测试
      */
     testCompile 'junit:junit:4.12'
 
-    /**
-     *  Android基础依赖库
-     */
-    compile "com.android.support:design:$support_library_version"
-    compile "com.android.support:support-v4:$support_library_version"
-    compile "com.android.support:cardview-v7:$support_library_version"
 
     /**
      * 公共库依赖
@@ -86,24 +81,14 @@ dependencies {
 
     compile project(':resource')
 
-    /**
-     * 内存泄漏监控
-     */
-    if(componentTag){
-        debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.1'
-        releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
-        testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
-    }
+
 
     /**
      * Dagger编译依赖
      */
     kapt 'com.google.dagger:dagger-compiler:2.7'
 
-    /**
-     * Kotlin依赖
-     */
-    kapt 'com.android.databinding:compiler:2.3.3'
+
 
     /**
      * 路由注解处理器