AndroidX Biometric Library
by
syarihu
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
AndroidX Biometric Library shibuya.apk #29 2018/10/31 (Wed) @syarihu
Slide 2
Slide 2 text
Taichi Sato (@syarihu) ● Money Forward, Inc. ○ Android Engineer ● TechBooster
Slide 3
Slide 3 text
No content
Slide 4
Slide 4 text
Fingerprint API
Slide 5
Slide 5 text
● Android 6.0 (API Level 23)から利用 できる公式の指紋認証API ● FingerprintManagerクラスを利用して実 装する Fingerprint API
Slide 6
Slide 6 text
● Android 6.0 (API Level 23)から利用 できる公式の指紋認証API ● FingerprintManagerクラスを利用して実 装する ● Android 9.0 (API Level 28)から非推奨 Fingerprint API
Slide 7
Slide 7 text
BiometricPrompt API
Slide 8
Slide 8 text
● Android 9.0 (API Level 28)から利用 できるAPI ● より強力な生体認証を提供する ● BiometricPromptクラスを利用して 実装する BiometricPrompt API
Slide 9
Slide 9 text
● 生体認証を行うためのダイアログを提供 する ● 認証ダイアログが内部で実装されている ため、画面の一部に生体認証を入れる ことはできない BiometricPrompt API
Slide 10
Slide 10 text
No content
Slide 11
Slide 11 text
AndroidX Biometric Library
Slide 12
Slide 12 text
● 非推奨になったFingerprint APIと 新しいBiometricPrompt APIの互換性を 保って利用するためのライブラリ ○ 2018年10月現在の最新バージョンは 1.0.0-alpha2 Android X Biometric Library
Slide 13
Slide 13 text
● 非推奨になったFingerprint APIと 新しいBiometricPrompt APIの互換性を 保って利用するためのライブラリ ○ 2018年10月現在の最新バージョンは 1.0.0-alpha2 ● androidx.biometric.BiometricPrompt Android X Biometric Library
Slide 14
Slide 14 text
● BiometricFragment ● FingerprintHelperFragment ● FingerprintDialogFragment Android X Biometric Library
Slide 15
Slide 15 text
● BiometricFragment ○ Android 9.0以上のPlatformの BiometricPromptクラスを利用 Android X Biometric Library
Slide 16
Slide 16 text
● FingerprintHelperFragment ○ Android 6.0以上の FingerprintManagerクラスを利用 ● FingerprintDialogFragment ○ FingerprintHelperFragmentを内部で 呼び出してダイアログを表示 Android X Biometric Library
Slide 17
Slide 17 text
Android X Biometric Library ● これらのFragmentはAndroidX ライブラリ内部からの呼び出しに制限さ れている
Slide 18
Slide 18 text
Android X Biometric Library ● これらのFragmentはAndroidX ライブラリ内部からの呼び出しに制限さ れている ● AndroidXのBiometricPromptクラスの authenticateメソッド内部でAPI Levelに よって処理を分けている
Slide 19
Slide 19 text
Android X Biometric Library ● パーミッション ○ android.permission.USE_FINGERPRINT ○ android.permission.USE_BIOMETRIC ● AndroidManifest.xmlにあらかじめ追加 されているため、自分で追加する必要は ない
Slide 20
Slide 20 text
Android X Biometric Library を使ってみる
Slide 21
Slide 21 text
build.gradle dependencies { implementation 'androidx.biometric:biometric:1.0.0-alpha02' }
Slide 22
Slide 22 text
ダイアログの設定 val builder = BiometricPrompt.PromptInfo.Builder().apply { setTitle("生体認証を行います") setSubtitle("サブタイトル") setDescription("説明") setNegativeButtonText("キャンセル") }
Slide 23
Slide 23 text
コールバックの実装 val callback = object : BiometricPrompt.AuthenticationCallback() { override fun onAuthenticationSucceeded( result: BiometricPrompt.AuthenticationResult ) { super.onAuthenticationSucceeded(result) /** 成功処理 */ }
Slide 24
Slide 24 text
コールバックの実装 override fun onAuthenticationFailed() { super.onAuthenticationFailed() /** 失敗処理 */ }
Slide 25
Slide 25 text
コールバックの実装 override fun onAuthenticationError(errorCode: Int, errString: CharSequence) { /** エラー処理 */ when (errorCode) { BiometricConstants.ERROR_NO_BIOMETRICS -> { // 生体認証未登録 } else -> { // それ以外 } } }
Slide 26
Slide 26 text
Executorの実装 private fun mainExecutorCompat(): Executor { return if (Build.VERSION.SDK_INT >= 28) { mainExecutor } else { HandlerExecutor(Handler(mainLooper)) } }
Slide 27
Slide 27 text
Executorの実装 private class HandlerExecutor( private val handler: Handler ) : Executor { override fun execute(runnable: Runnable) { handler.post(runnable) } }
Slide 28
Slide 28 text
getMainExecutorメソッド ● API Level 28以上のContextに実装されて おり、それ未満のAPI Levelでは使えない
Slide 29
Slide 29 text
getMainExecutorメソッド ● AndroidXの開発中のソースコードには ContextCompatにgetMainExecutor メソッドがある ● AndroidXの次のバージョンにこれが含まれれ ば、今後自前で実装する必要は無くなる
Slide 30
Slide 30 text
生体認証を開始する BiometricPrompt( this /** FragmentActivity */, mainExecutorCompat(), callback ).authenticate(builder.build())
Slide 31
Slide 31 text
Android 8.0
Slide 32
Slide 32 text
Android 9.0
Slide 33
Slide 33 text
● Fingerprint APIはAPI Level 28で 非推奨になるため、BiometricPromptを 使う必要がある ● AndroidXのBiometricライブラリを 使えば簡単に実装可能 まとめ
Slide 34
Slide 34 text
● ContextCompatにgetMainExecutor メソッドが実装されれば自前でExecutor を実装する必要がなくなる ので気にしておくとよい まとめ
Slide 35
Slide 35 text
Trick or Treat (技術書典5新刊) ● Android Xの生体認証の話 ● AACのViewModelをDagger で生成する話 ● 機械学習の型の話 ● Androidネイティブ ライブラリビルドTips https://techbooster.booth.pm/items/1046485
Slide 36
Slide 36 text
ありがとうございました