simplified NFC reading
This commit is contained in:
parent
0afd73baf6
commit
412c584237
3 changed files with 11 additions and 65 deletions
|
@ -21,17 +21,9 @@
|
|||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<action android:name="android.nfc.action.TECH_DISCOVERED" />
|
||||
<action android:name="android.nfc.action.TAG_DISCOVERED" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
|
||||
<meta-data android:name="android.nfc.action.TECH_DISCOVERED"
|
||||
android:resource="@xml/nfc_tech_filter" />
|
||||
|
||||
</activity>
|
||||
</application>
|
||||
|
||||
|
|
|
@ -5,6 +5,9 @@ import android.content.Intent
|
|||
import android.content.IntentFilter
|
||||
import android.nfc.NfcAdapter
|
||||
import android.nfc.Tag
|
||||
import android.nfc.tech.IsoDep
|
||||
import android.nfc.tech.NdefFormatable
|
||||
import android.nfc.tech.NfcA
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
|
@ -32,70 +35,28 @@ class MainActivity : AppCompatActivity() {
|
|||
if (!(this.nfcAdapter!!.isEnabled)) {
|
||||
Log.w("NFC", "NFC is not enabled")
|
||||
}
|
||||
|
||||
// check if the application was started by an intent
|
||||
if (this.intent != null) this.processIntent(intent)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
|
||||
val intent = Intent(
|
||||
nfcAdapter!!.enableReaderMode(
|
||||
this,
|
||||
this::class.java
|
||||
this::processTag,
|
||||
NfcAdapter.FLAG_READER_NFC_A or NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK,
|
||||
null
|
||||
)
|
||||
intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING)
|
||||
|
||||
val pendingIntent = PendingIntent.getActivity(this, 0, intent, 0)
|
||||
val intentFilter = arrayOf<IntentFilter>()
|
||||
|
||||
// enable the NFC discovery
|
||||
nfcAdapter?.enableForegroundDispatch(this, pendingIntent, intentFilter, null)
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
|
||||
// disable the NFC discovery
|
||||
this.nfcAdapter!!.disableForegroundDispatch(this)
|
||||
this.nfcAdapter!!.disableReaderMode(this)
|
||||
}
|
||||
|
||||
override fun onNewIntent(intent: Intent?) {
|
||||
super.onNewIntent(intent)
|
||||
|
||||
// check the new intent
|
||||
if (intent != null) {
|
||||
this.processIntent(intent)
|
||||
}
|
||||
}
|
||||
|
||||
private fun processIntent(intent: Intent) {
|
||||
Log.d("NFC", "New : ${intent.action}")
|
||||
|
||||
var text: TextView = this.findViewById(R.id.test_text)
|
||||
text.text = intent.action
|
||||
|
||||
if (intent.action == NfcAdapter.ACTION_TAG_DISCOVERED) {
|
||||
val tag: Tag? = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
intent.getParcelableExtra(NfcAdapter.EXTRA_TAG, Tag::class.java)
|
||||
} else {
|
||||
intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)
|
||||
}
|
||||
|
||||
Log.d("NFC", "Tag : ${tag?.id.contentToString()}")
|
||||
}
|
||||
|
||||
if (intent.action == NfcAdapter.ACTION_TECH_DISCOVERED) { // TODO(Faraphel): switch ?
|
||||
|
||||
val tag: Tag? = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
intent.getParcelableExtra(NfcAdapter.EXTRA_TAG, Tag::class.java)
|
||||
} else {
|
||||
intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)
|
||||
}
|
||||
|
||||
Log.d("NFC", "Tag : $tag")
|
||||
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
fun processTag(tag: Tag) {
|
||||
Log.d("NFC", "Tag ID : ${tag.id.toHexString()}")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<tech-list>
|
||||
<tech>android.nfc.tech.IsoDep</tech>
|
||||
<tech>android.nfc.tech.NfcA</tech>
|
||||
<tech>android.nfc.tech.NdefFormatable</tech>
|
||||
</tech-list>
|
||||
</resources>
|
Loading…
Reference in a new issue