情報畑でつかまえてロゴ
本サイトは NTTテクノロスが旬の IT をキーワードに
IT 部門が今知っておきたい最新テクノロジーに関する情報をお届けするサイトです

神原健一のAndroidで広がる世界 第9回

Android6(Marshmallow)の指紋認証機能(開発者編)

Android 6.0の指紋認証に関して、開発者視点で具体的な実装のアプローチを解説していきます。

はじめに

皆様、こんにちは。NTTソフトウェア株式会社の神原です。Androidで広がる世界の第9回目です。前回は、Android N Developer Preview 1から見た特徴的な新機能をご紹介しました。今回は、前回お知らせしたとおり、Android 6.0の指紋認証に関して、開発者視点で具体的な実装のアプローチを解説していきます。第7回の記事では、同機能に関してユーザ視点で紹介しています。必要に応じて、本記事を読んでいただく前に、併せてご参照ください。

Android 6.0「指紋認証機能」対応の基本的な考え方

前提として、指紋認証センサー(Nexus Imprintセンサー)を搭載したAndroid 6.0以上の端末を準備し、利用者の指紋があらかじめ端末に登録されていることとします。未設定の場合は、こちらを参考にあらかじめ登録しておきましょう。

それでは、具体的なアプリを題材に解説していきます。以下の図のとおり、ショッピングを行うアプリがあったとしましょう。

指紋認証1


このアプリに機能を追加し、「購入」ボタンをタップすると、指紋認証機能が実行されるようにしましょう。アプリに指紋認証機能を追加する場合、主に2つのアプローチが存在します。

指紋認証2

それぞれ、具体的な特徴と実装例を紹介します。

アプローチ(1)OS認証画面利用

最初は、OSの認証画面を活用するアプローチです。

指紋認証3a


以下の特徴があります。

  • 指紋認証だけでなく、パターン/PIN認証を併用
  • 対象バージョンは、Android 5.0 以上(指紋認証は、Android 6.0以上の対応機種のみ利用可能)

指紋認証に特化したものではなく、端末のロック解除画面を利用します。それでは、実装例を見てみましょう。以下リストに示すようなソースコードを書くことで実現できます。

指紋認証3b

KeyguardManagerのインスタンスを作成後、createConfirmDeviceCredentialIntent()メソッドを呼び出しています。この際、画面のタイトルと本文も指定し、Intentを作成しています。続いて、startActivityForResult()メソッドに、このIntentを渡すことで、先ほどの認証画面を表示できます。ユーザが同画面を表示後、その認証結果がonActivityResult()メソッドにコールバックされるという流れです。実際は、指紋未登録の場合などほかにも考慮すべきポイントがあることには注意してください。

指紋認証を実行する画面のカスタマイズなど細かいことはできない一方、比較的、容易に実装できるでしょう。

アプローチ(2)指紋認証API利用

次に、Android 6.0にて追加された指紋認証APIを用いるアプローチです。

指紋認証4a


以下の特徴があります。

  • 指紋認証機能をAPIを用いて自前で実装
  • 対象バージョンは、Android 6.0以上(指紋認証対応機種のみ)

実装例を見てみましょう。以下リストに示すようなソースコードを書くことで実現できます。

指紋認証4b

FingerprintManagerのインスタンスを作成後、authenticate()メソッドを呼び出しています。この際、CryptoObjectなど幾つかのパラメータを設定しています。詳細は割愛します。指紋認証を実行後、その結果が成功、失敗、エラーの場合に、それぞれ該当するメソッドがコールバックされる仕組みです。今回のソースコードは、あくまで指紋認証処理のビジネスロジックに関するものです。そのため、先ほどの画面内のダイアログなどUIに関しては、自分で実装する必要があります。

実装量は比較的多くはなりますが、画面のカスタマイズなど柔軟に仕様を実現できるというメリットはあります(ただし、公式の指紋アイコンは、変更せずに利用すべきとされています)。

おわりに

今回は、Android 6.0の指紋認証に関して、開発者視点で紹介しました。次回のテーマはまだ決めていませんが、旬のトピックを取り上げられたらと考えています。ぜひ、次回の記事も読んでいただけると幸いです。お楽しみに!

参考URL(当社サイト)

著者プロフィール
神原 健一

メディア&モバイル事業部第二事業ユニット(M2BU)
テクニカルプロフェッショナル(Android)

神原 健一