Fudi NFC

NFC Reader And Writer using Android devices by Romell Domínguez.

Add the following in your app's build.gradle file:

repositories {
    jcenter()
}
dependencies {
    implementation 'com.romellfudi.fudinfc:fudi-nfc:${latestVersion}'
}

Add the following to your AndroidManifest.xml file :

<uses-permission android:name="android.permission.NFC" />

Now go to the created activity, and either

  • Implement [FGD] yourself
// write email
OpCallback { it.writeEmailToTagFromIntent(text, null, null, intent) }

// write sms
OpCallback { it.writeSmsToTagFromIntent(text, null, intent) }

// write geolocation - latitude & longitude
OpCallback { it.writeGeolocationToTagFromIntent(latitude, longitude, intent) } 

// write uri
OpCallback { it.writeUriToTagFromIntent(text, intent) }

// write phone contact
OpCallback { it.writeTelToTagFromIntent(text, intent) }

// write rolling-on bluetooth device
OpCallback { it.writeBluetoothAddressToTagFromIntent(text, intent) }

Reading

Paste this in the activity if you're extending our class :

override fun onNewIntent(Intent intent) {
    super.onNewIntent(intent) 
    for (String message in getNfcMessages()) { 
        // message 
    }
}
  • Otherwise :
override fun onNewIntent(intent: Intent?) {
    super.onNewIntent(intent)
    val items: SparseArray<String> = NfcReadUtilityImpl().readFromTagWithSparseArray(intent)
    for (i in 0 until items.size()) {
        // items.valueAt(i) 
    }
}
  • If you like the Map implementation more you might as well use :
override fun onNewIntent(intent: Intent?) {
    super.onNewIntent(intent)
    for (message in NfcReadUtilityImpl().readFromTagWithMap(intent).values()) {
        // message
    }
}
  • Now you're able to read the NFC Tags as long as the library supports the data in it when held to your phone!

Write to a tag

  • Let your activity implement TaskCallback:
fun onReturn(result: Boolean) {
    val message = if (result) "Success" else "Failed!"
    Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
}

fun onProgressUpdate(vararg booleans: Boolean) {
    Toast.makeText(this, if (booleans[0]) "We started writing" else "We could not write!", Toast.LENGTH_SHORT).show()
}

fun onError(e: Exception) {
    Toast.makeText(this, e.message, Toast.LENGTH_SHORT).show()
}
  • If you hold a tag against the phone and it is NFC Enabled, your implementation of the methods will be executed.

GitHub