init
diff --git a/app/src/main/java/com/supwisdom/activities/consume/BeepManager.kt b/app/src/main/java/com/supwisdom/activities/consume/BeepManager.kt
new file mode 100644
index 0000000..4973200
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/activities/consume/BeepManager.kt
@@ -0,0 +1,109 @@
+package com.supwisdom.activities.consume
+
+import android.app.Activity
+import android.content.Context
+import android.media.AudioManager
+import android.media.MediaPlayer
+import android.os.Vibrator
+import com.newcapec.zxinglib.PreferencesSetting
+import com.supwisdom.R
+import java.io.Closeable
+import java.io.IOException
+
+
+/**
+ * @author zzq
+ * @date 2018/4/25.
+ * @version 1.0.1
+ * @desc 滴滴声
+ */
+@Suppress("DEPRECATION")
+class BeepManager constructor(context: Context) : MediaPlayer.OnErrorListener, Closeable {
+ private val context = context
+
+ private val BEEP_VOLUME = 0.10f
+ private val VIBRATE_DURATION = 200L
+
+ private var mediaPlayer: MediaPlayer? = null
+ private var playBeep: Boolean = false
+ private var vibrate: Boolean = false
+
+ init {
+ updatePrefs()
+ }
+
+ @Synchronized
+ fun updatePrefs() {
+ //SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity);
+ playBeep = shouldBeep(context)
+ vibrate = PreferencesSetting.PREFER_VIBRATE
+ if (playBeep && mediaPlayer == null) {
+ // The volume on STREAM_SYSTEM is not adjustable, and users found it too loud,
+ // so we now play on the music stream.
+ (context as Activity).volumeControlStream = AudioManager.STREAM_MUSIC
+ mediaPlayer = buildMediaPlayer(context)
+ }
+ }
+
+ @Synchronized
+ fun playBeepSoundAndVibrate() {
+ if (playBeep && mediaPlayer != null) {
+ mediaPlayer!!.start()
+ }
+ if (vibrate) {
+ val vibrator = context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
+ vibrator.vibrate(VIBRATE_DURATION)
+ }
+ }
+
+ private fun shouldBeep(activity: Context): Boolean {
+ var shouldPlayBeep = PreferencesSetting.PREFER_PLAY_BEEP
+ if (shouldPlayBeep) {
+ // See if sound settings overrides this
+ val audioService = activity.getSystemService(Context.AUDIO_SERVICE) as AudioManager
+ if (audioService.ringerMode != AudioManager.RINGER_MODE_NORMAL) {
+ shouldPlayBeep = false
+ }
+ }
+ return shouldPlayBeep
+ }
+
+ private fun buildMediaPlayer(activity: Context): MediaPlayer? {
+ val mediaPlayer = MediaPlayer()
+ return try {
+ activity.resources.openRawResourceFd(R.raw.beep).use { it ->
+ mediaPlayer.setDataSource(it.fileDescriptor, it.startOffset, it.length)
+ }
+ mediaPlayer.setOnErrorListener(this)
+ mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC)
+ mediaPlayer.isLooping = false
+ mediaPlayer.setVolume(BEEP_VOLUME, BEEP_VOLUME)
+ mediaPlayer.prepare()
+ mediaPlayer
+ } catch (ex: IOException) {
+ mediaPlayer.release()
+ null
+ }
+ }
+
+ @Synchronized
+ override fun onError(mp: MediaPlayer, what: Int, extra: Int): Boolean {
+ if (what == MediaPlayer.MEDIA_ERROR_SERVER_DIED) {
+ // we are finished, so put up an appropriate error toast if required and finish
+ (context as Activity).finish()
+ } else {
+ // possibly media player error, so release and recreate
+ close()
+ updatePrefs()
+ }
+ return true
+ }
+
+ @Synchronized
+ override fun close() {
+ if (mediaPlayer != null) {
+ mediaPlayer!!.release()
+ mediaPlayer = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt b/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
index 5bc4f48..8f196bc 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
@@ -27,6 +27,7 @@
import com.supwisdom.utils.SoundUtil
import com.supwisdom.view.DialogPurchase
import java.util.*
+import java.util.concurrent.locks.ReentrantLock
/**
** create by zzq on 2019/7/24
@@ -53,6 +54,12 @@
private lateinit var vLastPayFailreason: TextView
private lateinit var vLastPayFailll: LinearLayout
private lateinit var vLastPayamtll: LinearLayout
+ private var beepManager: BeepManager? = null
+ private val scanLock = ReentrantLock()
+ @Volatile
+ private var codeSwitchEnable = false
+ @Volatile
+ private var payStatusEnable = false
@Volatile
private var isBackRuning = false
private var addAmount: Int = 0
@@ -74,9 +81,39 @@
private fun initData() {
presenter = ConsumePresenter(this)
presenter.start()
+ beepManager = BeepManager(this)
dialogPurchase = DialogPurchase(this, object : DialogPurchase.ICallBack {
override fun callback(isManualCancel: Boolean) {
presenter.clickNoPay()
+ amountTxt.text = ""
+ }
+
+ override fun callback(code: String) {
+ //扫码和寻卡消费互斥
+ if (!codeSwitchEnable) {
+ return
+ }
+ if (!scanLock.tryLock()) {
+ return
+ }
+ try {
+ //正在扣款
+ if (dialogPurchase!!.codePaying) {
+ return
+ }
+ //已扣款
+ if (!payStatusEnable) {
+ return
+ }
+ beepManager!!.playBeepSoundAndVibrate()
+ presenter.clickNoPay()
+ dialogPurchase!!.codePaying = true
+ dialogPurchase!!.codePayingNoCancelEnable = true
+ payStatusEnable = false
+ presenter.codeToPay(code, amount)
+ } finally {
+ scanLock.unlock()
+ }
}
})
}
@@ -122,12 +159,19 @@
if (amount > 0) {
amountTxt.text = String.format("%.02f", amount / 100.0f)
presenter.clickToPay(amount)
- dialogPurchase!!.showProcess("请刷卡", CommonUtil.showFormatAmount("金额", amount))
+ showDialogPay()
} else {
AuxScreenController.getInstance().refreshContent(Arrays.asList("请先输入金额:", "金额不能为0"))
}
}
+ private fun showDialogPay() {
+ dialogPurchase!!.codePaying = false
+ dialogPurchase!!.isFixPay = false
+ dialogPurchase!!.codePayingNoCancelEnable = false
+ dialogPurchase!!.show("请刷卡", CommonUtil.showFormatAmount("金额", amount))
+ }
+
private fun getCurAmount(): Int {
return try {
CommonUtil.YuanToFen(java.lang.Double.parseDouble(amountTxt.text.toString().trim { it <= ' ' }))
@@ -191,12 +235,19 @@
vTime.text = tmptime
AuxScreenController.getInstance().refreshBottom(tmptime)
}
+ if (dialogPurchase!!.isShowing &&
+ !dialogPurchase!!.isFixPay &&
+ payStatusEnable
+ ) {
+ beepManager!!.playBeepSoundAndVibrate()
+ }
}
}
override fun onResume() {
super.onResume()
isBackRuning = false
+ beepManager!!.updatePrefs()
dealIntent()
refresh()
refreshRecentDtl(lastPayInfo)
@@ -239,7 +290,7 @@
amount = Integer.parseInt(record.paraval)
amountTxt.text = String.format("%.02f", amount / 100.0f)
presenter.clickToPay(amount)
- dialogPurchase!!.showProcess("请刷卡", CommonUtil.showFormatAmount("金额", amount))
+ showDialogPay()
} catch (ex: Exception) {
ex.printStackTrace()
}
@@ -372,6 +423,7 @@
override fun onDestroy() {
SoundUtil.releaseMusic()
presenter.stop()
+ beepManager!!.close()
super.onDestroy()
}
@@ -475,6 +527,10 @@
}
}
+ override fun codeScannerEnable(enable: Boolean) {
+ codeSwitchEnable = enable
+ }
+
private fun resetPayShowCounter(timems: Long) {
counter?.cancel()
counter = LastPayShowTimer(timems, 500)
diff --git a/app/src/main/java/com/supwisdom/activities/consume/IConsumeView.kt b/app/src/main/java/com/supwisdom/activities/consume/IConsumeView.kt
index d6c53bb..b633d51 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/IConsumeView.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/IConsumeView.kt
@@ -30,4 +30,6 @@
fun refreshLinkStatus(isOnline: Boolean)
fun showRecentDtl(record: TransdtlUnionRecord?)
+
+ fun codeScannerEnable(enable: Boolean)
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/consume/bean/CardPayInitRetBean.kt b/app/src/main/java/com/supwisdom/activities/consume/bean/CardPayInitRetBean.kt
index 074e62c..2b50e3f 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/bean/CardPayInitRetBean.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/bean/CardPayInitRetBean.kt
@@ -9,7 +9,7 @@
class CardPayInitRetBean : BaseResp() {
var billno: String? = null
var username: String? = null
- var userid: Int = 0
+ var userid: String? = null
var anonymous: Boolean = false
var sourcetype: String? = null
var needpwdconfirm: Boolean = false
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 96e3032..f88e2b9 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
@@ -86,9 +86,11 @@
doClear()
continue
}
+ iConsumeView.codeScannerEnable(true)
CommonUtil.doSleep(100)
try {
val cardphyid = Cardlib.instance.requestCard()
+ iConsumeView.codeScannerEnable(false)
if (oldcardphyid != cardphyid) {
readCard()
cardBean.cardphyid = cardphyid
@@ -201,7 +203,7 @@
}
resp = consumeApi.payConfirm(onlRecord)
result = parseConfirmResult(resp)
- if (!result) {
+ if (result) {
showSucInfo()
}
updateTransdtlOnline(result)
diff --git a/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt b/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt
index 46c0d15..f69e698 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt
@@ -48,7 +48,7 @@
if (!result) {
result = payResultQuery()
}
- if (!result) {
+ if (result) {
showSucInfo()
}
updateTransdtlOnline(result)
diff --git a/app/src/main/java/com/supwisdom/activities/menu/MenuPresenter.kt b/app/src/main/java/com/supwisdom/activities/menu/MenuPresenter.kt
index 4723966..cbfac25 100644
--- a/app/src/main/java/com/supwisdom/activities/menu/MenuPresenter.kt
+++ b/app/src/main/java/com/supwisdom/activities/menu/MenuPresenter.kt
@@ -8,6 +8,7 @@
import com.supwisdom.bean.BaseResp
import com.supwisdom.entity.PayStatus
import com.supwisdom.entity.ReversalFlag
+import com.supwisdom.exception.AuthEpayError
import com.supwisdom.exception.HeartBeatError
import com.supwisdom.exception.TransdtlUploadError
import com.supwisdom.service.AuthEpay
@@ -35,7 +36,11 @@
private inner class AsyncAuth : AsyncTask<Void, Void, AuthRetBean>() {
override fun doInBackground(vararg voids: Void): AuthRetBean {
- val retBean = AuthEpay().login()
+ val retBean = try {
+ AuthEpay().login()
+ } catch (ex: AuthEpayError) {
+ AuthRetBean(PublicDef.ERROR, ex.message ?: "null")
+ }
if (retBean.retcode == PublicDef.SUCCESS) {
val record = pos.getDynamicPara()
record!!.deviceid = retBean.deviceid
@@ -52,10 +57,10 @@
}
override fun onPostExecute(retBean: AuthRetBean?) {
- if (retBean == null) {
- iMenuView.showOperResult("签到结果", "请求超时")
- } else {
- iMenuView.showOperResult("签到结果", retBean.retmsg!!)
+ when {
+ retBean == null -> iMenuView.showOperResult("签到失败", "请求超时")
+ retBean.retcode != PublicDef.SUCCESS -> iMenuView.showOperResult("签到失败", retBean.retmsg ?: "null")
+ else -> iMenuView.showOperResult("签到成功", " ")
}
}
}
diff --git a/app/src/main/java/com/supwisdom/utils/DateUtil.kt b/app/src/main/java/com/supwisdom/utils/DateUtil.kt
index c93d962..6ce7a41 100644
--- a/app/src/main/java/com/supwisdom/utils/DateUtil.kt
+++ b/app/src/main/java/com/supwisdom/utils/DateUtil.kt
@@ -20,15 +20,8 @@
private val FORMAT_MMddHHmmyy = org.apache.commons.lang3.time.FastDateFormat.getInstance("MMddHHmmyy")
private val FORMAT_yyyy_MM_dd_HH_mm_ss =
org.apache.commons.lang3.time.FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss")
- private val FORMAT_yyyy_MM_dd_HH_mm_ss_SSS =
- org.apache.commons.lang3.time.FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss.SSS")
- private val FORMAT_HH_mm_ss_SSS = org.apache.commons.lang3.time.FastDateFormat.getInstance("HHmmssSSS")
- private val FORMAT_yyyy_MM_dd_HH_mm = org.apache.commons.lang3.time.FastDateFormat.getInstance("yyyy-MM-dd HH:mm")
private val FORMAT_yyyy_MM_dd = org.apache.commons.lang3.time.FastDateFormat.getInstance("yyyy-MM-dd")
private val FORMAT_HH_mm_ss = org.apache.commons.lang3.time.FastDateFormat.getInstance("HH:mm:ss")
- private val FORMAT_HH_mm = org.apache.commons.lang3.time.FastDateFormat.getInstance("HH:mm")
- private val FORMAT_UTC_yyyyMMddHHmmss =
- org.apache.commons.lang3.time.FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss")
/**
* @return yyyy-MM-dd HH:mm:ss
@@ -41,96 +34,6 @@
return FORMAT_yyyy_MM_dd.format(Date())
}
- /**
- * @return yyyy-MM-dd HH:mm:ss.SSS
- */
- fun getNow5(): String {
- return FORMAT_yyyy_MM_dd_HH_mm_ss_SSS.format(Date())
- }
-
- /**
- * @return yyyy-MM-dd HH:mm
- */
- fun getNow4(): String {
- return FORMAT_yyyy_MM_dd_HH_mm.format(Date())
- }
-
- /**
- * @return yyMMddHHmmss
- */
- fun getNow2(): String {
- return FORMAT_yyMMddHHmmss.format(Date())
- }
-
- /**
- * @param dateTime yyyyMMddHHmmss
- * @return yyyyMMdd.HHmmss
- */
- fun getNow4(dateTime: String): String? {
- try {
- val str1 = dateTime.substring(0, 8)
- val str2 = dateTime.substring(8)
- return "$str1.$str2"
- } catch (ex: Exception) {
- ex.printStackTrace()
- }
- return null
- }
-
- /**
- * @return yy-MM-dd HH:mm:ss
- */
- fun getNow3(): String {
- return FORMAT_yyMMddHHmmss2.format(Date())
- }
-
- /**
- * @return yyyy-MM-dd HH:mm:ss
- */
- fun getDateTimeFormat(date: Date): String {
- return FORMAT_yyyy_MM_dd_HH_mm_ss.format(date)
- }
-
- /**
- * @return yyyy-MM-dd HH:mm:ss
- */
- fun getDateTimeFormat(timeInMillis: Long?): String {
- return FORMAT_yyyy_MM_dd_HH_mm_ss.format(timeInMillis)
- }
-
- /**
- * @param datetime yyyyMMddHHmmss
- * @return yyyy-MM-dd HH:mm:ss
- */
- fun getNowDatetimeFromNoFormat(datetime: String): String {
- try {
- return datetime.substring(0, 4) + "-" +
- datetime.substring(4, 6) + "-" +
- datetime.substring(6, 8) + " " +
- datetime.substring(8, 10) + ":" +
- datetime.substring(10, 12) + ":" +
- datetime.substring(12)
- } catch (ex: Exception) {
- }
- return ""
- }
-
- /**
- * @param datetime yyyyMMddHHmm
- * @return yyyy-MM-dd HH:mm
- */
- fun getNowDatetimeFromNoFormat3(datetime: String): String {
- try {
- return datetime.substring(0, 4) + "-" +
- datetime.substring(4, 6) + "-" +
- datetime.substring(6, 8) + " " +
- datetime.substring(8, 10) + ":" +
- datetime.substring(10)
- } catch (ex: Exception) {
- }
- return ""
- }
-
fun utcToLocal(utctime: String): String {
val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
sdf.timeZone = TimeZone.getTimeZone("UTC")
@@ -146,24 +49,6 @@
}
}
-
- /**
- * @param datetime yyyyMMddHHmmss
- * @return yy-MM-dd HH:mm:ss
- */
- fun getNowDatetimeFromNoFormat2(datetime: String): String? {
- return try {
- datetime.substring(2, 4) + "-" +
- datetime.substring(4, 6) + "-" +
- datetime.substring(6, 8) + " " +
- datetime.substring(8, 10) + ":" +
- datetime.substring(10, 12) + ":" +
- datetime.substring(12)
- } catch (ex: Exception) {
- null
- }
- }
-
/**
* @param date yyyyMMdd
* @return yyyy-MM-dd
@@ -179,17 +64,6 @@
}
/**
- * @param date yyyy-MM-dd HH:mm:ss
- * @return yyyyMMddHHmmss
- */
- fun getNowDateFromNoFormat2(date: String): String {
- return date.replace("-", "")
- .replace(" ", "")
- .replace(":", "")
- }
-
-
- /**
* @return HH:mm:ss
*/
fun getNowTimeWithArg(date: Date): String? {
@@ -267,13 +141,6 @@
}
/**
- * @return HHmmssSSS
- */
- fun getNowTime1(): String {
- return FORMAT_HH_mm_ss_SSS.format(Date())
- }
-
- /**
* @return HH:mm:ss
*/
fun getNowTime(): String {
@@ -446,53 +313,10 @@
}
/**
- * 获得指定日期的后一天
- *
- * @param specifiedDay yyyy-MM-dd
- * @return yyyy-MM-dd
- */
- fun getSpecifiedDayAfter1(specifiedDay: String): String {
- return try {
- val c = Calendar.getInstance()
- val date = FORMAT_yyyy_MM_dd.parse(specifiedDay)
- c.time = date
- val day = c.get(Calendar.DATE)
- c.set(Calendar.DATE, day + 1)
- FORMAT_yyyy_MM_dd.format(c.time)
- } catch (e: ParseException) {
- ""
- }
- }
-
- /**
- * 分钟转化为未来时间yyyyMMddHHmm
- *
- * @param minute 分钟数
- * @return yyyyMMddHHmm
- */
- fun format2FutureTime(minute: Int): String {
- val calendar = Calendar.getInstance()
- calendar.add(Calendar.MINUTE, minute)
- return FORMAT_yyyyMMddHHmm.format(calendar.time)
- }
-
- /**
- * @return yyyyMMddHHmm
+ * @return yyyyMMddHHmmss
*/
fun getNowDateTimeFormat(): String {
- return FORMAT_yyyyMMddHHmm.format(Date())
+ return FORMAT_yyyyMMddHHmmss.format(Date())
}
- /**
- * @param datetime yyyyMMddHHmm
- * @return 毫秒数
- */
- fun formatDateTime(datetime: String): Long {
- try {
- return FORMAT_yyyyMMddHHmm.parse(datetime).time
- } catch (ex: Exception) {
- ex.printStackTrace()
- }
- return 0
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/view/DialogPurchase.kt b/app/src/main/java/com/supwisdom/view/DialogPurchase.kt
index 8ae1fc0..39b5806 100644
--- a/app/src/main/java/com/supwisdom/view/DialogPurchase.kt
+++ b/app/src/main/java/com/supwisdom/view/DialogPurchase.kt
@@ -6,23 +6,31 @@
import android.view.KeyEvent
import android.view.View
import android.widget.TextView
+import com.google.zxing.Result
+import com.newcapec.zxinglib.IDecoderAcquirer
+import com.newcapec.zxinglib.PosDecoder
import com.supwisdom.R
import com.supwisdom.activities.consume.bean.CardUserInfoBean
import com.supwisdom.utils.CommonUtil
+import com.supwisdom.utils.LogUtil
/**
** create by zzq on 2019/7/26
** @desc 消费弹窗
**/
-class DialogPurchase constructor(context: Context, callBack: ICallBack) : DialogBase(context) {
+class DialogPurchase constructor(context: Context, callBack: ICallBack) : DialogBase(context), IDecoderAcquirer {
+ private val TAG = "DialogPurchase"
private val callBack = callBack
private var vCount: TextView
private var vPayhint: TextView
private var vPayamt: TextView
private var vBalance: TextView
+ private var posDec: PosDecoder? = null
+ private var lastFixpayDecoderOpenTime: Long = 0
private val waitTime = 60
- var qrcodePayingNoCancelEnable = false
- var barcodePaying = false
+ var codePayingNoCancelEnable = false
+ var codePaying = false
+ var isFixPay = false
init {
setContentView(R.layout.dialog_purchase)
@@ -31,11 +39,28 @@
vPayhint = this.findViewById(R.id.tv_pay_hint) as TextView
vPayamt = this.findViewById(R.id.tv_pay_amount) as TextView
vBalance = this.findViewById(R.id.tv_pay_balance) as TextView
+
+ posDec = PosDecoder(this)
+ }
+
+ override fun onFailed() {
+
+ }
+
+ override fun onDecoded(result: String?) {
+
+ }
+
+ override fun onDecoded(result: Result?) {
+ val rawSize = result?.rawBytes?.size ?: 0
+ if (rawSize > 0) {
+ callBack.callback(result!!.text)
+ }
}
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
if (event.action == KeyEvent.ACTION_DOWN) {
- if (qrcodePayingNoCancelEnable) {
+ if (codePayingNoCancelEnable) {
return super.dispatchKeyEvent(event)
}
when (event.keyCode) {
@@ -47,7 +72,7 @@
return super.dispatchKeyEvent(event)
}
- fun showProcess(hint: String, amount: String) {
+ fun show(hint: String, amount: String) {
vPayhint.text = hint
vPayhint.setTextColor(Color.BLACK)
vPayamt.text = amount
@@ -55,6 +80,17 @@
vBalance.visibility = View.GONE
show()
+ asyncOpenDecoder()
+ resetCounter(waitTime)
+ }
+
+ fun showProcess(hint: String, amount: String) {
+ vPayhint.text = hint
+ vPayhint.setTextColor(Color.RED)
+ vPayamt.text = amount
+ vPayamt.visibility = View.VISIBLE
+
+ vBalance.visibility = View.GONE
resetCounter(waitTime)
}
@@ -103,11 +139,53 @@
resetCounter(info.showtime)
}
+ private fun asyncOpenDecoder() {
+ if (!isFixPay) {
+ try {
+ posDec!!.onResume()
+ } catch (ex: Exception) {
+ ex.printStackTrace()
+ LogUtil.d(TAG, "open camera exception:" + CommonUtil.getExceptionStack(ex))
+ }
+ } else {
+ val time = System.currentTimeMillis()
+ if (time < lastFixpayDecoderOpenTime ||
+ time - lastFixpayDecoderOpenTime > 120000
+ ) {
+ lastFixpayDecoderOpenTime = time
+ try {
+ posDec!!.onPause()
+ } catch (ex: Exception) {
+ ex.printStackTrace()
+ LogUtil.d(TAG, "fix close camera exception:" + CommonUtil.getExceptionStack(ex))
+ }
+ try {
+ posDec!!.onResume()
+ } catch (ex: Exception) {
+ ex.printStackTrace()
+ LogUtil.d(TAG, "fix open camera exception:" + CommonUtil.getExceptionStack(ex))
+ }
+ }
+ }
+ }
+
+ private fun asyncCloseDecoder() {
+ if (!isFixPay) {
+ try {
+ posDec!!.onPause()
+ } catch (ex: Exception) {
+ ex.printStackTrace()
+ LogUtil.d(TAG, "close camera exception:" + CommonUtil.getExceptionStack(ex))
+ }
+ }
+ }
+
private fun finish(isManualCancel: Boolean) {
- barcodePaying = false
- qrcodePayingNoCancelEnable = false
+ codePaying = false
+ codePayingNoCancelEnable = false
dismiss()
callBack.callback(isManualCancel)
+ asyncCloseDecoder()
}
private var counter: ConsumeHintCount? = null
@@ -139,5 +217,7 @@
interface ICallBack {
fun callback(isManualCancel: Boolean)
+
+ fun callback(code: String)
}
}
\ No newline at end of file