相关文章推荐
小胡子的火锅  ·  Android ...·  2 月前    · 
乖乖的韭菜  ·  nodejs gzip ...·  1 年前    · 
销魂的风衣  ·  java - ...·  1 年前    · 

先上Activity程式碼

class fingerprint2 : AppCompatActivity() {

var mkeyguardManager : KeyguardManager? =null
var mFingerprintManager : FingerprintManager? = null
var CancellationSignal: CancellationSignal? = null
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_fingerprint2)
    mkeyguardManager = getSystemService(Activity.KEYGUARD_SERVICE) as KeyguardManager
    mFingerprintManager = getSystemService(FingerprintManager::class.java)
    if (!mkeyguardManager!!.isDeviceSecure()){
        Toast.makeText(this, "Secure lock screen hasn't set up.\n" + "Go to 'Settings -> Security -> Fingerprint' to set up a fingerprint",
                Toast.LENGTH_LONG).show()
        return;
    if(!mFingerprintManager!!.isHardwareDetected()){
        Toast.makeText(this, "No Fingerprint reader", Toast.LENGTH_LONG).show()
        return
    if(!mFingerprintManager!!.hasEnrolledFingerprints()){
        Toast.makeText(this, "Go to 'Settings -> Security -> Fingerprint' and register at least one fingerprint",
                Toast.LENGTH_LONG).show()
        return
    startListing()
override fun onPause() {
    super.onPause()
    CancellationSignal!!.cancel()
    CancellationSignal =null
private val mHandler_1= @SuppressLint("HandlerLeak")
object:Handler(){
    override fun handleMessage(msg: Message?) {
        when(msg!!.what){
                tpc_progress2.setProgress(count.num,100f)
        super.handleMessage(msg)
private val fingerprint_task = object: Thread() {
    override fun run() {
        super.run()
        for (i in 0 ..100){
            try {
                if(count.num == 50){
                    Thread.sleep(5000)
                Thread.sleep(3)
                val msg = Message()
                msg.what = 1
                count.num = i
                mHandler_1.sendMessage(msg)
fun startListing() {
    CancellationSignal = CancellationSignal()
    mFingerprintManager!!.authenticate(null, CancellationSignal, 0,
            object: FingerprintManager.AuthenticationCallback() {
                override fun onAuthenticationError(errorCode: Int, errString: CharSequence?) {
                    super.onAuthenticationError(errorCode, errString)
                    Log.e("", "error " + errorCode + " " + errString);
                override fun onAuthenticationSucceeded(result: FingerprintManager.AuthenticationResult?) {
                    super.onAuthenticationSucceeded(result)
                    Log.i("", "onAuthenticationSucceeded")
                    tpc_progress2.setOnNumchange(100)
                    fingerprint2_text.text = "指紋辨識成功"
                    fingerprint2_text.visibility = View.VISIBLE
                    val t = Thread(fingerprint_task)
                    t.start()
                override fun onAuthenticationFailed() {
                    super.onAuthenticationFailed()
                    Log.e("", "onAuthenticationFailed")
                    fingerprint2_text.text = "指紋辨識失敗"
            },null)

<com.example.likunlin.firebase7.TextProgressCircle
android:id="@+id/tpc_progress2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent" />

<TextView
    android:id="@+id/fingerprint2_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:text="指紋辨識"
    android:visibility="invisible"
    app:layout_constraintBottom_toBottomOf="@+id/tpc_progress2"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

我會把這兩樣加起來一起用 看起來就比較像真的使用指紋辨識器的樣子