From 478353832adc3c032e14d1ee5454ffe3b9b296ef Mon Sep 17 00:00:00 2001 From: Frank Morgner Date: Mon, 3 Nov 2014 23:35:07 +0100 Subject: [PATCH] only capture tag by reader mode if possible --- .../remotesmartcardreader/app/MainActivity.java | 6 +++--- .../app/screaders/NFCReader.java | 13 +++++++++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/remote-reader/app/src/main/java/com/vsmartcard/remotesmartcardreader/app/MainActivity.java b/remote-reader/app/src/main/java/com/vsmartcard/remotesmartcardreader/app/MainActivity.java index 7fc655d..d0ae196 100644 --- a/remote-reader/app/src/main/java/com/vsmartcard/remotesmartcardreader/app/MainActivity.java +++ b/remote-reader/app/src/main/java/com/vsmartcard/remotesmartcardreader/app/MainActivity.java @@ -184,13 +184,14 @@ public class MainActivity extends Activity implements NfcAdapter.ReaderCallback } private void enableReaderMode() { - //mNfcAdapter.enableForegroundDispatch(this, mPendingIntent, mFilters, mTechLists); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Bundle bundle = new Bundle(); bundle.putInt(NfcAdapter.EXTRA_READER_PRESENCE_CHECK_DELAY, 2000); NfcAdapter.getDefaultAdapter(this).enableReaderMode(this, this, NfcAdapter.FLAG_READER_NFC_A | NfcAdapter.FLAG_READER_NFC_B | NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK, bundle); + } else { + //NfcAdapter.enableForegroundDispatch(this, mPendingIntent, mFilters, mTechLists); } } @@ -321,7 +322,6 @@ public class MainActivity extends Activity implements NfcAdapter.ReaderCallback if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())) { NFCReader nfcReader = NFCReader.get(intent); if (nfcReader != null) { - textViewVPCDStatus.append(getResources().getString(R.string.status_tag_discovered)+"\n"); forceConnect(nfcReader); } else { super.onNewIntent(intent); @@ -357,4 +357,4 @@ public class MainActivity extends Activity implements NfcAdapter.ReaderCallback // onResume gets called after this to handle the intent setIntent(intent); } -} +} \ No newline at end of file diff --git a/remote-reader/app/src/main/java/com/vsmartcard/remotesmartcardreader/app/screaders/NFCReader.java b/remote-reader/app/src/main/java/com/vsmartcard/remotesmartcardreader/app/screaders/NFCReader.java index 5fe0689..1f9815b 100644 --- a/remote-reader/app/src/main/java/com/vsmartcard/remotesmartcardreader/app/screaders/NFCReader.java +++ b/remote-reader/app/src/main/java/com/vsmartcard/remotesmartcardreader/app/screaders/NFCReader.java @@ -44,7 +44,7 @@ public class NFCReader implements SCReader { card.close(); } - private static int TIMEOUT = 10000; + private static int TIMEOUT = 2500; @Override public void powerOn() { /* should already be connected... */ @@ -105,7 +105,16 @@ public class NFCReader implements SCReader { if (intent.getExtras() != null) { Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); if (tag != null) { - nfcReader = NFCReader.get(tag); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + /* Disconnect from the tag here. The reader mode will capture the tag again */ + try { + IsoDep.get(tag).close(); + } catch (IOException e) { + e.printStackTrace(); + } + } else { + nfcReader = NFCReader.get(tag); + } intent.removeExtra(NfcAdapter.EXTRA_TAG); } }