AndroidX Biometric Library
by
syarihu
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
ありがとうございました