$30 off During Our Annual Pro Sale. View Details »
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
Recap #io25 What's new in Google Play
syarihu
0
72
[DroidKaigi 2024] Android ViewからJetpack Composeへ 〜Jetpack Compose移行のすゝめ〜 / From Android View to Jetpack Compose: A Guide to Migration
syarihu
4
4.1k
[shibuya.apk #46] Composableの枠を超えてアニメーションする / Animation beyond Composable
syarihu
0
77
[shibuya.apk #41] Jetpack Composeでグリッドに柔軟にスペースを入れたい
syarihu
0
3.4k
[DroidKaigi 2022] 詳解Google Playの新しい定期購入 ~オファーの活用や実装例を添えて~
syarihu
0
3.9k
5分で分かるGoogle Playの新しいサブスクリプション / Google Play new subscription 2022
syarihu
1
1.9k
[DroidKaigi 2021] Google Play 定期購入 比例配分モード完全攻略ガイド / Google Play Subscription Proration Mode Complete Guide
syarihu
1
8k
[Money Forward Tech Drive] What's new in Google Play [Recap #io21]
syarihu
0
600
[Android 11 Meetups] Google Play Commerce からのアップデート / Android 11 Meetups Google Play Commerce
syarihu
4
2.9k
Other Decks in Technology
See All in Technology
Noを伝える技術2025: 爆速合意形成のためのNICOフレームワーク速習 #pmconf2025
aki_iinuma
2
1.2k
原理から解き明かす AIと人間の成長 - Progate BAR
teba_eleven
2
300
Microsoft Agent 365 を 30 分でなんとなく理解する
skmkzyk
1
320
20251127 BigQueryリモート関数で作る、お手軽AIバッチ実行環境
daimatz
0
430
私も懇親会は苦手でした ~苦手だからこそ懇親会を楽しむ方法~ / 20251127 Masaki Okuda
shift_evolve
PRO
4
560
直接メモリアクセス
koba789
0
120
MS Ignite 2025で発表されたFoundry IQをRecap
satodayo
3
230
Modern Data Stack大好きマンが語るSnowflakeの魅力
sagara
0
280
小さな判断で育つ、大きな意思決定力 / 20251204 Takahiro Kinjo
shift_evolve
PRO
1
320
ブロックテーマとこれからの WordPress サイト制作 / Toyama WordPress Meetup Vol.81
torounit
0
310
AI 時代のデータ戦略
na0
8
3.3k
How native lazy objects will change Doctrine and Symfony forever
beberlei
1
380
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Speed Design
sergeychernyshev
33
1.4k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
What's in a price? How to price your products and services
michaelherold
246
12k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Balancing Empowerment & Direction
lara
5
780
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.2k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Agile that works and the tools we love
rasmusluckow
331
21k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.6k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
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
ありがとうございました