package com.example.fingerprinttest;
import android.annotation.TargetApi;
import android.app.DialogFragment;
import android.app.KeyguardManager;
import android.content.Context;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Build;
import android.os.Bundle;
import android.os.CancellationSignal;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import javax.crypto.Cipher;
@TargetApi(23)
public class FingerprintDialogFragment extends DialogFragment {
private FingerprintManager fingerprintManager;
private CancellationSignal mCancellationSignal;
private Cipher mCipher;
private LoginActivity mActivity;
private TextView errorMsg;
/**
* 标识是否是用户主动取消的认证。
*/
private boolean isSelfCancelled;
public void setCipher(Cipher cipher) {
mCipher = cipher;
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
mActivity = (LoginActivity) getActivity();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
fingerprintManager = getContext().getSystemService(FingerprintManager.class);
setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Material_Light_Dialog);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fingerprint_dialog, container, false);
errorMsg = v.findViewById(R.id.error_msg);
TextView cancel = v.findViewById(R.id.cancel);
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
stopListening();
}
});
return v;
}
@Override
public void onResume() {
super.onResume();
// 开始指纹认证监听
startListening(mCipher);
}
@Override
public void onPause() {
super.onPause();
// 停止指纹认证监听
stopListening();
}
private void startListening(Cipher cipher) {
isSelfCancelled = false;
mCancellationSignal = new CancellationSignal();
fingerprintManager.authenticate(new FingerprintManager.CryptoObject(cipher), mCancellationSignal, 0, new FingerprintManager.AuthenticationCallback() {
@Override
public void onAuthenticationError(int errorCode, CharSequence errString) {
if (!isSelfCancelled) {
errorMsg.setText(errString);
if (errorCode == FingerprintManager.FINGERPRINT_ERROR_LOCKOUT) {
Toast.makeText(mActivity, errString, Toast.LENGTH_SHORT).show();
dismiss();
}
}
}
@Override
public void onAuthenticationHelp(int helpCode, CharSequence helpString) {
errorMsg.setText(helpString);
}
@Override
public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
Toast.makeText(mActivity, "指纹认证成功", Toast.LENGTH_SHORT).show();
mActivity.onAuthenticated();
}
@Override
public void onAuthenticationFailed() {
errorMsg.setText("指纹认证失败,请再试一次");
}
}, null);
}
private void stopListening() {
if (mCancellationSignal != null) {
mCancellationSignal.cancel();
mCancellationSignal = null;
isSelfCancelled = true;
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Android指纹认证Demo源码
共97个文件
xml:45个
png:16个
bin:9个
4星 · 超过85%的资源 需积分: 47 399 下载量 52 浏览量
2018-08-20
21:37:15
上传
评论 18
收藏 1.05MB ZIP 举报
温馨提示
此为文章示例代码,完整讲解请参考 https://blog.csdn.net/guolin_blog/article/details/81450114
资源推荐
资源详情
资源评论
收起资源包目录
FingerprintTest.zip (97个子文件)
FingerprintTest
gradlew 5KB
settings.gradle 16B
.idea
libraries
Gradle__android_arch_lifecycle_livedata_core_1_1_0.xml 685B
Gradle__android_arch_lifecycle_runtime_1_1_0.xml 655B
Gradle__android_arch_core_runtime_1_1_0.xml 644B
Gradle__com_google_code_findbugs_jsr305_2_0_1_jar.xml 359B
Gradle__org_hamcrest_hamcrest_core_1_3_jar.xml 541B
Gradle__net_sf_kxml_kxml2_2_3_0_jar.xml 508B
Gradle__com_android_support_support_compat_27_1_1.xml 689B
Gradle__com_android_support_appcompat_v7_27_1_1.xml 679B
Gradle__com_android_support_constraint_constraint_layout_solver_1_1_2_jar.xml 425B
Gradle__com_android_support_support_fragment_27_1_1.xml 699B
Gradle__com_android_support_test_espresso_espresso_idling_resource_3_0_2.xml 762B
Gradle__com_android_support_support_core_utils_27_1_1.xml 709B
Gradle__android_arch_lifecycle_common_1_1_0_jar.xml 545B
Gradle__android_arch_lifecycle_viewmodel_1_1_0.xml 665B
Gradle__com_android_support_support_annotations_27_1_1_jar.xml 607B
Gradle__org_hamcrest_hamcrest_integration_1_3_jar.xml 576B
Gradle__android_arch_core_common_1_1_0_jar.xml 531B
Gradle__javax_inject_javax_inject_1_jar.xml 526B
Gradle__com_android_support_test_runner_1_0_2.xml 654B
Gradle__junit_junit_4_12_jar.xml 485B
Gradle__org_hamcrest_hamcrest_library_1_3_jar.xml 555B
Gradle__com_squareup_javawriter_2_1_1_jar.xml 536B
Gradle__com_android_support_animated_vector_drawable_27_1_1.xml 739B
Gradle__com_android_support_test_monitor_1_0_2.xml 659B
Gradle__com_android_support_test_espresso_espresso_core_3_0_2.xml 707B
Gradle__com_android_support_support_core_ui_27_1_1.xml 694B
Gradle__com_android_support_support_vector_drawable_27_1_1.xml 734B
Gradle__com_android_support_constraint_constraint_layout_1_1_2.xml 500B
runConfigurations.xml 564B
misc.xml 2KB
workspace.xml 198KB
caches
build_file_checksums.ser 536B
gradle.xml 626B
modules.xml 367B
codeStyles
Project.xml 2KB
FingerprintTest.iml 869B
gradle
wrapper
gradle-wrapper.properties 236B
gradle-wrapper.jar 53KB
.gradle
buildOutputCleanup
outputFiles.bin 23KB
cache.properties 51B
buildOutputCleanup.lock 17B
4.4
fileChanges
last-build.bin 1B
taskHistory
taskHistory.lock 17B
taskHistory.bin 1.39MB
javaCompile
javaCompile.lock 17B
classAnalysis.bin 666KB
jarAnalysis.bin 260KB
taskJars.bin 21KB
taskHistory.bin 605KB
fileContent
fileContent.lock 17B
fileHashes
fileHashes.bin 455KB
resourceHashesCache.bin 19KB
fileHashes.lock 17B
local.properties 346B
gradlew.bat 2KB
gradle.properties 739B
.gitignore 147B
app
.DS_Store 6KB
src
androidTest
java
com
example
fingerprinttest
ExampleInstrumentedTest.java 764B
test
java
com
example
fingerprinttest
ExampleUnitTest.java 404B
main
AndroidManifest.xml 892B
res
mipmap-hdpi
ic_launcher.png 3KB
ic_launcher_round.png 5KB
mipmap-xxxhdpi
ic_launcher.png 9KB
ic_launcher_round.png 15KB
mipmap-xhdpi
ic_launcher.png 4KB
ic_launcher_round.png 7KB
drawable-hdpi
ic_fp_40px.png 7KB
tile.9.png 196B
mipmap-anydpi-v26
ic_launcher.xml 274B
ic_launcher_round.xml 274B
mipmap-mdpi
ic_launcher.png 2KB
ic_launcher_round.png 3KB
drawable
ic_launcher_background.xml 6KB
drawable-mdpi
ic_fp_40px.png 4KB
layout
fingerprint_dialog.xml 2KB
activity_login.xml 266B
activity_main.xml 458B
drawable-v24
ic_launcher_foreground.xml 2KB
drawable-xxhdpi
ic_fp_40px.png 18KB
drawable-xhdpi
ic_fp_40px.png 10KB
values
colors.xml 214B
strings.xml 81B
styles.xml 394B
drawable-xxxhdpi
ic_fp_40px.png 16KB
mipmap-xxhdpi
ic_launcher.png 6KB
ic_launcher_round.png 10KB
java
com
example
fingerprinttest
MainActivity.java 353B
LoginActivity.java 4KB
FingerprintDialogFragment.java 4KB
libs
app.iml 13KB
.gitignore 8B
build.gradle 960B
proguard-rules.pro 772B
build.gradle 573B
共 97 条
- 1
资源评论
- 辣么多肉还怕冷2018-10-18可以的,简单实用。
- JarryAndorid2019-11-01看着还不错。。。
- lxb_android2018-09-03可以的,简单实用。
guolin
- 粉丝: 8w+
- 资源: 45
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功