Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Android仮想マシンでNFC(近距離通信)を使えるかを確認してみました

こんにちは。kimukimuです。

前回でインストールが完了したため、早速Androidの新機能を試してみます。
Android2.3の追加点は色々ありますが、大きなポイントの1つは
NFC(近距離通信)が標準APIでサポートされたこと」だと考えてます。

NFCとは、おサイフケータイ等で使用されている近距離非接触の通信の総称です。

Android2.3以前でもIS03みたいにおサイフケータイが使える端末はあったんですが、
標準APIでサポートされたことにより、
端末開発者でない一般開発者でもNFCを使うアプリが開発可能になりました。

Android2.3仮想マシンの作成&起動確認

前回作った仮想マシンはAndroid3.1のものだったため、Android2.3の仮想マシンを改めて作成します。
・・・いや、Android3.1でももちろんNFCは使えるんですが、仮想マシンが重すぎるので。

まずは前回と同じく、AndroidSDKを展開した個所にある、「SDK Manager.exe」を実行し、
「Virtual devices」を選択し、右上の「New」ボタンを押下します。

仮想マシン作成ウィンドウが表示されるので、
「Target」に「Android2.3.1」を指定して「Create AVD」ボタンを押下し、仮想マシンを作成します。

仮想マシン作成に成功すれば、仮想マシン一覧に仮想マシンが追加されています。
追加された仮想マシンを選択し、「Start」ボタンを押下します。

すると、Android2.3用の仮想マシンが起動します。
Android2系なので、携帯電話と同じ縦長のディスプレイになっています。

これで仮想マシンの準備は完了です。

Android2.3用Eclipseプロジェクトの作成

次はEclipseでAndroid2.3用のプロジェクトを作成します。
メニューからFile > New > Projectを選択します。

プロジェクト種別を聞かれるので、Android > Android Projectを選択します。

プロジェクト情報を入力するエリアが表示されますので、
プロジェクト名称、アプリケーション名称、パッケージ名とバージョンを入力します。
ここで重要なのは、「Build Target」と、「Min SDK Version」です。
選択した値でSDKのバージョンが決まり、使えるAPIが変わってきます。
今回はAndroid2.3のため、「Build Target」には「Android2.3.1」、
「Min SDK Version」には「9」を入力します。

入力後、Finishボタンを押下してプロジェクト作成完了です。
Package Explorerにプロジェクトが追加され、「Android2.3.1」を参照していれば作成成功です。

Android仮想マシンNFCって使えるの?

調子よくAndroidプロジェクトを作成してきましたが、ここで1つ疑問がわきます。
そう、Android仮想マシンNFCって使えるの?』という疑問です。

なので、Android2.3で追加された「android.nfc.NfcAdapter」クラスを使って、
Android仮想マシンNFCが搭載されているかの確認を行います。
尚、NFCを利用するクラス群は「android.nfc」パッケージ配下にありました。

Androidプロジェクトのメインアクティビティクラスに下記のNFCが使えるかを確認するコードを追加します。

public class NFCAvairableTestActivity extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter();
		boolean isNfcExist = getPackageManager().hasSystemFeature(
				PackageManager.FEATURE_NFC);

		if (nfcAdapter != null && nfcAdapter.isEnabled() == true) {
			Toast.makeText(this, "NFCを使用可能です。", Toast.LENGTH_LONG).show();
		} else if (isNfcExist == true) {
			Toast.makeText(this, "NFCを有効にしてください。", Toast.LENGTH_LONG).show();
		} else {
			Toast.makeText(this, "NFCは搭載されていません。", Toast.LENGTH_LONG).show();
		}
	}
}

コードを追加したら、Androidプロジェクトを右クリック > Run As > Android Applicationを選択して実行します。

すると・・・!?

・・・NFCAndroid仮想マシンには搭載されていないようです。
仮想マシンで実行するための手段が無いか探してみましたが、無い模様。
公式ページにも、『それっぽいタグを見た目だけ表示する』だけしか出来ないと。。。

残念ながら、NFCの確認は実機でしか出来ないようです。

NFCが使えるAndroid2.3以降の端末一覧

残念ながら仮想マシンではNFCを使うことはできませんでした。
なので実機で。。。と言いたいところなんですが、私のAndroid端末は初代Xperia(Android2.1)。
箸にも棒にもかかりません(−−;
1年と2カ月程前は他に対抗出来るAndroid端末なんて無い状態だったんですが。。。。
ちょっと先走り過ぎたようです。

とりあえず、そんなわけでNFCアプリを開発できるAndroid端末一覧をあげました。
発売済みか、今週くらいに発売されるものに絞っています。
個人的にはGaraxy S IIがNFC対応していたら買いだったんですが。。。残念ながら未搭載。
実機で開発できるのはしばらく先になりそうです。
− Nexus S
AQUOS PHONE(SH-12C)
AQUOS PHONE(006SH)
AQUOS PHONE THE HYBRID(007SH)
− MEDIAS WP(N-06C) → 6/24発売