---
title: "Biometric signatures on Android | Nutrient SDK"
canonical_url: "https://www.nutrient.io/guides/android/signatures/digital-signatures/signature-lifecycle/biometric/"
md_url: "https://www.nutrient.io/guides/android/signatures/digital-signatures/signature-lifecycle/biometric.md"
last_updated: "2026-05-30T02:20:01.173Z"
description: "Learn to create and utilize `BiometricSignatureData` in Android, enhancing digital signatures with biometric information for improved security and authenticity."
---

# Biometric signatures on Android

[`BiometricSignatureData`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit.signatures/-biometric-signature-data/index.html) is “real-world information” that can be attached to a digital signature. This information includes things like whether or not the signature was created with a stylus, the size of the signee’s finger, and the timing and pressure information that was collected while writing the signature. Ultimately, this data can be used to create solutions that provide a higher grade of security than traditional digital signatures do. A digital signature can only contain biometric data if an ink signature was used to create it.

## Creating biometric data

You can create a [`BiometricSignatureData`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit.signatures/-biometric-signature-data/index.html) data class instance with its constructor. All values of the biometric data are optional and can be left out. Once created, the [`BiometricSignatureData`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit.signatures/-biometric-signature-data/index.html) is immutable:

### KOTLIN

```kotlin

val biometricData = BiometricSignatureData.Builder().setInputMethod(BiometricSignatureData.InputMethod.FINGER).setPressurePoints(listOf(0.4f, 0.1f, 0.94f, 0.6f)).build()

```

### JAVA

```java

final BiometricSignatureData biometricData = new BiometricSignatureData.Builder().setInputMethod(BiometricSignatureData.InputMethod.FINGER).setPressurePoints(Arrays.asList(new Float[]{ 0.4f, 0.1f, 0.94f, 0.6f })).build();

```

[`BiometricSignatureData`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit.signatures/-biometric-signature-data/index.html) is a [`Parcelable`](https://developer.android.com/reference/android/os/Parcelable.html); this allows it to be passed around activities or saved to your instance state.

## Collecting biometric data

When a user creates a [`Signature`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit.signatures/-signature/index.html) using the [`SignaturePickerFragment`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit.ui.signatures/-electronic-signature-fragment/index.html), the signature will also hold [`BiometricSignatureData`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit.signatures/-biometric-signature-data/index.html) that was collected during the creation of the signature. Retrieve this data using [`signature.getBiometricData()`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit.signatures/-signature/biometric-data.html):

### KOTLIN

```kotlin

// Retrieve the biometric data that was collected during signature creation.
val biometricData = signature.biometricData

```

### JAVA

```java

// Retrieve the biometric data that was collected during signature creation.
final BiometricSignatureData biometricData = signature.getBiometricData();

```

## Digitally signing with biometric data

To add biometric data to a digital signature, pass it to your [`SignerOptions`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit.signatures/-signer-options/index.html) during the signing process. The [`SigningManager`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit.signatures/-signing-manager/index.html) will automatically verify the biometric data and attach it to the signature:

```kotlin

val biometricData = signature.biometricData
// Pass in `BiometricSignatureData` as an extra argument.
val signerOptions = SignerOptions.Builder(signatureFormField, outputFileUri).setPrivateKey(key).setSignatureMetadata(DigitalSignatureMetadata(biometricData = biometricData)).build()

SigningManager.signDocument(
    context = context,
    signerOptions = signerOptions,
    type = digitalSignatureType,
    onFailure = {
             // Handle signing errors here.
                 }
             ) {
                 // The document was successfully signed!
                 val signedDocument = Uri.fromFile(outputFile)
             }

```
---

## Related pages

- [Master digital signatures in Android efficiently](/guides/android/signatures/digital-signatures/signature-lifecycle/overview.md)
- [How to add signature fields to PDFs on Android](/guides/android/signatures/digital-signatures/signature-lifecycle/add-a-signature-field.md)
- [External signing services on Android](/guides/android/signatures/digital-signatures/signature-lifecycle/external-signing-service.md)
- [Configure digital signature appearance in Android: Visible vs. non-visible signatures](/guides/android/signatures/digital-signatures/signature-lifecycle/signature-appearance.md)
- [How to create and validate digital signatures on Android](/guides/android/signatures/digital-signatures/signature-lifecycle/prepare-the-certificates-for-signing.md)
- [Securely validate digital signatures in Android apps](/guides/android/signatures/digital-signatures/signature-lifecycle/validation.md)
- [Sign a PDF with a certificate on Android](/guides/android/features/digital-signatures.md)

