Android NFC¶
Overview¶
BiometridStandardNFC provides NFC document reading capabilities for Android. It reads data from NFC-enabled identity documents (passports, national ID cards) including personal information and biometric photos. The module supports two OCR providers for MRZ (Machine Readable Zone) reading: OCR01 (Innovatrics) and OCR03 (Regula).
Prerequisites¶
- The Core SDK must be initialized first
- Android minSdk 30 or higher
- Device must have NFC hardware
- NFC permission in AndroidManifest.xml
<uses-permission android:name="android.permission.NFC" />
Initialization¶
Create an instance of BiometridStandardNFC by providing the activity, lifecycle, OCR provider, and callback.
import com.biometrid.biometridstandardnfc.BiometridStandardNFC
import com.biometrid.biometridstandardnfc.model.NfcOcrProvider
import com.biometrid.biometridstandardnfc.BiometridStandardNFCCallback
import com.biometrid.biometridstandardnfc.model.BiometridNFCData
import com.biometrid.biometridstandard.model.BiometridErrorInfo
val nfcCallback = object : BiometridStandardNFCCallback {
override fun readWithSuccess(result: BiometridNFCData?) {
// Handle NFC data
}
override fun readWithError(error: BiometridErrorInfo?) {
// Handle NFC error
}
}
val nfc = BiometridStandardNFC(
activity = this,
lifecycle = lifecycle,
ocrProvider = NfcOcrProvider.OCR03,
nfcCallback = nfcCallback
)
Available Methods¶
Constructor¶
BiometridStandardNFC(
activity: Activity,
lifecycle: Lifecycle,
ocrProvider: NfcOcrProvider,
nfcCallback: BiometridStandardNFCCallback
)
| Parameter | Type | Description |
|---|---|---|
activity |
Activity |
The host Activity for NFC operations |
lifecycle |
Lifecycle |
Activity lifecycle for automatic NFC dispatch management |
ocrProvider |
NfcOcrProvider |
The OCR provider to use for MRZ reading |
nfcCallback |
BiometridStandardNFCCallback |
Callback to receive NFC read results |
startNFC¶
suspend fun startNFC()
Initializes the NFC reader and starts listening for NFC tags. When a compatible document is detected, the module reads the chip data and delivers the result through the callback.
Callback Interface¶
BiometridStandardNFCCallback¶
interface BiometridStandardNFCCallback {
fun readWithSuccess(result: BiometridNFCData?)
fun readWithError(error: BiometridErrorInfo?)
}
| Method | Description |
|---|---|
readWithSuccess(result) |
Called when NFC data is successfully read from the document |
readWithError(error) |
Called when NFC reading fails |
Enums¶
NfcOcrProvider¶
enum class NfcOcrProvider {
OCR01, // Innovatrics OCR engine (license: iengine.lic)
OCR03 // Regula OCR engine (license: regula.license)
}
Data Models¶
BiometridNFCData¶
@Serializable
data class BiometridNFCData(
var name: String? = null,
var surname: String? = null,
var documentType: String? = null,
var mrzCode: String? = null,
var documentNumber: String? = null,
var dateOfBirth: String? = null,
var dateOfExpiry: String? = null,
var gender: String? = null,
var idNumber: String? = null,
var nationality: String? = null,
var photos: BiometridNFCPhotos? = null
)
| Property | Type | Description |
|---|---|---|
name |
String? |
First name(s) from the document |
surname |
String? |
Surname from the document |
documentType |
String? |
Type of document (e.g., passport, ID card) |
mrzCode |
String? |
Raw MRZ code string |
documentNumber |
String? |
Document number |
dateOfBirth |
String? |
Date of birth |
dateOfExpiry |
String? |
Document expiry date |
gender |
String? |
Gender |
idNumber |
String? |
National ID number |
nationality |
String? |
Nationality code |
photos |
BiometridNFCPhotos? |
Biometric photos from the chip |
BiometridNFCPhotos¶
@Serializable
data class BiometridNFCPhotos(
var face: PlatformImageType? = null,
var signature: PlatformImageType? = null
)
On Android, PlatformImageType wraps a Bitmap:
actual class PlatformImageType(val bitmap: Bitmap?)
| Property | Type | Description |
|---|---|---|
face |
PlatformImageType? |
Face photo from the document chip (wraps Bitmap) |
signature |
PlatformImageType? |
Signature image from the document chip (wraps Bitmap) |
BiometridErrorInfo¶
@Serializable
data class BiometridErrorInfo(
val code: String? = null,
val message: String? = null,
val data: JsonElement? = null
)
Error Handling¶
Errors are returned as BiometridErrorInfo objects through the readWithError callback. Error codes are prefixed with MSN (NFC module).
The module automatically manages NFC foreground dispatch through the activity lifecycle. NFC dispatch is enabled in onResume and disabled in onPause.
Usage Example¶
class NFCActivity : AppCompatActivity() {
private lateinit var nfc: BiometridStandardNFC
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val callback = object : BiometridStandardNFCCallback {
override fun readWithSuccess(result: BiometridNFCData?) {
result?.let { data ->
val name = data.name
val surname = data.surname
val documentNumber = data.documentNumber
val facePhoto = data.photos?.face?.bitmap
// Process NFC data
// Submit to BiometridStandard.updateStep()
}
}
override fun readWithError(error: BiometridErrorInfo?) {
Log.e("NFC", "Read failed: ${error?.message}")
}
}
nfc = BiometridStandardNFC(
activity = this,
lifecycle = lifecycle,
ocrProvider = NfcOcrProvider.OCR03,
nfcCallback = callback
)
// Start NFC reading
CoroutineScope(Dispatchers.Main).launch {
nfc.startNFC()
}
}
}