默认不屏保和自重启
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"
/**
* 消费冲正时限
*/