LoginSignup
2
1

More than 3 years have passed since last update.

Android HCE 調査メモ(その1)

Last updated at Posted at 2020-01-08

目的

AndroidのHSEのサンプルを実行して、動作確認してみます。

環境

今回は以下の機種で動作確認しました。

Android開発環境

  • ビルド環境
    • Android Studio 3.5.3

端末

  • 1台目
    • Sony SO-3L
    • Android 9.0 (API level 28)
  • 2台目
    • Sharp SH-03J
    • Android 7.1.1 (API level 25)

HSEについて

まずは、前提としてHCEについて説明します。

正式なドキュメントは以下を参照してください。
ホストベースのカード エミュレーションの概要

簡単な説明をすると、Android上でユーザーの任意のアプリとNFCリーダとの通信を実現するための仕組みです。
通常、NFC通信はAndroidアプリまで通信が届きません。
NFCリーダからの通信は、通常はセキュアエレメントとの通信で完結します。
しかし、HCEの仕組みにより、NFCリーダーとAndroidアプリの直接通信が可能となります。

通信先アプリの選択方法について

通常はセキュアエレメントとの通信を行うと説明しましたが、それを任意のアプリにとの通信に切り替えるためには、どうすればよいのでしょうか?
アプリ側はAndroid OSに対し、Application ID (AID)を指定してServiceを登録します。
カード検知だけではアプリには通知は行きません。
カードリーダ側は検知後にApplication ID (AID)を指定して通信することで対象のアプリとの通信を開始します。
AID選択後の通信は Application Protocol Data Units(APDU)のプロトコルで行います。
AIDで選択したあとはAPDUでの通信のみの規定のみが決まっており、APDUプロトコル上での通信内容はアプリで自由に設定することになります。

対応範囲について

HCE(TypeA)はAPI level 19 ( Android 4.4 ) から実装されました。
詳細は以下を参照してください。

Type-FでのHCEの正式対応は API level 24 ( Android 7.0 ) 以降の対応となっています。

HSEの動作確認

まずは、HCEのサンプルのアプリをビルド、インストールします。

環境

今回は以下の機種で動作確認しました。

  • 端末
    • Sony SO-3L
    • Android 9.0 (API level 28)

他の環境では今回確認していませんが、もっと前のVersionでも問題はないとは思います。

Androidアプリ

以下のURLのソースを元にアプリを作成します。
https://github.com/googlearchive/android-CardEmulation

ソースコードを確認したところ、AIDは「F222222222」となっているようです。
private static final String SAMPLE_LOYALTY_CARD_AID = "F222222222";

ビルドできたらインストールして起動確認しておきます。

HSE通信確認アプリ

対向側のReader側のアプリを作成、インストールします。

環境

今回は以下の機種で動作確認しました。

  • 端末
    • Sharp SH-03J
    • Android 7.1.1 (API level 25)

Androidアプリ

以下のURLのソースを元にアプリを作成します。
https://github.com/googlearchive/android-CardReader

こちらもソースコードを確認したところ、AIDは「F222222222」となっているようです。
private static final String SAMPLE_LOYALTY_CARD_AID = "F222222222";

動作確認

両方のアプリを起動し、通信を実行してみます。
CardReaderのLogを確認し、データ受信できていることを確認します。

次回

PCとの通信を確認します。
Android HCE 調査メモ(その2)

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1