Updated on 2026-08-14
This commit is contained in:
parent
bbdcad1410
commit
d48abc8579
6 changed files with 26 additions and 23 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<ResponseApdu>) -> 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")
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue