Is it doable to collect user fingerprint with android? Our backend system has a fingerprint database. We\'d like to match the fingerprints collected against database to see
If by "collect user fingerprint" you mean getting an image of the fingerprint in some form, then no, you can't.
Android's fingerprint API essentially works like this:
The user enrolls a fingerprint in the Android Settings app.
Your app creates a cryptographic key that it associates with the user, and a CryptoObject based on that key, and starts a fingerprint authentication.
If the fingerprint read by the sensor matches any of the enrolled fingerprints, the authentication is successful and the CryptoObject
can be used to perform a cryptographic operation (such as encrypting/decrypting some data).
At no point is the actual fingerprint available to your app, to any other app, or even to the OS.
From Google's fingerprint implementation guidelines to manufacturers:
Raw fingerprint data or derivatives (e.g. templates) must never be accessible from outside the sensor driver or Trusted Execution Environment (TEE).
It is possible to do so with an External Fingerprint Scanner.
By External Fingerprint Scanner I am referring to a Fingerprint Scanner that you can use besides the default Fingerprint Scanner that ships with your Android device.
As for an External Fingerprint Scanner, a USB based Fingerprint Scanner would suffice for your use case.
To capture Fingerprint Images which you can send to your Backend System Database from where you can Save them and Compare them with other Fingerprint Images captured by e.g. a Computer, your onboard Fingerprint Scanner would not suffice for such a use case as is mentioned by @Michael's answer. This is where an External Fingerprint Scanner would be your best bet.
To introduce an External Fingerprint Scanner to work with your Android device, you would need to get an OTG cable to interface the USB Fingerprint Scanner to your Android device.
Thereafter, you would have to get the Fingerprint Scanner's Android Biometric API to code an Android Application that can make calls like Fingerprint Capture, Fingerprint Enroll and Fingerprint Authenticate to the Fingerprint Scanner so that you can be able to capture the Fingerprint Images for Biometric Enrollment and Biometric Authentication.
It would be essential to make sure that the relaying of Biometric Fingerprint data over a network to the System Database for Storage or Authentication is happening over a secure dedicated VPN connection after it has first been encrypted before being send over the network that links up the Android device and your Backend System.
Important: Not all Fingerprint Scanners come with Android Biometric APIs that can help you implement Android Biometric Fingerprint Capture or Android Biometric Fingerprint Enrollment. You will need to check that first before you settle on a unit Fingerprint Scanner for your Android Biometric Integration project.
actually my question is about the possibility to collect multiple users' fingerprints. i have a database which stores all users' fingerprints. now i would like to have an app. user can use his fingerprint to log into my app. is it possible?
Regarding using build-in fingerprint scanner on Android device, I don't think any kind of "collecting" data connected with previously scanned fingerprints is possible. Environment which Android system is using to store and match scanned fingerprints is pretty well sealed (it's called TEE - Trusted Execution Environment) and, according to Android Central article (https://www.androidcentral.com/how-does-android-save-your-fingerprints) there are some basic rules that every company making Android phones with a fingerprint sensor have to follow, among them:
So, you can have app, which will have the fingerprint authentication feature, but it will be just "authenticated" or "not authenticated" response, based on fingerprints already enrolled on this device in Settings, without possibility to connect each user with each fingerprint.
I haven't tried this yet, but recent Android OS (Marshmallow) has ability to do that.
"To authenticate users via fingerprint scan, get an instance of the new FingerprintManager class and call the authenticate() method. Your app must be running on a compatible device with a fingerprint sensor. You must implement the user interface for the fingerprint authentication flow on your app, and use the standard Android fingerprint icon in your UI. The Android fingerprint icon (c_fp_40px.png) is included in the Fingerprint Dialog sample. If you are developing multiple apps that use fingerprint authentication, note that each app must authenticate the user’s fingerprint independently. "
https://developer.android.com/about/versions/marshmallow/android-6.0.html
Two restrictions:
Up to date market share of Android 6.0 you can find here:
https://developer.android.com/about/dashboards/index.html