默认不屏保和自重启
diff --git a/app/src/main/java/com/supwisdom/activities/consume/bean/ScreenSaverBean.kt b/app/src/main/java/com/supwisdom/activities/consume/bean/ScreenSaverBean.kt
index bcbf64e..f7ed535 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/bean/ScreenSaverBean.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/bean/ScreenSaverBean.kt
@@ -1,11 +1,12 @@
-package com.supwisdom.activities.consume.bean
-
-/**
- ** create by zzq on 2019/11/5
- ** @desc 屏保参数
- **/
-class ScreenSaverBean {
-    var operationTime = 0L //ms
-    var operationFlag = false //是否操作
-    var flag = false //是否屏保
+package com.supwisdom.activities.consume.bean

+

+/**

+ ** create by zzq on 2019/11/5

+ ** @desc 屏保参数

+ **/

+class ScreenSaverBean {

+    var operationTime = 0L //ms

+    var operationFlag = false //是否操作

+    var flag = false //是否屏保

+    var gcTime = 0L //ms

 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt b/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt
index 6ebab3c..f89263d 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt
@@ -20,32 +20,42 @@
  ** create by zzq on 2019/7/25

  ** @desc 刷卡消费

  **/

-class CardPayService constructor(private val iConsumeView: IConsumeView, private val handler: Handler) {

+class CardPayService constructor(

+    private val iConsumeView: IConsumeView,

+    private val handler: Handler

+) {

     private val TAG = "CardPayService"

     private val pos = SPApplication.getInstance().getPos()

     private val runnable = CardPayRunnable()

     private val consumeApi = ConsumeApi()

+

     @Volatile

     private var isExist = false

+

     @Volatile

     private var clickStat = ClickStat.INIT

+

     @Volatile

     private var amount: Int = 0

+

     @Volatile

     private var payQueryConfirm = false

     var isFixMode = false

     private var thread: Thread? = null

     private var cardBean: CardBean? = null

+

     /**

      * 防止定额连续消费

      */

     private val lastPayBean = LastPayBean()

+

     @Volatile

     private var operation = false

     private val screenSaverBean = ScreenSaverBean()

 

     init {

         screenSaverBean.operationTime = System.currentTimeMillis()

+        screenSaverBean.gcTime = screenSaverBean.operationTime

     }

 

     fun start() {

@@ -137,7 +147,10 @@
                             try {

                                 doReverse()

                             } catch (ex: CardPayCancelFailError) {

-                                sendMsg(PublicDef.MSG_CARD_REVERSE_FAIL, getRvsErrorInfo(ex.message))

+                                sendMsg(

+                                    PublicDef.MSG_CARD_REVERSE_FAIL,

+                                    getRvsErrorInfo(ex.message)

+                                )

                             } catch (ex: Exception) {

                                 ex.printStackTrace()

                                 LogUtil.d(

@@ -180,7 +193,8 @@
             )

             if (resp != null && resp.retcode == HttpStatus.SC_OK) {

                 try {

-                    val retBean = GsonUtil.GsonToBean(resp.retjson!!, CardAccountRetBean::class.java)

+                    val retBean =

+                        GsonUtil.GsonToBean(resp.retjson!!, CardAccountRetBean::class.java)

                     if (retBean.retcode == PublicDef.SUCCESS) {

                         cardBean!!.username = retBean.username

                         cardBean!!.userid = retBean.userid

@@ -207,22 +221,63 @@
                 screenSaverBean.operationTime = tt

                 screenSaverBean.operationFlag = true

             }

-            if (tt > screenSaverBean.operationTime &&

+            if (tt < screenSaverBean.operationTime ||

                 tt - screenSaverBean.operationTime > PublicDef.SCREEN_SAVER_GAP

             ) {

                 /**

                  * 连续半小时无操作屏保

                  */

                 screenSaverBean.operationTime = tt

-                screenSaverBean.flag = true

                 screenSaverBean.operationFlag = false

-                sendMsg(PublicDef.MSG_SCREEN_SAVER, "on")

+                val screenCtl = pos.getControlPara(PublicDef.CONTROL_SCREEN_PROTECT)

+                if (screenCtl?.paraval != null && "1" == screenCtl.paraval) {

+                    screenSaverBean.flag = true

+                    sendMsg(PublicDef.MSG_SCREEN_SAVER, "on")

+                }

+                val rebootCtl = pos.getControlPara(PublicDef.CONTROL_REBOOT_ENABLE)

+                if (rebootCtl?.paraval != null && "1" == rebootCtl.paraval) {

+                    val nowtime = DateUtil.getNowTimeNoFormat()

+                    /**

+                     * 凌晨1点-3点判断做设备重启

+                     */

+                    if (nowtime > "010000" && nowtime < "030000") {

+                        val ctlRecord = pos.getControlPara(PublicDef.CONTROL_REBOOT_DATE)

+                        val nowdate = DateUtil.getNowDateNoFormat()

+                        if (ctlRecord?.paraval == null || ctlRecord.paraval != nowdate) {

+                            LogUtil.i(TAG, "设备已自动重启")

+                            pos.replaceControlPara(ControlParaRecord().apply {

+                                this.paraname = PublicDef.CONTROL_REBOOT_DATE

+                                this.paraval = nowdate

+                            })

+                            CommonUtil.restartDevice(iConsumeView.getActivity())

+                        }

+                    }

+                }

             } else {

                 if (screenSaverBean.operationFlag && screenSaverBean.flag) {

                     screenSaverBean.flag = false

                     sendMsg(PublicDef.MSG_SCREEN_SAVER, "off")

                 }

             }

+            if (SPApplication.getInstance().isSynoCodeActive()) {

+                if (tt < screenSaverBean.gcTime ||

+                    tt - screenSaverBean.gcTime > PublicDef.APP_GC_SYNO_PERIOD

+                ) {

+//                LogUtil.d(TAG, "app auto do gc!!!!!!!!!!!!")

+//                Log.e(TAG, "app auto do gc!!!!!!!!!!!!")

+                    screenSaverBean.gcTime = tt

+                    CommonUtil.GC()

+                }

+            } else {

+                if (tt < screenSaverBean.gcTime ||

+                    tt - screenSaverBean.gcTime > PublicDef.APP_GC_PERIOD

+                ) {

+//                LogUtil.d(TAG, "app auto do gc!!!!!!!!!!!!")

+//                Log.e(TAG, "app auto do gc!!!!!!!!!!!!")

+                    screenSaverBean.gcTime = tt

+                    CommonUtil.GC()

+                }

+            }

         }

 

         private fun showCardUserInfo() {

@@ -327,7 +382,10 @@
             }

         }

 

-        private fun checkOnlineReverseVaild(unionRecord: TransdtlUnionRecord, record: TransdtlOnlineRecord) {

+        private fun checkOnlineReverseVaild(

+            unionRecord: TransdtlUnionRecord,

+            record: TransdtlOnlineRecord

+        ) {

             if (record.cardphyid != cardBean!!.cardphyid) {

                 throw CardPayCancelFailError("该卡不是最后消费")

             }

@@ -353,7 +411,10 @@
             }

         }

 

-        private fun checkOfflineReverseVaild(unionRecord: TransdtlUnionRecord, record: TransdtlOfflineRecord) {

+        private fun checkOfflineReverseVaild(

+            unionRecord: TransdtlUnionRecord,

+            record: TransdtlOfflineRecord

+        ) {

             if (record.cardphyid != cardBean!!.cardphyid) {

                 throw CardPayCancelFailError("该卡不是最后消费")

             }

@@ -418,7 +479,10 @@
             /**

              * 手动取消交易

              */

-            LogUtil.e(TAG, "manual cancel pay,cardphyid=[${onlRecord.cardphyid}],billno=[${onlRecord.billno}]")

+            LogUtil.e(

+                TAG,

+                "manual cancel pay,cardphyid=[${onlRecord.cardphyid}],billno=[${onlRecord.billno}]"

+            )

             throw CardPayInterruptError("交易取消")

         }

 

@@ -526,7 +590,8 @@
             }

 

             val whiteRecord =

-                pos.getWhiteList(offRecord.cardphyid!!, offRecord.cardno!!) ?: throw CardPayFailError("卡无权限")

+                pos.getWhiteList(offRecord.cardphyid!!, offRecord.cardno!!)

+                    ?: throw CardPayFailError("卡无权限")

             when (whiteRecord.status) {

                 "normal" -> {

 

@@ -539,7 +604,11 @@
                 else -> throw CardPayFailError("卡状态:${whiteRecord.status}")

             }

 

-            val payamt = pos.getTransdtlOfflineAmt(offRecord.transdate!!, offRecord.cardno!!, offRecord.cardphyid!!)

+            val payamt = pos.getTransdtlOfflineAmt(

+                offRecord.transdate!!,

+                offRecord.cardno!!,

+                offRecord.cardphyid!!

+            )

             if ((payamt + offRecord.payamt) > sysRecord.maxDayOfflineAmt) {

                 throw CardPayFailError("已离线交易" + String.format("%.02f元", payamt / 100.0f))

             }

diff --git a/app/src/main/java/com/supwisdom/activities/syspara/SysparaActivity.kt b/app/src/main/java/com/supwisdom/activities/syspara/SysparaActivity.kt
index c3a16c7..fc78d1c 100644
--- a/app/src/main/java/com/supwisdom/activities/syspara/SysparaActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/syspara/SysparaActivity.kt
@@ -68,6 +68,18 @@
         } else {

             kvMap[index++] = ControlParaRecord("晟元扫码>>", "关闭")

         }

+        var ctl = pos.getControlPara(PublicDef.CONTROL_REBOOT_ENABLE)

+        if (ctl?.paraval == "1") {

+            kvMap[index++] = ControlParaRecord("凌晨重启>>", "开启")

+        } else {

+            kvMap[index++] = ControlParaRecord("凌晨重启>>", "关闭")

+        }

+        ctl = pos.getControlPara(PublicDef.CONTROL_SCREEN_PROTECT)

+        if (ctl?.paraval == "1") {

+            kvMap[index++] = ControlParaRecord("设备屏保>>", "开启")

+        } else {

+            kvMap[index++] = ControlParaRecord("设备屏保>>", "关闭")

+        }

         kvMap[index++] = ControlParaRecord("成功显时间>>", "${sysRecord.sucShowtime}s")

         kvMap[index++] = ControlParaRecord("失败显时间>>", "${sysRecord.failShowtime}s")

         kvMap[index++] = ControlParaRecord("联机流水号>>", pos.getTransdtlOnlineMaxSeqno().toString())

diff --git a/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt b/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
index dec3a26..da6eee5 100644
--- a/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
+++ b/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
@@ -115,6 +115,28 @@
                 "max_day_offline_amt" -> record.maxDayOfflineAmt = it.paraval!!.toInt()

                 "communicate_time" -> record.commTime = it.paraval!!.toInt()

                 "syno_code" -> record.synoCode = it.paraval == "1"

+                "reboot_enable" -> {

+                    /**

+                     * 设备凌晨自重启 1--开启

+                     */

+                    pos.replaceControlPara(

+                        ControlParaRecord(

+                            PublicDef.CONTROL_REBOOT_ENABLE,

+                            it.paraval ?: "0"

+                        )

+                    )

+                }

+                "screen_protect" -> {

+                    /**

+                     * 设备长时间待机时屏保 1--开启

+                     */

+                    pos.replaceControlPara(

+                        ControlParaRecord(

+                            PublicDef.CONTROL_SCREEN_PROTECT,

+                            it.paraval ?: "0"

+                        )

+                    )

+                }

             }

         }

         if (record.heatBeat == 0) {

diff --git a/app/src/main/java/com/supwisdom/utils/CommonUtil.kt b/app/src/main/java/com/supwisdom/utils/CommonUtil.kt
index 119217b..d46891b 100644
--- a/app/src/main/java/com/supwisdom/utils/CommonUtil.kt
+++ b/app/src/main/java/com/supwisdom/utils/CommonUtil.kt
@@ -12,10 +12,12 @@
 import android.net.Uri

 import android.os.Build

 import android.os.PowerManager

+import android.os.Process

 import android.provider.Settings

 import android.view.WindowManager

 import android.widget.EditText

 import com.supwisdom.activities.SPApplication

+import com.supwisdom.activities.splash.SplashActivity

 import okhttp3.internal.and

 import java.io.File

 import java.io.FileOutputStream

@@ -311,4 +313,33 @@
         }

         return ""

     }

+

+    /**

+     * 手动GC

+     */

+    fun GC() {

+        Runtime.getRuntime().gc()

+    }

+

+    /**

+     * 重启整个APP

+     *

+     * @param context

+     */

+    fun restartAPP(context: Context) {

+        val intent = Intent(context, SplashActivity::class.java)

+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)

+        context.startActivity(intent)

+        Process.killProcess(Process.myPid())

+    }

+

+    /**

+     * 重启设备

+     *

+     * @param context

+     */

+    fun restartDevice(context: Context) {

+        val pm = context.getSystemService(Context.POWER_SERVICE) as PowerManager

+        pm.reboot(null)

+    }

 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/utils/PublicDef.kt b/app/src/main/java/com/supwisdom/utils/PublicDef.kt
index 2ddbf96..f0d22d9 100644
--- a/app/src/main/java/com/supwisdom/utils/PublicDef.kt
+++ b/app/src/main/java/com/supwisdom/utils/PublicDef.kt
@@ -82,6 +82,8 @@
 

     const val CODE_SAME_FORBID_TIME: Long = 10 * 1000

     const val CAMERA_FIX_PAY_PERIOD: Long = 30 * 60 * 1000

+    const val APP_GC_PERIOD: Long = 10 * 60 * 1000

+    const val APP_GC_SYNO_PERIOD: Long = 6 * 60 * 60 * 1000

 

     /**

      * 本地全局控制参数

@@ -90,7 +92,9 @@
     const val CONTROL_OFFLINE_DAY_DISABLE = "offdaydisable"

     const val CONTROL_DEBUG_ENABLE = "debugenable"

     const val CONTROL_SYNOCODE_ACTIVE = "synocodeactive"

-

+    const val CONTROL_REBOOT_ENABLE = "rebootenable"

+    const val CONTROL_REBOOT_DATE = "rebootdate"

+    const val CONTROL_SCREEN_PROTECT = "screenprotect"

     /**

      * 消费冲正时限

      */