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.4k
[shibuya.apk #46] Composableの枠を超えてアニメーションする / Animation beyond Composable
syarihu
0
14
[shibuya.apk #41] Jetpack Composeでグリッドに柔軟にスペースを入れたい
syarihu
0
2.8k
[DroidKaigi 2022] 詳解Google Playの新しい定期購入 ~オファーの活用や実装例を添えて~
syarihu
0
3.3k
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.5k
[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
強いチームと開発生産性
onk
PRO
35
12k
アプリエンジニアのためのGraphQL入門.pdf
spycwolf
0
100
OCI Network Firewall 概要
oracle4engineer
PRO
0
4.2k
エンジニア人生の拡張性を高める 「探索型キャリア設計」の提案
tenshoku_draft
1
130
AWS Media Services 最新サービスアップデート 2024
eijikominami
0
200
あなたの知らない Function.prototype.toString() の世界
mizdra
PRO
2
360
Platform Engineering for Software Developers and Architects
syntasso
1
520
AI前提のサービス運用ってなんだろう?
ryuichi1208
8
1.4k
なぜ今 AI Agent なのか _近藤憲児
kenjikondobai
4
1.4k
【Startup CTO of the Year 2024 / Audience Award】アセンド取締役CTO 丹羽健
niwatakeru
0
1.4k
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
2
1.7k
Introduction to Works of ML Engineer in LY Corporation
lycorp_recruit_jp
0
140
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
The Cult of Friendly URLs
andyhume
78
6k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
How to Think Like a Performance Engineer
csswizardry
20
1.1k
A Philosophy of Restraint
colly
203
16k
What's in a price? How to price your products and services
michaelherold
243
12k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.3k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Designing for Performance
lara
604
68k
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
ありがとうございました