From d48abc8579759c24b8a43822fcb6652b40b0ae89 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 13 Nov 2019 14:33:07 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../tangem_sdk_new/DefaultCardManagerDelegate.kt | 9 ++++----- .../main/java/com/tangem/tangem_sdk_new/Utils.kt | 2 +- .../com/tangem/tangem_sdk_new/nfc/NfcManager.kt | 15 ++++++++------- .../com/tangem/tangem_sdk_new/nfc/NfcReader.kt | 13 ++++++++----- .../tangem/tangem_sdk_new/ui/NfcEnableDialog.kt | 2 +- .../tangem_sdk_new/ui/TouchCardAnimation.kt | 8 ++++---- 6 files changed, 26 insertions(+), 23 deletions(-) diff --git a/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/DefaultCardManagerDelegate.kt b/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/DefaultCardManagerDelegate.kt index 1616c3d6f7..622f985eb1 100644 --- a/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/DefaultCardManagerDelegate.kt +++ b/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/DefaultCardManagerDelegate.kt @@ -25,8 +25,7 @@ class DefaultCardManagerDelegate(private val reader: NfcReader) : CardManagerDel setLogger() } - override fun onTaskStarted() { -// reader.isoDep = null + override fun onNfcSessionStarted() { reader.readingCancelled = false postUI { showReadingDialog(activity) } if (!reader.nfcEnabled) showNFCEnableDialog() @@ -58,7 +57,7 @@ class DefaultCardManagerDelegate(private val reader: NfcReader) : CardManagerDel activity.supportFragmentManager.let { nfcEnableDialog?.show(it, NfcEnableDialog.TAG) } } - override fun showSecurityDelay(ms: Int) { + override fun onSecurityDelay(ms: Int) { postUI { readingDialog?.lTouchCard?.visibility = View.GONE readingDialog?.tvRemainingTime?.text = ms.div(100).toString() @@ -78,7 +77,7 @@ class DefaultCardManagerDelegate(private val reader: NfcReader) : CardManagerDel } } - override fun onTaskCompleted() { + override fun onNfcSessionCompleted() { postUI { readingDialog?.lTouchCard?.visibility = View.GONE readingDialog?.flSecurityDelay?.visibility = View.GONE @@ -88,7 +87,7 @@ class DefaultCardManagerDelegate(private val reader: NfcReader) : CardManagerDel postUI(300) { readingDialog?.dismiss() } } - override fun onTaskError(error: TaskError?) { + override fun onError(error: TaskError?) { postUI { readingDialog?.lTouchCard?.visibility = View.GONE readingDialog?.flSecurityDelay?.visibility = View.GONE diff --git a/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/Utils.kt b/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/Utils.kt index 491f7a1a52..5cf40bef81 100644 --- a/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/Utils.kt +++ b/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/Utils.kt @@ -5,6 +5,6 @@ import android.os.Looper val uiHandler = Handler(Looper.getMainLooper()) - internal fun postUI(msTime: Long = 0, func: () -> Unit) { +internal fun postUI(msTime: Long = 0, func: () -> Unit) { if (msTime > 0) uiHandler.postDelayed({ func() }, msTime) else uiHandler.post(func) } \ No newline at end of file diff --git a/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/nfc/NfcManager.kt b/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/nfc/NfcManager.kt index d827dcd584..b6e29e445a 100644 --- a/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/nfc/NfcManager.kt +++ b/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/nfc/NfcManager.kt @@ -1,5 +1,6 @@ package com.tangem.tangem_sdk_new.nfc +import android.app.Activity import android.content.BroadcastReceiver import android.content.Context import android.content.Intent @@ -9,16 +10,15 @@ import android.nfc.Tag import android.nfc.tech.IsoDep import android.os.Build import android.os.Bundle -import androidx.fragment.app.FragmentActivity import com.tangem.Log class NfcManager : NfcAdapter.ReaderCallback { val reader = NfcReader() - private var activity: FragmentActivity? = null + private var activity: Activity? = null private var nfcAdapter: NfcAdapter? = null - fun setCurrentActivity(activity: FragmentActivity) { + fun setCurrentActivity(activity: Activity) { this.activity = activity nfcAdapter = NfcAdapter.getDefaultAdapter(activity) } @@ -49,11 +49,13 @@ class NfcManager : NfcAdapter.ReaderCallback { reader.nfcEnabled = true enableReaderMode() } + reader.manager = this } fun onPause() { activity?.unregisterReceiver(mBroadcastReceiver) disableReaderMode() + reader.manager = null } fun onDestroy() { @@ -61,12 +63,11 @@ class NfcManager : NfcAdapter.ReaderCallback { nfcAdapter = null } - private fun enableReaderMode() { - val options = Bundle() - nfcAdapter?.enableReaderMode(activity, this, READER_FLAGS, options) + fun enableReaderMode() { + nfcAdapter?.enableReaderMode(activity, this, READER_FLAGS, Bundle()) } - private fun disableReaderMode() { + fun disableReaderMode() { nfcAdapter?.disableReaderMode(activity) } diff --git a/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/nfc/NfcReader.kt b/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/nfc/NfcReader.kt index 9addd2f9bd..713e232cdf 100644 --- a/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/nfc/NfcReader.kt +++ b/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/nfc/NfcReader.kt @@ -1,6 +1,7 @@ package com.tangem.tangem_sdk_new.nfc import android.nfc.Tag +import android.nfc.TagLostException import android.nfc.tech.IsoDep import com.tangem.CardReader import com.tangem.Log @@ -13,14 +14,15 @@ class NfcReader : CardReader { override var readingActive = false var nfcEnabled = false - var isoDep: IsoDep? = null + var manager: NfcManager? = null + private var isoDep: IsoDep? = null set(value) { - // if tag is received, call connect first before transceiving data + // don't reassign when there's an active tag already if (field == null) { field = value + // if tag is received, call connect first before transceiving data connect() } - // don't reassign when there's an active tag already if (value == null) field = value } @@ -38,9 +40,11 @@ class NfcReader : CardReader { var data: ByteArray? = null var callback: ((response: CompletionResult) -> Unit)? = null - override fun setStartSession() { + override fun startNfcSession() { readingActive = true readingCancelled = false + manager?.disableReaderMode() + manager?.enableReaderMode() } override fun closeSession() { @@ -93,7 +97,6 @@ class NfcReader : CardReader { isoDep?.connect() isoDep?.timeout = 240000 Log.i(this::class.simpleName!!, "Nfc session is started") - } } \ No newline at end of file diff --git a/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/ui/NfcEnableDialog.kt b/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/ui/NfcEnableDialog.kt index bbdf00079d..a7d6c2689c 100644 --- a/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/ui/NfcEnableDialog.kt +++ b/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/ui/NfcEnableDialog.kt @@ -15,7 +15,7 @@ class NfcEnableDialog : DialogFragment() { } override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { - val builder = AlertDialog.Builder(requireContext()) + val builder = AlertDialog.Builder(requireContext()) builder.setCancelable(false) .setIcon(R.drawable.ic_action_nfc_gray) .setTitle(R.string.dialog_nfc_enable_title) diff --git a/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/ui/TouchCardAnimation.kt b/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/ui/TouchCardAnimation.kt index 717c0cf827..10546e2aeb 100644 --- a/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/ui/TouchCardAnimation.kt +++ b/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/ui/TouchCardAnimation.kt @@ -11,10 +11,10 @@ import android.widget.RelativeLayout import androidx.appcompat.widget.LinearLayoutCompat class TouchCardAnimation(private var context: Context, - private var ivHandCardHorizontal: ImageView, - private var ivHandCardVertical: ImageView, - private var llHand: LinearLayoutCompat, - private var llNfc: LinearLayoutCompat) { + private var ivHandCardHorizontal: ImageView, + private var ivHandCardVertical: ImageView, + private var llHand: LinearLayoutCompat, + private var llNfc: LinearLayoutCompat) { companion object { const val CARD_ON_BACK = 0