Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AndroidX Biometric Library
Search
syarihu
October 31, 2018
Technology
5
13k
AndroidX Biometric Library
shibuya.apk #29で発表したAndroidXの生体認証の話です。
syarihu
October 31, 2018
Tweet
Share
More Decks by syarihu
See All by syarihu
[DroidKaigi 2024] Android ViewからJetpack Composeへ 〜Jetpack Compose移行のすゝめ〜 / From Android View to Jetpack Compose: A Guide to Migration
syarihu
2
2.1k
[shibuya.apk #46] Composableの枠を超えてアニメーションする / Animation beyond Composable
syarihu
0
9
[shibuya.apk #41] Jetpack Composeでグリッドに柔軟にスペースを入れたい
syarihu
0
2.6k
[DroidKaigi 2022] 詳解Google Playの新しい定期購入 ~オファーの活用や実装例を添えて~
syarihu
0
3.2k
5分で分かるGoogle Playの新しいサブスクリプション / Google Play new subscription 2022
syarihu
1
1.7k
[DroidKaigi 2021] Google Play 定期購入 比例配分モード完全攻略ガイド / Google Play Subscription Proration Mode Complete Guide
syarihu
1
7.4k
[Money Forward Tech Drive] What's new in Google Play [Recap #io21]
syarihu
0
530
[Android 11 Meetups] Google Play Commerce からのアップデート / Android 11 Meetups Google Play Commerce
syarihu
4
2.8k
[potatotips #70] license-list-pluginを使ってOSSライセンス画面を自動生成する / license-list-plugin
syarihu
4
4.5k
Other Decks in Technology
See All in Technology
Overview of file type identifiers
ange
0
150
Julia 新 LTS v1.10 解説 for JuliaTokai #20
antimon2
1
100
外部カンファレンスで登壇しよう! 〜「強い」エンジニアへの一歩を踏み出す〜
logica0419
4
140
MOSH_companydeck_202410
mosh_inc
0
120
APIs for AI: Have we failed?
zdne
0
140
Microsoft 365 でデータセキュリティを強化しよう
sophiakunii
2
490
SOLID - Architecture and Architectural Decisions - Devfest Goa 2024
rivuchk
0
180
AWS CDKで大量のパラメータストアを作りたい
haku__hime
1
120
Why and Why not of enabling swap in Kubernetes
hwchiu
0
340
KongによるAPIライフサイクル マネジメント
hashitokyo
1
160
自動テストの信頼性を高めるミューテーションテストの活用に向けて
tarappo
2
110
Kubernetes Summit 2024 Keynote:104 在 GitOps 大規模實踐中的甜蜜與苦澀
yaosiang
0
130
Featured
See All Featured
Building an army of robots
kneath
302
42k
Designing Experiences People Love
moore
138
23k
A designer walks into a library…
pauljervisheath
202
24k
Intergalactic Javascript Robots from Outer Space
tanoku
268
27k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
The Power of CSS Pseudo Elements
geoffreycrofte
71
5.3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
5
130
How GitHub (no longer) Works
holman
311
140k
Embracing the Ebb and Flow
colly
84
4.4k
Building Applications with DynamoDB
mza
90
6k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
37
1.8k
Transcript
AndroidX Biometric Library shibuya.apk #29 2018/10/31 (Wed) @syarihu
Taichi Sato (@syarihu) • Money Forward, Inc. ◦ Android Engineer
• TechBooster
None
Fingerprint API
• Android 6.0 (API Level 23)から利用 できる公式の指紋認証API • FingerprintManagerクラスを利用して実 装する
Fingerprint API
• Android 6.0 (API Level 23)から利用 できる公式の指紋認証API • FingerprintManagerクラスを利用して実 装する
• Android 9.0 (API Level 28)から非推奨 Fingerprint API
BiometricPrompt API
• Android 9.0 (API Level 28)から利用 できるAPI • より強力な生体認証を提供する •
BiometricPromptクラスを利用して 実装する BiometricPrompt API
• 生体認証を行うためのダイアログを提供 する • 認証ダイアログが内部で実装されている ため、画面の一部に生体認証を入れる ことはできない BiometricPrompt API
None
AndroidX Biometric Library
• 非推奨になったFingerprint APIと 新しいBiometricPrompt APIの互換性を 保って利用するためのライブラリ ◦ 2018年10月現在の最新バージョンは 1.0.0-alpha2 Android
X Biometric Library
• 非推奨になったFingerprint APIと 新しいBiometricPrompt APIの互換性を 保って利用するためのライブラリ ◦ 2018年10月現在の最新バージョンは 1.0.0-alpha2 •
androidx.biometric.BiometricPrompt Android X Biometric Library
• BiometricFragment • FingerprintHelperFragment • FingerprintDialogFragment Android X Biometric Library
• BiometricFragment ◦ Android 9.0以上のPlatformの BiometricPromptクラスを利用 Android X Biometric Library
• FingerprintHelperFragment ◦ Android 6.0以上の FingerprintManagerクラスを利用 • FingerprintDialogFragment ◦ FingerprintHelperFragmentを内部で
呼び出してダイアログを表示 Android X Biometric Library
Android X Biometric Library • これらのFragmentはAndroidX ライブラリ内部からの呼び出しに制限さ れている
Android X Biometric Library • これらのFragmentはAndroidX ライブラリ内部からの呼び出しに制限さ れている • AndroidXのBiometricPromptクラスの
authenticateメソッド内部でAPI Levelに よって処理を分けている
Android X Biometric Library • パーミッション ◦ android.permission.USE_FINGERPRINT ◦ android.permission.USE_BIOMETRIC
• AndroidManifest.xmlにあらかじめ追加 されているため、自分で追加する必要は ない
Android X Biometric Library を使ってみる
build.gradle dependencies { implementation 'androidx.biometric:biometric:1.0.0-alpha02' }
ダイアログの設定 val builder = BiometricPrompt.PromptInfo.Builder().apply { setTitle("生体認証を行います") setSubtitle("サブタイトル") setDescription("説明") setNegativeButtonText("キャンセル")
}
コールバックの実装 val callback = object : BiometricPrompt.AuthenticationCallback() { override fun
onAuthenticationSucceeded( result: BiometricPrompt.AuthenticationResult ) { super.onAuthenticationSucceeded(result) /** 成功処理 */ }
コールバックの実装 override fun onAuthenticationFailed() { super.onAuthenticationFailed() /** 失敗処理 */ }
コールバックの実装 override fun onAuthenticationError(errorCode: Int, errString: CharSequence) { /** エラー処理
*/ when (errorCode) { BiometricConstants.ERROR_NO_BIOMETRICS -> { // 生体認証未登録 } else -> { // それ以外 } } }
Executorの実装 private fun mainExecutorCompat(): Executor { return if (Build.VERSION.SDK_INT >=
28) { mainExecutor } else { HandlerExecutor(Handler(mainLooper)) } }
Executorの実装 private class HandlerExecutor( private val handler: Handler ) :
Executor { override fun execute(runnable: Runnable) { handler.post(runnable) } }
getMainExecutorメソッド • API Level 28以上のContextに実装されて おり、それ未満のAPI Levelでは使えない
getMainExecutorメソッド • AndroidXの開発中のソースコードには ContextCompatにgetMainExecutor メソッドがある • AndroidXの次のバージョンにこれが含まれれ ば、今後自前で実装する必要は無くなる
生体認証を開始する BiometricPrompt( this /** FragmentActivity */, mainExecutorCompat(), callback ).authenticate(builder.build())
Android 8.0
Android 9.0
• Fingerprint APIはAPI Level 28で 非推奨になるため、BiometricPromptを 使う必要がある • AndroidXのBiometricライブラリを 使えば簡単に実装可能
まとめ
• ContextCompatにgetMainExecutor メソッドが実装されれば自前でExecutor を実装する必要がなくなる ので気にしておくとよい まとめ
Trick or Treat (技術書典5新刊) • Android Xの生体認証の話 • AACのViewModelをDagger で生成する話
• 機械学習の型の話 • Androidネイティブ ライブラリビルドTips https://techbooster.booth.pm/items/1046485
ありがとうございました