Slide 1

Slide 1 text

Fingerprint API for Android @takuji31

Slide 2

Slide 2 text

About me • Takuji Nishibayashi • @takuji31 • Fenrir Inc. • NNID: takuji31 • Udemae: S / Rank: 41 • Loves Android / Kotlin

Slide 3

Slide 3 text

New features in Marshmallow (Android 6)

Slide 4

Slide 4 text

Now on Tap

Slide 5

Slide 5 text

New Permission Model

Slide 6

Slide 6 text

see. http://bit.ly/1LI09MJ

Slide 7

Slide 7 text

Fingerprint API

Slide 8

Slide 8 text

Authentication with Fingerprint

Slide 9

Slide 9 text

Available in Nexus 5X/6P (Nexus Imprint)

Slide 10

Slide 10 text

how to use

Slide 11

Slide 11 text

Use these APIs in conjunction with the Android Keystore system. — Android 6.0 APIs

Slide 12

Slide 12 text

Needs keyguard lock

Slide 13

Slide 13 text

PIN

Slide 14

Slide 14 text

Password

Slide 15

Slide 15 text

Pattern

Slide 16

Slide 16 text

Add USE_FINGERPRINT permission

Slide 17

Slide 17 text

Add USE_FINGERPRINT permission

Slide 18

Slide 18 text

Check keyguard is enabled

Slide 19

Slide 19 text

Check keyguard is enabled public class MainActivity extends Activity { KeyguardManager mKeyguardManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (!mKeyguardManager.isKeyguardSecure()) { // keyguard disabled Toast.makeText(this, "Secure lock screen hasn't set up.\n" + "Go to 'Settings -> Security -> Fingerprint' to set up a fingerprint", Toast.LENGTH_LONG).show(); return; } } }

Slide 20

Slide 20 text

Check fingerprint registered

Slide 21

Slide 21 text

Check fingerprint registered public class MainActivity extends Activity { @Inject FingerprintManager mFingerprintManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (!mFingerprintManager.hasEnrolledFingerprints()) { // no fingerprints registered Toast.makeText(this, "Go to 'Settings -> Security -> Fingerprint' and register at least one fingerprint", Toast.LENGTH_LONG).show(); return; } } }

Slide 22

Slide 22 text

Create encryption key

Slide 23

Slide 23 text

Start Authentication

Slide 24

Slide 24 text

Start Authentication mCancellationSignal = new CancellationSignal(); mFingerprintManager.authenticate(cryptoObject, mCancellationSignal, 0, this, null); @Override public void onAuthenticationError(int errMsgId, CharSequence errString) { // authentication error } @Override public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) { // needs help? } @Override public void onAuthenticationFailed() { // failed } @Override public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) { // succeeded }

Slide 25

Slide 25 text

but

Slide 26

Slide 26 text

These codes has no UI

Slide 27

Slide 27 text

Create UI yourself !

Slide 28

Slide 28 text

Darkness..?

Slide 29

Slide 29 text

No!

Slide 30

Slide 30 text

Use sample code dialog fragment

Slide 31

Slide 31 text

Two samples available • Fingerprint Dialog • Asymmetric Fingerprint Dialog

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

!

Slide 34

Slide 34 text

URL • Android 6.0 APIs • http://developer.android.com/intl/ja/about/versions/marshmallow/ android-6.0.html#fingerprint-authentication • Android Keystore System • http://developer.android.com/intl/ja/training/articles/keystore.html • FingerprintDialog sample • http://developer.android.com/intl/ja/samples/FingerprintDialog/ index.html • Google Store • https://store.google.com/category/phones • Buy now !

Slide 35

Slide 35 text

Happy secure life!