22
Android M Fingerprint API @nory_kaname

Android m finger print(public)

Embed Size (px)

Citation preview

Page 1: Android m finger print(public)

Android MFingerprint API

@nory_kaname

Page 2: Android m finger print(public)

自己紹介

● 組み込みエンジニア

● 携帯電話開発(9年)○ ガラケー○ スマートフォン

● Android Developer(5年)○ 組み込み支援○ Frameworkカスタマイズ○ アプリケーション開発

● クックビズ株式会社所属

Page 3: Android m finger print(public)

執筆

プロの力が身につく Androidプログラミングの教科書

Page 4: Android m finger print(public)

こんなアプリを作ってます

Page 5: Android m finger print(public)

エンジニア募集中

iOS / Androidエンジニア、待ってます!!

Page 6: Android m finger print(public)

本編

Page 7: Android m finger print(public)

Fingerprint AuthenticationConfirm CredentialApp LinkingAuto Backup for AppsDirect ShareVoice InteractionsAssist APIAdoptable StorageNotificationsBluetooth Stylus SupportImproved Bluetooth Low Energy Scanning

Hotspot 2.0 Release 1 Support4K Display ModeThemeable ColorStateListsAudio FeaturesVideo FeaturesCamera FeaturesAndroid for Work Features

Android M APIs

Page 8: Android m finger print(public)

Fingerprint AuthenticationConfirm CredentialApp LinkingAuto Backup for AppsDirect ShareVoice InteractionsAssist APIAdoptable StorageNotificationsBluetooth Stylus SupportImproved Bluetooth Low Energy Scanning

Hotspot 2.0 Release 1 Support4K Display ModeThemeable ColorStateListsAudio FeaturesVideo FeaturesCamera FeaturesAndroid for Work Features

Android M APIs

Page 9: Android m finger print(public)

FingerPrint

指紋認証機能

・キーガード解除

・アプリでの指紋認証ログイン

・アプリ/サーバー間の認証

Page 10: Android m finger print(public)

アプリケーションでの使用ケース

指紋認証機能

・キーガード解除

・アプリでの指紋認証ログイン

・アプリ/サーバー間の認証

Page 11: Android m finger print(public)

Permission

Android ManifestのPermission記載

<uses-permission android:name="android.permission.USE_FINGERPRINT"/>

<uses-permission android:name="android.permission.USE_FINGERPRINT" android:required="false"/>

指紋認証機能のPermission宣言

必須 or オプション

Page 12: Android m finger print(public)

API

FingerprintManagerクラス

モジュール

authenticate 認証開始

hasEnrolledFingerprints 指紋が登録されているか

isHardwareDetected 指紋認証ハードウェアが搭載しているか

mFingerprintManager = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);

Page 13: Android m finger print(public)

指紋認証機能のチェック

指紋認証する前に、ハードウェアと指紋の登録状況を確認

public boolean isFingerprintAuthAvailable() {return mFingerprintManager.isHardwareDetected()

&& mFingerprintManager.hasEnrolledFingerprints();}

Page 14: Android m finger print(public)

FingerPrint APIs

指紋認証の実行

mFingerprintManager.authenticate(cryptoObject, mCancellationSignal, 0 /* flags */, mAuthenticationCallback, null);

Page 15: Android m finger print(public)

認証結果:AuthenticationCallackprivate FingerprintManager.AuthenticationCallback mAuthenticationCallback = new FingerprintManager.AuthenticationCallback(){ @Override public void onAuthenticationError(int errorCode, CharSequence errString) { // 認証エラー

super.onAuthenticationError(errorCode, errString); }

@Override public void onAuthenticationHelp(int helpCode, CharSequence helpString) { // 認証時のヘルプ文言

super.onAuthenticationHelp(helpCode, helpString); }

@Override public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) { // 認証成功

super.onAuthenticationSucceeded(result); }

@Override public void onAuthenticationFailed() { // 認証失敗

super.onAuthenticationFailed(); }};

Page 16: Android m finger print(public)

Android Frameworks内では

Page 17: Android m finger print(public)

Android Frameworks

Page 18: Android m finger print(public)

● アプリケーションから使用する場合○ Context#getSystemService()でFragmentprintManagerにアクセス

○ コールバックで結果を受け取る

Android Frameworks

Page 19: Android m finger print(public)

FingerprintManagerの責務

● FingerprintManagerクラス○ アプリケーションから要求を受け取る○ Android Frameworksのサービス群にある、FingerprintServiceに連携○ 認証結果をFingerprintServiceから受け取り、アプリケーションに通知する

Page 20: Android m finger print(public)

FingerprintServiceの責務

● FingerprintServiceクラス○ SystemServiceクラスを継承○ Android Systemとして指紋認証機能を実行○ Native(JNI->HAL)につなぐ○ 認証要求時にFingerprintDeamonクラスをとおして、Native層に通知○ アプリケーションの突然死の際、unbindする(IBinder.DeathRecipient)

Page 21: Android m finger print(public)

JNI / HAL層

● JNI / HAL層○ HAL層(ライブラリ)をとおして、Kernelに通知、ハードウェアの制御を行う○ 認証結果をKeystoreServiceに通知

Page 22: Android m finger print(public)

ご静聴、ありがとうございました。