Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Fingerprint API for Android

Fingerprint API for Android

Takuji Nishibayashi

November 30, 2015
Tweet

More Decks by Takuji Nishibayashi

Other Decks in Technology

Transcript

  1. Fingerprint API
    for Android
    @takuji31

    View Slide

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

    View Slide

  3. New features in
    Marshmallow
    (Android 6)

    View Slide

  4. Now on Tap

    View Slide

  5. New Permission
    Model

    View Slide

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

    View Slide

  7. Fingerprint API

    View Slide

  8. Authentication
    with Fingerprint

    View Slide

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

    View Slide

  10. how to use

    View Slide

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

    View Slide

  12. Needs keyguard
    lock

    View Slide

  13. PIN

    View Slide

  14. Password

    View Slide

  15. Pattern

    View Slide

  16. Add
    USE_FINGERPRINT
    permission

    View Slide

  17. Add USE_FINGERPRINT
    permission

    View Slide

  18. Check keyguard is
    enabled

    View Slide

  19. 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;
    }
    }
    }

    View Slide

  20. Check fingerprint
    registered

    View Slide

  21. 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;
    }
    }
    }

    View Slide

  22. Create encryption
    key

    View Slide

  23. Start
    Authentication

    View Slide

  24. 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
    }

    View Slide

  25. but

    View Slide

  26. These codes has
    no UI

    View Slide

  27. Create UI
    yourself !

    View Slide

  28. Darkness..?

    View Slide

  29. No!

    View Slide

  30. Use sample code
    dialog fragment

    View Slide

  31. Two samples available
    • Fingerprint Dialog
    • Asymmetric Fingerprint Dialog

    View Slide

  32. View Slide

  33. !

    View Slide

  34. 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 !

    View Slide

  35. Happy secure life!

    View Slide