एंड्रॉइड में FingerprintManager से फिंगरप्रिंट हार्डवेयर जांचना
यह ट्यूटोरियल दिखाता है कि FingerprintManager.isHardwareDetected() का उपयोग करके डिवाइस में फिंगरप्रिंट सेंसर हार्डवेयर है या नहीं कैसे जांचें।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio में File → New Project चुनें।
चरण 2: लेआउट (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:layout_marginTop="30dp"
tools:context=".MainActivity">
<TextView
android:id="@+id/actionEvent"
android:textSize="40sp"
android:layout_marginTop="30dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="24dp" />
</LinearLayout>
चरण 3: MainActivity कोड (java/MainActivity.java)
package com.example.myapplication;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Build;
import android.os.Bundle;
import android.widget.TextView;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
TextView textView;
@RequiresApi(api = Build.VERSION_CODES.M) // API 23+ (फिंगरप्रिंट API)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView actionEvent = findViewById(R.id.actionEvent);
FingerprintManager fingerprintManager = (FingerprintManager)
getSystemService(FINGERPRINT_SERVICE);
if (fingerprintManager != null) {
boolean hasHardware = fingerprintManager.isHardwareDetected();
boolean hasEnrolled = fingerprintManager.hasEnrolledFingerprints();
String result = "फिंगरप्रिंट हार्डवेयर: " + (hasHardware ? "हां ✓" : "नहीं ✗") + "\n" +
"नामांकित फिंगरप्रिंट: " + (hasEnrolled ? "हां ✓" : "नहीं ✗");
actionEvent.setText(result);
} else {
actionEvent.setText("FingerprintManager उपलब्ध नहीं (API < 23)");
}
}
}
चरण 4: AndroidManifest.xml परमिशन
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="com.example.myapplication">
<!-- फिंगरप्रिंट हार्डवेयर जांचने के लिए परमिशन -->
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
<!-- या एंड्रॉइड 9+ के लिए -->
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
महत्वपूर्ण: मॉडर्न बायोमेट्रिक API (एंड्रॉइड 9+/API 28+)
FingerprintManager डिप्रिकेटेड है। नया BiometricManager उपयोग करें:
import androidx.biometric.BiometricManager;
import androidx.core.content.ContextCompat;
// BiometricManager उपयोग करें
BiometricManager biometricManager = BiometricManager.from(this);
int authResult = biometricManager.canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_STRONG);
switch (authResult) {
case BiometricManager.BIOMETRIC_SUCCESS:
// बायोमेट्रिक उपलब्ध और नामांकित
break;
case BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE:
// कोई हार्डवेयर नहीं
break;
case BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE:
// हार्डवेयर व्यस्त/उपलब्ध नहीं
break;
case BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED:
// हार्डवेयर है लेकिन कोई फिंगरप्रिंट नामांकित नहीं
break;
}
फिंगरप्रिंट ऑथेंटिकेशन फ्लो (संक्षिप्त)
// 1. CryptoObject बनाएं
KeyGenerator keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");
KeyGenParameterSpec spec = new KeyGenParameterSpec.Builder("key_name",
KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
.setBlockModes(KeyProperties.BLOCK_MODE_CBC)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
.setUserAuthenticationRequired(true)
.build();
keyGenerator.init(spec);
SecretKey key = keyGenerator.generateKey();
Cipher cipher = Cipher.getInstance(KeyProperties.KEY_ALGORITHM_AES + "/"
+ KeyProperties.BLOCK_MODE_CBC + "/" + KeyProperties.ENCRYPTION_PADDING_PKCS7);
cipher.init(Cipher.ENCRYPT_MODE, key);
// 2. ऑथेंटिकेशन प्रॉम्प्ट दिखाएं
BiometricPrompt biometricPrompt = new BiometricPrompt(this, executor, callback);
BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder()
.setTitle("फिंगरप्रिंट ऑथेंटिकेशन")
.setSubtitle("अपना फिंगरप्रिंट रखें")
.setNegativeButtonText("रद्द करें")
.build();
biometricPrompt.authenticate(promptInfo);
ऐप टेस्ट करें
चलाएं - "फिंगरप्रिंट हार्डवेयर: हां/नहीं" और "नामांकित फिंगरप्रिंट: हां/नहीं" दिखेगा।