指紋認証とエミュレータコマンド
Nexus5Xが手もとに届き、ようやく指紋認証に関してきちんと調査する環境が整いました。調査結果を色々と情報共有したいのですが、なかなか調査も進まないため、
Androidの会10月定例会で指紋認証の話でお話した、エミュレータバグの話はあまりネット上に記載がありませんので本日の記事にしたいと思います。
Android6.0の指紋認証機能に対応した機器はまだ少数ですので、なかなかテストが難しいと思いますが、エミュレータで指紋認証のテストをすることが可能です。
Android Developer Siteでエミュレータによる指紋認証の記載はあまりなく、以下の2か所にさらっと書いてあるのみです(翻訳するまでもない内容です)
実際にどのような感じで動作するのか動かしてみましたので、短いですがエミュレーターでの指紋認証について説明したいと思います。
エミュレータに指紋イベントを送る
コマンドプロンプトを開き、まず、エミュレータのポート番号の番号を取得します。
「adb devices」で、現在接続しているエミュレータのリスト表示します。ハイフン以降の数字がポート番号になります。上記の例では、「5554」がポート番号です。
次に、「telnet」を使用します。telnetは最近のWindows OSではデフォルトでは存在はしますがインストールされていない事が多いです。コマンドが見つからない時は、コントロールパネルからtelnetのインストールを行ってください。
先ほど取得したポート番号にtelnetをします。「telnet 127.0.0.1 5554」となります
画面が一度クリーンされ、OKと表示されます。
上記の状態で、指紋のタッチイベントをエミュレータに送信できます。
上の画像では、helpを表示しました。Fingerコマンドが使える事がわかります。
この状態で一旦待機です。
エミュレータ上で自分のプログラムを動かし、上の画面のようにエミュレータで「指紋をタッチしてください」等表示された場面で、コンソール上で「finger touch 1」等入力します。
最後の数字は、なんでもかまいません。数字が異なると別の指紋をタッチしたことになります。
もちろん、自分のプログラムでなくても、デバイスロック等でも使用できます。
以上、簡単ですが今回は終了です。
バグ
指紋の削除コマンド、「finger remove」がありますが、現在動作しませんでした。エミュレータのUI上でUI操作しても削除できませんでしたので、削除バグだと思います。
指紋情報を削除する部分は軒並み動作しませんので注意してください