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
14k
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
3
3k
[shibuya.apk #46] Composableの枠を超えてアニメーションする / Animation beyond Composable
syarihu
0
39
[shibuya.apk #41] Jetpack Composeでグリッドに柔軟にスペースを入れたい
syarihu
0
3.1k
[DroidKaigi 2022] 詳解Google Playの新しい定期購入 ~オファーの活用や実装例を添えて~
syarihu
0
3.4k
5分で分かるGoogle Playの新しいサブスクリプション / Google Play new subscription 2022
syarihu
1
1.8k
[DroidKaigi 2021] Google Play 定期購入 比例配分モード完全攻略ガイド / Google Play Subscription Proration Mode Complete Guide
syarihu
1
7.6k
[Money Forward Tech Drive] What's new in Google Play [Recap #io21]
syarihu
0
560
[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.7k
Other Decks in Technology
See All in Technology
困難を「一般解」で解く
fujiwara3
7
2.2k
2/18 Making Security Scale: メルカリが考えるセキュリティ戦略 - Coincheck x LayerX x Mercari
jsonf
0
260
"TEAM"を導入したら最高のエンジニア"Team"を実現できた / Deploying "TEAM" and Building the Best Engineering "Team"
yuj1osm
1
240
EMConf JP 2025 懇親会LT / EMConf JP 2025 social gathering
sugamasao
2
210
サイト信頼性エンジニアリングとAmazon Web Services / SRE and AWS
ymotongpoo
7
1.8k
Amazon Athenaから利用時のGlueのIcebergテーブルのメンテナンスについて
nayuts
0
110
Охота на косуль у древних
ashapiro
0
130
プロダクト開発者目線での Entra ID 活用
sansantech
PRO
0
120
遷移の高速化 ヤフートップの試行錯誤
narirou
6
1.9k
Qiita Organizationを導入したら、アウトプッターが爆増して会社がちょっと有名になった件
minorun365
PRO
1
320
LayerXにおけるAI活用事例とその裏側(2025年2月) バクラクの目指す “業務の自動運転” の例 / layerx-ai-deim2025
yuya4
1
550
x86-64 Assembly Essentials
latte72
3
420
Featured
See All Featured
Building an army of robots
kneath
303
45k
Java REST API Framework Comparison - PWX 2021
mraible
29
8.4k
The Pragmatic Product Professional
lauravandoore
32
6.4k
Building a Scalable Design System with Sketch
lauravandoore
461
33k
Why Our Code Smells
bkeepers
PRO
336
57k
Scaling GitHub
holman
459
140k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Git: the NoSQL Database
bkeepers
PRO
428
65k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
Product Roadmaps are Hard
iamctodd
PRO
51
11k
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
ありがとうございました